From 2c58926308a00c25b0c1967f6701f1437d0c7d17 Mon Sep 17 00:00:00 2001 From: secXsQuared Date: Tue, 6 Feb 2018 16:25:47 -0500 Subject: [PATCH] lll --- Makefile | 17 ++++++++++++----- Rules.mk | 14 ++++++++++++++ hal/Rules.mk | 27 +++++++++++++++++++++++++++ hal/boot.asm | 2 +- {hal => include/hal}/addr.inc | 0 kernel/Rules.mk | 10 ++++++++++ kernel/ke/Rules.mk | 23 +++++++++++++++++++++++ kernel/mm/Rules.mk | 15 +++++++++++++++ kernel/rf/Rules.mk | 15 +++++++++++++++ lib/Rules.mk | 18 ++++++++++++++++++ mk/epilogue.mk | 2 ++ mk/prologue.mk | 4 ++++ 12 files changed, 141 insertions(+), 6 deletions(-) create mode 100644 hal/Rules.mk rename {hal => include/hal}/addr.inc (100%) create mode 100644 kernel/Rules.mk create mode 100644 kernel/ke/Rules.mk create mode 100644 kernel/mm/Rules.mk create mode 100644 kernel/rf/Rules.mk create mode 100644 lib/Rules.mk create mode 100644 mk/epilogue.mk create mode 100644 mk/prologue.mk diff --git a/Makefile b/Makefile index 16d35b2..1176d28 100644 --- a/Makefile +++ b/Makefile @@ -3,10 +3,13 @@ CC := /opt/x86_64-elf-gcc LD := /opt/x86_64-elf-gcc DUMP := /opt/x86_64-elf-objdump -LD_SCRIPT := build/linker.ld -GRUB_CFG := build/grub.cfg -SOURCE_DIR := src -HEADER_DIRS := include +LD_SCRIPT := linker.ld + +GRUB_CFG := grub.cfg + +INCLUDE_DIR := include + +MK := mk C_WARNINGS := -Wall \ -Werror \ @@ -36,7 +39,7 @@ C_FLAGS := -std=c11 \ -mno-sse2 \ -masm=intel \ $(C_WARNINGS) \ - $(addprefix -I, $(HEADER_DIRS)) + $(addprefix -I, $(INCLUDE_DIR)) ASM_FLAGS := -w+all \ -f elf64 \ @@ -51,5 +54,9 @@ LD_FLAGS := -lgcc \ -Wl,-n \ -Wl,--build-id=none +COMP := +LINK := +COMPAS := +PACK := include Rules.mk \ No newline at end of file diff --git a/Rules.mk b/Rules.mk index e69de29..139c449 100644 --- a/Rules.mk +++ b/Rules.mk @@ -0,0 +1,14 @@ +include $(MK)/prologue.mk + +#OBJ var holds all object files + +dir := $(d)/hal +include $(dir)/Rules.mk +dir := $(d)/kernel +include $(dir)/Rules.mk +dir := $(d)/lib +include $(dir)/Rules.mk + +TGT := + +include $(MK)/epilogue.mk \ No newline at end of file diff --git a/hal/Rules.mk b/hal/Rules.mk new file mode 100644 index 0000000..30abf41 --- /dev/null +++ b/hal/Rules.mk @@ -0,0 +1,27 @@ +include $(MK)/prologue.mk + +SRC_$(d) := init.c \ + intr.c \ + mem.c \ + print.c + +SRC_$(d) := $(addprefix $(d)/, $(SRC_$(d))) + +OBJ_$(d) := $(SRC_$(d):.c=.o) + +SRCAS_$(d) := boot.asm \ + cpu.asm \ + intr.asm + +OBJAS_$(d) := $(SRCAS_$(d):.c=.a) + +$(OBJ_$(d)): %.o: %.c + $(COMP) + +$(OBJAS_$(d)): %.a: %.asm + $(COMPAS) + +# append all OBJECTS to clean +OBJ := $(OBJ) $(OBJ_$(d)) $(OBJAS_$(d)) + +include $(MK)/epilogue.mk \ No newline at end of file diff --git a/hal/boot.asm b/hal/boot.asm index 57f6db7..8bcd607 100644 --- a/hal/boot.asm +++ b/hal/boot.asm @@ -2,7 +2,7 @@ ; Distributed under GPL license ; See COPYING under root for details -%include "addr.inc" +%include "hal/addr.inc" MULTIBOOT_TAG_ALIGNMENT equ 8 MULTIBOOT_HEADER_ALIGNMENT equ 8 diff --git a/hal/addr.inc b/include/hal/addr.inc similarity index 100% rename from hal/addr.inc rename to include/hal/addr.inc diff --git a/kernel/Rules.mk b/kernel/Rules.mk new file mode 100644 index 0000000..2fe7849 --- /dev/null +++ b/kernel/Rules.mk @@ -0,0 +1,10 @@ +include $(MK)/prologue.mk + +dir := $(d)/ke +include $(dir)/Rules.mk +dir := $(d)/mm +include $(dir)/Rules.mk +dir := $(d)/rf +include $(dir)/Rules.mk + +include $(MK)/epilogue.mk \ No newline at end of file diff --git a/kernel/ke/Rules.mk b/kernel/ke/Rules.mk new file mode 100644 index 0000000..c854f2b --- /dev/null +++ b/kernel/ke/Rules.mk @@ -0,0 +1,23 @@ +include $(MK)/prologue.mk + +SRC_$(d) := allo.c \ + assert.c \ + atomic.c \ + boot.c \ + bug_check.c \ + intr.c \ + print.c \ + rwwlock.c \ + spin_lock.c + +SRC_$(d) := $(addprefix $(d)/, $(SRC_$(d))) + +OBJ_$(d) := $(SRC_$(d):.c=.o) + +$(OBJ_$(d)): %.o: %.c + $(COMP) + +# append all OBJECTS to clean +OBJ := $(OBJ) $(OBJ_$(d)) + +include $(MK)/epilogue.mk \ No newline at end of file diff --git a/kernel/mm/Rules.mk b/kernel/mm/Rules.mk new file mode 100644 index 0000000..fc660da --- /dev/null +++ b/kernel/mm/Rules.mk @@ -0,0 +1,15 @@ +include $(MK)/prologue.mk + +SRC_$(d) := pmm.c + +SRC_$(d) := $(addprefix $(d)/, $(SRC_$(d))) + +OBJ_$(d) := $(SRC_$(d):.c=.o) + +$(OBJ_$(d)): %.o: %.c + $(COMP) + +# append all OBJECTS to clean +OBJ := $(OBJ) $(OBJ_$(d)) + +include $(MK)/epilogue.mk \ No newline at end of file diff --git a/kernel/rf/Rules.mk b/kernel/rf/Rules.mk new file mode 100644 index 0000000..8280ad1 --- /dev/null +++ b/kernel/rf/Rules.mk @@ -0,0 +1,15 @@ +include $(MK)/prologue.mk + +SRC_$(d) := ref.c + +SRC_$(d) := $(addprefix $(d)/, $(SRC_$(d))) + +OBJ_$(d) := $(SRC_$(d):.c=.o) + +$(OBJ_$(d)): %.o: %.c + $(COMP) + +# append all OBJECTS to clean +OBJ := $(OBJ) $(OBJ_$(d)) + +include $(MK)/epilogue.mk \ No newline at end of file diff --git a/lib/Rules.mk b/lib/Rules.mk new file mode 100644 index 0000000..8ec59d6 --- /dev/null +++ b/lib/Rules.mk @@ -0,0 +1,18 @@ +include $(MK)/prologue.mk + +SRC_$(d) := avl_tree.c \ + linked_list.c \ + salloc.c \ + sxtdlib.c + +SRC_$(d) := $(addprefix $(d)/, $(SRC_$(d))) + +OBJ_$(d) := $(SRC_$(d):.c=.o) + +$(OBJ_$(d)): %.o: %.c + $(COMP) + +# append all OBJECTS to clean +OBJ := $(OBJ) $(OBJ_$(d)) + +include $(MK)/epilogue.mk \ No newline at end of file diff --git a/mk/epilogue.mk b/mk/epilogue.mk new file mode 100644 index 0000000..75fe942 --- /dev/null +++ b/mk/epilogue.mk @@ -0,0 +1,2 @@ +d := $(dirstack_$(sp)) +sp := $(basename $(sp)) \ No newline at end of file diff --git a/mk/prologue.mk b/mk/prologue.mk new file mode 100644 index 0000000..00aff87 --- /dev/null +++ b/mk/prologue.mk @@ -0,0 +1,4 @@ +# Standard things +sp := $(sp).x +dirstack_$(sp) := $(d) +d := $(dir)