diff --git a/Makefile b/Makefile index 80e314c6a5..6cb05d30c8 100644 --- a/Makefile +++ b/Makefile @@ -38,6 +38,13 @@ endif ifeq ($(strip $(BR2_HAVE_DOT_CONFIG)),y) +# cc-option +# Usage: cflags-y += $(call cc-option, -march=winchip-c6, -march=i586) +# sets -march=winchip-c6 if supported else falls back to -march=i586 +# without checking the latter. +cc-option = $(shell if $(TARGET_CC) $(TARGET_CFLAGS) $(1) -S -o /dev/null -xc /dev/null \ + > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;) + ############################################################# # # The list of stuff to build for the target toolchain diff --git a/package/setserial/setserial.mk b/package/setserial/setserial.mk index 604f7df2e2..cea3e541ad 100644 --- a/package/setserial/setserial.mk +++ b/package/setserial/setserial.mk @@ -27,7 +27,7 @@ endif touch $@ ifeq ($(BR2_PREFER_IMA),y) -SETSERIAL_CFLAGS=--combine -fwhole-program +SETSERIAL_CFLAGS=--combine $(CFLAGS_WHOLE_PROGRAM) endif $(SETSERIAL_DIR)/.configured: $(SETSERIAL_DIR)/.unpacked diff --git a/toolchain/Makefile.in b/toolchain/Makefile.in index 1a2c0f26f5..84e2ae42fe 100644 --- a/toolchain/Makefile.in +++ b/toolchain/Makefile.in @@ -14,5 +14,8 @@ endif # FIXME -- this is temporary OPTIMIZE_FOR_CPU=$(ARCH) +# late binding check to see if the target cc supports -fwhole-program +CFLAGS_WHOLE_PROGRAM = $(call cc-option,-fwhole-program,) + # gcc has a bunch of needed stuff.... include toolchain/gcc/Makefile.in diff --git a/toolchain/gcc/4.0.4/402-libbackend_dep_gcov-iov.h.patch b/toolchain/gcc/4.0.4/402-libbackend_dep_gcov-iov.h.patch new file mode 100644 index 0000000000..89196d9fa5 --- /dev/null +++ b/toolchain/gcc/4.0.4/402-libbackend_dep_gcov-iov.h.patch @@ -0,0 +1,11 @@ +--- gcc-4.0.4.orig/gcc/Makefile.in 2007-02-12 11:35:43.000000000 +0100 ++++ gcc-4.0.4/gcc/Makefile.in 2007-02-12 11:38:04.000000000 +0100 +@@ -2202,7 +2202,7 @@ mips-tdump.o : mips-tdump.c $(CONFIG_H) + # FIXME: writing proper dependencies for this is a *LOT* of work. + libbackend.o : $(OBJS-common:.o=.c) $(out_file) \ + insn-config.h insn-flags.h insn-codes.h insn-constants.h \ +- insn-attr.h ++ insn-attr.h gcov-iov.h + $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ + -DTARGET_NAME=\"$(target_noncanonical)\" \ + -DLOCALEDIR=\"$(localedir)\" \