menu "Toolchain options" visible if FREETZ_SHOW_EXPERT choice prompt "Toolchains" default FREETZ_DOWNLOAD_TOOLCHAIN config FREETZ_DOWNLOAD_TOOLCHAIN bool "Use precompiled x86_64 toolchains" config FREETZ_BUILD_TOOLCHAIN bool "Build own toolchains (4GB diskspace)" endchoice # "Toolchains" # config FREETZ_TOOLCHAIN_CCACHE bool "Build ccache for kernel and target" default y 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. config FREETZ_TOOLCHAIN_MINIMIZE_REQUIRED_GLIBC_VERSION # bool "Minimize required GLIBC version" if FREETZ_BUILD_TOOLCHAIN bool default y comment "Kernel toolchain options ----------------------------------------" config FREETZ_KERNEL_BINUTILS_2_18_DEFAULT bool depends on FREETZ_AVM_GCC_3_4_MAX default y config FREETZ_KERNEL_BINUTILS_2_22_DEFAULT bool depends on FREETZ_AVM_GCC_4_6_MIN && FREETZ_AVM_VERSION_06_9X_MAX && FREETZ_KERNEL_VERSION_2_6_39_MAX default y config FREETZ_KERNEL_BINUTILS_2_24_DEFAULT bool depends on FREETZ_AVM_GCC_4_6_MIN && FREETZ_AVM_VERSION_06_9X_MAX && FREETZ_KERNEL_VERSION_3_10_MIN default y config FREETZ_KERNEL_BINUTILS_2_25_DEFAULT bool depends on FREETZ_AVM_GCC_5 default y config FREETZ_KERNEL_BINUTILS_2_31_DEFAULT bool depends on FREETZ_AVM_GCC_8 default y config FREETZ_KERNEL_BINUTILS_2_36_DEFAULT bool depends on FREETZ_AVM_GCC_9 default y choice prompt "Kernel binutils" default FREETZ_KERNEL_BINUTILS_2_18 if FREETZ_KERNEL_BINUTILS_2_18_DEFAULT default FREETZ_KERNEL_BINUTILS_2_22 if FREETZ_KERNEL_BINUTILS_2_22_DEFAULT default FREETZ_KERNEL_BINUTILS_2_24 if FREETZ_KERNEL_BINUTILS_2_24_DEFAULT default FREETZ_KERNEL_BINUTILS_2_25 if FREETZ_KERNEL_BINUTILS_2_25_DEFAULT default FREETZ_KERNEL_BINUTILS_2_31 if FREETZ_KERNEL_BINUTILS_2_31_DEFAULT default FREETZ_KERNEL_BINUTILS_2_36 if FREETZ_KERNEL_BINUTILS_2_36_DEFAULT config FREETZ_KERNEL_BINUTILS_2_18 bool "binutils-2.18" depends on FREETZ_AVM_GCC_3_4_MAX depends on FREETZ_KERNEL_VERSION_2_6_19_MAX depends on FREETZ_KERNEL_BINUTILS_2_18_DEFAULT || (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE) config FREETZ_KERNEL_BINUTILS_2_22 bool "binutils-2.22" depends on FREETZ_AVM_GCC_4_6_MIN && FREETZ_AVM_GCC_4_9_MAX depends on FREETZ_KERNEL_VERSION_2_6_39_MAX depends on FREETZ_KERNEL_BINUTILS_2_22_DEFAULT || (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE) config FREETZ_KERNEL_BINUTILS_2_23 bool "binutils-2.23.2" depends on FREETZ_AVM_GCC_4_6_MIN && FREETZ_AVM_GCC_4_9_MAX depends on FREETZ_KERNEL_VERSION_2_6_39_MAX depends on FREETZ_KERNEL_BINUTILS_2_23_DEFAULT || (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE) config FREETZ_KERNEL_BINUTILS_2_24 bool "binutils-2.24" depends on FREETZ_AVM_GCC_4_6_MIN && FREETZ_AVM_GCC_5_MAX # depends on any kernel version depends on FREETZ_KERNEL_BINUTILS_2_24_DEFAULT || (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE) config FREETZ_KERNEL_BINUTILS_2_25 bool "binutils-2.25.1" # starting with version 2.25 binutils support o32 FPXX # gcc versions up to 4.9.3 however do not pass the required -m(hard|soft)-float flags to the assembler # this is the reason for the gcc-4.9 dependency below depends on FREETZ_AVM_GCC_4_9_MIN && FREETZ_AVM_GCC_5_MAX # depends on any kernel version depends on FREETZ_KERNEL_BINUTILS_2_25_DEFAULT || (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE) config FREETZ_KERNEL_BINUTILS_2_26 bool "binutils-2.26.1" depends on FREETZ_AVM_GCC_4_9_MIN && FREETZ_AVM_GCC_5_MAX # depends on any kernel version depends on FREETZ_KERNEL_BINUTILS_2_26_DEFAULT || (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE) config FREETZ_KERNEL_BINUTILS_2_31 bool "binutils-2.31.1" depends on FREETZ_AVM_GCC_8 # depends on any kernel version, used by avm for kernel 4.9 only so far depends on FREETZ_KERNEL_BINUTILS_2_31_DEFAULT || (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE) config FREETZ_KERNEL_BINUTILS_2_36 bool "binutils-2.36.1" depends on FREETZ_AVM_GCC_9 # depends on any kernel version, used by avm for kernel 4.19 only so far depends on FREETZ_KERNEL_BINUTILS_2_36_DEFAULT || (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE) endchoice choice prompt "Kernel compiler" default FREETZ_KERNEL_GCC_3_4 if FREETZ_AVM_GCC_3_4 default FREETZ_KERNEL_GCC_4_6 if FREETZ_AVM_GCC_4_6 default FREETZ_KERNEL_GCC_4_7 if FREETZ_AVM_GCC_4_7 default FREETZ_KERNEL_GCC_4_8 if FREETZ_AVM_GCC_4_8 default FREETZ_KERNEL_GCC_5 if FREETZ_AVM_GCC_5 default FREETZ_KERNEL_GCC_8 if FREETZ_AVM_GCC_8 default FREETZ_KERNEL_GCC_9 if FREETZ_AVM_GCC_9 config FREETZ_KERNEL_GCC_3_4 bool "gcc-3.4.6" depends on FREETZ_AVM_GCC_3_4 config FREETZ_KERNEL_GCC_4_6 bool "gcc-4.6.4" depends on FREETZ_AVM_GCC_4_6 config FREETZ_KERNEL_GCC_4_7 bool "gcc-4.7.4" depends on FREETZ_AVM_GCC_4_7 config FREETZ_KERNEL_GCC_4_8 bool "gcc-4.8.5" depends on FREETZ_AVM_GCC_4_8 config FREETZ_KERNEL_GCC_5 bool "gcc-5.5" depends on FREETZ_AVM_GCC_5 config FREETZ_KERNEL_GCC_8 bool "gcc-8.3" depends on FREETZ_AVM_GCC_8 config FREETZ_KERNEL_GCC_9 bool "gcc-9.3" depends on FREETZ_AVM_GCC_9 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 default "2.24" if FREETZ_KERNEL_BINUTILS_2_24 default "2.25.1" if FREETZ_KERNEL_BINUTILS_2_25 default "2.26.1" if FREETZ_KERNEL_BINUTILS_2_26 default "2.31.1" if FREETZ_KERNEL_BINUTILS_2_31 default "2.36.1" if FREETZ_KERNEL_BINUTILS_2_36 config FREETZ_KERNEL_GCC_VERSION string default "3.4.6" if FREETZ_KERNEL_GCC_3_4 default "4.6.4" if FREETZ_KERNEL_GCC_4_6 default "4.7.4" if FREETZ_KERNEL_GCC_4_7 default "4.8.5" if FREETZ_KERNEL_GCC_4_8 default "5.5.0" if FREETZ_KERNEL_GCC_5 default "8.3.0" if FREETZ_KERNEL_GCC_8 default "9.3.0" if FREETZ_KERNEL_GCC_9 comment "Target toolchain options ----------------------------------------" config FREETZ_SEPARATE_AVM_UCLIBC_FORCE bool depends on FREETZ_AVM_PROP_UCLIBC_SEPARATE select FREETZ_SEPARATE_AVM_UCLIBC default y config FREETZ_SEPARATE_AVM_UCLIBC bool "Separate uClibc" depends on FREETZ_SEPARATE_AVM_UCLIBC_FORCE default n help Puts uClibc of Freetz into /usr/lib/freetz/, needs about 1 MB (uncompressed). choice prompt "Target uClibc version" default FREETZ_TARGET_UCLIBC_0_9_28 if FREETZ_AVM_UCLIBC_0_9_28 default FREETZ_TARGET_UCLIBC_0_9_29 if FREETZ_AVM_UCLIBC_0_9_29 default FREETZ_TARGET_UCLIBC_0_9_32 if FREETZ_AVM_UCLIBC_0_9_32 default FREETZ_TARGET_UCLIBC_0_9_33 if FREETZ_AVM_UCLIBC_0_9_33 default FREETZ_TARGET_UCLIBC_1_0_14 if FREETZ_AVM_UCLIBC_1_0_14 default FREETZ_TARGET_UCLIBC_1_0_41 if FREETZ_SEPARATE_AVM_UCLIBC config FREETZ_TARGET_UCLIBC_0_9_28 bool "0.9.28" depends on FREETZ_AVM_UCLIBC_0_9_28 config FREETZ_TARGET_UCLIBC_0_9_29 bool "0.9.29" depends on FREETZ_AVM_UCLIBC_0_9_29 config FREETZ_TARGET_UCLIBC_0_9_32 bool "0.9.32.1" depends on FREETZ_AVM_UCLIBC_0_9_32 \ || ((FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE) && FREETZ_AVM_UCLIBC_0_9_29) config FREETZ_TARGET_UCLIBC_0_9_33 bool "0.9.33.2" depends on FREETZ_AVM_UCLIBC_0_9_33 \ || (FREETZ_AVM_UCLIBC_0_9_32 && FREETZ_KERNEL_VERSION_2_6_32) \ || ((FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE) && (FREETZ_AVM_UCLIBC_0_9_29 || FREETZ_AVM_UCLIBC_0_9_32)) config FREETZ_TARGET_UCLIBC_1_0_14 bool "1.0.14" depends on FREETZ_AVM_UCLIBC_1_0_14 config FREETZ_TARGET_UCLIBC_1_0_41 bool "1.0.41" depends on FREETZ_SEPARATE_AVM_UCLIBC endchoice comment "CAUTION: Usage of an uClibc version higher than that used by AVM may lead to an unstable box" depends on (FREETZ_AVM_UCLIBC_0_9_29 && !FREETZ_TARGET_UCLIBC_0_9_29) \ || (FREETZ_AVM_UCLIBC_0_9_32 && !FREETZ_TARGET_UCLIBC_0_9_32) config FREETZ_TARGET_UCLIBC_HAS_multiple_libs bool default y depends on \ FREETZ_TARGET_UCLIBC_0_9_28 || \ FREETZ_TARGET_UCLIBC_0_9_29 || \ FREETZ_TARGET_UCLIBC_0_9_32 || \ FREETZ_TARGET_UCLIBC_0_9_33 || \ FREETZ_TARGET_UCLIBC_1_0_14 config FREETZ_TARGET_UCLIBC_SUPPORTS_inotify bool default y depends on \ !FREETZ_TARGET_UCLIBC_0_9_28 && \ !FREETZ_TARGET_UCLIBC_0_9_29 && \ !FREETZ_TARGET_UCLIBC_0_9_32 && \ FREETZ_KERNEL_VERSION_2_6_39_MIN help Supported since uClibc 0.9.33.1 & Linux kernel 2.6.36 config FREETZ_TARGET_UCLIBC_SUPPORTS_rpc bool default y depends on \ FREETZ_TARGET_UCLIBC_0_9_28 || \ FREETZ_TARGET_UCLIBC_0_9_29 || \ FREETZ_TARGET_UCLIBC_0_9_32 || \ FREETZ_TARGET_UCLIBC_0_9_33 || \ FREETZ_TARGET_UCLIBC_1_0_14 config FREETZ_TARGET_UCLIBC_SUPPORTS_libubacktrace bool #default y if FREETZ_TARGET_UCLIBC_0_9_32 default y if FREETZ_TARGET_UCLIBC_0_9_33 default y if FREETZ_TARGET_UCLIBC_1 default n config FREETZ_TARGET_UCLIBC_REQUIRES_libubacktrace bool depends on FREETZ_TARGET_UCLIBC_SUPPORTS_libubacktrace default y if \ (FREETZ_TARGET_ARCH_MIPS && (FREETZ_AVM_UCLIBC_0_9_33 || FREETZ_TARGET_UCLIBC_1) && !FREETZ_REMOVE_AVM_E2FSPROGS) || \ FREETZ_TARGET_ARCH_X86 default n config FREETZ_TARGET_BINUTILS_2_22_DEFAULT bool depends on !FREETZ_SEPARATE_AVM_UCLIBC depends on FREETZ_KERNEL_BINUTILS_2_18_DEFAULT || FREETZ_KERNEL_BINUTILS_2_22_DEFAULT default y config FREETZ_TARGET_BINUTILS_2_24_DEFAULT bool depends on !FREETZ_SEPARATE_AVM_UCLIBC depends on FREETZ_KERNEL_BINUTILS_2_24_DEFAULT default y config FREETZ_TARGET_BINUTILS_2_25_DEFAULT bool depends on !FREETZ_SEPARATE_AVM_UCLIBC depends on FREETZ_KERNEL_BINUTILS_2_25_DEFAULT default y config FREETZ_TARGET_BINUTILS_2_31_DEFAULT bool depends on !FREETZ_SEPARATE_AVM_UCLIBC depends on FREETZ_KERNEL_BINUTILS_2_31_DEFAULT default y config FREETZ_TARGET_BINUTILS_2_36_DEFAULT bool depends on !FREETZ_SEPARATE_AVM_UCLIBC depends on FREETZ_KERNEL_BINUTILS_2_36_DEFAULT default y config FREETZ_TARGET_BINUTILS_2_38_DEFAULT bool depends on FREETZ_SEPARATE_AVM_UCLIBC default y choice prompt "Target binutils" default FREETZ_TARGET_BINUTILS_2_22 if FREETZ_TARGET_BINUTILS_2_22_DEFAULT default FREETZ_TARGET_BINUTILS_2_24 if FREETZ_TARGET_BINUTILS_2_24_DEFAULT default FREETZ_TARGET_BINUTILS_2_25 if FREETZ_TARGET_BINUTILS_2_25_DEFAULT default FREETZ_TARGET_BINUTILS_2_31 if FREETZ_TARGET_BINUTILS_2_31_DEFAULT default FREETZ_TARGET_BINUTILS_2_36 if FREETZ_TARGET_BINUTILS_2_36_DEFAULT default FREETZ_TARGET_BINUTILS_2_38 if FREETZ_TARGET_BINUTILS_2_38_DEFAULT config FREETZ_TARGET_BINUTILS_2_22 bool "binutils-2.22" depends on (FREETZ_TARGET_GCC_4_6 || FREETZ_TARGET_GCC_4_7 || FREETZ_TARGET_GCC_4_8 || FREETZ_TARGET_GCC_4_9) depends on FREETZ_KERNEL_VERSION_2_6_39_MAX depends on FREETZ_TARGET_BINUTILS_2_22_DEFAULT || (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE) config FREETZ_TARGET_BINUTILS_2_23 bool "binutils-2.23.2" depends on (FREETZ_TARGET_GCC_4_6 || FREETZ_TARGET_GCC_4_7 || FREETZ_TARGET_GCC_4_8 || FREETZ_TARGET_GCC_4_9) depends on FREETZ_KERNEL_VERSION_2_6_39_MAX depends on FREETZ_TARGET_BINUTILS_2_23_DEFAULT || (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE) config FREETZ_TARGET_BINUTILS_2_24 bool "binutils-2.24" depends on (FREETZ_TARGET_GCC_4_6 || FREETZ_TARGET_GCC_4_7 || FREETZ_TARGET_GCC_4_8 || FREETZ_TARGET_GCC_4_9 || FREETZ_TARGET_GCC_5) # depends on any kernel version depends on FREETZ_TARGET_BINUTILS_2_24_DEFAULT || (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE) config FREETZ_TARGET_BINUTILS_2_25 bool "binutils-2.25.1" depends on (FREETZ_TARGET_GCC_4_9 || FREETZ_TARGET_GCC_5) # depends on any kernel version depends on FREETZ_TARGET_BINUTILS_2_25_DEFAULT || (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE) config FREETZ_TARGET_BINUTILS_2_26 bool "binutils-2.26.1" depends on (FREETZ_TARGET_GCC_4_9 || FREETZ_TARGET_GCC_5) # depends on any kernel version depends on FREETZ_TARGET_BINUTILS_2_26_DEFAULT || (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE) config FREETZ_TARGET_BINUTILS_2_31 bool "binutils-2.31.1" depends on FREETZ_TARGET_GCC_8 # depends on any kernel version depends on FREETZ_TARGET_BINUTILS_2_31_DEFAULT || (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE) config FREETZ_TARGET_BINUTILS_2_36 bool "binutils-2.36.1" depends on FREETZ_TARGET_GCC_9 # depends on any kernel version depends on FREETZ_TARGET_BINUTILS_2_36_DEFAULT || (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE) config FREETZ_TARGET_BINUTILS_2_38 bool "binutils-2.38" # depends on all gcc versions # depends on any kernel version depends on FREETZ_TARGET_BINUTILS_2_38_DEFAULT || (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE) endchoice choice prompt "Target compiler" default FREETZ_TARGET_GCC_4_6 if FREETZ_AVM_GCC_4_6_MAX default FREETZ_TARGET_GCC_4_7 if FREETZ_AVM_GCC_4_7 default FREETZ_TARGET_GCC_4_8 if FREETZ_AVM_GCC_4_8 default FREETZ_TARGET_GCC_4_9 if FREETZ_AVM_GCC_4_9 default FREETZ_TARGET_GCC_5 if FREETZ_AVM_GCC_5 default FREETZ_TARGET_GCC_8 if FREETZ_AVM_GCC_8 default FREETZ_TARGET_GCC_9 if FREETZ_AVM_GCC_9 config FREETZ_TARGET_GCC_4_6 bool "gcc-4.6.4" depends on FREETZ_AVM_GCC_4_6_MAX config FREETZ_TARGET_GCC_4_7 bool "gcc-4.7.4" depends on FREETZ_AVM_GCC_4_7 \ || (FREETZ_AVM_GCC_4_7_MAX && (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE)) config FREETZ_TARGET_GCC_4_8 bool "gcc-4.8.5" depends on FREETZ_AVM_GCC_4_8 \ || (FREETZ_AVM_GCC_4_8_MAX && (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE)) config FREETZ_TARGET_GCC_4_9 bool "gcc-4.9.4" depends on FREETZ_AVM_GCC_4_9 \ || (FREETZ_AVM_GCC_4_9_MAX && (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE)) config FREETZ_TARGET_GCC_5 bool "gcc-5.5" depends on FREETZ_AVM_GCC_5 \ || (FREETZ_AVM_GCC_5_MAX && (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE)) config FREETZ_TARGET_GCC_8 bool "gcc-8.3" depends on FREETZ_AVM_GCC_8 config FREETZ_TARGET_GCC_9 bool "gcc-9.3" depends on FREETZ_AVM_GCC_9 endchoice ### ### FREETZ_TARGET_GCC_x_MIN ### config FREETZ_TARGET_GCC_4_MIN bool default y depends on FREETZ_TARGET_GCC_4_6_MIN config FREETZ_TARGET_GCC_4_6_MIN bool default y depends on \ FREETZ_TARGET_GCC_4_6 || \ FREETZ_TARGET_GCC_4_7_MIN config FREETZ_TARGET_GCC_4_7_MIN bool default y depends on \ FREETZ_TARGET_GCC_4_7 || \ FREETZ_TARGET_GCC_4_8_MIN config FREETZ_TARGET_GCC_4_8_MIN bool default y depends on \ FREETZ_TARGET_GCC_4_8 || \ FREETZ_TARGET_GCC_4_9_MIN config FREETZ_TARGET_GCC_4_9_MIN bool default y depends on \ FREETZ_TARGET_GCC_4_9 || \ FREETZ_TARGET_GCC_5_MIN config FREETZ_TARGET_GCC_5_MIN bool default y depends on \ FREETZ_TARGET_GCC_5 || \ FREETZ_TARGET_GCC_8_MIN config FREETZ_TARGET_GCC_8_MIN bool default y depends on \ FREETZ_TARGET_GCC_8 || \ FREETZ_TARGET_GCC_9_MIN config FREETZ_TARGET_GCC_9_MIN bool default y depends on \ FREETZ_TARGET_GCC_9 ### ### FREETZ_TARGET_GCC_x_MAX ### config FREETZ_TARGET_GCC_4_MAX bool default y depends on \ FREETZ_TARGET_GCC_4_6 || \ FREETZ_TARGET_GCC_4_7 || \ FREETZ_TARGET_GCC_4_8 || \ FREETZ_TARGET_GCC_4_9 config FREETZ_TARGET_GCC_5_MAX bool default y depends on \ FREETZ_TARGET_GCC_4_MAX || \ FREETZ_TARGET_GCC_5 config FREETZ_TARGET_GCC_8_MAX bool default y depends on \ FREETZ_TARGET_GCC_5_MAX || \ FREETZ_TARGET_GCC_8 config FREETZ_TARGET_GCC_9_MAX bool default y depends on \ FREETZ_TARGET_GCC_8_MAX || \ FREETZ_TARGET_GCC_9 ### ### ### config FREETZ_TARGET_GCC_SNAPSHOT bool "Use a snapshot of gcc-major-version selected above" depends on FREETZ_REAL_DEVELOPER_ONLY \ && (FREETZ_TARGET_GCC_4_8 || FREETZ_TARGET_GCC_4_9) && (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE) config FREETZ_TARGET_GCC_SNAPSHOT_DATE string "Snapshot date (in YYYYMMDD format)" depends on FREETZ_TARGET_GCC_SNAPSHOT default "20150611" if FREETZ_TARGET_GCC_4_8 default "20160727" if FREETZ_TARGET_GCC_4_9 default "20171003" if FREETZ_TARGET_GCC_5 config FREETZ_TARGET_GCC_DEFAULT_AS_NEEDED bool default n if FREETZ_TARGET_UCLIBC_0_9_28 || FREETZ_TARGET_UCLIBC_0_9_29 default y help Enabling this option changes linker default from '--no-as-needed' to '--as-needed'. config FREETZ_STDCXXLIB_FORCE_GNULIBSTDCXX bool "Forced GNU libstdc++ as standard C++ Library" default n help This disables uClibc++ and forces to use GNU libstdc++ as the implementation of the Standard C++ Library. config FREETZ_STDCXXLIB_USE_UCLIBCXX bool default y depends on FREETZ_STDCXXLIB_USE_UCLIBCXX_CHOICE config FREETZ_STDCXXLIB_USE_GNULIBSTDCXX bool default y depends on FREETZ_STDCXXLIB_USE_GNULIBSTDCXX_CHOICE || FREETZ_STDCXXLIB_FORCE_GNULIBSTDCXX choice prompt "Standard C++ Library" depends on !FREETZ_STDCXXLIB_FORCE_GNULIBSTDCXX default FREETZ_STDCXXLIB_USE_UCLIBCXX_CHOICE help Library to be used as the implementation of the Standard C++ Library. config FREETZ_STDCXXLIB_USE_UCLIBCXX_CHOICE 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_CHOICE 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_0 bool default y if FREETZ_TARGET_UCLIBC_0_9_28 default y if FREETZ_TARGET_UCLIBC_0_9_29 default y if FREETZ_TARGET_UCLIBC_0_9_32 default y if FREETZ_TARGET_UCLIBC_0_9_33 default n config FREETZ_TARGET_UCLIBC_1 bool default y if FREETZ_TARGET_UCLIBC_1_0_14 default y if FREETZ_TARGET_UCLIBC_1_0_41 default n config FREETZ_TARGET_UCLIBC_VERSION string default "0.9.28" if FREETZ_TARGET_UCLIBC_0_9_28 default "0.9.29" if FREETZ_TARGET_UCLIBC_0_9_29 default "0.9.32.1" if FREETZ_TARGET_UCLIBC_0_9_32 default "0.9.33.2" if FREETZ_TARGET_UCLIBC_0_9_33 default "1.0.14" if FREETZ_TARGET_UCLIBC_1_0_14 default "1.0.41" if FREETZ_TARGET_UCLIBC_1_0_41 config FREETZ_TARGET_UCLIBC_MAJOR_VERSION string default "1" if FREETZ_TARGET_UCLIBC_1 default "0" if FREETZ_TARGET_UCLIBC_0 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 default "2.24" if FREETZ_TARGET_BINUTILS_2_24 default "2.25.1" if FREETZ_TARGET_BINUTILS_2_25 default "2.26.1" if FREETZ_TARGET_BINUTILS_2_26 default "2.31.1" if FREETZ_TARGET_BINUTILS_2_31 default "2.38" if FREETZ_TARGET_BINUTILS_2_38 config FREETZ_TARGET_GCC_MAJOR_VERSION string default "4.6" if FREETZ_TARGET_GCC_4_6 default "4.7" if FREETZ_TARGET_GCC_4_7 default "4.8" if FREETZ_TARGET_GCC_4_8 default "4.9" if FREETZ_TARGET_GCC_4_9 default "5" if FREETZ_TARGET_GCC_5 default "8" if FREETZ_TARGET_GCC_8 default "9" if FREETZ_TARGET_GCC_9 config FREETZ_TARGET_GCC_MINOR_VERSION depends on !FREETZ_TARGET_GCC_SNAPSHOT string default "4" if FREETZ_TARGET_GCC_4_6 default "4" if FREETZ_TARGET_GCC_4_7 default "5" if FREETZ_TARGET_GCC_4_8 default "4" if FREETZ_TARGET_GCC_4_9 default "5.0" if FREETZ_TARGET_GCC_5 default "3.0" if FREETZ_TARGET_GCC_8 default "3.0" if FREETZ_TARGET_GCC_9 config FREETZ_TARGET_GCC_VERSION string default "${FREETZ_TARGET_GCC_MAJOR_VERSION}.${FREETZ_TARGET_GCC_MINOR_VERSION}" if !FREETZ_TARGET_GCC_SNAPSHOT default "${FREETZ_TARGET_GCC_MAJOR_VERSION}-${FREETZ_TARGET_GCC_SNAPSHOT_DATE}" if FREETZ_TARGET_GCC_SNAPSHOT config FREETZ_GNULIBATOMIC_VERSION string default "0.0.0" if FREETZ_TARGET_GCC_4_6 default "0.0.0" if FREETZ_TARGET_GCC_4_7 default "1.0.0" if FREETZ_TARGET_GCC_4_8 default "1.0.0" if FREETZ_TARGET_GCC_4_9 default "1.1.0" if FREETZ_TARGET_GCC_5 default "1.2.0" if FREETZ_TARGET_GCC_8 default "1.2.0" if FREETZ_TARGET_GCC_9 config FREETZ_GNULIBSTDCXX_VERSION string default "6.0.16" if FREETZ_TARGET_GCC_4_6 default "6.0.17" if FREETZ_TARGET_GCC_4_7 default "6.0.19" if FREETZ_TARGET_GCC_4_8 default "6.0.20" if FREETZ_TARGET_GCC_4_9 default "6.0.21" if FREETZ_TARGET_GCC_5 default "6.0.25" if FREETZ_TARGET_GCC_8 default "6.0.28" if FREETZ_TARGET_GCC_9 config FREETZ_STDCXXLIB string default "uclibcxx" if FREETZ_STDCXXLIB_USE_UCLIBCXX default "libstdcxx" if FREETZ_STDCXXLIB_USE_GNULIBSTDCXX config FREETZ_LIB_STDCXXLIB def_bool n select FREETZ_LIB_libuClibc__ if FREETZ_STDCXXLIB_USE_UCLIBCXX select FREETZ_LIB_libstdc__ if FREETZ_STDCXXLIB_USE_GNULIBSTDCXX default n config FREETZ_LIB_STDCXXLIB_WITH_WCHAR def_bool n select FREETZ_LIB_libuClibc__WITH_WCHAR if FREETZ_STDCXXLIB_USE_UCLIBCXX default n config FREETZ_TARGET_CFLAGS string "Target compiler flags" default "-Ofast -pipe" if FREETZ_AVM_VERSION_07_2X_MIN default "-Os -pipe" config FREETZ_RPATH string "FREETZ_RPATH" default "/usr/lib/freetz" help A run-time search path (a colon-separated list of directories) to be hard-coded in all binaries/libraries compiled using Freetz toolchain. What is this needed for? Freetz provides some libraries (e.g. OpenSSL, Zlib, SQLite) which are also used by AVM in the original firmware. Freetz versions of these libraries are not (always) compatible with the AVM ones (Freetz might use a higher version number, a deviating configuration, different compiler settings, etc.). In order to avoid collisions with the AVM versions of the libraries Freetz libraries are put in a non-standard directory (non-standard from the dynamic loader point of view). This option allows the user to set this directory - it will be the 1st element of FREETZ_RPATH. Note: If you do NOT plan to flash the Freetz image and use the Freetz toolchain just for compiling the binaries/libraries then you can also set this option to one of the standard dynamic loader search paths (/usr or /usr/lib). In this case the resulting binaries/libraries won't contain an RPATH entry. config FREETZ_TARGET_TOOLCHAIN_AVM_COMPATIBLE bool "Create toolchain compatible with original firmware" depends on FREETZ_BUILD_TOOLCHAIN && (FREETZ_AVM_UCLIBC_0_9_28 || FREETZ_AVM_UCLIBC_0_9_29) 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_DODEBUG bool "Include debug symbols in uClibc" depends on (FREETZ_BUILD_TOOLCHAIN || FREETZ_DL_TOOLCHAIN_OVERRIDE) && (FREETZ_TARGET_UCLIBC_0_9_32 || FREETZ_TARGET_UCLIBC_0_9_33 || FREETZ_TARGET_UCLIBC_1) default n help This is a developers only option! Do not activate it if you don't know what it is useful for! Causes uClibc to be compiled with debug support enabled, i.e. activates DODEBUG symbol in uClibc .config choice prompt "Debug level" depends on FREETZ_TARGET_UCLIBC_DODEBUG default FREETZ_TARGET_UCLIBC_DODEBUG_DEFAULT config FREETZ_TARGET_UCLIBC_DODEBUG_DEFAULT bool "default" config FREETZ_TARGET_UCLIBC_DODEBUG_MAXIMUM bool "maximum" help Significantly increases size of all uClibc libraries. Your box should have at least 64MB RAM. endchoice config FREETZ_TARGET_UCLIBC_REDUCED_LOCALE_SET bool "Use reduced set of locales" if FREETZ_BUILD_TOOLCHAIN && \ ( \ FREETZ_TARGET_UCLIBC_0_9_29 || \ FREETZ_TARGET_UCLIBC_0_9_32 || \ FREETZ_TARGET_UCLIBC_0_9_33 || \ FREETZ_TARGET_UCLIBC_1 \ ) 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_UCLIBC_PROVIDES_SSP bool default y depends on FREETZ_TARGET_UCLIBC_1 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_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 "Host-tools options ----------------------------------" config FREETZ_UBOOT_STATIC bool "Build U-Boot with static OpenSSL" depends on !FREETZ_HOSTTOOLS_DOWNLOAD default n help Used for precompiled dl-tools. You need to have a installed libssl.a and libctypto.a choice prompt "Root emulator" default FREETZ_ROOTEMU_PSEUDO config FREETZ_ROOTEMU_FAKEROOT bool "Use fakeroot" config FREETZ_ROOTEMU_PSEUDO bool "Use pseudo" endchoice # "Root emulator" # config FREETZ_HOSTTOOLS_DOWNLOAD bool "Use precompiled x86_64 host-tools" default y help Download and use precompiled binaries files. Not every tool is included, see $(TOOLS_BUILD_LOCAL). config FREETZ_HOSTTOOLS_BUILD bool depends on !FREETZ_HOSTTOOLS_DOWNLOAD default y endmenu # "Toolchain options" #