Multiboot build system v4
[qemu/agraf.git] / pc-bios / optionrom / Makefile
blobc4a6f426251cb6d79d373c97de295cac80c00f3c
1 all: build-all
3 include ../../config-host.mak
5 VPATH=$(SRC_PATH)/pc-bios/optionrom
6 OBJCOPY=objcopy
8 # from kernel sources - scripts/Kbuild.include
9 # try-run
10 # Usage: option = $(call try-run, $(CC)...-o "$$TMP",option-ok,otherwise)
11 # Exit code chooses option. "$$TMP" is can be used as temporary file and
12 # is automatically cleaned up.
13 try-run = $(shell set -e; \
14 TMP="$(TMPOUT).$$$$.tmp"; \
15 if ($(1)) >/dev/null 2>&1; \
16 then echo "$(2)"; \
17 else echo "$(3)"; \
18 fi; \
19 rm -f "$$TMP")
21 # cc-option-yn
22 # Usage: flag := $(call cc-option-yn,-march=winchip-c6)
23 cc-option-yn = $(call try-run,\
24 $(CC) $(KBUILD_CFLAGS) $(1) -S -xc /dev/null -o "$$TMP",y,n)
26 CFLAGS = -Wall -Wstrict-prototypes -Werror -fomit-frame-pointer -fno-builtin
27 CFLAGS += -I$(SRC_PATH)
28 ifeq ($(call cc-option-yn,-fno-stack-protector),y)
29 CFLAGS += -fno-stack-protector
30 endif
32 build-all: multiboot.bin
34 %.o: %.S
35 $(CC) $(CFLAGS) -o $@ -c $<
37 %.img: %.o
38 $(LD) --oformat binary -Ttext 0 -o $@ $<
40 %.bin: %.img signrom
41 ./signrom $< $@
42 cp $@ $(SRC_PATH)/pc-bios/
44 signrom: signrom.c
45 $(CC) -o $@ -g -Wall $^
47 clean:
48 $(RM) *.o *.img *.bin signrom *~