summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorAleksa Vučković <aleksav013@gmail.com>2021-10-06 20:41:10 +0200
committerAleksa Vučković <aleksav013@gmail.com>2021-10-06 20:41:10 +0200
commit9d4d44687eecb7389cd67177097afe424b928ec7 (patch)
tree19d185e99309a58357124513ae4a68147cef294d /Makefile
parente4ea59e0b9a2ec79ba5ebf649e7e2f8c4838e7ef (diff)
https://wiki.osdev.org/Bare_Bones + my Makefile and .gitignore
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile26
1 files changed, 26 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..f3f5b47
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,26 @@
+BUILD_DIR=build
+ISO_DIR=isodir
+
+.PHONY: all
+all: $(BUILD_DIR)/myos.bin
+ grub-file --is-x86-multiboot $(BUILD_DIR)/myos.bin
+ mkdir -p $(ISO_DIR)/boot/grub
+ cp $(BUILD_DIR)/myos.bin $(ISO_DIR)/boot/myos.bin
+ cp grub.cfg $(ISO_DIR)/boot/grub/grub.cfg
+ grub-mkrescue -o myos.iso $(ISO_DIR)
+
+$(BUILD_DIR)/boot.o: boot.s
+ mkdir -p $(BUILD_DIR)
+ i686-elf-as boot.s -o $(BUILD_DIR)/boot.o
+
+$(BUILD_DIR)/kernel.o: kernel.c
+ mkdir -p $(BUILD_DIR)
+ i686-elf-gcc -c kernel.c -o $(BUILD_DIR)/kernel.o -std=gnu99 -ffreestanding -O2 -Wall -Wextra
+
+$(BUILD_DIR)/myos.bin: $(BUILD_DIR)/kernel.o $(BUILD_DIR)/boot.o
+ mkdir -p $(BUILD_DIR)
+ i686-elf-gcc -T linker.ld -o $(BUILD_DIR)/myos.bin -ffreestanding -O2 -nostdlib $(BUILD_DIR)/boot.o $(BUILD_DIR)/kernel.o -lgcc
+
+.PHONY: clean
+clean:
+ rm -rf $(BUILD_DIR) $(ISO_DIR) myos.iso