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 # Hidden boolean selected by packages that need the host to have an
89 config BR2_NEEDS_HOST_UTF8_LOCALE
92 source "arch/Config.in"
100 default "wget --passive-ftp -nd -t 3"
103 string "Subversion (svn) command"
107 string "Bazaar (bzr) command"
118 config BR2_LOCALFILES
119 string "Local files retrieval command"
123 string "Secure copy (scp) command"
127 string "Secure shell (ssh) command"
131 string "Mercurial (hg) command"
135 string "zcat command"
138 Command to be used to extract a gzip'ed file to stdout. zcat
139 is identical to gunzip -c except that the former may not be
140 available on your system.
141 Default is "gzip -d -c"
142 Other possible values include "gunzip -c" or "zcat".
145 string "bzcat command"
148 Command to be used to extract a bzip2'ed file to stdout.
149 bzcat is identical to bunzip2 -c except that the former may
150 not be available on your system.
152 Other possible values include "bunzip2 -c" or "bzip2 -d -c".
155 string "xzcat command"
158 Command to be used to extract a xz'ed file to stdout.
161 config BR2_TAR_OPTIONS
165 Options to pass to tar when extracting the sources.
166 E.g. " -v --exclude='*.svn*'" to exclude all .svn internal files
171 config BR2_DEFCONFIG_FROM_ENV
173 option env="BR2_DEFCONFIG"
176 string "Location to save buildroot config"
177 default BR2_DEFCONFIG_FROM_ENV if BR2_DEFCONFIG_FROM_ENV != ""
178 default "$(CONFIG_DIR)/defconfig"
180 When running 'make savedefconfig', the defconfig file will be
181 saved in this location.
184 string "Download dir"
185 default "$(TOPDIR)/dl"
187 Directory to store all the source files that we need to fetch.
188 If the Linux shell environment has defined the BR2_DL_DIR
189 environment variable, then this overrides this configuration
192 The default is $(TOPDIR)/dl
196 default "$(BASE_DIR)/host"
198 Directory to store all the binary files that are built for the
199 host. This includes the cross compilation toolchain when
200 building the internal buildroot toolchain.
202 The default is $(BASE_DIR)/host
204 menu "Mirrors and Download locations"
206 config BR2_PRIMARY_SITE
207 string "Primary download site"
210 Primary site to download from. If this option is set then
211 buildroot will try to download package source first from this
212 site and try the default if the file is not found.
214 - URIs recognized by $(WGET)
215 - local URIs of the form file://absolutepath
216 - scp URIs of the form scp://[user@]host:path.
218 config BR2_PRIMARY_SITE_ONLY
219 bool "Only allow downloads from primary download site"
220 depends on BR2_PRIMARY_SITE != ""
222 If this option is enabled, downloads will only be attempted
223 from the primary download site. Other locations, like the
224 package's official download location or the backup download
225 site, will not be considered. Therefore, if the package is not
226 present on the primary site, the download fails.
228 This is useful for project developers who want to ensure that
229 the project can be built even if the upstream tarball
232 if !BR2_PRIMARY_SITE_ONLY
234 config BR2_BACKUP_SITE
235 string "Backup download site"
236 default "http://sources.buildroot.net"
238 Backup site to download from. If this option is set then
239 buildroot will fall back to download package sources from here
240 if the normal location fails.
242 config BR2_KERNEL_MIRROR
243 string "Kernel.org mirror"
244 default "https://cdn.kernel.org/pub"
246 kernel.org is mirrored on a number of servers around the
247 world. The following allows you to select your preferred
248 mirror. By default, a CDN is used, which automatically
249 redirects to a mirror geographically close to you.
251 Have a look on the kernel.org site for a list of mirrors, then
252 enter the URL to the base directory. Examples:
254 http://www.XX.kernel.org/pub (XX = country code)
255 http://mirror.aarnet.edu.au/pub/ftp.kernel.org
257 config BR2_GNU_MIRROR
258 string "GNU Software mirror"
259 default "http://ftpmirror.gnu.org"
261 GNU has multiple software mirrors scattered around the
262 world. The following allows you to select your preferred
263 mirror. By default, a generic address is used, which
264 automatically selects an up-to-date and local mirror.
266 Have a look on the gnu.org site for a list of mirrors, then
267 enter the URL to the base directory. Examples:
269 http://ftp.gnu.org/pub/gnu
270 http://mirror.aarnet.edu.au/pub/gnu
272 config BR2_LUAROCKS_MIRROR
273 string "LuaRocks mirror"
274 default "http://rocks.moonscript.org"
278 See http://luarocks.org
280 config BR2_CPAN_MIRROR
281 string "CPAN mirror (Perl packages)"
282 default "http://cpan.metacpan.org"
284 CPAN (Comprehensive Perl Archive Network) is a repository of
285 Perl packages. It has multiple software mirrors scattered
286 around the world. This option allows you to select a mirror.
288 The list of mirrors is available at:
289 http://search.cpan.org/mirror
296 int "Number of jobs to run simultaneously (0 for auto)"
299 Number of jobs to run simultaneously. If 0, determine
300 automatically according to number of CPUs on the host system.
303 bool "Enable compiler cache"
305 This option will enable the use of ccache, a compiler cache.
306 It will cache the result of previous builds to speed up future
307 builds. By default, the cache is stored in
308 $HOME/.buildroot-ccache.
310 Note that Buildroot does not try to invalidate the cache
311 contents when the compiler changes in an incompatible way.
312 Therefore, if you make a change to the compiler version and/or
313 configuration, you are responsible for purging the ccache
314 cache by removing the $HOME/.buildroot-ccache directory.
318 config BR2_CCACHE_DIR
319 string "Compiler cache location"
320 default "$(HOME)/.buildroot-ccache"
322 Where ccache should store cached files.
324 config BR2_CCACHE_INITIAL_SETUP
325 string "Compiler cache initial setup"
327 Initial ccache settings to apply, such as --max-files or
330 For example, if your project is known to require more space
331 than the default max cache size, then you might want to
332 increase the cache size to a suitable amount using the -M
335 The string you specify here is passed verbatim to ccache.
336 Refer to ccache documentation for more details.
338 These initial settings are applied after ccache has been
341 config BR2_CCACHE_USE_BASEDIR
342 bool "Use relative paths"
345 Allow ccache to convert absolute paths within the output
346 directory into relative paths.
348 During the build, many -I include directives are given with an
349 absolute path. These absolute paths end up in the hashes that
350 are computed by ccache. Therefore, when you build from a
351 different directory, the hash will be different and the cached
352 object will not be used.
354 To improve cache performance, set this option to y. This
355 allows ccache to rewrite absolute paths within the output
356 directory into relative paths. Note that only paths within the
357 output directory will be rewritten; therefore, if you change
358 BR2_HOST_DIR to point outside the output directory and
359 subsequently move it to a different location, this will lead
362 This option has as a result that the debug information in the
363 object files also has only relative paths. Therefore, make
364 sure you cd to the build directory before starting gdb. See
365 the section "COMPILING IN DIFFERENT DIRECTORIES" in the ccache
366 manual for more information.
370 config BR2_ENABLE_DEBUG
371 bool "build packages with debugging symbols"
373 Build packages with debugging symbols enabled. All libraries
374 and binaries in the 'staging' directory will have debugging
375 symbols, which allows remote debugging even if libraries and
376 binaries are stripped on the target. Whether libraries and
377 binaries are stripped on the target is controlled by the
378 BR2_STRIP_* options below.
382 prompt "gcc debug level"
385 Set the debug level for gcc
390 Debug level 1 produces minimal information, enough for making
391 backtraces in parts of the program that you don't plan to
392 debug. This includes descriptions of functions and external
393 variables, but no information about local variables and no
399 The default gcc debug level is 2
404 Level 3 includes extra information, such as all the macro
405 definitions present in the program. Some debuggers support
406 macro expansion when you use -g3.
411 prompt "strip command for binaries on target"
412 default BR2_STRIP_strip
414 config BR2_STRIP_strip
416 depends on !BR2_PACKAGE_HOST_ELF2FLT
418 Binaries and libraries in the target filesystem will be
419 stripped using the normal 'strip' command. This allows to save
420 space, mainly by removing debugging symbols. Debugging symbols
421 on the target are needed for native debugging, but not when
422 remote debugging is used.
424 config BR2_STRIP_none
427 Do not strip binaries and libraries in the target filesystem.
430 config BR2_STRIP_EXCLUDE_FILES
431 string "executables that should not be stripped"
432 depends on !BR2_STRIP_none
435 You may specify a space-separated list of binaries and
436 libraries here that should not be stripped on the target.
438 config BR2_STRIP_EXCLUDE_DIRS
439 string "directories that should be skipped when stripping"
440 depends on !BR2_STRIP_none
443 You may specify a space-separated list of directories that
444 should be skipped when stripping. Binaries and libraries in
445 these directories will not be touched. The directories should
446 be specified relative to the target directory, without leading
450 prompt "gcc optimization level"
451 default BR2_OPTIMIZE_S
453 Set the optimization level for gcc
455 config BR2_OPTIMIZE_0
456 bool "optimization level 0"
458 Do not optimize. This is the default.
460 config BR2_OPTIMIZE_1
461 bool "optimization level 1"
463 Optimize. Optimizing compilation takes somewhat more time, and
464 a lot more memory for a large function. With -O, the compiler
465 tries to reduce code size and execution time, without
466 performing any optimizations that take a great deal of
467 compilation time. -O turns on the following optimization
468 flags: -fdefer-pop -fdelayed-branch -fguess-branch-probability
469 -fcprop-registers -floop-optimize -fif-conversion
470 -fif-conversion2 -ftree-ccp -ftree-dce -ftree-dominator-opts
471 -ftree-dse -ftree-ter -ftree-lrs -ftree-sra -ftree-copyrename
472 -ftree-fre -ftree-ch -funit-at-a-time -fmerge-constants. -O
473 also turns on -fomit-frame-pointer on machines where doing so
474 does not interfere with debugging.
476 config BR2_OPTIMIZE_2
477 bool "optimization level 2"
479 Optimize even more. GCC performs nearly all supported
480 optimizations that do not involve a space-speed tradeoff. The
481 compiler does not perform loop unrolling or function inlining
482 when you specify -O2. As compared to -O, this option increases
483 both compilation time and the performance of the generated
484 code. -O2 turns on all optimization flags specified by -O. It
485 also turns on the following optimization flags:
486 -fthread-jumps -fcrossjumping -foptimize-sibling-calls
487 -fcse-follow-jumps -fcse-skip-blocks -fgcse -fgcse-lm
488 -fexpensive-optimizations -fstrength-reduce
489 -frerun-cse-after-loop -frerun-loop-opt -fcaller-saves
490 -fpeephole2 -fschedule-insns -fschedule-insns2
491 -fsched-interblock -fsched-spec -fregmove -fstrict-aliasing
492 -fdelete-null-pointer-checks -freorder-blocks
493 -freorder-functions -falign-functions -falign-jumps
494 -falign-loops -falign-labels -ftree-vrp -ftree-pre. Please
495 note the warning under -fgcse about invoking -O2 on programs
496 that use computed gotos.
498 config BR2_OPTIMIZE_3
499 bool "optimization level 3"
501 Optimize yet more. -O3 turns on all optimizations specified by
502 -O2 and also turns on the -finline-functions, -funswitch-loops
503 and -fgcse-after-reload options.
505 config BR2_OPTIMIZE_G
506 bool "optimize for debugging"
507 depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
509 Optimize for debugging. This enables optimizations that do not
510 interfere with debugging. It should be the optimization level
511 of choice for the standard edit-compile-debug cycle, offering
512 a reasonable level of optimization while maintaining fast
513 compilation and a good debugging experience.
515 config BR2_OPTIMIZE_S
516 bool "optimize for size"
518 Optimize for size. -Os enables all -O2 optimizations that do
519 not typically increase code size. It also performs further
520 optimizations designed to reduce code size. -Os disables the
521 following optimization flags: -falign-functions -falign-jumps
522 -falign-loops -falign-labels -freorder-blocks
523 -freorder-blocks-and-partition -fprefetch-loop-arrays
524 -ftree-vect-loop-version
528 config BR2_GOOGLE_BREAKPAD_ENABLE
529 bool "Enable google-breakpad support"
530 select BR2_PACKAGE_GOOGLE_BREAKPAD
531 depends on BR2_INSTALL_LIBSTDCPP
532 depends on BR2_HOST_GCC_AT_LEAST_4_8 # C++11
533 depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11
534 depends on BR2_USE_WCHAR
535 depends on BR2_TOOLCHAIN_HAS_THREADS
536 depends on (BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_UCLIBC)
537 depends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS
539 This option will enable the use of google breakpad, a library
540 and tool suite that allows you to distribute an application to
541 users with compiler-provided debugging information removed,
542 record crashes in compact "minidump" files, send them back to
543 your server and produce C and C++ stack traces from these
544 minidumps. Breakpad can also write minidumps on request for
545 programs that have not crashed.
547 if BR2_GOOGLE_BREAKPAD_ENABLE
549 config BR2_GOOGLE_BREAKPAD_INCLUDE_FILES
550 string "List of executables and libraries to extract symbols from"
553 You may specify a space-separated list of binaries and
554 libraries with full paths relative to $(TARGET_DIR) of which
555 debug symbols will be dumped for further use with google
558 A directory structure that can be used by minidump-stackwalk
561 $(STAGING_DIR)/usr/share/google-breakpad-symbols
566 bool "build code with Stack Smashing Protection"
567 default BR2_SSP_ALL if BR2_ENABLE_SSP # legacy
568 depends on BR2_TOOLCHAIN_HAS_SSP
570 Enable stack smashing protection support using GCC's
571 -fstack-protector option family.
574 http://www.linuxfromscratch.org/hints/downloads/files/ssp.txt
577 Note that this requires the toolchain to have SSP support.
578 This is always the case for glibc and eglibc toolchain, but is
579 optional in uClibc toolchains.
584 Disable stack-smashing protection.
586 config BR2_SSP_REGULAR
587 bool "-fstack-protector"
589 Emit extra code to check for buffer overflows, such as stack
590 smashing attacks. This is done by adding a guard variable to
591 functions with vulnerable objects. This includes functions
592 that call alloca, and functions with buffers larger than 8
593 bytes. The guards are initialized when a function is entered
594 and then checked when the function exits. If a guard check
595 fails, an error message is printed and the program exits.
597 config BR2_SSP_STRONG
598 bool "-fstack-protector-strong"
599 depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
601 Like -fstack-protector but includes additional functions to be
602 protected - those that have local array definitions, or have
603 references to local frame addresses.
605 comment "Stack Smashing Protection strong needs a toolchain w/ gcc >= 4.9"
606 depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
609 bool "-fstack-protector-all"
611 Like -fstack-protector except that all functions are
612 protected. This option might have a significant performance
613 impact on the compiled binaries.
617 comment "Stack Smashing Protection needs a toolchain w/ SSP"
618 depends on !BR2_TOOLCHAIN_HAS_SSP
622 default BR2_SHARED_LIBS if BR2_BINFMT_SUPPORTS_SHARED
623 default BR2_STATIC_LIBS if !BR2_BINFMT_SUPPORTS_SHARED
625 Select the type of libraries you want to use on the target.
627 The default is to build dynamic libraries and use those on the
628 target filesystem, except when the architecture and/or the
629 selected binary format does not support shared libraries.
631 config BR2_STATIC_LIBS
634 Build and use only static libraries. No shared libraries will
635 be installed on the target. This potentially increases your
636 code size and should only be used if you know what you are
637 doing. Note that some packages may not be available when this
638 option is enabled, due to their need for dynamic library
641 config BR2_SHARED_LIBS
643 depends on BR2_BINFMT_SUPPORTS_SHARED
645 Build and use only shared libraries. This is the recommended
646 solution as it saves space and build time.
648 config BR2_SHARED_STATIC_LIBS
649 bool "both static and shared"
650 depends on BR2_BINFMT_SUPPORTS_SHARED
652 Build both shared and static libraries, but link executables
653 dynamically. While building both shared and static libraries
654 take more time and more disk space, having static libraries
655 may be useful to link some of the applications statically.
660 config BR2_PACKAGE_OVERRIDE_FILE
661 string "location of a package override file"
662 default "$(CONFIG_DIR)/local.mk"
664 A package override file is a short makefile that contains
665 variable definitions of the form <pkg>_OVERRIDE_SRCDIR, which
666 allows to tell Buildroot to use an existing directory as the
667 source directory for a particular package. See the Buildroot
668 documentation for more details on this feature.
670 config BR2_GLOBAL_PATCH_DIR
671 string "global patch directories"
673 You may specify a space separated list of one or more
674 directories containing global package patches. For a specific
675 version <packageversion> of a specific package <packagename>,
676 patches are applied as follows:
678 First, the default Buildroot patch set for the package is
679 applied from the package's directory in Buildroot.
681 Then for every directory - <global-patch-dir> - that exists in
682 BR2_GLOBAL_PATCH_DIR, if the directory
683 <global-patch-dir>/<packagename>/<packageversion>/ exists,
684 then all *.patch files in this directory will be applied.
686 Otherwise, if the directory <global-patch-dir>/<packagename>
687 exists, then all *.patch files in the directory will be
692 config BR2_COMPILER_PARANOID_UNSAFE_PATH
693 bool "paranoid check of library/header paths"
696 By default, when this option is disabled, when the Buildroot
697 cross-compiler will encounter an unsafe library or header path
698 (such as /usr/include, or /usr/lib), the compiler will display
701 By enabling this option, this warning is turned into an error,
702 which will completely abort the build when such unsafe paths
705 Note that this mechanism is available for both the internal
706 toolchain (through the toolchain wrapper and binutils patches)
707 and external toolchain backends (through the toolchain wrapper).
709 config BR2_REPRODUCIBLE
710 bool "Make the build reproducible (experimental)"
712 This option will remove all sources of non-reproducibility
713 from the build process. For a given Buildroot configuration,
714 this allows to generate exactly identical binaries from one
715 build to the other, including on different machines.
717 The current implementation is restricted to builds with the
718 same output directory. Many (absolute) paths are recorded in
719 intermediary files, and it is very likely that some of these
720 paths leak into the target rootfs. If you build with the
721 same O=... path, however, the result is identical.
723 This is labeled as an experimental feature, as not all
724 packages behave properly to ensure reproducibility.
730 source "toolchain/Config.in"
732 source "system/Config.in"
734 source "linux/Config.in"
736 source "package/Config.in"
738 source "fs/Config.in"
740 source "boot/Config.in"
742 source "package/Config.in.host"
744 source "Config.in.legacy"
746 source "$BR2_BUILD_DIR/.br2-external.in"