config FREETZ_GCC_3_4_COMPILED_KERNEL bool default y if FREETZ_KERNEL_VERSION_2_6_19_MAX default n config FREETZ_GCC_4_6_COMPILED_KERNEL bool default y if FREETZ_KERNEL_VERSION_2_6_28_MIN default n config FREETZ_UCLIBC_0_9_28_BASED_BOX bool default y if \ ! FREETZ_UCLIBC_0_9_29_BASED_BOX && \ ! FREETZ_UCLIBC_0_9_32_BASED_BOX default n config FREETZ_UCLIBC_0_9_29_BASED_BOX bool default y if \ FREETZ_TYPE_5124 || \ FREETZ_TYPE_7112 || \ FREETZ_TYPE_7113 && FREETZ_TYPE_LANG_EN || \ (FREETZ_TYPE_7140 && (FREETZ_TYPE_LANG_EN || FREETZ_TYPE_LANG_A_CH)) || \ FREETZ_TYPE_7141 || \ FREETZ_TYPE_7150 || \ FREETZ_TYPE_7170 || \ FREETZ_TYPE_7270_V1 || \ FREETZ_TYPE_7570 default n config FREETZ_UCLIBC_0_9_32_BASED_BOX bool default y if \ FREETZ_TYPE_3270 || \ FREETZ_TYPE_3370 || \ FREETZ_TYPE_3390 || \ FREETZ_TYPE_6810 || \ FREETZ_TYPE_6840 || \ FREETZ_TYPE_7240 || \ FREETZ_TYPE_7270_16 || \ FREETZ_TYPE_7312 || \ FREETZ_TYPE_7320 || \ FREETZ_TYPE_7330 || \ FREETZ_TYPE_7340 || \ FREETZ_TYPE_7360 || \ FREETZ_TYPE_7390 default n comment "Kernel toolchain options ----------------------------------" choice prompt "Kernel binutils" default FREETZ_KERNEL_BINUTILS_2_18 if FREETZ_GCC_3_4_COMPILED_KERNEL default FREETZ_KERNEL_BINUTILS_2_22 if FREETZ_GCC_4_6_COMPILED_KERNEL config FREETZ_KERNEL_BINUTILS_2_18 bool "binutils-2.18" depends on FREETZ_GCC_3_4_COMPILED_KERNEL config FREETZ_KERNEL_BINUTILS_2_22 bool "binutils-2.22" depends on FREETZ_GCC_4_6_COMPILED_KERNEL config FREETZ_KERNEL_BINUTILS_2_23 bool "binutils-2.23.2 - EXPERIMENTAL" depends on FREETZ_GCC_4_6_COMPILED_KERNEL && (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE) endchoice choice prompt "Kernel compiler" default FREETZ_KERNEL_COMPILER_GCC_3_4 if FREETZ_GCC_3_4_COMPILED_KERNEL default FREETZ_KERNEL_COMPILER_GCC_4_6 if FREETZ_GCC_4_6_COMPILED_KERNEL config FREETZ_KERNEL_COMPILER_GCC_3_4 bool "gcc-3.4.6" depends on FREETZ_GCC_3_4_COMPILED_KERNEL config FREETZ_KERNEL_COMPILER_GCC_4_6 bool "gcc-4.6.4" depends on FREETZ_GCC_4_6_COMPILED_KERNEL endchoice config FREETZ_KERNEL_BINUTILS_VERSION string default "2.18" if FREETZ_KERNEL_BINUTILS_2_18 default "2.22" if FREETZ_KERNEL_BINUTILS_2_22 default "2.23.2" if FREETZ_KERNEL_BINUTILS_2_23 config FREETZ_KERNEL_GCC_VERSION string default "3.4.6" if FREETZ_KERNEL_COMPILER_GCC_3_4 default "4.6.4" if FREETZ_KERNEL_COMPILER_GCC_4_6 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_32 if FREETZ_UCLIBC_0_9_32_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_32 bool "0.9.32.1" depends on FREETZ_UCLIBC_0_9_32_BASED_BOX \ || ((FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE) && FREETZ_UCLIBC_0_9_29_BASED_BOX) config FREETZ_TARGET_UCLIBC_VERSION_0_9_33 bool "0.9.33.2" depends on (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE) && (FREETZ_UCLIBC_0_9_29_BASED_BOX || FREETZ_UCLIBC_0_9_32_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_32_BASED_BOX && !FREETZ_TARGET_UCLIBC_VERSION_0_9_32) choice prompt "Target binutils" default FREETZ_TARGET_BINUTILS_2_22 config FREETZ_TARGET_BINUTILS_2_22 bool "binutils-2.22" config FREETZ_TARGET_BINUTILS_2_23 bool "binutils-2.23.2 - EXPERIMENTAL" depends on FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE endchoice choice prompt "Target compiler" default FREETZ_TARGET_COMPILER_GCC_4_6 config FREETZ_TARGET_COMPILER_GCC_4_6 bool "gcc-4.6.4" config FREETZ_TARGET_COMPILER_GCC_4_7 bool "gcc-4.7.3" depends on FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE 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.32.1" if FREETZ_TARGET_UCLIBC_VERSION_0_9_32 default "0.9.33.2" if FREETZ_TARGET_UCLIBC_VERSION_0_9_33 config FREETZ_TARGET_BINUTILS_VERSION string default "2.22" if FREETZ_TARGET_BINUTILS_2_22 default "2.23.2" if FREETZ_TARGET_BINUTILS_2_23 config FREETZ_TARGET_GCC_VERSION string default "4.6.4" if FREETZ_TARGET_COMPILER_GCC_4_6 default "4.7.3" if FREETZ_TARGET_COMPILER_GCC_4_7 config FREETZ_GNULIBSTDCXX_VERSION string default "6.0.16" if FREETZ_TARGET_COMPILER_GCC_4_6 default "6.0.17" if FREETZ_TARGET_COMPILER_GCC_4_7 config FREETZ_STDCXXLIB string default "uclibcxx" if FREETZ_STDCXXLIB_USE_UCLIBCXX default "libstdcxx" if FREETZ_STDCXXLIB_USE_GNULIBSTDCXX config FREETZ_TARGET_UCLIBC_REF string 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_32 || \ FREETZ_TARGET_UCLIBC_VERSION_0_9_33 \ ) default y 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 select FREETZ_BUSYBOX_LFS 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 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_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.