diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2009-01-25 16:11:27 -0500 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2009-01-25 16:11:27 -0500 |
commit | 231f710715a7f6ddf1626fda38ebdb511b5d55dc (patch) | |
tree | c5599786cc20556873fe99cc43d88b0f381afe08 | |
parent | d99908e5114d428a6b142d1f222a8d0a3fd9cfe9 (diff) | |
download | seabios-231f710715a7f6ddf1626fda38ebdb511b5d55dc.tar.gz |
Enhance makefile to autodetect if AVOIDCOMBINE is needed.
-rw-r--r-- | Makefile | 6 | ||||
-rwxr-xr-x | tools/test-combine.sh | 23 |
2 files changed, 28 insertions, 1 deletions
@@ -54,10 +54,14 @@ vpath %.S src ################ Build rules +ifndef AVOIDCOMBINE +AVOIDCOMBINE=$(shell CC=$(CC) tools/test-combine.sh) +endif + # Do a whole file compile - two methods are supported. The first # involves including all the content textually via #include # directives. The second method uses gcc's "-combine" option. -ifdef AVOIDCOMBINE +ifeq "$(AVOIDCOMBINE)" "1" define whole-compile @echo " Compiling whole program $3" $(Q)printf '$(foreach i,$2,#include "../$i"\n)' > $3.tmp.c diff --git a/tools/test-combine.sh b/tools/test-combine.sh new file mode 100755 index 00000000..6d17fd05 --- /dev/null +++ b/tools/test-combine.sh @@ -0,0 +1,23 @@ +#!/bin/sh +# Script to test if gcc's -combine option works properly. + +TMPFILE1=out/tmp_testcompile1.c +TMPFILE2=out/tmp_testcompile.o + +mkdir -p out +cat - > $TMPFILE1 <<EOF +struct ts { union { int u1; struct { int u2; }; }; }; +void t1(struct ts *r); +EOF + +$CC -c -fwhole-program -combine $TMPFILE1 $TMPFILE1 -o $TMPFILE2 > /dev/null 2>&1 + +if [ $? -eq 0 ]; then + #echo " Setting AVOIDCOMBINE=0" > /dev/fd/2 + echo 0 +else + echo " Enabling AVOIDCOMBINE=1" > /dev/fd/2 + echo 1 +fi + +rm -f $TMPFILE1 $TMPFILE2 |