summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Config.in89
-rw-r--r--package/busybox/busybox.mk8
-rw-r--r--toolchain/gcc/Config.in.28
-rw-r--r--toolchain/gcc/Makefile.in14
4 files changed, 87 insertions, 32 deletions
diff --git a/Config.in b/Config.in
index 7d13e1190..f4ccebc0a 100644
--- 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
diff --git a/package/busybox/busybox.mk b/package/busybox/busybox.mk
index 583cd3ebb..a997aa718 100644
--- a/package/busybox/busybox.mk
+++ b/package/busybox/busybox.mk
@@ -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)
diff --git a/toolchain/gcc/Config.in.2 b/toolchain/gcc/Config.in.2
index 24b316307..d83502ba1 100644
--- a/toolchain/gcc/Config.in.2
+++ b/toolchain/gcc/Config.in.2
@@ -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.
diff --git a/toolchain/gcc/Makefile.in b/toolchain/gcc/Makefile.in
index 1b6e24133..c325b6a43 100644
--- a/toolchain/gcc/Makefile.in
+++ b/toolchain/gcc/Makefile.in
@@ -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