GCCPARAMS = -m32 -fno-pie -nostdlib -fstrength-reduce -fomit-frame-pointer -finline-functions -fno-builtin -nostdinc -fno-stack-protector ASPARAMS = -f elf32 LDPARAMS = -m elf_i386 INCBULDNUM := sh make_buildnum.sh objects = obj/start.o \ obj/kernel.o \ obj/scrn.o \ obj/gdt.o \ obj/idt.o \ obj/isrs.o \ obj/irq.o \ obj/timer.o \ obj/kb.o \ obj/shell.o \ obj/memorymanager.o \ obj/pci.o \ obj/port.o run:kernel.iso qemu-system-x86_64 -m 256M -cdrom kernel.iso & obj/%.o: src/%.c mkdir -p $(@D) gcc $(GCCPARAMS) -c -o $@ $< obj/%.o: src/%.asm mkdir -p $(@D) nasm $(ASPARAMS) -o $@ $< kernel.bin: linker.ld $(objects) #Crap way to increment the build number, but will do for now #thanks to my limited knowledge of Makefiles. sh make_buildnum.sh mkdir -p obj/bin ld $(LDPARAMS) -T $< -o obj/bin/$@ $(objects) kernel.iso: kernel.bin mkdir iso mkdir iso/boot mkdir iso/boot/grub cp obj/bin/kernel.bin iso/boot/kernel.bin echo 'menuentry SDOS {' > iso/boot/grub/grub.cfg echo ' multiboot /boot/kernel.bin' >> iso/boot/grub/grub.cfg echo ' boot' >> iso/boot/grub/grub.cfg echo '}' >> iso/boot/grub/grub.cfg grub-mkrescue --output=kernel.iso iso rm -rf iso .PHONY: clean clean: rm -rf obj kernel.iso .PHONY: resetbuild resetbuild: echo 0 > build.number