| CC ?= $(CROSS)gcc |
| AS ?= $(CROSS)gcc |
| OBJCOPY ?= $(CROSS)objcopy |
| O ?= build |
| |
| all: $O/bios.bin |
| ROMSIZE = 65536 |
| |
| $O: ; mkdir -p $@ |
| |
| CFLAGS = \ |
| -W \ |
| -Wall \ |
| -m32 \ |
| -march=i386 \ |
| -mregparm=3 \ |
| -fno-stack-protector \ |
| -fno-delete-null-pointer-checks \ |
| -ffreestanding \ |
| -mstringop-strategy=rep_byte \ |
| -minline-all-stringops \ |
| -fno-pic \ |
| -Iinclude \ |
| -MT $@ \ |
| -MMD -MP \ |
| -MF $O/$*.d \ |
| |
| ASFLAGS = $(CFLAGS) |
| |
| LDFLAGS = \ |
| -nostdlib \ |
| -m32 \ |
| -Wl,--build-id=none \ |
| -Wl,-Tflat.lds \ |
| |
| OBJS = \ |
| code16.o \ |
| code32seg.o \ |
| cstart.o \ |
| entry.o \ |
| fw_cfg.o \ |
| hwsetup.o \ |
| linuxboot.o \ |
| main.o \ |
| malloc.o \ |
| mptable.o \ |
| pci.o \ |
| printf.o \ |
| string.o \ |
| smbios.o \ |
| tables.o \ |
| |
| $O/bios.elf: $(addprefix $O/,$(OBJS)) |
| $(CC) $(LDFLAGS) -o $@ $^ |
| |
| $O/%.bin: $O/%.elf |
| $(OBJCOPY) \ |
| -O binary \ |
| -j .text \ |
| -j .rodata \ |
| -j .data \ |
| -j .bss \ |
| -j .init \ |
| $< \ |
| "$@.tmp" |
| @if [ `stat -c '%s' "$@.tmp"` != $(ROMSIZE) ]; then \ |
| echo >&2 '$@ != $(ROMSIZE) bytes!' ; \ |
| exit 1 ; \ |
| fi |
| mv "$@.tmp" "$@" |
| |
| $O/%.o: %.c | $O |
| $(CC) $(CFLAGS) -c -o $@ $< |
| $O/%.o: %.S | $O |
| $(CC) $(ASFLAGS) -c -o $@ $< |
| |
| clean: |
| $(RM) $O/*.o $O/bios.bin $O/bios.bin.elf $O/*.d |
| |
| -include $O/*.d |