This commit is contained in:
secXsQuared 2018-02-06 16:25:47 -05:00
parent 1d4c7282b5
commit 2c58926308
12 changed files with 141 additions and 6 deletions

View File

@ -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

View File

@ -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

27
hal/Rules.mk Normal file
View File

@ -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

View File

@ -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

10
kernel/Rules.mk Normal file
View File

@ -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

23
kernel/ke/Rules.mk Normal file
View File

@ -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

15
kernel/mm/Rules.mk Normal file
View File

@ -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

15
kernel/rf/Rules.mk Normal file
View File

@ -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

18
lib/Rules.mk Normal file
View File

@ -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

2
mk/epilogue.mk Normal file
View File

@ -0,0 +1,2 @@
d := $(dirstack_$(sp))
sp := $(basename $(sp))

4
mk/prologue.mk Normal file
View File

@ -0,0 +1,4 @@
# Standard things
sp := $(sp).x
dirstack_$(sp) := $(d)
d := $(dir)