HariboteOS/day7/Makefile
2022-04-05 19:35:23 +08:00

71 lines
1.5 KiB
Makefile

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
# 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
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