3 mainmenu "Buildroot $BR2_VERSION Configuration"
5 config BR2_HAVE_DOT_CONFIG
11 option env="BR2_VERSION_FULL"
19 option env="BR2_EXTERNAL"
23 option env="BUILD_DIR"
25 # Hidden config symbols for packages to check system gcc version
26 config BR2_HOST_GCC_VERSION
28 option env="HOST_GCC_VERSION"
30 config BR2_HOST_GCC_AT_LEAST_4_6
32 default y if BR2_HOST_GCC_VERSION = "4 6"
34 config BR2_HOST_GCC_AT_LEAST_4_7
36 default y if BR2_HOST_GCC_VERSION = "4 7"
37 select BR2_HOST_GCC_AT_LEAST_4_6
39 config BR2_HOST_GCC_AT_LEAST_4_8
41 default y if BR2_HOST_GCC_VERSION = "4 8"
42 select BR2_HOST_GCC_AT_LEAST_4_7
44 config BR2_HOST_GCC_AT_LEAST_4_9
46 default y if BR2_HOST_GCC_VERSION = "4 9"
47 select BR2_HOST_GCC_AT_LEAST_4_8
49 config BR2_HOST_GCC_AT_LEAST_5
51 default y if BR2_HOST_GCC_VERSION = "5"
52 select BR2_HOST_GCC_AT_LEAST_4_9
54 config BR2_HOST_GCC_AT_LEAST_6
56 default y if BR2_HOST_GCC_VERSION = "6"
57 select BR2_HOST_GCC_AT_LEAST_5
59 # Hidden boolean selected by packages in need of Java in order to build
61 config BR2_NEEDS_HOST_JAVA
64 # Hidden boolean selected by packages in need of javac in order to build
65 # (example: classpath)
66 config BR2_NEEDS_HOST_JAVAC
69 # Hidden boolean selected by packages in need of jar in order to build
70 # (example: classpath)
71 config BR2_NEEDS_HOST_JAR
74 # Hidden boolean selected by pre-built packages for x86, when they
75 # need to run on x86-64 machines (example: pre-built external
76 # toolchains, binary tools like SAM-BA, etc.).
77 config BR2_HOSTARCH_NEEDS_IA32_LIBS
80 # Hidden boolean selected by packages that need to build 32 bits
81 # binaries with the host compiler, even on 64 bits build machines (e.g
83 config BR2_HOSTARCH_NEEDS_IA32_COMPILER
86 source "arch/Config.in"
94 default "wget --passive-ftp -nd -t 3"
97 string "Subversion (svn) command"
101 string "Bazaar (bzr) command"
112 config BR2_LOCALFILES
113 string "Local files retrieval command"
117 string "Secure copy (scp) command"
121 string "Secure shell (ssh) command"
125 string "Mercurial (hg) command"
129 string "zcat command"
132 Command to be used to extract a gzip'ed file to stdout. zcat
133 is identical to gunzip -c except that the former may not be
134 available on your system.
135 Default is "gzip -d -c"
136 Other possible values include "gunzip -c" or "zcat".
139 string "bzcat command"
142 Command to be used to extract a bzip2'ed file to stdout.
143 bzcat is identical to bunzip2 -c except that the former may
144 not be available on your system.
146 Other possible values include "bunzip2 -c" or "bzip2 -d -c".
149 string "xzcat command"
152 Command to be used to extract a xz'ed file to stdout.
155 config BR2_TAR_OPTIONS
159 Options to pass to tar when extracting the sources.
160 E.g. " -v --exclude='*.svn*'" to exclude all .svn internal files
165 config BR2_DEFCONFIG_FROM_ENV
167 option env="BR2_DEFCONFIG"
170 string "Location to save buildroot config"
171 default BR2_DEFCONFIG_FROM_ENV if BR2_DEFCONFIG_FROM_ENV != ""
172 default "$(CONFIG_DIR)/defconfig"
174 When running 'make savedefconfig', the defconfig file will be
175 saved in this location.
178 string "Download dir"
179 default "$(TOPDIR)/dl"
181 Directory to store all the source files that we need to fetch.
182 If the Linux shell environment has defined the BR2_DL_DIR
183 environment variable, then this overrides this configuration
186 The default is $(TOPDIR)/dl
190 default "$(BASE_DIR)/host"
192 Directory to store all the binary files that are built for the
193 host. This includes the cross compilation toolchain when
194 building the internal buildroot toolchain.
196 The default is $(BASE_DIR)/host
198 menu "Mirrors and Download locations"
200 config BR2_PRIMARY_SITE
201 string "Primary download site"
204 Primary site to download from. If this option is set then
205 buildroot will try to download package source first from this
206 site and try the default if the file is not found.
208 - URIs recognized by $(WGET)
209 - local URIs of the form file://absolutepath
210 - scp URIs of the form scp://[user@]host:path.
212 config BR2_PRIMARY_SITE_ONLY
213 bool "Only allow downloads from primary download site"
214 depends on BR2_PRIMARY_SITE != ""
216 If this option is enabled, downloads will only be attempted
217 from the primary download site. Other locations, like the
218 package's official download location or the backup download
219 site, will not be considered. Therefore, if the package is not
220 present on the primary site, the download fails.
222 This is useful for project developers who want to ensure that
223 the project can be built even if the upstream tarball
226 if !BR2_PRIMARY_SITE_ONLY
228 config BR2_BACKUP_SITE
229 string "Backup download site"
230 default "http://sources.buildroot.net"
232 Backup site to download from. If this option is set then
233 buildroot will fall back to download package sources from here
234 if the normal location fails.
236 config BR2_KERNEL_MIRROR
237 string "Kernel.org mirror"
238 default "https://cdn.kernel.org/pub"
240 kernel.org is mirrored on a number of servers around the
241 world. The following allows you to select your preferred
242 mirror. By default, a CDN is used, which automatically
243 redirects to a mirror geographically close to you.
245 Have a look on the kernel.org site for a list of mirrors, then
246 enter the URL to the base directory. Examples:
248 http://www.XX.kernel.org/pub (XX = country code)
249 http://mirror.aarnet.edu.au/pub/ftp.kernel.org
251 config BR2_GNU_MIRROR
252 string "GNU Software mirror"
253 default "http://ftpmirror.gnu.org"
255 GNU has multiple software mirrors scattered around the
256 world. The following allows you to select your preferred
257 mirror. By default, a generic address is used, which
258 automatically selects an up-to-date and local mirror.
260 Have a look on the gnu.org site for a list of mirrors, then
261 enter the URL to the base directory. Examples:
263 http://ftp.gnu.org/pub/gnu
264 http://mirror.aarnet.edu.au/pub/gnu
266 config BR2_LUAROCKS_MIRROR
267 string "LuaRocks mirror"
268 default "http://rocks.moonscript.org"
272 See http://luarocks.org
274 config BR2_CPAN_MIRROR
275 string "CPAN mirror (Perl packages)"
276 default "http://cpan.metacpan.org"
278 CPAN (Comprehensive Perl Archive Network) is a repository of
279 Perl packages. It has multiple software mirrors scattered
280 around the world. This option allows you to select a mirror.
282 The list of mirrors is available at:
283 http://search.cpan.org/mirror
290 int "Number of jobs to run simultaneously (0 for auto)"
293 Number of jobs to run simultaneously. If 0, determine
294 automatically according to number of CPUs on the host system.
297 bool "Enable compiler cache"
299 This option will enable the use of ccache, a compiler cache.
300 It will cache the result of previous builds to speed up future
301 builds. By default, the cache is stored in
302 $HOME/.buildroot-ccache.
304 Note that Buildroot does not try to invalidate the cache
305 contents when the compiler changes in an incompatible way.
306 Therefore, if you make a change to the compiler version and/or
307 configuration, you are responsible for purging the ccache
308 cache by removing the $HOME/.buildroot-ccache directory.
312 config BR2_CCACHE_DIR
313 string "Compiler cache location"
314 default "$(HOME)/.buildroot-ccache"
316 Where ccache should store cached files.
318 config BR2_CCACHE_INITIAL_SETUP
319 string "Compiler cache initial setup"
321 Initial ccache settings to apply, such as --max-files or
324 For example, if your project is known to require more space
325 than the default max cache size, then you might want to
326 increase the cache size to a suitable amount using the -M
329 The string you specify here is passed verbatim to ccache.
330 Refer to ccache documentation for more details.
332 These initial settings are applied after ccache has been
335 config BR2_CCACHE_USE_BASEDIR
336 bool "Use relative paths"
339 Allow ccache to convert absolute paths within the output
340 directory into relative paths.
342 During the build, many -I include directives are given with an
343 absolute path. These absolute paths end up in the hashes that
344 are computed by ccache. Therefore, when you build from a
345 different directory, the hash will be different and the cached
346 object will not be used.
348 To improve cache performance, set this option to y. This
349 allows ccache to rewrite absolute paths within the output
350 directory into relative paths. Note that only paths within the
351 output directory will be rewritten; therefore, if you change
352 BR2_HOST_DIR to point outside the output directory and
353 subsequently move it to a different location, this will lead
356 This option has as a result that the debug information in the
357 object files also has only relative paths. Therefore, make
358 sure you cd to the build directory before starting gdb. See
359 the section "COMPILING IN DIFFERENT DIRECTORIES" in the ccache
360 manual for more information.
364 config BR2_DEPRECATED
365 bool "Show options and packages that are deprecated or obsolete"
367 This option shows outdated/obsolete versions of packages and
368 options that are otherwise hidden.
372 config BR2_DEPRECATED_SINCE_2015_05
376 config BR2_DEPRECATED_SINCE_2015_08
380 config BR2_DEPRECATED_SINCE_2015_11
384 config BR2_DEPRECATED_SINCE_2016_02
388 config BR2_DEPRECATED_SINCE_2016_05
392 config BR2_DEPRECATED_SINCE_2016_08
398 config BR2_ENABLE_DEBUG
399 bool "build packages with debugging symbols"
401 Build packages with debugging symbols enabled. All libraries
402 and binaries in the 'staging' directory will have debugging
403 symbols, which allows remote debugging even if libraries and
404 binaries are stripped on the target. Whether libraries and
405 binaries are stripped on the target is controlled by the
406 BR2_STRIP_* options below.
410 prompt "gcc debug level"
413 Set the debug level for gcc
418 Debug level 1 produces minimal information, enough for making
419 backtraces in parts of the program that you don't plan to
420 debug. This includes descriptions of functions and external
421 variables, but no information about local variables and no
427 The default gcc debug level is 2
432 Level 3 includes extra information, such as all the macro
433 definitions present in the program. Some debuggers support
434 macro expansion when you use -g3.
439 prompt "strip command for binaries on target"
440 default BR2_STRIP_strip
442 config BR2_STRIP_strip
444 depends on !BR2_PACKAGE_HOST_ELF2FLT
446 Binaries and libraries in the target filesystem will be
447 stripped using the normal 'strip' command. This allows to save
448 space, mainly by removing debugging symbols. Debugging symbols
449 on the target are needed for native debugging, but not when
450 remote debugging is used.
452 config BR2_STRIP_none
455 Do not strip binaries and libraries in the target filesystem.
458 config BR2_STRIP_EXCLUDE_FILES
459 string "executables that should not be stripped"
460 depends on !BR2_STRIP_none
463 You may specify a space-separated list of binaries and
464 libraries here that should not be stripped on the target.
466 config BR2_STRIP_EXCLUDE_DIRS
467 string "directories that should be skipped when stripping"
468 depends on !BR2_STRIP_none
471 You may specify a space-separated list of directories that
472 should be skipped when stripping. Binaries and libraries in
473 these directories will not be touched. The directories should
474 be specified relative to the target directory, without leading
478 prompt "gcc optimization level"
479 default BR2_OPTIMIZE_S
481 Set the optimization level for gcc
483 config BR2_OPTIMIZE_0
484 bool "optimization level 0"
486 Do not optimize. This is the default.
488 config BR2_OPTIMIZE_1
489 bool "optimization level 1"
491 Optimize. Optimizing compilation takes somewhat more time, and
492 a lot more memory for a large function. With -O, the compiler
493 tries to reduce code size and execution time, without
494 performing any optimizations that take a great deal of
495 compilation time. -O turns on the following optimization
496 flags: -fdefer-pop -fdelayed-branch -fguess-branch-probability
497 -fcprop-registers -floop-optimize -fif-conversion
498 -fif-conversion2 -ftree-ccp -ftree-dce -ftree-dominator-opts
499 -ftree-dse -ftree-ter -ftree-lrs -ftree-sra -ftree-copyrename
500 -ftree-fre -ftree-ch -funit-at-a-time -fmerge-constants. -O
501 also turns on -fomit-frame-pointer on machines where doing so
502 does not interfere with debugging.
504 config BR2_OPTIMIZE_2
505 bool "optimization level 2"
507 Optimize even more. GCC performs nearly all supported
508 optimizations that do not involve a space-speed tradeoff. The
509 compiler does not perform loop unrolling or function inlining
510 when you specify -O2. As compared to -O, this option increases
511 both compilation time and the performance of the generated
512 code. -O2 turns on all optimization flags specified by -O. It
513 also turns on the following optimization flags:
514 -fthread-jumps -fcrossjumping -foptimize-sibling-calls
515 -fcse-follow-jumps -fcse-skip-blocks -fgcse -fgcse-lm
516 -fexpensive-optimizations -fstrength-reduce
517 -frerun-cse-after-loop -frerun-loop-opt -fcaller-saves
518 -fpeephole2 -fschedule-insns -fschedule-insns2
519 -fsched-interblock -fsched-spec -fregmove -fstrict-aliasing
520 -fdelete-null-pointer-checks -freorder-blocks
521 -freorder-functions -falign-functions -falign-jumps
522 -falign-loops -falign-labels -ftree-vrp -ftree-pre. Please
523 note the warning under -fgcse about invoking -O2 on programs
524 that use computed gotos.
526 config BR2_OPTIMIZE_3
527 bool "optimization level 3"
529 Optimize yet more. -O3 turns on all optimizations specified by
530 -O2 and also turns on the -finline-functions, -funswitch-loops
531 and -fgcse-after-reload options.
533 config BR2_OPTIMIZE_G
534 bool "optimize for debugging"
535 depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
537 Optimize for debugging. This enables optimizations that do not
538 interfere with debugging. It should be the optimization level
539 of choice for the standard edit-compile-debug cycle, offering
540 a reasonable level of optimization while maintaining fast
541 compilation and a good debugging experience.
543 config BR2_OPTIMIZE_S
544 bool "optimize for size"
546 Optimize for size. -Os enables all -O2 optimizations that do
547 not typically increase code size. It also performs further
548 optimizations designed to reduce code size. -Os disables the
549 following optimization flags: -falign-functions -falign-jumps
550 -falign-loops -falign-labels -freorder-blocks
551 -freorder-blocks-and-partition -fprefetch-loop-arrays
552 -ftree-vect-loop-version
556 config BR2_GOOGLE_BREAKPAD_ENABLE
557 bool "Enable google-breakpad support"
558 select BR2_PACKAGE_GOOGLE_BREAKPAD
559 depends on BR2_INSTALL_LIBSTDCPP
560 depends on BR2_TOOLCHAIN_USES_GLIBC
561 depends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS
563 This option will enable the use of google breakpad, a library
564 and tool suite that allows you to distribute an application to
565 users with compiler-provided debugging information removed,
566 record crashes in compact "minidump" files, send them back to
567 your server and produce C and C++ stack traces from these
568 minidumps. Breakpad can also write minidumps on request for
569 programs that have not crashed.
571 if BR2_GOOGLE_BREAKPAD_ENABLE
573 config BR2_GOOGLE_BREAKPAD_INCLUDE_FILES
574 string "List of executables and libraries to extract symbols from"
577 You may specify a space-separated list of binaries and
578 libraries with full paths relative to $(TARGET_DIR) of which
579 debug symbols will be dumped for further use with google
582 A directory structure that can be used by minidump-stackwalk
585 $(STAGING_DIR)/usr/share/google-breakpad-symbols
590 bool "build code with Stack Smashing Protection"
591 default BR2_SSP_ALL if BR2_ENABLE_SSP # legacy
592 depends on BR2_TOOLCHAIN_HAS_SSP
594 Enable stack smashing protection support using GCC's
595 -fstack-protector option family.
598 http://www.linuxfromscratch.org/hints/downloads/files/ssp.txt
601 Note that this requires the toolchain to have SSP support.
602 This is always the case for glibc and eglibc toolchain, but is
603 optional in uClibc toolchains.
608 Disable stack-smashing protection.
610 config BR2_SSP_REGULAR
611 bool "-fstack-protector"
613 Emit extra code to check for buffer overflows, such as stack
614 smashing attacks. This is done by adding a guard variable to
615 functions with vulnerable objects. This includes functions
616 that call alloca, and functions with buffers larger than 8
617 bytes. The guards are initialized when a function is entered
618 and then checked when the function exits. If a guard check
619 fails, an error message is printed and the program exits.
621 config BR2_SSP_STRONG
622 bool "-fstack-protector-strong"
623 depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
625 Like -fstack-protector but includes additional functions to be
626 protected - those that have local array definitions, or have
627 references to local frame addresses.
629 comment "Stack Smashing Protection strong needs a toolchain w/ gcc >= 4.9"
630 depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
633 bool "-fstack-protector-all"
635 Like -fstack-protector except that all functions are
636 protected. This option might have a significant performance
637 impact on the compiled binaries.
641 comment "Stack Smashing Protection needs a toolchain w/ SSP"
642 depends on !BR2_TOOLCHAIN_HAS_SSP
646 default BR2_SHARED_LIBS if BR2_BINFMT_SUPPORTS_SHARED
647 default BR2_STATIC_LIBS if !BR2_BINFMT_SUPPORTS_SHARED
649 Select the type of libraries you want to use on the target.
651 The default is to build dynamic libraries and use those on the
652 target filesystem, except when the architecture and/or the
653 selected binary format does not support shared libraries.
655 config BR2_STATIC_LIBS
658 Build and use only static libraries. No shared libraries will
659 be installed on the target. This potentially increases your
660 code size and should only be used if you know what you are
661 doing. Note that some packages may not be available when this
662 option is enabled, due to their need for dynamic library
665 config BR2_SHARED_LIBS
667 depends on BR2_BINFMT_SUPPORTS_SHARED
669 Build and use only shared libraries. This is the recommended
670 solution as it saves space and build time.
672 config BR2_SHARED_STATIC_LIBS
673 bool "both static and shared"
674 depends on BR2_BINFMT_SUPPORTS_SHARED
676 Build both shared and static libraries, but link executables
677 dynamically. While building both shared and static libraries
678 take more time and more disk space, having static libraries
679 may be useful to link some of the applications statically.
684 config BR2_PACKAGE_OVERRIDE_FILE
685 string "location of a package override file"
686 default "$(CONFIG_DIR)/local.mk"
688 A package override file is a short makefile that contains
689 variable definitions of the form <pkg>_OVERRIDE_SRCDIR, which
690 allows to tell Buildroot to use an existing directory as the
691 source directory for a particular package. See the Buildroot
692 documentation for more details on this feature.
694 config BR2_GLOBAL_PATCH_DIR
695 string "global patch directories"
697 You may specify a space separated list of one or more
698 directories containing global package patches. For a specific
699 version <packageversion> of a specific package <packagename>,
700 patches are applied as follows:
702 First, the default Buildroot patch set for the package is
703 applied from the package's directory in Buildroot.
705 Then for every directory - <global-patch-dir> - that exists in
706 BR2_GLOBAL_PATCH_DIR, if the directory
707 <global-patch-dir>/<packagename>/<packageversion>/ exists,
708 then all *.patch files in this directory will be applied.
710 Otherwise, if the directory <global-patch-dir>/<packagename>
711 exists, then all *.patch files in the directory will be
716 config BR2_COMPILER_PARANOID_UNSAFE_PATH
717 bool "paranoid check of library/header paths"
720 By default, when this option is disabled, when the Buildroot
721 cross-compiler will encounter an unsafe library or header path
722 (such as /usr/include, or /usr/lib), the compiler will display
725 By enabling this option, this warning is turned into an error,
726 which will completely abort the build when such unsafe paths
729 Note that this mechanism is available for both the internal
730 toolchain (through the toolchain wrapper and binutils patches)
731 and external toolchain backends (through the toolchain wrapper).
733 config BR2_REPRODUCIBLE
734 bool "Make the build reproducible (experimental)"
736 This option will remove all sources of non-reproducibility
737 from the build process. For a given Buildroot configuration,
738 this allows to generate exactly identical binaries from one
739 build to the other, including on different machines.
741 This is labeled as an experimental feature, as not all
742 packages behave properly to ensure reproducibility.
748 source "toolchain/Config.in"
750 source "system/Config.in"
752 source "linux/Config.in"
754 source "package/Config.in"
756 source "fs/Config.in"
758 source "boot/Config.in"
760 source "package/Config.in.host"
762 source "Config.in.legacy"
764 menu "User-provided options"
765 depends on BR2_EXTERNAL != "support/dummy-external"
767 source "$BR2_EXTERNAL/Config.in"
771 source "$BR2_BUILD_DIR/.br2-external.in"