3 mainmenu "Buildroot $BR2_VERSION Configuration"
5 config BR2_HAVE_DOT_CONFIG
11 option env="BR2_VERSION_FULL"
19 option env="BUILD_DIR"
21 # Hidden config symbols for packages to check system gcc version
22 config BR2_HOST_GCC_VERSION
24 option env="HOST_GCC_VERSION"
26 config BR2_HOST_GCC_AT_LEAST_4_5
28 default y if BR2_HOST_GCC_VERSION = "4 5"
30 config BR2_HOST_GCC_AT_LEAST_4_6
32 default y if BR2_HOST_GCC_VERSION = "4 6"
33 select BR2_HOST_GCC_AT_LEAST_4_5
35 config BR2_HOST_GCC_AT_LEAST_4_7
37 default y if BR2_HOST_GCC_VERSION = "4 7"
38 select BR2_HOST_GCC_AT_LEAST_4_6
40 config BR2_HOST_GCC_AT_LEAST_4_8
42 default y if BR2_HOST_GCC_VERSION = "4 8"
43 select BR2_HOST_GCC_AT_LEAST_4_7
45 config BR2_HOST_GCC_AT_LEAST_4_9
47 default y if BR2_HOST_GCC_VERSION = "4 9"
48 select BR2_HOST_GCC_AT_LEAST_4_8
50 config BR2_HOST_GCC_AT_LEAST_5
52 default y if BR2_HOST_GCC_VERSION = "5"
53 select BR2_HOST_GCC_AT_LEAST_4_9
55 config BR2_HOST_GCC_AT_LEAST_6
57 default y if BR2_HOST_GCC_VERSION = "6"
58 select BR2_HOST_GCC_AT_LEAST_5
60 # Hidden boolean selected by packages in need of Java in order to build
62 config BR2_NEEDS_HOST_JAVA
65 # Hidden boolean selected by packages in need of javac in order to build
66 # (example: classpath)
67 config BR2_NEEDS_HOST_JAVAC
70 # Hidden boolean selected by packages in need of jar in order to build
71 # (example: classpath)
72 config BR2_NEEDS_HOST_JAR
75 # Hidden boolean selected by pre-built packages for x86, when they
76 # need to run on x86-64 machines (example: pre-built external
77 # toolchains, binary tools like SAM-BA, etc.).
78 config BR2_HOSTARCH_NEEDS_IA32_LIBS
81 # Hidden boolean selected by packages that need to build 32 bits
82 # binaries with the host compiler, even on 64 bits build machines (e.g
84 config BR2_HOSTARCH_NEEDS_IA32_COMPILER
87 source "arch/Config.in"
95 default "wget --passive-ftp -nd -t 3"
98 string "Subversion (svn) command"
102 string "Bazaar (bzr) command"
113 config BR2_LOCALFILES
114 string "Local files retrieval command"
118 string "Secure copy (scp) command"
122 string "Secure shell (ssh) command"
126 string "Mercurial (hg) command"
130 string "zcat command"
133 Command to be used to extract a gzip'ed file to stdout. zcat
134 is identical to gunzip -c except that the former may not be
135 available on your system.
136 Default is "gzip -d -c"
137 Other possible values include "gunzip -c" or "zcat".
140 string "bzcat command"
143 Command to be used to extract a bzip2'ed file to stdout.
144 bzcat is identical to bunzip2 -c except that the former may
145 not be available on your system.
147 Other possible values include "bunzip2 -c" or "bzip2 -d -c".
150 string "xzcat command"
153 Command to be used to extract a xz'ed file to stdout.
156 config BR2_TAR_OPTIONS
160 Options to pass to tar when extracting the sources.
161 E.g. " -v --exclude='*.svn*'" to exclude all .svn internal files
166 config BR2_DEFCONFIG_FROM_ENV
168 option env="BR2_DEFCONFIG"
171 string "Location to save buildroot config"
172 default BR2_DEFCONFIG_FROM_ENV if BR2_DEFCONFIG_FROM_ENV != ""
173 default "$(CONFIG_DIR)/defconfig"
175 When running 'make savedefconfig', the defconfig file will be
176 saved in this location.
179 string "Download dir"
180 default "$(TOPDIR)/dl"
182 Directory to store all the source files that we need to fetch.
183 If the Linux shell environment has defined the BR2_DL_DIR
184 environment variable, then this overrides this configuration
187 The default is $(TOPDIR)/dl
191 default "$(BASE_DIR)/host"
193 Directory to store all the binary files that are built for the
194 host. This includes the cross compilation toolchain when
195 building the internal buildroot toolchain.
197 The default is $(BASE_DIR)/host
199 menu "Mirrors and Download locations"
201 config BR2_PRIMARY_SITE
202 string "Primary download site"
205 Primary site to download from. If this option is set then
206 buildroot will try to download package source first from this
207 site and try the default if the file is not found.
209 - URIs recognized by $(WGET)
210 - local URIs of the form file://absolutepath
211 - scp URIs of the form scp://[user@]host:path.
213 config BR2_PRIMARY_SITE_ONLY
214 bool "Only allow downloads from primary download site"
215 depends on BR2_PRIMARY_SITE != ""
217 If this option is enabled, downloads will only be attempted
218 from the primary download site. Other locations, like the
219 package's official download location or the backup download
220 site, will not be considered. Therefore, if the package is not
221 present on the primary site, the download fails.
223 This is useful for project developers who want to ensure that
224 the project can be built even if the upstream tarball
227 if !BR2_PRIMARY_SITE_ONLY
229 config BR2_BACKUP_SITE
230 string "Backup download site"
231 default "http://sources.buildroot.net"
233 Backup site to download from. If this option is set then
234 buildroot will fall back to download package sources from here
235 if the normal location fails.
237 config BR2_KERNEL_MIRROR
238 string "Kernel.org mirror"
239 default "https://cdn.kernel.org/pub"
241 kernel.org is mirrored on a number of servers around the
242 world. The following allows you to select your preferred
243 mirror. By default, a CDN is used, which automatically
244 redirects to a mirror geographically close to you.
246 Have a look on the kernel.org site for a list of mirrors, then
247 enter the URL to the base directory. Examples:
249 http://www.XX.kernel.org/pub (XX = country code)
250 http://mirror.aarnet.edu.au/pub/ftp.kernel.org
252 config BR2_GNU_MIRROR
253 string "GNU Software mirror"
254 default "http://ftpmirror.gnu.org"
256 GNU has multiple software mirrors scattered around the
257 world. The following allows you to select your preferred
258 mirror. By default, a generic address is used, which
259 automatically selects an up-to-date and local mirror.
261 Have a look on the gnu.org site for a list of mirrors, then
262 enter the URL to the base directory. Examples:
264 http://ftp.gnu.org/pub/gnu
265 http://mirror.aarnet.edu.au/pub/gnu
267 config BR2_LUAROCKS_MIRROR
268 string "LuaRocks mirror"
269 default "http://rocks.moonscript.org"
273 See http://luarocks.org
275 config BR2_CPAN_MIRROR
276 string "CPAN mirror (Perl packages)"
277 default "http://cpan.metacpan.org"
279 CPAN (Comprehensive Perl Archive Network) is a repository of
280 Perl packages. It has multiple software mirrors scattered
281 around the world. This option allows you to select a mirror.
283 The list of mirrors is available at:
284 http://search.cpan.org/mirror
291 int "Number of jobs to run simultaneously (0 for auto)"
294 Number of jobs to run simultaneously. If 0, determine
295 automatically according to number of CPUs on the host system.
298 bool "Enable compiler cache"
300 This option will enable the use of ccache, a compiler cache.
301 It will cache the result of previous builds to speed up future
302 builds. By default, the cache is stored in
303 $HOME/.buildroot-ccache.
305 Note that Buildroot does not try to invalidate the cache
306 contents when the compiler changes in an incompatible way.
307 Therefore, if you make a change to the compiler version and/or
308 configuration, you are responsible for purging the ccache
309 cache by removing the $HOME/.buildroot-ccache directory.
313 config BR2_CCACHE_DIR
314 string "Compiler cache location"
315 default "$(HOME)/.buildroot-ccache"
317 Where ccache should store cached files.
319 config BR2_CCACHE_INITIAL_SETUP
320 string "Compiler cache initial setup"
322 Initial ccache settings to apply, such as --max-files or
325 For example, if your project is known to require more space
326 than the default max cache size, then you might want to
327 increase the cache size to a suitable amount using the -M
330 The string you specify here is passed verbatim to ccache.
331 Refer to ccache documentation for more details.
333 These initial settings are applied after ccache has been
336 config BR2_CCACHE_USE_BASEDIR
337 bool "Use relative paths"
340 Allow ccache to convert absolute paths within the output
341 directory into relative paths.
343 During the build, many -I include directives are given with an
344 absolute path. These absolute paths end up in the hashes that
345 are computed by ccache. Therefore, when you build from a
346 different directory, the hash will be different and the cached
347 object will not be used.
349 To improve cache performance, set this option to y. This
350 allows ccache to rewrite absolute paths within the output
351 directory into relative paths. Note that only paths within the
352 output directory will be rewritten; therefore, if you change
353 BR2_HOST_DIR to point outside the output directory and
354 subsequently move it to a different location, this will lead
357 This option has as a result that the debug information in the
358 object files also has only relative paths. Therefore, make
359 sure you cd to the build directory before starting gdb. See
360 the section "COMPILING IN DIFFERENT DIRECTORIES" in the ccache
361 manual for more information.
365 config BR2_ENABLE_DEBUG
366 bool "build packages with debugging symbols"
368 Build packages with debugging symbols enabled. All libraries
369 and binaries in the 'staging' directory will have debugging
370 symbols, which allows remote debugging even if libraries and
371 binaries are stripped on the target. Whether libraries and
372 binaries are stripped on the target is controlled by the
373 BR2_STRIP_* options below.
377 prompt "gcc debug level"
380 Set the debug level for gcc
385 Debug level 1 produces minimal information, enough for making
386 backtraces in parts of the program that you don't plan to
387 debug. This includes descriptions of functions and external
388 variables, but no information about local variables and no
394 The default gcc debug level is 2
399 Level 3 includes extra information, such as all the macro
400 definitions present in the program. Some debuggers support
401 macro expansion when you use -g3.
406 prompt "strip command for binaries on target"
407 default BR2_STRIP_strip
409 config BR2_STRIP_strip
411 depends on !BR2_PACKAGE_HOST_ELF2FLT
413 Binaries and libraries in the target filesystem will be
414 stripped using the normal 'strip' command. This allows to save
415 space, mainly by removing debugging symbols. Debugging symbols
416 on the target are needed for native debugging, but not when
417 remote debugging is used.
419 config BR2_STRIP_none
422 Do not strip binaries and libraries in the target filesystem.
425 config BR2_STRIP_EXCLUDE_FILES
426 string "executables that should not be stripped"
427 depends on !BR2_STRIP_none
430 You may specify a space-separated list of binaries and
431 libraries here that should not be stripped on the target.
433 config BR2_STRIP_EXCLUDE_DIRS
434 string "directories that should be skipped when stripping"
435 depends on !BR2_STRIP_none
438 You may specify a space-separated list of directories that
439 should be skipped when stripping. Binaries and libraries in
440 these directories will not be touched. The directories should
441 be specified relative to the target directory, without leading
445 prompt "gcc optimization level"
446 default BR2_OPTIMIZE_S
448 Set the optimization level for gcc
450 config BR2_OPTIMIZE_0
451 bool "optimization level 0"
453 Do not optimize. This is the default.
455 config BR2_OPTIMIZE_1
456 bool "optimization level 1"
458 Optimize. Optimizing compilation takes somewhat more time, and
459 a lot more memory for a large function. With -O, the compiler
460 tries to reduce code size and execution time, without
461 performing any optimizations that take a great deal of
462 compilation time. -O turns on the following optimization
463 flags: -fdefer-pop -fdelayed-branch -fguess-branch-probability
464 -fcprop-registers -floop-optimize -fif-conversion
465 -fif-conversion2 -ftree-ccp -ftree-dce -ftree-dominator-opts
466 -ftree-dse -ftree-ter -ftree-lrs -ftree-sra -ftree-copyrename
467 -ftree-fre -ftree-ch -funit-at-a-time -fmerge-constants. -O
468 also turns on -fomit-frame-pointer on machines where doing so
469 does not interfere with debugging.
471 config BR2_OPTIMIZE_2
472 bool "optimization level 2"
474 Optimize even more. GCC performs nearly all supported
475 optimizations that do not involve a space-speed tradeoff. The
476 compiler does not perform loop unrolling or function inlining
477 when you specify -O2. As compared to -O, this option increases
478 both compilation time and the performance of the generated
479 code. -O2 turns on all optimization flags specified by -O. It
480 also turns on the following optimization flags:
481 -fthread-jumps -fcrossjumping -foptimize-sibling-calls
482 -fcse-follow-jumps -fcse-skip-blocks -fgcse -fgcse-lm
483 -fexpensive-optimizations -fstrength-reduce
484 -frerun-cse-after-loop -frerun-loop-opt -fcaller-saves
485 -fpeephole2 -fschedule-insns -fschedule-insns2
486 -fsched-interblock -fsched-spec -fregmove -fstrict-aliasing
487 -fdelete-null-pointer-checks -freorder-blocks
488 -freorder-functions -falign-functions -falign-jumps
489 -falign-loops -falign-labels -ftree-vrp -ftree-pre. Please
490 note the warning under -fgcse about invoking -O2 on programs
491 that use computed gotos.
493 config BR2_OPTIMIZE_3
494 bool "optimization level 3"
496 Optimize yet more. -O3 turns on all optimizations specified by
497 -O2 and also turns on the -finline-functions, -funswitch-loops
498 and -fgcse-after-reload options.
500 config BR2_OPTIMIZE_G
501 bool "optimize for debugging"
502 depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
504 Optimize for debugging. This enables optimizations that do not
505 interfere with debugging. It should be the optimization level
506 of choice for the standard edit-compile-debug cycle, offering
507 a reasonable level of optimization while maintaining fast
508 compilation and a good debugging experience.
510 config BR2_OPTIMIZE_S
511 bool "optimize for size"
513 Optimize for size. -Os enables all -O2 optimizations that do
514 not typically increase code size. It also performs further
515 optimizations designed to reduce code size. -Os disables the
516 following optimization flags: -falign-functions -falign-jumps
517 -falign-loops -falign-labels -freorder-blocks
518 -freorder-blocks-and-partition -fprefetch-loop-arrays
519 -ftree-vect-loop-version
523 config BR2_GOOGLE_BREAKPAD_ENABLE
524 bool "Enable google-breakpad support"
525 select BR2_PACKAGE_GOOGLE_BREAKPAD
526 depends on BR2_INSTALL_LIBSTDCPP
527 depends on BR2_USE_WCHAR
528 depends on BR2_TOOLCHAIN_HAS_THREADS
529 depends on (BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_UCLIBC)
530 depends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS
532 This option will enable the use of google breakpad, a library
533 and tool suite that allows you to distribute an application to
534 users with compiler-provided debugging information removed,
535 record crashes in compact "minidump" files, send them back to
536 your server and produce C and C++ stack traces from these
537 minidumps. Breakpad can also write minidumps on request for
538 programs that have not crashed.
540 if BR2_GOOGLE_BREAKPAD_ENABLE
542 config BR2_GOOGLE_BREAKPAD_INCLUDE_FILES
543 string "List of executables and libraries to extract symbols from"
546 You may specify a space-separated list of binaries and
547 libraries with full paths relative to $(TARGET_DIR) of which
548 debug symbols will be dumped for further use with google
551 A directory structure that can be used by minidump-stackwalk
554 $(STAGING_DIR)/usr/share/google-breakpad-symbols
559 bool "build code with Stack Smashing Protection"
560 default BR2_SSP_ALL if BR2_ENABLE_SSP # legacy
561 depends on BR2_TOOLCHAIN_HAS_SSP
563 Enable stack smashing protection support using GCC's
564 -fstack-protector option family.
567 http://www.linuxfromscratch.org/hints/downloads/files/ssp.txt
570 Note that this requires the toolchain to have SSP support.
571 This is always the case for glibc and eglibc toolchain, but is
572 optional in uClibc toolchains.
577 Disable stack-smashing protection.
579 config BR2_SSP_REGULAR
580 bool "-fstack-protector"
582 Emit extra code to check for buffer overflows, such as stack
583 smashing attacks. This is done by adding a guard variable to
584 functions with vulnerable objects. This includes functions
585 that call alloca, and functions with buffers larger than 8
586 bytes. The guards are initialized when a function is entered
587 and then checked when the function exits. If a guard check
588 fails, an error message is printed and the program exits.
590 config BR2_SSP_STRONG
591 bool "-fstack-protector-strong"
592 depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
594 Like -fstack-protector but includes additional functions to be
595 protected - those that have local array definitions, or have
596 references to local frame addresses.
598 comment "Stack Smashing Protection strong needs a toolchain w/ gcc >= 4.9"
599 depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
602 bool "-fstack-protector-all"
604 Like -fstack-protector except that all functions are
605 protected. This option might have a significant performance
606 impact on the compiled binaries.
610 comment "Stack Smashing Protection needs a toolchain w/ SSP"
611 depends on !BR2_TOOLCHAIN_HAS_SSP
615 default BR2_SHARED_LIBS if BR2_BINFMT_SUPPORTS_SHARED
616 default BR2_STATIC_LIBS if !BR2_BINFMT_SUPPORTS_SHARED
618 Select the type of libraries you want to use on the target.
620 The default is to build dynamic libraries and use those on the
621 target filesystem, except when the architecture and/or the
622 selected binary format does not support shared libraries.
624 config BR2_STATIC_LIBS
627 Build and use only static libraries. No shared libraries will
628 be installed on the target. This potentially increases your
629 code size and should only be used if you know what you are
630 doing. Note that some packages may not be available when this
631 option is enabled, due to their need for dynamic library
634 config BR2_SHARED_LIBS
636 depends on BR2_BINFMT_SUPPORTS_SHARED
638 Build and use only shared libraries. This is the recommended
639 solution as it saves space and build time.
641 config BR2_SHARED_STATIC_LIBS
642 bool "both static and shared"
643 depends on BR2_BINFMT_SUPPORTS_SHARED
645 Build both shared and static libraries, but link executables
646 dynamically. While building both shared and static libraries
647 take more time and more disk space, having static libraries
648 may be useful to link some of the applications statically.
653 config BR2_PACKAGE_OVERRIDE_FILE
654 string "location of a package override file"
655 default "$(CONFIG_DIR)/local.mk"
657 A package override file is a short makefile that contains
658 variable definitions of the form <pkg>_OVERRIDE_SRCDIR, which
659 allows to tell Buildroot to use an existing directory as the
660 source directory for a particular package. See the Buildroot
661 documentation for more details on this feature.
663 config BR2_GLOBAL_PATCH_DIR
664 string "global patch directories"
666 You may specify a space separated list of one or more
667 directories containing global package patches. For a specific
668 version <packageversion> of a specific package <packagename>,
669 patches are applied as follows:
671 First, the default Buildroot patch set for the package is
672 applied from the package's directory in Buildroot.
674 Then for every directory - <global-patch-dir> - that exists in
675 BR2_GLOBAL_PATCH_DIR, if the directory
676 <global-patch-dir>/<packagename>/<packageversion>/ exists,
677 then all *.patch files in this directory will be applied.
679 Otherwise, if the directory <global-patch-dir>/<packagename>
680 exists, then all *.patch files in the directory will be
685 config BR2_COMPILER_PARANOID_UNSAFE_PATH
686 bool "paranoid check of library/header paths"
689 By default, when this option is disabled, when the Buildroot
690 cross-compiler will encounter an unsafe library or header path
691 (such as /usr/include, or /usr/lib), the compiler will display
694 By enabling this option, this warning is turned into an error,
695 which will completely abort the build when such unsafe paths
698 Note that this mechanism is available for both the internal
699 toolchain (through the toolchain wrapper and binutils patches)
700 and external toolchain backends (through the toolchain wrapper).
702 config BR2_REPRODUCIBLE
703 bool "Make the build reproducible (experimental)"
705 This option will remove all sources of non-reproducibility
706 from the build process. For a given Buildroot configuration,
707 this allows to generate exactly identical binaries from one
708 build to the other, including on different machines.
710 The current implementation is restricted to builds with the
711 same output directory. Many (absolute) paths are recorded in
712 intermediary files, and it is very likely that some of these
713 paths leak into the target rootfs. If you build with the
714 same O=... path, however, the result is identical.
716 This is labeled as an experimental feature, as not all
717 packages behave properly to ensure reproducibility.
723 source "toolchain/Config.in"
725 source "system/Config.in"
727 source "linux/Config.in"
729 source "package/Config.in"
731 source "fs/Config.in"
733 source "boot/Config.in"
735 source "package/Config.in.host"
737 source "Config.in.legacy"
739 source "$BR2_BUILD_DIR/.br2-external.in"