[toolchain] fix graphite options with gcc-4.5, add libelf for LTO, fix mbsd_multi...
authorFlorian Fainelli <florian@openwrt.org>
Tue, 20 Apr 2010 16:18:08 +0000 (16:18 +0000)
committerFlorian Fainelli <florian@openwrt.org>
Tue, 20 Apr 2010 16:18:08 +0000 (16:18 +0000)
SVN-Revision: 21046

toolchain/binutils/Makefile
toolchain/gcc/Config.in
toolchain/gcc/Makefile
toolchain/gcc/patches/4.5.0/910-mbsd_multi.patch
tools/Makefile
tools/libelf/Makefile [new file with mode: 0644]

index 5ded5f242aab039f79f4be3a8cd72b3ffe1b8300..423cec83c3e7acc22c70fbf6d0825489f4771b95 100644 (file)
@@ -49,12 +49,9 @@ BINUTILS_CONFIGURE:= \
                --disable-multilib \
                --disable-werror \
                --disable-nls \
                --disable-multilib \
                --disable-werror \
                --disable-nls \
-               $(if $(CONFIG_GCC_VERSION_4_4), \
-                 --with-ppl=$(REAL_STAGING_DIR_HOST) \
-                 --with-cloog=$(REAL_STAGING_DIR_HOST) \
-               ) \
+               $(GRAPHITE_CONFIGURE) \
                $(SOFT_FLOAT_CONFIG_OPTION) \
                $(SOFT_FLOAT_CONFIG_OPTION) \
-               $(call qstrip,$(CONFIG_EXTRA_BINUTILS_CONFIG_OPTIONS)) \
+               $(call qstrip,$(CONFIG_EXTRA_BINUTILS_CONFIG_OPTIONS)) 
 
 ifneq ($(CONFIG_SSP_SUPPORT),)
   BINUTILS_CONFIGURE+= \
 
 ifneq ($(CONFIG_SSP_SUPPORT),)
   BINUTILS_CONFIGURE+= \
index bd7d50995eb84b1509f505e77af644f03928ec9b..abbfe733e8cdc210247c305d1fddf770fdb71aad 100644 (file)
@@ -67,7 +67,13 @@ endchoice
 config GCC_USE_GRAPHITE
        bool
        prompt "Compile in support for the new Graphite framework in GCC 4.4+" if TOOLCHAINOPTS
 config GCC_USE_GRAPHITE
        bool
        prompt "Compile in support for the new Graphite framework in GCC 4.4+" if TOOLCHAINOPTS
-       depends GCC_VERSION_4_4_1 || GCC_VERSION_4_4_2 || GCC_VERSION_4_4_3
+       depends GCC_VERSION_4_4 || GCC_VERSION_4_5
+
+config GCC_USE_SYSTEM_PPL_CLOOG
+       bool
+       prompt "Use the system versions of PPL and CLooG
+       depends GCC_USE_GRAPHITE
+       default n
 
 config EXTRA_GCC_CONFIG_OPTIONS
        string
 
 config EXTRA_GCC_CONFIG_OPTIONS
        string
index ed9de15b3c42a7e25bc91652cf52013a683c163b..325fe7474e92d4479d5e2a11d8fa0901d785180d 100644 (file)
@@ -96,6 +96,7 @@ GCC_CONFIGURE:= \
                --disable-libmudflap \
                --disable-multilib \
                --disable-nls \
                --disable-libmudflap \
                --disable-multilib \
                --disable-nls \
+               $(GRAPHITE_CONFIGURE) \
                $(if $(CONFIG_GCC_USE_GRAPHITE),--with-host-libstdcxx=-lstdc++) \
                $(SOFT_FLOAT_CONFIG_OPTION) \
                $(call qstrip,$(CONFIG_EXTRA_GCC_CONFIG_OPTIONS)) \
                $(if $(CONFIG_GCC_USE_GRAPHITE),--with-host-libstdcxx=-lstdc++) \
                $(SOFT_FLOAT_CONFIG_OPTION) \
                $(call qstrip,$(CONFIG_EXTRA_GCC_CONFIG_OPTIONS)) \
@@ -103,7 +104,7 @@ GCC_CONFIGURE:= \
                $(if $(CONFIG_GCC_VERSION_LLVM),--enable-llvm=$(BUILD_DIR_BASE)/host/llvm) \
                $(if $(CONFIG_GCC_VERSION_4_3_3_CS)$(CONFIG_GCC_VERSION_4_4_1_CS)$(CONFIG_GCC_VERSION_4_4_3_CS),--enable-poison-system-directories)
 
                $(if $(CONFIG_GCC_VERSION_LLVM),--enable-llvm=$(BUILD_DIR_BASE)/host/llvm) \
                $(if $(CONFIG_GCC_VERSION_4_3_3_CS)$(CONFIG_GCC_VERSION_4_4_1_CS)$(CONFIG_GCC_VERSION_4_4_3_CS),--enable-poison-system-directories)
 
-ifneq ($(CONFIG_GCC_VERSION_4_3)$(CONFIG_GCC_VERSION_4_4),)
+ifneq ($(CONFIG_GCC_VERSION_4_3)$(CONFIG_GCC_VERSION_4_4)$(CONFIG_GCC_VERSION_4_5),)
   GCC_BUILD_TARGET_LIBGCC:=y
   GCC_CONFIGURE+= \
                --with-gmp=$(TOPDIR)/staging_dir/host \
   GCC_BUILD_TARGET_LIBGCC:=y
   GCC_CONFIGURE+= \
                --with-gmp=$(TOPDIR)/staging_dir/host \
@@ -164,7 +165,13 @@ GCC_CONFIGURE_STAGE2:= \
                --enable-languages=$(TARGET_LANGUAGES) \
                --enable-shared \
                --enable-threads \
                --enable-languages=$(TARGET_LANGUAGES) \
                --enable-shared \
                --enable-threads \
-               --with-slibdir=$(TOOLCHAIN_DIR)/lib \
+               --with-slibdir=$(TOOLCHAIN_DIR)/lib
+
+ifneq ($(CONFIG_GCC_VERSION_4_5),)
+  GCC_CONFIGURE_STAGE2+= \
+               --enable-lto \
+               --with-libelf=$(TOPDIR)/staging_dir/host
+endif
 
 ifneq ($(CONFIG_TLS_SUPPORT),)
   GCC_CONFIGURE_STAGE2+= \
 
 ifneq ($(CONFIG_TLS_SUPPORT),)
   GCC_CONFIGURE_STAGE2+= \
@@ -225,7 +232,7 @@ define Stage1/Install
        $(GCC_MAKE) -C $(HOST_BUILD_DIR1) \
                install-gcc \
                $(if $(GCC_BUILD_TARGET_LIBGCC),install-target-libgcc)
        $(GCC_MAKE) -C $(HOST_BUILD_DIR1) \
                install-gcc \
                $(if $(GCC_BUILD_TARGET_LIBGCC),install-target-libgcc)
-       
+
        # XXX: glibc insists on linking against libgcc_eh
        ( cd $(TOOLCHAIN_DIR)/usr/lib/gcc/$(REAL_GNU_TARGET_NAME)/$(PKG_VERSION) ; \
                [ -e libgcc_eh.a ] || ln -sf libgcc.a libgcc_eh.a ; \
        # XXX: glibc insists on linking against libgcc_eh
        ( cd $(TOOLCHAIN_DIR)/usr/lib/gcc/$(REAL_GNU_TARGET_NAME)/$(PKG_VERSION) ; \
                [ -e libgcc_eh.a ] || ln -sf libgcc.a libgcc_eh.a ; \
index 1cbc5dbcb4e35ed004528fd831f3de5d7fdb3940..0d5815a546e1db4530371eddbd0870e3d9bf140a 100644 (file)
  static void set_Wimplicit (int);
  static void handle_OPT_d (const char *);
  static void set_std_cxx98 (int);
  static void set_Wimplicit (int);
  static void handle_OPT_d (const char *);
  static void set_std_cxx98 (int);
+@@ -454,6 +457,9 @@
+       enable_warning_as_error ("implicit-function-declaration", value, CL_C | CL_ObjC); 
+       break;
++    case OPT_Werror_maybe_reset:
++      break;
++
+     case OPT_Wformat:
+       set_Wformat (value);
+       break;
 @@ -690,6 +701,12 @@
        flag_exceptions = value;
        break;
 @@ -690,6 +701,12 @@
        flag_exceptions = value;
        break;
  ; On SVR4 targets, it also controls whether or not to emit a
 --- a/gcc/opts.c
 +++ b/gcc/opts.c
  ; On SVR4 targets, it also controls whether or not to emit a
 --- a/gcc/opts.c
 +++ b/gcc/opts.c
-@@ -891,8 +891,6 @@
+@@ -896,8 +896,6 @@
    flag_schedule_insns_after_reload = opt2;
  #endif
    flag_regmove = opt2;
    flag_schedule_insns_after_reload = opt2;
  #endif
    flag_regmove = opt2;
    flag_reorder_blocks = opt2;
    flag_reorder_functions = opt2;
    flag_tree_vrp = opt2;
    flag_reorder_blocks = opt2;
    flag_reorder_functions = opt2;
    flag_tree_vrp = opt2;
-@@ -912,6 +910,9 @@
+@@ -922,6 +919,8 @@
  
    /* -O3 optimizations.  */
    opt3 = (optimize >= 3);
 +  flag_strict_aliasing = opt3;
 +  flag_strict_overflow = opt3;
  
    /* -O3 optimizations.  */
    opt3 = (optimize >= 3);
 +  flag_strict_aliasing = opt3;
 +  flag_strict_overflow = opt3;
-+  flag_delete_null_pointer_checks = opt3;
    flag_predictive_commoning = opt3;
    flag_inline_functions = opt3;
    flag_unswitch_loops = opt3;
    flag_predictive_commoning = opt3;
    flag_inline_functions = opt3;
    flag_unswitch_loops = opt3;
-@@ -1638,6 +1639,17 @@
+@@ -1601,6 +1601,17 @@
        enable_warning_as_error (arg, value, lang_mask);
        break;
  
 +    case OPT_Werror_maybe_reset:
 +      {
        enable_warning_as_error (arg, value, lang_mask);
        break;
  
 +    case OPT_Werror_maybe_reset:
 +      {
-+       char *ev = getenv ("GCC_NO_WERROR");
-+       if ((ev != NULL) && (*ev != '0'))
-+         warnings_are_errors = 0;
++      char *ev = getenv ("GCC_NO_WERROR");
++      if ((ev != NULL) && (*ev != '0'))
++        warnings_are_errors = 0;
 +      }
 +      break;
 +
 +      }
 +      break;
 +
 +      break;
 +
      case OPT_Wlarger_than_:
 +      break;
 +
      case OPT_Wlarger_than_:
-       /* This form corresponds to -Wlarger-than-.
-        Kept for backward compatibility.
+       /* This form corresponds to -Wlarger-than-. 
+          Kept for backward compatibility.
 --- a/gcc/doc/cppopts.texi
 +++ b/gcc/doc/cppopts.texi
 @@ -164,6 +164,11 @@
 --- a/gcc/doc/cppopts.texi
 +++ b/gcc/doc/cppopts.texi
 @@ -164,6 +164,11 @@
  
  @item -fsplit-wide-types
  @opindex fsplit-wide-types
  
  @item -fsplit-wide-types
  @opindex fsplit-wide-types
-@@ -5844,7 +5860,7 @@
- @option{-fno-delete-null-pointer-checks} to disable this optimization
- for programs which depend on that behavior.
--Enabled at levels @option{-O2}, @option{-O3}, @option{-Os}.
-+Enabled at levels @option{-O3}.
- @item -fexpensive-optimizations
- @opindex fexpensive-optimizations
 --- a/gcc/java/jvspec.c
 +++ b/gcc/java/jvspec.c
 @@ -670,6 +670,7 @@
 --- a/gcc/java/jvspec.c
 +++ b/gcc/java/jvspec.c
 @@ -670,6 +670,7 @@
index cad5011c306a6da8ae37b6ab7fbb76601c34ca8e..a173722ad2f7f7db123eddc26e4d5e7d56224cf2 100644 (file)
@@ -11,11 +11,8 @@ curdir:=tools
 # subdirectories to descend into
 tools-y :=
 ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
 # subdirectories to descend into
 tools-y :=
 ifeq ($(CONFIG_EXTERNAL_TOOLCHAIN),)
-ifeq ($(CONFIG_GCC_VERSION_4_5),y)
-tools-$(CONFIG_GCC_VERSION_4_5) += gmp mpfr mpc
-else
-tools-$(CONFIG_GCC_VERSION_4_3)$(CONFIG_GCC_VERSION_4_4) += gmp mpfr
-endif
+tools-$(CONFIG_GCC_VERSION_4_3)$(CONFIG_GCC_VERSION_4_4)$(CONFIG_GCC_VERSION_4_5) += gmp mpfr
+tools-$(CONFIG_GCC_VERSION_4_5) += mpc libelf
 endif
 tools-y += m4 autoconf automake bison pkg-config sed mklibs
 tools-y += sstrip ipkg-utils genext2fs libuuid mtd-utils mkimage
 endif
 tools-y += m4 autoconf automake bison pkg-config sed mklibs
 tools-y += sstrip ipkg-utils genext2fs libuuid mtd-utils mkimage
@@ -32,8 +29,10 @@ endif
 tools-$(CONFIG_CCACHE) += ccache
 
 ifdef CONFIG_GCC_USE_GRAPHITE
 tools-$(CONFIG_CCACHE) += ccache
 
 ifdef CONFIG_GCC_USE_GRAPHITE
-  tools-y += ppl cloog
-  $(curdir)/cloog/compile := $(curdir)/ppl/install
+  ifeq ($(CONFIG_GCC_USE_SYSTEM_PPL_CLOOG),)
+       tools-y += ppl cloog
+       $(curdir)/cloog/compile := $(curdir)/ppl/install
+  endif
 endif
 
 # builddir dependencies
 endif
 
 # builddir dependencies
diff --git a/tools/libelf/Makefile b/tools/libelf/Makefile
new file mode 100644 (file)
index 0000000..00d424f
--- /dev/null
@@ -0,0 +1,49 @@
+#\r
+# Copyright (C) 2010 OpenWrt.org\r
+#\r
+# This is free software, licensed under the GNU General Public License v2.\r
+# See /LICENSE for more information.\r
+#\r
+\r
+include $(TOPDIR)/rules.mk\r
+\r
+PKG_NAME:=libelf\r
+PKG_VERSION:=0.8.13\r
+PKG_MD5SUM:=4136d7b4c04df68b686570afa26988ac\r
+PKG_RELEASE:=1\r
+\r
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz\r
+PKG_SOURCE_URL:=http://www.mr511.de/software/\r
+\r
+include $(INCLUDE_DIR)/host-build.mk\r
+\r
+HOST_CONFIGURE_ARGS += \\r
+       --disable-shared \\r
+       --enable-elf64\r
+\r
+define Host/Configure\r
+        (cd $(HOST_BUILD_DIR)/$(3); \\r
+                $(HOST_CONFIGURE_CMD) \\r
+                $(HOST_CONFIGURE_ARGS); \\r
+        )\r
+endef\r
+\r
+\r
+define Host/Compile\r
+       $(MAKE) -C $(HOST_BUILD_DIR)/lib/ libelf.a\r
+endef\r
+\r
+define Host/Install\r
+       $(INSTALL_DIR) $(STAGING_DIR_HOST)/{lib,include/libelf}\r
+       $(CP) $(HOST_BUILD_DIR)/lib/{elf_repl.h,gelf.h,libelf.h,nlist.h,sys_elf.h} \\r
+                                               $(STAGING_DIR_HOST)/include/libelf/\r
+       $(CP) $(HOST_BUILD_DIR)/lib/libelf.a $(STAGING_DIR_HOST)/lib/\r
+endef\r
+\r
+define Host/Clean\r
+       rm -rf $(STAGING_DIR_HOST)/include/libelf\r
+       rm -f $(STAGING_DIR_HOST)/lib/libelf.a\r
+       $(call Host/Clean/Default)\r
+endef\r
+\r
+$(eval $(call HostBuild))\r