]> rtime.felk.cvut.cz Git - coffee/buildroot.git/blobdiff - Config.in
linux-headers: bump 4.{9, 14}.x series
[coffee/buildroot.git] / Config.in
index 677fff6204af397a104587beb419fd3bb65a0454..345d5c5b60839996cffb111c4f3b4de4ffcd861d 100644 (file)
--- a/Config.in
+++ b/Config.in
@@ -14,6 +14,69 @@ config BR2_HOSTARCH
        string
        option env="HOSTARCH"
 
+config BR2_BUILD_DIR
+       string
+       option env="BUILD_DIR"
+
+# Hidden config symbols for packages to check system gcc version
+config BR2_HOST_GCC_VERSION
+       string
+       option env="HOST_GCC_VERSION"
+
+config BR2_HOST_GCC_AT_LEAST_4_5
+       bool
+       default y if BR2_HOST_GCC_VERSION = "4 5"
+
+config BR2_HOST_GCC_AT_LEAST_4_6
+       bool
+       default y if BR2_HOST_GCC_VERSION = "4 6"
+       select BR2_HOST_GCC_AT_LEAST_4_5
+
+config BR2_HOST_GCC_AT_LEAST_4_7
+       bool
+       default y if BR2_HOST_GCC_VERSION = "4 7"
+       select BR2_HOST_GCC_AT_LEAST_4_6
+
+config BR2_HOST_GCC_AT_LEAST_4_8
+       bool
+       default y if BR2_HOST_GCC_VERSION = "4 8"
+       select BR2_HOST_GCC_AT_LEAST_4_7
+
+config BR2_HOST_GCC_AT_LEAST_4_9
+       bool
+       default y if BR2_HOST_GCC_VERSION = "4 9"
+       select BR2_HOST_GCC_AT_LEAST_4_8
+
+config BR2_HOST_GCC_AT_LEAST_5
+       bool
+       default y if BR2_HOST_GCC_VERSION = "5"
+       select BR2_HOST_GCC_AT_LEAST_4_9
+
+config BR2_HOST_GCC_AT_LEAST_6
+       bool
+       default y if BR2_HOST_GCC_VERSION = "6"
+       select BR2_HOST_GCC_AT_LEAST_5
+
+config BR2_HOST_GCC_AT_LEAST_7
+       bool
+       default y if BR2_HOST_GCC_VERSION = "7"
+       select BR2_HOST_GCC_AT_LEAST_6
+
+# Hidden boolean selected by packages in need of Java in order to build
+# (example: xbmc)
+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.).
@@ -26,6 +89,11 @@ config BR2_HOSTARCH_NEEDS_IA32_LIBS
 config BR2_HOSTARCH_NEEDS_IA32_COMPILER
        bool
 
+# Hidden boolean selected by packages that need the host to have an
+# UTF8 locale.
+config BR2_NEEDS_HOST_UTF8_LOCALE
+       bool
+
 source "arch/Config.in"
 
 menu "Build options"
@@ -72,9 +140,9 @@ config BR2_ZCAT
        string "zcat command"
        default "gzip -d -c"
        help
-         Command to be used to extract a gzip'ed file to stdout.
-         zcat is identical to gunzip -c except that the former may
-         not be available on your system.
+         Command to be used to extract a gzip'ed file to stdout. zcat
+         is identical to gunzip -c except that the former may not be
+         available on your system.
          Default is "gzip -d -c"
          Other possible values include "gunzip -c" or "zcat".
 
@@ -95,6 +163,13 @@ config BR2_XZCAT
          Command to be used to extract a xz'ed file to stdout.
          Default is "xzcat"
 
+config BR2_LZCAT
+       string "lzcat command"
+       default "lzip -d -c"
+       help
+         Command to be used to extract a lzip'ed file to stdout.
+         Default is "lzip -d -c"
+
 config BR2_TAR_OPTIONS
        string "Tar options"
        default ""
@@ -114,16 +189,17 @@ config BR2_DEFCONFIG
        default BR2_DEFCONFIG_FROM_ENV if BR2_DEFCONFIG_FROM_ENV != ""
        default "$(CONFIG_DIR)/defconfig"
        help
-         When running 'make savedefconfig', the defconfig file will be saved
-         in this location.
+         When running 'make savedefconfig', the defconfig file will be
+         saved in this location.
 
 config BR2_DL_DIR
        string "Download dir"
        default "$(TOPDIR)/dl"
        help
          Directory to store all the source files that we need to fetch.
-         If the Linux shell environment has defined the BUILDROOT_DL_DIR
-         environment variable, then this overrides this configuration item.
+         If the Linux shell environment has defined the BR2_DL_DIR
+         environment variable, then this overrides this configuration
+         item.
 
          The default is $(TOPDIR)/dl
 
@@ -131,9 +207,9 @@ config BR2_HOST_DIR
        string "Host dir"
        default "$(BASE_DIR)/host"
        help
-         Directory to store all the binary files that are built for the host.
-         This includes the cross compilation toolchain when building the
-         internal buildroot toolchain.
+         Directory to store all the binary files that are built for the
+         host. This includes the cross compilation toolchain when
+         building the internal buildroot toolchain.
 
          The default is $(BASE_DIR)/host
 
@@ -143,13 +219,13 @@ config BR2_PRIMARY_SITE
        string "Primary download site"
        default ""
        help
-         Primary site to download from. If this option is set then buildroot
-         will try to download package source first from this site and try the
-         default if the file is not found.
-         Valid URIs are URIs recognized by $(WGET) and scp URIs of the form
-         scp://[user@]host:path.
-         NOTE: This works for all packages using the central package
-         infrastructure (generic, autotools, cmake, ...)
+         Primary site to download from. If this option is set then
+         buildroot will try to download package source first from this
+         site and try the default if the file is not found.
+         Valid URIs are:
+           - URIs recognized by $(WGET)
+           - local URIs of the form file://absolutepath
+           - scp URIs of the form scp://[user@]host:path.
 
 config BR2_PRIMARY_SITE_ONLY
        bool "Only allow downloads from primary download site"
@@ -158,58 +234,71 @@ config BR2_PRIMARY_SITE_ONLY
          If this option is enabled, downloads will only be attempted
          from the primary download site. Other locations, like the
          package's official download location or the backup download
-         site, will not be considered. Therefore, if the package is
-         not present on the primary site, the download fails.
+         site, will not be considered. Therefore, if the package is not
+         present on the primary site, the download fails.
 
-         This is useful for project developers who want to ensure
-         that the project can be built even if the upstream tarball
+         This is useful for project developers who want to ensure that
+         the project can be built even if the upstream tarball
          locations disappear.
 
 if !BR2_PRIMARY_SITE_ONLY
 
 config BR2_BACKUP_SITE
        string "Backup download site"
-       default "http://sources.buildroot.net/"
+       default "http://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 if the
-         normal location fails.
+         Backup site to download from. If this option is set then
+         buildroot will fall back to download package sources from here
+         if the normal location fails.
 
 config BR2_KERNEL_MIRROR
        string "Kernel.org mirror"
-       default "http://www.kernel.org/pub/"
+       default "https://cdn.kernel.org/pub"
        help
-         kernel.org is mirrored on a number of servers around the world.
-         The following allows you to select your preferred mirror.
+         kernel.org is mirrored on a number of servers around the
+         world. The following allows you to select your preferred
+         mirror. By default, a CDN is used, which automatically
+         redirects to a mirror geographically close to you.
 
-         Have a look on the kernel.org site for a list of mirrors, then enter
-         the URL to the base directory.  Examples:
+         Have a look on the kernel.org site for a list of mirrors, then
+         enter the URL to the base directory. Examples:
 
             http://www.XX.kernel.org/pub (XX = country code)
             http://mirror.aarnet.edu.au/pub/ftp.kernel.org
 
 config BR2_GNU_MIRROR
        string "GNU Software mirror"
-       default "http://ftp.gnu.org/pub/gnu"
+       default "http://ftpmirror.gnu.org"
        help
-         GNU has multiple software mirrors scattered around the world.
-         The following allows you to select your preferred mirror.
+         GNU has multiple software mirrors scattered around the
+         world. The following allows you to select your preferred
+         mirror. By default, a generic address is used, which
+         automatically selects an up-to-date and local mirror.
 
-         Have a look on the gnu.org site for a list of mirrors, then enter
-         the URL to the base directory.  Examples:
+         Have a look on the gnu.org site for a list of mirrors, then
+         enter the URL to the base directory. Examples:
 
             http://ftp.gnu.org/pub/gnu
             http://mirror.aarnet.edu.au/pub/gnu
 
-config BR2_DEBIAN_MIRROR
-       string "Debian Software mirror"
-       default "http://ftp.debian.org"
+config BR2_LUAROCKS_MIRROR
+       string "LuaRocks mirror"
+       default "http://rocks.moonscript.org"
+       help
+         LuaRocks repository.
+
+         See http://luarocks.org
+
+config BR2_CPAN_MIRROR
+       string "CPAN mirror (Perl packages)"
+       default "http://cpan.metacpan.org"
        help
-         Debian has multiple software mirrors scattered around the world.
-         The following allows you to select your preferred mirror.
+         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.
 
-         Usually, just add your country code like XX here:
-         http://ftp.XX.debian.org
+         The list of mirrors is available at:
+         http://search.cpan.org/mirror
 
 endif
 
@@ -219,36 +308,76 @@ config BR2_JLEVEL
        int "Number of jobs to run simultaneously (0 for auto)"
        default "0"
        help
-         Number of jobs to run simultaneously.  If 0, determine
-         automatically according to number of CPUs on the host
-         system.
+         Number of jobs to run simultaneously. If 0, determine
+         automatically according to number of CPUs on the host system.
 
 config BR2_CCACHE
        bool "Enable compiler cache"
        help
-         This option will enable the use of ccache, a compiler
-         cache. It will cache the result of previous builds to speed
-         up future builds. The cache is stored in
+         This option will enable the use of ccache, a compiler cache.
+         It will cache the result of previous builds to speed up future
+         builds. By default, the cache is stored in
          $HOME/.buildroot-ccache.
 
          Note that Buildroot does not try to invalidate the cache
-         contents when the compiler changes in an incompatible
-         way. Therefore, if you make a change to the compiler version
-         and/or configuration, you are responsible for purging the
-         ccache cache by removing the $HOME/.buildroot-ccache
-         directory.
+         contents when the compiler changes in an incompatible way.
+         Therefore, if you make a change to the compiler version and/or
+         configuration, you are responsible for purging the ccache
+         cache by removing the $HOME/.buildroot-ccache directory.
+
+if BR2_CCACHE
 
 config BR2_CCACHE_DIR
        string "Compiler cache location"
-       depends on BR2_CCACHE
        default "$(HOME)/.buildroot-ccache"
        help
          Where ccache should store cached files.
 
-config BR2_DEPRECATED
-       bool "Show packages that are deprecated or obsolete"
+config BR2_CCACHE_INITIAL_SETUP
+       string "Compiler cache initial setup"
        help
-         This option hides outdated/obsolete versions of packages.
+         Initial ccache settings to apply, such as --max-files or
+         --max-size.
+
+         For example, if your project is known to require more space
+         than the default max cache size, then you might want to
+         increase the cache size to a suitable amount using the -M
+         (--max-size) option.
+
+         The string you specify here is passed verbatim to ccache.
+         Refer to ccache documentation for more details.
+
+         These initial settings are applied after ccache has been
+         compiled.
+
+config BR2_CCACHE_USE_BASEDIR
+       bool "Use relative paths"
+       default y
+       help
+         Allow ccache to convert absolute paths within the output
+         directory into relative paths.
+
+         During the build, many -I include directives are given with an
+         absolute path. These absolute paths end up in the hashes that
+         are computed by ccache. Therefore, when you build from a
+         different directory, the hash will be different and the cached
+         object will not be used.
+
+         To improve cache performance, set this option to y. This
+         allows ccache to rewrite absolute paths within the output
+         directory into relative paths. Note that only paths within the
+         output directory will be rewritten; therefore, if you change
+         BR2_HOST_DIR to point outside the output directory and
+         subsequently move it to a different location, this will lead
+         to cache misses.
+
+         This option has as a result that the debug information in the
+         object files also has only relative paths. Therefore, make
+         sure you cd to the build directory before starting gdb. See
+         the section "COMPILING IN DIFFERENT DIRECTORIES" in the ccache
+         manual for more information.
+
+endif
 
 config BR2_ENABLE_DEBUG
        bool "build packages with debugging symbols"
@@ -270,11 +399,11 @@ choice
 config BR2_DEBUG_1
        bool "debug level 1"
        help
-         Debug level 1 produces minimal information, enough
-         for making backtraces in parts of the program that
-         you don't plan to debug. This includes descriptions
-         of functions and external variables, but no information
-         about local variables and no line numbers.
+         Debug level 1 produces minimal information, enough for making
+         backtraces in parts of the program that you don't plan to
+         debug. This includes descriptions of functions and external
+         variables, but no information about local variables and no
+         line numbers.
 
 config BR2_DEBUG_2
        bool "debug level 2"
@@ -284,9 +413,9 @@ config BR2_DEBUG_2
 config BR2_DEBUG_3
        bool "debug level 3"
        help
-         Level 3 includes extra information, such as all the
-         macro definitions present in the program. Some debuggers
-         support macro expansion when you use -g3.
+         Level 3 includes extra information, such as all the macro
+         definitions present in the program. Some debuggers support
+         macro expansion when you use -g3.
 endchoice
 endif
 
@@ -299,28 +428,15 @@ config BR2_STRIP_strip
        depends on !BR2_PACKAGE_HOST_ELF2FLT
        help
          Binaries and libraries in the target filesystem will be
-         stripped using the normal 'strip' command. This allows to
-         save space, mainly by removing debugging symbols. Debugging
-         symbols on the target are needed for native debugging, but
-         not when remote debugging is used.
-
-config BR2_STRIP_sstrip
-       bool "sstrip"
-       select BR2_PACKAGE_SSTRIP_HOST
-       depends on !BR2_PACKAGE_HOST_ELF2FLT
-       help
-         Binaries and libraries in the target filesystem will be
-         stripped using the 'sstrip' command, which strips a little
-         bit more than the traditional 'strip' command. This allows to
-         save space, mainly by removing debugging symbols. Debugging
-         symbols on the target are needed for native debugging, but
-         not when remote debugging is used.
+         stripped using the normal 'strip' command. This allows to save
+         space, mainly by removing debugging symbols. Debugging symbols
+         on the target are needed for native debugging, but not when
+         remote debugging is used.
 
 config BR2_STRIP_none
        bool "none"
        help
-         Do not strip binaries and libraries in the target
-         filesystem.
+         Do not strip binaries and libraries in the target filesystem.
 endchoice
 
 config BR2_STRIP_EXCLUDE_FILES
@@ -328,19 +444,19 @@ config BR2_STRIP_EXCLUDE_FILES
        depends on !BR2_STRIP_none
        default ""
        help
-         You may specify a space-separated list of binaries and libraries
-         here that should not be stripped on the target.
+         You may specify a space-separated list of binaries and
+         libraries here that should not be stripped on the target.
 
 config BR2_STRIP_EXCLUDE_DIRS
        string "directories that should be skipped when stripping"
        depends on !BR2_STRIP_none
        default ""
        help
-         You may specify a space-separated list of directories that should
-         be skipped when stripping. Binaries and libraries in these
-         directories will not be touched.
-         The directories should be specified relative to the target directory,
-         without leading slash.
+         You may specify a space-separated list of directories that
+         should be skipped when stripping. Binaries and libraries in
+         these directories will not be touched. The directories should
+         be specified relative to the target directory, without leading
+         slash.
 
 choice
        prompt "gcc optimization level"
@@ -351,125 +467,276 @@ choice
 config BR2_OPTIMIZE_0
        bool "optimization level 0"
        help
-         Do not optimize. This is the default.
+         Do not optimize.
 
 config BR2_OPTIMIZE_1
        bool "optimization level 1"
        help
-         Optimize. Optimizing compilation takes somewhat more time,
-         and a lot more memory for a large function. With -O, the
-         compiler tries to reduce code size and execution time,
-         without performing any optimizations that take a great deal
-         of compilation time. -O turns on the following optimization
+         Optimize. Optimizing compilation takes somewhat more time, and
+         a lot more memory for a large function. With -O, the compiler
+         tries to reduce code size and execution time, without
+         performing any optimizations that take a great deal of
+         compilation time. -O turns on the following optimization
          flags: -fdefer-pop -fdelayed-branch -fguess-branch-probability
          -fcprop-registers -floop-optimize -fif-conversion
          -fif-conversion2 -ftree-ccp -ftree-dce -ftree-dominator-opts
          -ftree-dse -ftree-ter -ftree-lrs -ftree-sra -ftree-copyrename
-         -ftree-fre -ftree-ch -funit-at-a-time -fmerge-constants
-         -O also turns on -fomit-frame-pointer on machines where doing
-         so does not interfere with debugging.
+         -ftree-fre -ftree-ch -funit-at-a-time -fmerge-constants. -O
+         also turns on -fomit-frame-pointer on machines where doing so
+         does not interfere with debugging.
 
 config BR2_OPTIMIZE_2
        bool "optimization level 2"
        help
-         Optimize even more. GCC performs nearly all supported optimizations
-         that do not involve a space-speed tradeoff. The compiler does not
-         perform loop unrolling or function inlining when you specify -O2.
-         As compared to -O, this option increases both compilation time and
-         the performance of the generated code. -O2 turns on all optimization
-         flags specified by -O. It also turns on the following optimization
-         flags: -fthread-jumps -fcrossjumping -foptimize-sibling-calls
+         Optimize even more. GCC performs nearly all supported
+         optimizations that do not involve a space-speed tradeoff. The
+         compiler does not perform loop unrolling or function inlining
+         when you specify -O2. As compared to -O, this option increases
+         both compilation time and the performance of the generated
+         code. -O2 turns on all optimization flags specified by -O. It
+         also turns on the following optimization flags:
+         -fthread-jumps -fcrossjumping -foptimize-sibling-calls
          -fcse-follow-jumps -fcse-skip-blocks -fgcse  -fgcse-lm
-         -fexpensive-optimizations -fstrength-reduce -frerun-cse-after-loop
-         -frerun-loop-opt -fcaller-saves -fpeephole2 -fschedule-insns
-         -fschedule-insns2 -fsched-interblock -fsched-spec -fregmove
-         -fstrict-aliasing -fdelete-null-pointer-checks -freorder-blocks
-         -freorder-functions -falign-functions -falign-jumps -falign-loops
-         -falign-labels -ftree-vrp -ftree-pre
-         Please note the warning under -fgcse about invoking -O2 on programs
+         -fexpensive-optimizations -fstrength-reduce
+         -frerun-cse-after-loop -frerun-loop-opt -fcaller-saves
+         -fpeephole2 -fschedule-insns -fschedule-insns2
+         -fsched-interblock -fsched-spec -fregmove -fstrict-aliasing
+         -fdelete-null-pointer-checks -freorder-blocks
+         -freorder-functions -falign-functions -falign-jumps
+         -falign-loops -falign-labels -ftree-vrp -ftree-pre. Please
+         note the warning under -fgcse about invoking -O2 on programs
          that use computed gotos.
 
 config BR2_OPTIMIZE_3
        bool "optimization level 3"
        help
-         Optimize yet more. -O3 turns on all optimizations specified by -O2
-         and also turns on the -finline-functions, -funswitch-loops and
-         -fgcse-after-reload options.
+         Optimize yet more. -O3 turns on all optimizations specified by
+         -O2 and also turns on the -finline-functions, -funswitch-loops
+         and -fgcse-after-reload options.
+
+config BR2_OPTIMIZE_G
+       bool "optimize for debugging"
+       depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
+       help
+         Optimize for debugging. This enables optimizations that do not
+         interfere with debugging. It should be the optimization level
+         of choice for the standard edit-compile-debug cycle, offering
+         a reasonable level of optimization while maintaining fast
+         compilation and a good debugging experience.
 
 config BR2_OPTIMIZE_S
        bool "optimize for size"
        help
-         Optimize for size. -Os enables all -O2 optimizations that do not
-         typically increase code size. It also performs further optimizations
-         designed to reduce code size. -Os disables the following optimization
-         flags: -falign-functions -falign-jumps -falign-loops -falign-labels
-         -freorder-blocks -freorder-blocks-and-partition -fprefetch-loop-arrays
+         Optimize for size. -Os enables all -O2 optimizations that do
+         not typically increase code size. It also performs further
+         optimizations designed to reduce code size. -Os disables the
+         following optimization flags: -falign-functions -falign-jumps
+         -falign-loops -falign-labels -freorder-blocks
+         -freorder-blocks-and-partition -fprefetch-loop-arrays
          -ftree-vect-loop-version
+         This is the default.
 
 endchoice
 
-config BR2_ENABLE_SSP
+config BR2_GOOGLE_BREAKPAD_ENABLE
+       bool "Enable google-breakpad support"
+       select BR2_PACKAGE_GOOGLE_BREAKPAD
+       depends on BR2_INSTALL_LIBSTDCPP
+       depends on BR2_HOST_GCC_AT_LEAST_4_8 # C++11
+       depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11
+       depends on BR2_USE_WCHAR
+       depends on BR2_TOOLCHAIN_HAS_THREADS
+       depends on (BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_UCLIBC)
+       depends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS
+       help
+         This option will enable the use of google breakpad, a library
+         and tool suite that allows you to distribute an application to
+         users with compiler-provided debugging information removed,
+         record crashes in compact "minidump" files, send them back to
+         your server and produce C and C++ stack traces from these
+         minidumps. Breakpad can also write minidumps on request for
+         programs that have not crashed.
+
+if BR2_GOOGLE_BREAKPAD_ENABLE
+
+config BR2_GOOGLE_BREAKPAD_INCLUDE_FILES
+       string "List of executables and libraries to extract symbols from"
+       default ""
+       help
+         You may specify a space-separated list of binaries and
+         libraries with full paths relative to $(TARGET_DIR) of which
+         debug symbols will be dumped for further use with google
+         breakpad.
+
+         A directory structure that can be used by minidump-stackwalk
+         will be created at:
+
+         $(STAGING_DIR)/usr/share/google-breakpad-symbols
+
+endif
+
+choice
        bool "build code with Stack Smashing Protection"
+       default BR2_SSP_ALL if BR2_ENABLE_SSP # legacy
        depends on BR2_TOOLCHAIN_HAS_SSP
        help
-         Enable stack smashing protection support using GCCs
-         -fstack-protector-all option.
+         Enable stack smashing protection support using GCC's
+         -fstack-protector option family.
 
-         See http://www.linuxfromscratch.org/hints/downloads/files/ssp.txt
+         See
+         http://www.linuxfromscratch.org/hints/downloads/files/ssp.txt
          for details.
 
-         Note that this requires the toolchain to have SSP
-         support. This is always the case for glibc and eglibc
-         toolchain, but is optional in uClibc toolchains.
+         Note that this requires the toolchain to have SSP support.
+         This is always the case for glibc and eglibc toolchain, but is
+         optional in uClibc toolchains.
+
+config BR2_SSP_NONE
+       bool "None"
+       help
+         Disable stack-smashing protection.
+
+config BR2_SSP_REGULAR
+       bool "-fstack-protector"
+       help
+         Emit extra code to check for buffer overflows, such as stack
+         smashing attacks. This is done by adding a guard variable to
+         functions with vulnerable objects. This includes functions
+         that call alloca, and functions with buffers larger than 8
+         bytes. The guards are initialized when a function is entered
+         and then checked when the function exits. If a guard check
+         fails, an error message is printed and the program exits.
+
+config BR2_SSP_STRONG
+       bool "-fstack-protector-strong"
+       depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
+       help
+         Like -fstack-protector but includes additional functions to be
+         protected - those that have local array definitions, or have
+         references to local frame addresses.
+
+comment "Stack Smashing Protection strong needs a toolchain w/ gcc >= 4.9"
+       depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
+
+config BR2_SSP_ALL
+       bool "-fstack-protector-all"
+       help
+         Like -fstack-protector except that all functions are
+         protected. This option might have a significant performance
+         impact on the compiled binaries.
+
+endchoice
 
-comment "enabling Stack Smashing Protection requires support in the toolchain"
+comment "Stack Smashing Protection needs a toolchain w/ SSP"
        depends on !BR2_TOOLCHAIN_HAS_SSP
 
-config BR2_PREFER_STATIC_LIB
-       bool "prefer static libraries"
+choice
+       bool "libraries"
+       default BR2_SHARED_LIBS if BR2_BINFMT_SUPPORTS_SHARED
+       default BR2_STATIC_LIBS if !BR2_BINFMT_SUPPORTS_SHARED
+       help
+         Select the type of libraries you want to use on the target.
+
+         The default is to build dynamic libraries and use those on the
+         target filesystem, except when the architecture and/or the
+         selected binary format does not support shared libraries.
+
+config BR2_STATIC_LIBS
+       bool "static only"
        help
-         Where possible, build and use static libraries for the target.
-         This potentially increases your code size and should only be
-         used if you know what you do.
-         The default is to build dynamic libraries and use those on
-         the target filesystem.
+         Build and use only static libraries. No shared libraries will
+         be installed on the target. This potentially increases your
+         code size and should only be used if you know what you are
+         doing. Note that some packages may not be available when this
+         option is enabled, due to their need for dynamic library
+         support.
 
-         WARNING: This is highly experimental at the moment.
+config BR2_SHARED_LIBS
+       bool "shared only"
+       depends on BR2_BINFMT_SUPPORTS_SHARED
+       help
+         Build and use only shared libraries. This is the recommended
+         solution as it saves space and build time.
 
-config BR2_HAVE_DOCUMENTATION
-       bool "documentation on the target"
-       # We no longer want to support a toolchain on the target
-       depends on BR2_DEPRECATED
+config BR2_SHARED_STATIC_LIBS
+       bool "both static and shared"
+       depends on BR2_BINFMT_SUPPORTS_SHARED
        help
-         Install the documentation, including manual pages and info
-         pages, on the target.
-         If you say n here, your target will not contain any
-         documentation.
+         Build both shared and static libraries, but link executables
+         dynamically. While building both shared and static libraries
+         take more time and more disk space, having static libraries
+         may be useful to link some of the applications statically.
+
+endchoice
+
 
 config BR2_PACKAGE_OVERRIDE_FILE
        string "location of a package override file"
-       default "$(TOPDIR)/local.mk"
+       default "$(CONFIG_DIR)/local.mk"
        help
          A package override file is a short makefile that contains
-         variable definitions of the form <pkg>_OVERRIDE_SRCDIR,
-         which allows to tell Buildroot to use an existing directory
-         as the source directory for a particular package. See the
-         Buildroot documentation for more details on this feature.
+         variable definitions of the form <pkg>_OVERRIDE_SRCDIR, which
+         allows to tell Buildroot to use an existing directory as the
+         source directory for a particular package. See the Buildroot
+         documentation for more details on this feature.
 
 config BR2_GLOBAL_PATCH_DIR
-       string "global patch directory"
+       string "global patch 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:
+
+         First, the default Buildroot patch set for the package is
+         applied from the package's directory in Buildroot.
+
+         Then for every directory - <global-patch-dir> - that exists in
+         BR2_GLOBAL_PATCH_DIR, if the directory
+         <global-patch-dir>/<packagename>/<packageversion>/ exists,
+         then all *.patch files in this directory will be applied.
+
+         Otherwise, if the directory <global-patch-dir>/<packagename>
+         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
-         You may specify a directory containing global package patches.
-         For a specific version <packageversion> of a specific package
-         <packagename>, patches are applied as follows.
+         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.
 
-         First, the default Buildroot patch set for the package is applied.
+         By enabling this option, this warning is turned into an error,
+         which will completely abort the build when such unsafe paths
+         are encountered.
 
-         If the directory $(BR2_GLOBAL_PATCH_DIR)/<packagename>/<packageversion>
-         exists, then all *.patch files in the directory will be applied.
+         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).
 
-         Otherwise, if the directory $(BR2_GLOBAL_PATCH_DIR)/<packagename> exists,
-         then all *.patch files in the directory will be applied.
+config BR2_REPRODUCIBLE
+       bool "Make the build reproducible (experimental)"
+       help
+         This option will remove all sources of non-reproducibility
+         from the build process. For a given Buildroot configuration,
+         this allows to generate exactly identical binaries from one
+         build to the other, including on different machines.
+
+         The current implementation is restricted to builds with the
+         same output directory. Many (absolute) paths are recorded in
+         intermediary files, and it is very likely that some of these
+         paths leak into the target rootfs. If you build with the
+         same O=... path, however, the result is identical.
+
+         This is labeled as an experimental feature, as not all
+         packages behave properly to ensure reproducibility.
+
+endmenu
 
 endmenu
 
@@ -488,3 +755,5 @@ source "boot/Config.in"
 source "package/Config.in.host"
 
 source "Config.in.legacy"
+
+source "$BR2_BUILD_DIR/.br2-external.in"