## -----------------------------------------------------------------------
##
-## Copyright 2007-2008 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
#
-TMPFILE = $(shell mktemp /tmp/gcc_ok.XXXXXX)
+topdir = ..
+MAKEDIR = $(topdir)/mk
+include $(MAKEDIR)/embedded.mk
-gcc_ok = $(shell tmpf=$(TMPFILE); if gcc $(1) -c -x c /dev/null -o $$tmpf 2>/dev/null; \
- then echo $(1); else echo $(2); fi; rm -f $$tmpf)
+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
-M32 := $(call gcc_ok,-m32,) $(call gcc_ok,-ffreestanding,) $(call gcc_ok,-fno-stack-protector)
-
-CC = gcc
-LD = ld -m elf_i386
-SFLAGS = $(M32) -march=i386
-OBJCOPY = objcopy
-PERL = perl
-
-.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 $@
+
+mbr_bin.c: mbr.bin
-tidy:
- rm -f *.o *.elf *.lst
+tidy dist:
+ rm -f *.o *.elf *.lst .*.d
clean: tidy
spotless: clean
rm -f *.bin
+
+-include .*.d