瀏覽代碼

- 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

Bernhard Reutner-Fischer 18 年之前
父節點
當前提交
99cf7293f9
共有 4 個文件被更改,包括 22 次插入1 次删除
  1. 7 0
      Makefile
  2. 1 1
      package/setserial/setserial.mk
  3. 3 0
      toolchain/Makefile.in
  4. 11 0
      toolchain/gcc/4.0.4/402-libbackend_dep_gcov-iov.h.patch

+ 7 - 0
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

+ 1 - 1
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

+ 3 - 0
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

+ 11 - 0
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)\" \