## -----------------------------------------------------------------------
-##
-## Copyright 2007 H. Peter Anvin - All Rights Reserved
+##
+## Copyright 2007-2009 H. Peter Anvin - All Rights Reserved
+## Copyright 2009 Intel Corporation; author: H. Peter Anvin
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
# Makefile for MBR
#
-gcc_ok = $(shell if gcc $(1) -c -x c /dev/null -o /dev/null 2>/dev/null; \
- then echo $(1); else echo $(2); fi)
-
-M32 := $(call gcc_ok,-m32,) $(call gcc_ok,-ffreestanding,)
+topdir = ..
+MAKEDIR = $(topdir)/mk
+include $(MAKEDIR)/embedded.mk
-CC = gcc
-LD = ld -m elf_i386
-SFLAGS = $(M32) -march=i386
-OBJCOPY = objcopy
-PERL = perl
+all: mbr.bin altmbr.bin gptmbr.bin isohdpfx.bin isohdppx.bin \
+ mbr_c.bin altmbr_c.bin gptmbr_c.bin isohdpfx_c.bin isohdppx_c.bin \
+ mbr_f.bin altmbr_f.bin gptmbr_f.bin isohdpfx_f.bin isohdppx_f.bin
-.SUFFIXES: .S .s .o .elf
+%.o: %.S
+ $(CC) $(MAKEDEPS) $(SFLAGS) -Wa,-a=$*.lst -c -o $@ $<
-all: mbr.bin
+%_c.o: %.S
+ $(CC) $(MAKEDEPS) $(SFLAGS) -Wa,-a=$*_c.lst -DCTRL_80 -c -o $@ $<
-.PRECIOUS: %.o
-%.o: %.S
- $(CC) $(SFLAGS) -Wa,-a=$*.lst -c -o $@ $<
+%_f.o: %.S
+ $(CC) $(MAKEDEPS) $(SFLAGS) -Wa,-a=$*_f.lst -DFORCE_80 -c -o $@ $<
-mbr.elf: mbr.o mbr.ld
- $(LD) -T mbr.ld -e _start -o $@ $<
+.PRECIOUS: %.elf
+%.elf: %.o mbr.ld
+ $(LD) $(LDFLAGS) -T mbr.ld -e _start -o $@ $<
-mbr.bin: mbr.elf checksize.pl
+%.bin: %.elf checksize.pl
$(OBJCOPY) -O binary $< $@
- $(PERL) checksize.pl mbr.bin 440
+ $(PERL) checksize.pl $@
+ $(CHMOD) -x $@
-tidy:
- rm -f *.o *.elf *.lst
+mbr_bin.c: mbr.bin
+
+tidy dist:
+ rm -f *.o *.elf *.lst .*.d
clean: tidy
+
+spotless: clean
rm -f *.bin
+
+-include .*.d