- add an experimental BR2_PREFER_IMA.
authorBernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Sun, 28 Jan 2007 12:03:58 +0000 (12:03 -0000)
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Sun, 28 Jan 2007 12:03:58 +0000 (12:03 -0000)
  Currently disfunctional for gcc-4.2 due to PR30620 and possibly others

Config.in
package/busybox/busybox.mk
toolchain/gcc/Config.in.2
toolchain/gcc/Makefile.in

index 7d13e119014f6292605a7f6394d3c6e040e11f76..f4ccebc0a4f6c0005695f863101b90150fb8dfda 100644 (file)
--- a/Config.in
+++ b/Config.in
@@ -10,7 +10,7 @@ choice
        prompt "Target Architecture"
        default BR2_i386
        help
-         Stuff
+         Select the target architecture family to build for.
 
 config BR2_alpha
        bool "alpha"
@@ -52,6 +52,9 @@ choice
        prompt "Target Architecture Variant"
        depends BR2_arm || BR2_armeb
        default BR2_generic_arm
+       help
+         Specific CPU variant to use
+
 config BR2_generic_arm
        bool "generic_arm"
 config BR2_arm610
@@ -97,6 +100,9 @@ choice
        prompt "Target ABI"
        depends BR2_arm || BR2_armeb
        default BR2_ARM_OABI
+       help
+         Application Binary Interface to use
+
 config BR2_ARM_OABI
        bool "OABI"
 config BR2_ARM_EABI
@@ -107,6 +113,9 @@ choice
        prompt "Target Architecture Variant"
        depends BR2_sh
        default BR2_sh4
+       help
+         Specific CPU variant to use
+
 config BR2_sh2a_nofpueb
        bool "sh2a_nofpueb"
 config BR2_sh2eb
@@ -129,6 +138,9 @@ choice
        prompt "Target Architecture Variant"
        depends BR2_i386
        default BR2_x86_i686
+       help
+         Specific CPU variant to use
+
 config BR2_x86_i386
        bool "i386"
 config BR2_x86_i486
@@ -221,54 +233,54 @@ config BR2_SOURCEFORGE_MIRROR
        string "Sourceforge mirror site"
        default "easynews"
        help
-           Sourceforge has a system of mirror sites.  Some sites may be closer
-           to your location, and sometimes mirror sites go down and are no longer
-           available.  This option allows you to select your preferred Sourceforge
-           mirror site.
+         Sourceforge has a system of mirror sites.  Some sites may be closer
+         to your location, and sometimes mirror sites go down and are no longer
+         available.  This option allows you to select your preferred Sourceforge
+         mirror site.
 
-           The list of mirrors is available here:
-           http://prdownloads.sourceforge.net/index-sf.html?download
+         The list of mirrors is available here:
+         http://prdownloads.sourceforge.net/index-sf.html?download
 
 config BR2_STAGING_DIR
        string "Toolchain and header file location?"
        default "$(BUILD_DIR)/staging_dir"
        help
-           This is the location where the toolchain will be installed.  The
-           toolchain will not work if it is moved from this location.
-           Therefore, if you wish to package up a uClibc toolchain, it is
-           important that is is set to the final location where the toolchain
-           will be used.
+         This is the location where the toolchain will be installed.  The
+         toolchain will not work if it is moved from this location.
+         Therefore, if you wish to package up a uClibc toolchain, it is
+         important that is is set to the final location where the toolchain
+         will be used.
 
-           Most people will leave this set to the default value of
-           "$(BUILD_DIR)/staging_dir".
+         Most people will leave this set to the default value of
+         "$(BUILD_DIR)/staging_dir".
 
 config BR2_TOPDIR_PREFIX
        string "Custom build dir prefix"
        default ""
        help
-           Add a custom string to the beginning of the build directories.
+         Add a custom string to the beginning of the build directories.
 
-           build_ARCH -> [PREFIX]_build_ARCH
-           toolchain_build_ARCH -> [PREFIX]_toolchain_build_ARCH
+         build_ARCH -> [PREFIX]_build_ARCH
+         toolchain_build_ARCH -> [PREFIX]_toolchain_build_ARCH
 
 config BR2_TOPDIR_SUFFIX
        string "Custom build dir suffix"
        default ""
        help
-           Add a custom string to the end of the build directories.
+         Add a custom string to the end of the build directories.
 
-           build_ARCH -> build_ARCH_[SUFFIX]
-           toolchain_build_ARCH -> toolchain_build_ARCH_[SUFFIX] 
+         build_ARCH -> build_ARCH_[SUFFIX]
+         toolchain_build_ARCH -> toolchain_build_ARCH_[SUFFIX] 
 
 config BR2_GNU_BUILD_SUFFIX
        string "GNU build hostname suffix"
        default "pc-linux-gnu"
        help
-           The string used to pass to configure scripts via the
-           --build= option.  Just specify the suffix here, the leading
-           arch will be filled in automatically.
+         The string used to pass to configure scripts via the
+         --build= option.  Just specify the suffix here, the leading
+         arch will be filled in automatically.
 
-           Here's some copy and paste build host options for you:
+         Here's some copy and paste build host options for you:
              linux:   pc-linux-gnu
              cygwin:  pc-cygwin
              os x:    apple-darwin7 / apple-darwin8
@@ -278,15 +290,15 @@ config BR2_GNU_TARGET_SUFFIX
        default "linux-uclibcgnueabi" if BR2_ARM_EABI
        default "linux-uclibc"
        help
-           The string used to pass to configure scripts via the
-           --target= option.  Just specify the suffix here, the leading
-           arch will be filled in automatically.
+         The string used to pass to configure scripts via the
+         --target= option.  Just specify the suffix here, the leading
+         arch will be filled in automatically.
 
-           Most users will want to stick with the default setting, though
-           other users (most notably ARM EABI) like to add on to this in
-           order to stay in line with gcc conventions.
+         Most users will want to stick with the default setting, though
+         other users (most notably ARM EABI) like to add on to this in
+         order to stay in line with gcc conventions.
 
-           Default options are:
+         Default options are:
              linux-uclibcgnueabi for ARM EABI
              linux-uclibc for the rest
 
@@ -294,7 +306,20 @@ config BR2_JLEVEL
        int "Number of jobs to run simultaneously"
        default "1"
        help
-           Number of jobs to run simultaneously
+         Number of jobs to run simultaneously
+
+config BR2_PREFER_IMA
+       bool "prefer IMA compiles"
+       default n
+       help
+         Where possible, compile package with Inter Module Analysis.
+         This potentially uses alot of system resources on your compile
+         host with the benefit of creating smaller binaries for the target.
+
+         If unsure, say No.
+
+         WARNING: This is highly experimental at the moment.
+
 
 endmenu
 
index 583cd3ebb8a2b72ec6e6d9859fbc7346ddb265b0..a997aa7187bdf6c6aec2fa98e1d8f81484cd0811 100644 (file)
@@ -96,6 +96,14 @@ $(BUSYBOX_DIR)/busybox: $(BUSYBOX_DIR)/.configured
                CROSS="$(TARGET_CROSS)" PREFIX="$(TARGET_DIR)" \
                ARCH=$(KERNEL_ARCH) \
                EXTRA_CFLAGS="$(TARGET_CFLAGS)" -C $(BUSYBOX_DIR)
+ifeq ($(BR2_PREFER_IMA)$(BR2_PACKAGE_BUSYBOX_SNAPSHOT),yy)
+       rm -f $@
+       $(MAKE) CC=$(TARGET_CC) CROSS_COMPILE="$(TARGET_CROSS)" \
+               CROSS="$(TARGET_CROSS)" PREFIX="$(TARGET_DIR)" \
+               ARCH=$(KERNEL_ARCH) STRIP="$(STRIP)" \
+               EXTRA_CFLAGS="$(TARGET_CFLAGS)" -C $(BUSYBOX_DIR) \
+               -f scripts/Makefile.IMA
+endif
 
 $(TARGET_DIR)/bin/busybox: $(BUSYBOX_DIR)/busybox
 ifeq ($(BR2_PACKAGE_BUSYBOX_INSTALL_SYMLINKS),y)
index 24b3163076a582cbd2a9b2321a01b73c1a8ceb1d..d83502ba1656c2154cad70cfcbb9223378d15623 100644 (file)
@@ -5,3 +5,11 @@ config BR2_PACKAGE_GCC_TARGET
        help
          If you want the target system to be able to run 
          binutils/gcc and compile native code, say Y here.
+
+config BR2_EXTRA_TARGET_GCC_CONFIG_OPTIONS
+       string "Additional target gcc options"
+       default ""
+       help
+         Any additional target gcc options you may want to include....
+         Including, but not limited to --disable-checking etc.
+         Refer to */configure in your gcc sources.
index 1b6e241333a7ae005681679abeabcf3a2cf3fa80..c325b6a43f6f0a9153e2c48e3c3533c9772f212c 100644 (file)
@@ -55,5 +55,19 @@ TARGET_GCC_FLAGS= CFLAGS_FOR_TARGET="$(TARGET_CFLAGS) $(TARGET_SOFT_FLOAT)" \
        BOOT_CFLAGS="$(TARGET_CFLAGS) $(TARGET_SOFT_FLOAT)"
 
 ifeq ($(strip $(BR2_PACKAGE_GCC_TARGET)),y)
+# pull in config opts from the user
+EXTRA_TARGET_GCC_CONFIG_OPTIONS:=$(strip $(subst ",, $(BR2_EXTRA_TARGET_GCC_CONFIG_OPTIONS)))
+#"))
+
+ifeq ($(BR2_PREFER_IMA),y)
+# >= 4.2
+ifeq ($(findstring 4.2,$(GCC_VERSION)),4.2)
+EXTRA_TARGET_GCC_CONFIG_OPTIONS+=--enable-intermodule
+endif
+ifeq ($(findstring 4.3,$(GCC_VERSION)),4.3)
+EXTRA_TARGET_GCC_CONFIG_OPTIONS+=--enable-intermodule
+endif
+endif # BR2_PREFER_IMA=y
+
 TARGETS+=gcc_target
 endif