-include config.mk

OBJS=\
     src/nbp.o \
     src/bios.o \
     src/pxe.o \
     src/std.o \
     src/main.o \
     src/tinflate.o \
     # end of object list

.PHONY: all clean

all: boot.bin

clean:
	rm -f $(OBJS) boot.elf boot.bin

config.mk: | config.default.mk
	cp config.default.mk $@

boot.bin: boot.elf
	objcopy -O binary -j .text -j .data boot.elf $@
	wc -c $@

boot.elf: $(OBJS) src/nbp.ld
	$(CC) -m32 -fno-pic -fno-pie -T src/nbp.ld -o $@ $(OBJS) -ffreestanding -nostdlib

%.o: %.S
	$(CC) $(CFLAGS) -c -o $@ $(@:.o=.S) $(CPPFLAGS)

%.o: %.c
	$(CC) $(CFLAGS) -O0 -c -o $@ $(@:.o=.c) $(CPPFLAGS)

# TODO header dependencies
