default y if BR2_HOST_GCC_VERSION = "9"
select BR2_HOST_GCC_AT_LEAST_8
+config BR2_HOST_GCC_AT_LEAST_10
+ bool
+ default y if BR2_HOST_GCC_VERSION = "10"
+ select BR2_HOST_GCC_AT_LEAST_9
+
+config BR2_HOST_GCC_AT_LEAST_11
+ bool
+ default y if BR2_HOST_GCC_VERSION = "11"
+ select BR2_HOST_GCC_AT_LEAST_10
+
# When adding new entries above, be sure to update
# the HOSTCC_MAX_VERSION variable in the Makefile.
config BR2_NEEDS_HOST_JAVA
bool
-# Hidden boolean selected by packages in need of javac in order to build
-# (example: classpath)
-config BR2_NEEDS_HOST_JAVAC
- bool
-
-# Hidden boolean selected by packages in need of jar in order to build
-# (example: classpath)
-config BR2_NEEDS_HOST_JAR
- bool
-
# Hidden boolean selected by pre-built packages for x86, when they
# need to run on x86-64 machines (example: pre-built external
-# toolchains, binary tools like SAM-BA, etc.).
+# toolchains, binary tools, etc.).
config BR2_HOSTARCH_NEEDS_IA32_LIBS
bool
config BR2_NEEDS_HOST_UTF8_LOCALE
bool
+# Hidden boolean selected by packages that need the host to have
+# support for building gcc plugins
+config BR2_NEEDS_HOST_GCC_PLUGIN_SUPPORT
+ bool
+
source "arch/Config.in"
+source "toolchain/Config.in"
+
menu "Build options"
menu "Commands"
+config BR2_CURL
+ string "Curl command"
+ default "curl -q --ftp-pasv --retry 3"
+
config BR2_WGET
string "Wget command"
- default "wget --passive-ftp -nd -t 3"
+ default "wget -nd -t 3"
config BR2_SVN
string "Subversion (svn) command"
string "Secure copy (scp) command"
default "scp"
+config BR2_SFTP
+ string "Secure file transfer (sftp) command"
+ default "sftp"
+
config BR2_HG
string "Mercurial (hg) command"
default "hg"
Command to be used to extract a lzip'ed file to stdout.
Default is "lzip -d -c"
+config BR2_ZSTDCAT
+ string "zstdcat command"
+ default "zstdcat"
+ help
+ Command to be used to extract a zstd'ed file to stdout.
+ Default is "zstdcat"
+
config BR2_TAR_OPTIONS
string "Tar options"
default ""
config BR2_BACKUP_SITE
string "Backup download site"
- default "http://sources.buildroot.net"
+ default "https://sources.buildroot.net"
help
Backup site to download from. If this option is set then
buildroot will fall back to download package sources from here
config BR2_CPAN_MIRROR
string "CPAN mirror (Perl packages)"
- default "http://cpan.metacpan.org"
+ default "https://cpan.metacpan.org"
help
CPAN (Comprehensive Perl Archive Network) is a repository of
Perl packages. It has multiple software mirrors scattered
around the world. This option allows you to select a mirror.
The list of mirrors is available at:
- http://search.cpan.org/mirror
+ http://mirrors.cpan.org/ (tabular)
+ http://mirrors.cpan.org/map.html (clickable world map)
endif
Number of jobs to run simultaneously. If 0, determine
automatically according to number of CPUs on the host system.
+comment "ccache needs a host gcc >= 8"
+ depends on !BR2_HOST_GCC_AT_LEAST_8
+
config BR2_CCACHE
bool "Enable compiler cache"
+ depends on BR2_HOST_GCC_AT_LEAST_8
help
This option will enable the use of ccache, a compiler cache.
It will cache the result of previous builds to speed up future
endchoice
endif
+config BR2_ENABLE_RUNTIME_DEBUG
+ bool "build packages with runtime debugging info"
+ help
+ Some packages may have runtime assertions, extra traces, and
+ similar runtime elements that can help debugging. However,
+ these elements may negatively influence performance so should
+ normally not be enabled on production systems.
+
+ Enable this option to enable such runtime debugging.
+
+ Note: disabling this option is not a guarantee that all
+ packages effectively removed these runtime debugging elements.
+
config BR2_STRIP_strip
bool "strip target binaries"
default y
- depends on !BR2_PACKAGE_HOST_ELF2FLT
+ depends on BR2_BINFMT_ELF
help
Binaries and libraries in the target filesystem will be
stripped using the normal 'strip' command. This allows to save
choice
prompt "gcc optimization level"
- default BR2_OPTIMIZE_S
+ default BR2_OPTIMIZE_2
help
Set the optimization level for gcc
-falign-loops -falign-labels -ftree-vrp -ftree-pre. Please
note the warning under -fgcse about invoking -O2 on programs
that use computed gotos.
+ This is the default.
config BR2_OPTIMIZE_3
bool "optimization level 3"
-falign-loops -falign-labels -freorder-blocks
-freorder-blocks-and-partition -fprefetch-loop-arrays
-ftree-vect-loop-version
- This is the default.
config BR2_OPTIMIZE_FAST
- bool "optimize for fast"
+ bool "optimize for fast (may break packages!)"
depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_6
help
Optimize for fast. Disregard strict standards
compliance. -Ofast enables all -O3 optimizations. It also
enables optimizations that are not valid for all
- standard-compliant programs. It turns on -ffast-math and the
+ standard-compliant programs, so be careful, as it may break
+ some packages. It turns on -ffast-math and the
Fortran-specific -fstack-arrays, unless -fmax-stack-var-size
is specified, and -fno-protect-parens.
endchoice
+config BR2_ENABLE_LTO
+ bool "build packages with link-time optimisation"
+ help
+ Enable the link-time optimisation (LTO) option when building
+ packages. Link-time optimisation re-runs optimisations at
+ link time, which allows the compiler to do interprocedural
+ analysis across compilation units and thus come with better
+ results: smaller size and better performance.
+
+ Note that this analysis is limited to statically linked
+ object files and libraries.
+
+ This option may significantly increase build times,
+ sometimes 5 times longer, with only limited gains.
+
+ At this time, this option only enables LTO in packages that
+ have an explicit configuration option for it. Other packages
+ always enable LTO, but most packages never enable LTO.
+
config BR2_GOOGLE_BREAKPAD_ENABLE
bool "Enable google-breakpad support"
depends on BR2_INSTALL_LIBSTDCPP
- depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17
depends on BR2_USE_WCHAR
depends on BR2_TOOLCHAIN_HAS_THREADS
- depends on (BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_UCLIBC)
+ depends on BR2_TOOLCHAIN_USES_GLIBC
depends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS
depends on BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS
select BR2_PACKAGE_GOOGLE_BREAKPAD
config BR2_STATIC_LIBS
bool "static only"
+ depends on !BR2_TOOLCHAIN_USES_GLIBC
help
Build and use only static libraries. No shared libraries will
be installed on the target. This potentially increases your
option is enabled, due to their need for dynamic library
support.
+comment "static only needs a toolchain w/ uclibc or musl"
+ depends on BR2_TOOLCHAIN_USES_GLIBC
+
config BR2_SHARED_LIBS
bool "shared only"
depends on BR2_BINFMT_SUPPORTS_SHARED
documentation for more details on this feature.
config BR2_GLOBAL_PATCH_DIR
- string "global patch directories"
+ string "global patch and hash directories"
help
You may specify a space separated list of one or more
- directories containing global package patches. For a specific
- version <packageversion> of a specific package <packagename>,
- patches are applied as follows:
+ directories containing global package patches and/or hashes.
+ For a specific version <packageversion> of a specific package
+ <packagename>, patches are looked up as follows:
First, the default Buildroot patch set for the package is
applied from the package's directory in Buildroot.
exists, then all *.patch files in the directory will be
applied.
-menu "Advanced"
-
-config BR2_COMPILER_PARANOID_UNSAFE_PATH
- bool "paranoid check of library/header paths"
- default y
- help
- By default, when this option is disabled, when the Buildroot
- cross-compiler will encounter an unsafe library or header path
- (such as /usr/include, or /usr/lib), the compiler will display
- a warning.
-
- By enabling this option, this warning is turned into an error,
- which will completely abort the build when such unsafe paths
- are encountered.
+ The hash files are looked up similarly to the patches.
- Note that this mechanism is available for both the internal
- toolchain (through the toolchain wrapper and binutils patches)
- and external toolchain backends (through the toolchain
- wrapper).
+menu "Advanced"
config BR2_FORCE_HOST_BUILD
bool "Force the building of host dependencies"
This option will increase build time.
+config BR2_DOWNLOAD_FORCE_CHECK_HASHES
+ bool "Force all downloads to have a valid hash"
+ help
+ Say 'y' here to enforce downloads to have at least one valid
+ hash (and of course, that all hashes be valid).
+
+ By default, Buildroot checks hashes of all packages
+ downloaded, except those for which a custom version is
+ used.
+
+ With this option turned on, Buildroot will check hashes of
+ all packages, including those that use a custom version. In
+ order to provide hashes for such packages, place additional
+ hash files in BR2_GLOBAL_PATCH_DIR directories.
+
config BR2_REPRODUCIBLE
bool "Make the build reproducible (experimental)"
# SOURCE_DATE_EPOCH support in toolchain-wrapper requires GCC 4.4
endmenu
+config BR2_TIME_BITS_64
+ bool "Build Y2038-ready code"
+ depends on BR2_TOOLCHAIN_USES_GLIBC && !BR2_ARCH_IS_64
+ help
+ This option will pass -D_TIME_BITS=64 in the compiler flags
+ to ensure the glibc C library uses a 64-bit representation
+ for time_t and other time types, which ensures that
+ programs/libraries will correctly handle time past year
+ 2038.
+
+ This option only has an effect with glibc >= 2.34, as
+ earlier glibc versions did not have support for 64-bit
+ time_t.
+
comment "Security Hardening Options"
+config BR2_PIC_PIE_ARCH_SUPPORTS
+ bool
+ default y
+ # Microblaze glibc toolchains don't work with PIC/PIE enabled
+ depends on !BR2_microblaze
+ # Nios2 toolchains produce non working binaries with -fPIC
+ depends on !BR2_nios2
+
config BR2_PIC_PIE
bool "Build code with PIC/PIE"
+ default y
+ depends on BR2_PIC_PIE_ARCH_SUPPORTS
depends on BR2_SHARED_LIBS
depends on BR2_TOOLCHAIN_SUPPORTS_PIE
help
Position-Independent Executables (PIE).
comment "PIC/PIE needs a toolchain w/ PIE"
+ depends on BR2_PIC_PIE_ARCH_SUPPORTS
depends on BR2_SHARED_LIBS
depends on !BR2_TOOLCHAIN_SUPPORTS_PIE
choice
bool "Stack Smashing Protection"
default BR2_SSP_ALL if BR2_ENABLE_SSP # legacy
+ default BR2_SSP_STRONG if BR2_TOOLCHAIN_HAS_SSP_STRONG
+ default BR2_SSP_REGULAR
depends on BR2_TOOLCHAIN_HAS_SSP
help
Enable stack smashing protection support using GCC's
choice
bool "RELRO Protection"
+ default BR2_RELRO_FULL if BR2_TOOLCHAIN_SUPPORTS_PIE
+ default BR2_RELRO_PARTIAL
depends on BR2_SHARED_LIBS
help
Enable a link-time protection know as RELRO (RELocation Read
config BR2_RELRO_FULL
bool "Full"
+ depends on BR2_PIC_PIE_ARCH_SUPPORTS
depends on BR2_TOOLCHAIN_SUPPORTS_PIE
select BR2_PIC_PIE
help
program loading, i.e every time an executable is started.
comment "RELRO Full needs a toolchain w/ PIE"
+ depends on BR2_PIC_PIE_ARCH_SUPPORTS
depends on !BR2_TOOLCHAIN_SUPPORTS_PIE
endchoice
comment "RELocation Read Only (RELRO) needs shared libraries"
depends on !BR2_SHARED_LIBS
+config BR2_FORTIFY_SOURCE_ARCH_SUPPORTS
+ bool
+ default y
+ # Microblaze glibc toolchains don't work with Fortify Source enabled
+ depends on !BR2_microblaze
+
choice
bool "Buffer-overflow Detection (FORTIFY_SOURCE)"
+ default BR2_FORTIFY_SOURCE_1
+ depends on BR2_FORTIFY_SOURCE_ARCH_SUPPORTS
depends on BR2_TOOLCHAIN_USES_GLIBC
depends on !BR2_OPTIMIZE_0
help
Also adds checks at run-time (detected buffer overflow
terminates the program)
+config BR2_FORTIFY_SOURCE_3
+ bool "Extended"
+ depends on BR2_TOOLCHAIN_GCC_AT_LEAST_12
+ help
+ This option sets _FORTIFY_SOURCES to 3 and even more
+ checking is added compared to level 2. Extends checks at
+ run-time that can introduce an additional performance
+ overhead.
+
endchoice
comment "Fortify Source needs a glibc toolchain and optimization"
+ depends on BR2_FORTIFY_SOURCE_ARCH_SUPPORTS
depends on (!BR2_TOOLCHAIN_USES_GLIBC || BR2_OPTIMIZE_0)
endmenu
-source "toolchain/Config.in"
-
source "system/Config.in"
source "linux/Config.in"