summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile22
1 files changed, 18 insertions, 4 deletions
diff --git a/Makefile b/Makefile
index 1fb6bfb..dfdcae5 100644
--- a/Makefile
+++ b/Makefile
@@ -4,13 +4,20 @@ BOOT_ASM =./src/boot/bootloader.asm
KERNEL_ASM_OBJ = $(BUILD_DIR)/kernel.asm.o
KERNEL_OBJ = $(BUILD_DIR)/kernel.o
-KOBJ_FILES = $(KERNEL_ASM_OBJ) $(KERNEL_OBJ)
+
+KLIB_FILES = ./src/lib/string.c
+
+KOBJ_LIBS = ./build/string.o
+
+KOBJ_FILES = $(KERNEL_ASM_OBJ) \
+ $(KERNEL_OBJ) \
+ ./build/vga.o
BOOT_TGT =./bin/boot.bin
KERNEL_TGT = ./bin/kernel.bin
BIN_TGT = $(BOOT_TGT) $(KERNEL_TGT)
-INCLUDES = -I./src/include
+INCLUDES = -I ./src/include
FLAGS = -g -ffreestanding -falign-jumps -falign-functions \
-falign-labels -falign-loops -fstrength-reduce \
-fomit-frame-pointer -finline-functions \
@@ -26,7 +33,7 @@ all: $(BIN_TGT)
dd if=./bin/kernel.bin >> ./bin/os.bin
dd if=/dev/zero bs=512 count=100 >> ./bin/os.bin
./bin/kernel.bin: $(KOBJ_FILES)
- i686-elf-ld -g -relocatable $(KOBJ_FILES) -o $(BUILD_DIR)/cemOS.o
+ i686-elf-ld -g -relocatable $(KOBJ_FILES) $(KOBJ_LIBS) -o $(BUILD_DIR)/cemOS.o
i686-elf-gcc $(FLAGS) -T ./src/linker.ld -o ./bin/kernel.bin -ffreestanding -O0 -nostdlib $(BUILD_DIR)/cemOS.o
./bin/boot.bin: $(BOOT_ASM)
@@ -35,13 +42,20 @@ all: $(BIN_TGT)
$(BUILD_DIR)/kernel.asm.o: ./src/kernel.asm
nasm -f elf -g ./src/kernel.asm -o $(BUILD_DIR)/kernel.asm.o
-$(BUILD_DIR)/kernel.o: ./src/kernel.c
+$(BUILD_DIR)/kernel.o: ./src/kernel.c ./build/vga.o $(KOBJ_LIBS)
i686-elf-gcc $(INCLUDES) $(FLAGS) -std=gnu99 -c ./src/kernel.c -o $(BUILD_DIR)/kernel.o
+$(BUILD_DIR)/vga.o: ./src/vga.c $(KOBJ_LIBS)
+ i686-elf-gcc $(INCLUDES) $(FLAGS) -std=gnu99 -c ./src/vga.c -o $(BUILD_DIR)/vga.o
+
+$(KOBJ_LIBS):
+ i686-elf-gcc $(INCLUDES) $(FLAGS) -std=gnu99 -c ./src/lib/string.c -o $(BUILD_DIR)/string.o
clean:
rm -f $(BOOT_TGT)
rm -f bin/kernel.bin
rm -f build/cemOS.o
rm -f build/kernel.asm.o
rm -f build/kernel.o
+ rm -f build/vga.o
+ rm -f build/string.o
rm -f bin/os.bin