config FREETZ_UCLIBC_0_9_28_BASED_BOX bool default y if \ ! FREETZ_UCLIBC_0_9_29_BASED_BOX && \ ! FREETZ_UCLIBC_0_9_30_BASED_BOX && \ ! FREETZ_UCLIBC_0_9_31_BASED_BOX default n config FREETZ_UCLIBC_0_9_29_BASED_BOX bool default y if \ FREETZ_TYPE_FON_5124 || \ FREETZ_TYPE_FON_WLAN_7112 || \ FREETZ_TYPE_FON_WLAN_7113 && FREETZ_TYPE_LANG_EN || \ (FREETZ_TYPE_FON_WLAN_7140 && (FREETZ_TYPE_LANG_EN || FREETZ_TYPE_LANG_A_CH)) || \ FREETZ_TYPE_FON_WLAN_7141 || \ FREETZ_TYPE_FON_7150 || \ FREETZ_TYPE_FON_WLAN_7170 || \ FREETZ_TYPE_FON_WLAN_7270_V1 || \ FREETZ_TYPE_FON_WLAN_7570 default n config FREETZ_UCLIBC_0_9_30_BASED_BOX bool default y if \ FREETZ_TYPE_FON_WLAN_7320 default n config FREETZ_UCLIBC_0_9_31_BASED_BOX bool default y if \ FREETZ_TYPE_6840 || \ FREETZ_TYPE_FON_WLAN_7240 || \ FREETZ_TYPE_FON_WLAN_7270_V2 || \ FREETZ_TYPE_FON_WLAN_7270_V3 || \ FREETZ_TYPE_FON_WLAN_7330 || \ FREETZ_TYPE_FON_WLAN_7340 || \ FREETZ_TYPE_FON_WLAN_7390 || \ FREETZ_TYPE_WLAN_3270 || \ FREETZ_TYPE_WLAN_3270_V3 || \ FREETZ_TYPE_WLAN_3370 default n comment "Kernel toolchain options ----------------------------------" choice prompt "Kernel compiler" default FREETZ_KERNEL_COMPILER_GCC_4_4 if FREETZ_KERNEL_VERSION_2_6_28_MIN default FREETZ_KERNEL_COMPILER_GCC_3_4 if FREETZ_KERNEL_VERSION_2_6_19_MAX config FREETZ_KERNEL_COMPILER_GCC_3_4 bool "gcc-3.4.6" depends on FREETZ_KERNEL_VERSION_2_6_19_MAX config FREETZ_KERNEL_COMPILER_GCC_4_4 bool "gcc-4.4.6" depends on FREETZ_KERNEL_VERSION_2_6_28_MIN endchoice config FREETZ_KERNEL_GCC_VERSION string default "4.4.6" if FREETZ_KERNEL_COMPILER_GCC_4_4 default "3.4.6" config FREETZ_KERNEL_BINUTILS_VERSION string default "2.22" if FREETZ_KERNEL_COMPILER_GCC_4_4 default "2.18" comment "Target toolchain options ----------------------------------" choice prompt "Target uClibc version" default FREETZ_TARGET_UCLIBC_VERSION_0_9_28 if FREETZ_UCLIBC_0_9_28_BASED_BOX default FREETZ_TARGET_UCLIBC_VERSION_0_9_29 if FREETZ_UCLIBC_0_9_29_BASED_BOX default FREETZ_TARGET_UCLIBC_VERSION_0_9_30 if FREETZ_UCLIBC_0_9_30_BASED_BOX default FREETZ_TARGET_UCLIBC_VERSION_0_9_31 if FREETZ_UCLIBC_0_9_31_BASED_BOX config FREETZ_TARGET_UCLIBC_VERSION_0_9_28 bool "0.9.28" depends on FREETZ_UCLIBC_0_9_28_BASED_BOX config FREETZ_TARGET_UCLIBC_VERSION_0_9_29 bool "0.9.29" depends on FREETZ_UCLIBC_0_9_29_BASED_BOX config FREETZ_TARGET_UCLIBC_VERSION_0_9_30 bool "0.9.30.3" depends on FREETZ_UCLIBC_0_9_30_BASED_BOX \ || (FREETZ_BUILD_TOOLCHAIN && FREETZ_UCLIBC_0_9_29_BASED_BOX) config FREETZ_TARGET_UCLIBC_VERSION_0_9_31 bool "0.9.31.1" depends on FREETZ_UCLIBC_0_9_31_BASED_BOX \ || (FREETZ_BUILD_TOOLCHAIN && (FREETZ_UCLIBC_0_9_29_BASED_BOX || FREETZ_UCLIBC_0_9_30_BASED_BOX)) config FREETZ_TARGET_UCLIBC_VERSION_0_9_32 bool "0.9.32" depends on FREETZ_BUILD_TOOLCHAIN && \ ( \ FREETZ_UCLIBC_0_9_29_BASED_BOX \ || FREETZ_UCLIBC_0_9_30_BASED_BOX \ || FREETZ_UCLIBC_0_9_31_BASED_BOX \ ) endchoice comment "CAUTION: Usage of an uClibc version higher than that used by AVM may lead to an unstable box" depends on (FREETZ_UCLIBC_0_9_29_BASED_BOX && !FREETZ_TARGET_UCLIBC_VERSION_0_9_29) \ || (FREETZ_UCLIBC_0_9_30_BASED_BOX && !FREETZ_TARGET_UCLIBC_VERSION_0_9_30) \ || (FREETZ_UCLIBC_0_9_31_BASED_BOX && !FREETZ_TARGET_UCLIBC_VERSION_0_9_31) choice prompt "uClibc config" if FREETZ_BUILD_TOOLCHAIN default FREETZ_TARGET_UCLIBC_CONFIG_MOD config FREETZ_TARGET_UCLIBC_CONFIG_MOD bool "mod (recommended)" config FREETZ_TARGET_UCLIBC_CONFIG_4MB bool "4MB" if FREETZ_TARGET_REF_4MB config FREETZ_TARGET_UCLIBC_CONFIG_8MB bool "8MB" if FREETZ_TARGET_REF_8MB config FREETZ_TARGET_UCLIBC_CONFIG_16MB bool "16MB" if FREETZ_TARGET_REF_16MB endchoice choice prompt "Target compiler" default FREETZ_TARGET_COMPILER_GCC_4_5 if FREETZ_TARGET_UCLIBC_VERSION_0_9_31 default FREETZ_TARGET_COMPILER_GCC_4_4 config FREETZ_TARGET_COMPILER_GCC_4_4 bool "gcc-4.4.6" depends on ! (FREETZ_DOWNLOAD_TOOLCHAIN && FREETZ_TARGET_UCLIBC_VERSION_0_9_31) config FREETZ_TARGET_COMPILER_GCC_4_5 bool "gcc-4.5.3" depends on FREETZ_BUILD_TOOLCHAIN \ || (FREETZ_DOWNLOAD_TOOLCHAIN && FREETZ_TARGET_UCLIBC_VERSION_0_9_31) config FREETZ_TARGET_COMPILER_GCC_4_6 bool "gcc-4.6.2" depends on FREETZ_BUILD_TOOLCHAIN endchoice choice prompt "Standard C++ Library" default FREETZ_STDCXXLIB_USE_UCLIBCXX help Library to be used as the implementation of the Standard C++ Library. config FREETZ_STDCXXLIB_USE_UCLIBCXX bool "uClibc++" help uClibc++ is an implementation of the Standard C++ Library optimized for embedded systems (primarily for size). Its size is ~160KB. It however lacks a complete support for wchar type. It also has some performance deficiencies, e.g. std::map::find requires O(n), bubble sort O(n^2) is used as sort algorithm, and etc. config FREETZ_STDCXXLIB_USE_GNULIBSTDCXX bool "GNU libstdc++" help GNU libstdc++ is an implementation of the Standard C++ Library from the developers of the GNU Compiler Collection (GCC). It provides a full support for all features defined in the 2nd edition of the C++ Standard (ISO/IEC 14882:2003) and for many features of the upcoming version of the Standard. The only disadvantage it has compared to uClibc++ is its size - upto 900KB depending on the compiler version. endchoice config FREETZ_TARGET_UCLIBC_VERSION string default "0.9.28" if FREETZ_TARGET_UCLIBC_VERSION_0_9_28 default "0.9.29" if FREETZ_TARGET_UCLIBC_VERSION_0_9_29 default "0.9.30.3" if FREETZ_TARGET_UCLIBC_VERSION_0_9_30 default "0.9.31.1" if FREETZ_TARGET_UCLIBC_VERSION_0_9_31 default "0.9.32" if FREETZ_TARGET_UCLIBC_VERSION_0_9_32 config FREETZ_TARGET_GCC_VERSION string default "4.4.6" if FREETZ_TARGET_COMPILER_GCC_4_4 default "4.5.3" if FREETZ_TARGET_COMPILER_GCC_4_5 default "4.6.2" if FREETZ_TARGET_COMPILER_GCC_4_6 config FREETZ_GNULIBSTDCXX_VERSION string default "6.0.13" if FREETZ_TARGET_COMPILER_GCC_4_4 default "6.0.14" if FREETZ_TARGET_COMPILER_GCC_4_5 default "6.0.16" if FREETZ_TARGET_COMPILER_GCC_4_6 config FREETZ_STDCXXLIB string default "uclibcxx" if FREETZ_STDCXXLIB_USE_UCLIBCXX default "libstdcxx" if FREETZ_STDCXXLIB_USE_GNULIBSTDCXX config FREETZ_TARGET_BINUTILS_VERSION string default "2.22" config FREETZ_TARGET_UCLIBC_REF string default "orig-4mb" if FREETZ_TARGET_UCLIBC_CONFIG_4MB default "orig-8mb" if FREETZ_TARGET_UCLIBC_CONFIG_8MB default "orig-16mb" if FREETZ_TARGET_UCLIBC_CONFIG_16MB default "mod" config FREETZ_TARGET_CFLAGS string "Target compiler flags" default "-Os -pipe -Wa,--trap" config FREETZ_TARGET_TOOLCHAIN_AVM_COMPATIBLE bool "Create toolchain compatible with original firmware" depends on FREETZ_BUILD_TOOLCHAIN && (FREETZ_UCLIBC_0_9_28_BASED_BOX || FREETZ_UCLIBC_0_9_29_BASED_BOX) default n help In order to produce smaller binaries freetz toolchain is compiled with mips-plt optimizations enabled. Because of the missing support for the required relocation types in uClibc versions prior to 0.9.30 the binaries produced with a toolchain optimized this way could not be run on boxes with original firmware. This option causes mips-plt optimizations to be disabled. The binaries compiled with such toolchain could be run on boxes with unmodified firmware. Note: mips-plt optimizations affect only dynamically linked binaries. In case all binaries you want to run on an unmodified box will be linked statically it is safe to say 'no' here. config FREETZ_TARGET_UCLIBC_REDUCED_LOCALE_SET bool "Use reduced set of locales" if FREETZ_BUILD_TOOLCHAIN && \ ( \ FREETZ_TARGET_UCLIBC_VERSION_0_9_29 || \ FREETZ_TARGET_UCLIBC_VERSION_0_9_30 || \ FREETZ_TARGET_UCLIBC_VERSION_0_9_31 || \ FREETZ_TARGET_UCLIBC_VERSION_0_9_32 \ ) default n help This option causes only the following locales to be included into uClibc: - en_US - en_US.UTF-8 - de_DE - de_DE.UTF-8 This saves about 235KB in the image and at run-time. config FREETZ_TARGET_NLS # bool "Native language support (NLS) for target toolchain" if FREETZ_BUILD_TOOLCHAIN bool default n help Support NLS-enabled programs and Linux tools on target system. Example: $ ls /foo/bar ls: /foo/bar: No such file or directory $ export LANG=de_DE.8859-1 $ ls /foo/bar ls: /foo/bar: Datei oder Verzeichnis nicht gefunden config FREETZ_TARGET_LFS bool "Large file support (LFS) for target toolchain" if FREETZ_BUILD_TOOLCHAIN default y help Support files > 2 GB on target system. This is desirable for Torrent clients, for example. This option is enabled by default and should not be changed unless you know what you are doing, as it can easily cause problems. config FREETZ_TARGET_TOOLCHAIN select FREETZ_LIB_libgmp select FREETZ_LIB_libmpfr select FREETZ_LIB_libmpc if (FREETZ_TARGET_COMPILER_GCC_4_5 || FREETZ_TARGET_COMPILER_GCC_4_6) bool "Build binutils and gcc for target" if FREETZ_BUILD_TOOLCHAIN default n help Build the binutils and gcc to run on the target. Files are installed into toolchain/target/target-utils. comment "Both kernel and target toolchain related options ----------" config FREETZ_TOOLCHAIN_STATIC # bool "Build static toolchains" if FREETZ_BUILD_TOOLCHAIN bool default n help Build statically linked kernel and target toolchains. config FREETZ_TOOLCHAIN_MINIMIZE_REQUIRED_GLIBC_VERSION # bool "Minimize required GLIBC version" if FREETZ_BUILD_TOOLCHAIN bool default y config FREETZ_TOOLCHAIN_32BIT bool "Build 32-bit toolchains" if FREETZ_BUILD_TOOLCHAIN default n help This option causes a 32-bit toolchain to be built even on 64-bit systems. config FREETZ_TOOLCHAIN_CCACHE bool "Build ccache" default n help ccache is a compiler cache. It acts as a caching pre-processor to C/C++ compilers, using the -E compiler switch and a hash to detect when a compilation can be satisfied from cache. This often results in a 5 to 10 times speedup in common compilations. The idea came from Erik Thiele wrote the original compilercache program as a bourne shell script. ccache is a re-implementation of Erik's idea in C with more features and better performance.