ifndef GCCPREFIX GCCPREFIX := endif AS := nasm CC := $(GCCPREFIX)gcc LD := $(GCCPREFIX)ld OBJCOPY := $(GCCPREFIX)objcopy QEMU := qemu-system-i386 CFLAGS += -Wall -Wno-format -Wno-unused CFLAGS += -std=gnu99 -static -m32 CFLAGS += -I ./include -I ./libc/include CFLAGS += -ffunction-sections -nostdlib -nostdinc -fno-builtin -ffreestanding CFLAGS += -fno-pie QEMU_FLAGS += -no-reboot -d in_asm -m size=128 # C Library Objects L_OBJS := libc/stdio/stdio.bin # Kernel Objects K_OBJS := bootpack.bin io.bin pm.bin hankaku.bin desctbl.bin graphic.bin \ int.bin inthandler.bin fifo.bin keyboard.bin mouse.bin mem.bin SYS := haribote.sys IMG := haribote.img ifdef DEBUG QEMU_FLAGS += -gdb tcp::1234 -S CFLAGS += -g endif ipl.bin: $(AS) -f bin ipl.asm -o ipl.bin -l ipl.lst asmhead.bin: $(AS) -f bin asmhead.asm -o asmhead.bin -l asmhead.lst %.bin: %.asm $(AS) -f elf $< -o $@ -l $(subst .asm,.lst,$<) %.bin: %.c $(CC) $(CFLAGS) -c $< -o $@ kernel.sys: ${K_OBJS} ${L_OBJS} $(LD) -m elf_i386 --oformat binary -o kernel.sys -T kernel.ld $^ haribote.sys: asmhead.bin kernel.sys cat asmhead.bin > haribote.sys cat kernel.sys >> haribote.sys image: ipl.bin haribote.sys dd if=/dev/zero of=$(IMG) bs=512 count=2880 dd if=ipl.bin of=$(IMG) bs=512 count=1 conv=notrunc dd if=haribote.sys of=$(IMG) seek=33 bs=512 conv=notrunc all: ${OBJS} haribote.sys image clean: rm -rf *.bin rm -rf *.sys rm -rf *.obj rm -rf *.lst rm -rf $(IMG) rm -rf **/**/*.bin qemu: clean all $(QEMU) -fda $(IMG) $(QEMU_FLAGS) .PHONY: all