summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorCarlos Maiolino <[email protected]>2025-07-25 08:28:53 +0200
committerCarlos Maiolino <[email protected]>2025-07-25 08:28:53 +0200
commit02a4f7fa2100809d84b93dbe8d6c828e4768ad41 (patch)
tree2170a5a5a390ce9fdd519473192991da41d23e5a /Makefile
parented16669fb8629fde0593bd4b8dc266a697af6245 (diff)
Build vga and string libs
Also add a small test to the kernel code Signed-off-by: Carlos Maiolino <[email protected]>
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