From 99cf7293f9eb943e00e2ebca6eee0e36eaa801bd Mon Sep 17 00:00:00 2001 From: Bernhard Reutner-Fischer Date: Mon, 12 Feb 2007 13:38:06 +0000 Subject: [PATCH] - add cc-option and use it to check for stuff that is benefical for PREFER_IMA - backport the libbackend.o gcov-iov.h dependency fixup from 4.2 to 4.0 --- Makefile | 7 +++++++ package/setserial/setserial.mk | 2 +- toolchain/Makefile.in | 3 +++ .../gcc/4.0.4/402-libbackend_dep_gcov-iov.h.patch | 11 +++++++++++ 4 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 toolchain/gcc/4.0.4/402-libbackend_dep_gcov-iov.h.patch 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)\" \ -- 2.30.2