DEVELOPERS: add David Lechner
[buildroot-gz.git] / Config.in
blob5cf0c4d290a01d3cf40555ac9ee688eff2c30c47
3 mainmenu "Buildroot $BR2_VERSION Configuration"
5 config BR2_HAVE_DOT_CONFIG
6         bool
7         default y
9 config BR2_VERSION
10         string
11         option env="BR2_VERSION_FULL"
13 config BR2_HOSTARCH
14         string
15         option env="HOSTARCH"
17 config BR2_BUILD_DIR
18         string
19         option env="BUILD_DIR"
21 # Hidden config symbols for packages to check system gcc version
22 config BR2_HOST_GCC_VERSION
23         string
24         option env="HOST_GCC_VERSION"
26 config BR2_HOST_GCC_AT_LEAST_4_5
27         bool
28         default y if BR2_HOST_GCC_VERSION = "4 5"
30 config BR2_HOST_GCC_AT_LEAST_4_6
31         bool
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
36         bool
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
41         bool
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
46         bool
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
51         bool
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
56         bool
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
61 # (example: xbmc)
62 config BR2_NEEDS_HOST_JAVA
63         bool
65 # Hidden boolean selected by packages in need of javac in order to build
66 # (example: classpath)
67 config BR2_NEEDS_HOST_JAVAC
68         bool
70 # Hidden boolean selected by packages in need of jar in order to build
71 # (example: classpath)
72 config BR2_NEEDS_HOST_JAR
73         bool
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
79         bool
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
83 # bootloaders).
84 config BR2_HOSTARCH_NEEDS_IA32_COMPILER
85         bool
87 source "arch/Config.in"
89 menu "Build options"
91 menu "Commands"
93 config BR2_WGET
94         string "Wget command"
95         default "wget --passive-ftp -nd -t 3"
97 config BR2_SVN
98         string "Subversion (svn) command"
99         default "svn"
101 config BR2_BZR
102         string "Bazaar (bzr) command"
103         default "bzr"
105 config BR2_GIT
106         string "Git command"
107         default "git"
109 config BR2_CVS
110         string "CVS command"
111         default "cvs"
113 config BR2_LOCALFILES
114         string "Local files retrieval command"
115         default "cp"
117 config BR2_SCP
118         string "Secure copy (scp) command"
119         default "scp"
121 config BR2_SSH
122         string "Secure shell (ssh) command"
123         default "ssh"
125 config BR2_HG
126         string "Mercurial (hg) command"
127         default "hg"
129 config BR2_ZCAT
130         string "zcat command"
131         default "gzip -d -c"
132         help
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".
139 config BR2_BZCAT
140         string "bzcat command"
141         default "bzcat"
142         help
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.
146           Default is "bzcat"
147           Other possible values include "bunzip2 -c" or "bzip2 -d -c".
149 config BR2_XZCAT
150         string "xzcat command"
151         default "xzcat"
152         help
153           Command to be used to extract a xz'ed file to stdout.
154           Default is "xzcat"
156 config BR2_TAR_OPTIONS
157         string "Tar options"
158         default ""
159         help
160           Options to pass to tar when extracting the sources.
161           E.g. " -v --exclude='*.svn*'" to exclude all .svn internal files
162           and to be verbose.
164 endmenu
166 config BR2_DEFCONFIG_FROM_ENV
167         string
168         option env="BR2_DEFCONFIG"
170 config 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"
174         help
175           When running 'make savedefconfig', the defconfig file will be
176           saved in this location.
178 config BR2_DL_DIR
179         string "Download dir"
180         default "$(TOPDIR)/dl"
181         help
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
185           item.
187           The default is $(TOPDIR)/dl
189 config BR2_HOST_DIR
190         string "Host dir"
191         default "$(BASE_DIR)/host"
192         help
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"
203         default ""
204         help
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.
208           Valid URIs are:
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 != ""
216         help
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
225           locations disappear.
227 if !BR2_PRIMARY_SITE_ONLY
229 config BR2_BACKUP_SITE
230         string "Backup download site"
231         default "http://sources.buildroot.net"
232         help
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"
240         help
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"
255         help
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"
270         help
271           LuaRocks repository.
273           See http://luarocks.org
275 config BR2_CPAN_MIRROR
276         string "CPAN mirror (Perl packages)"
277         default "http://cpan.metacpan.org"
278         help
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
286 endif
288 endmenu
290 config BR2_JLEVEL
291         int "Number of jobs to run simultaneously (0 for auto)"
292         default "0"
293         help
294           Number of jobs to run simultaneously. If 0, determine
295           automatically according to number of CPUs on the host system.
297 config BR2_CCACHE
298         bool "Enable compiler cache"
299         help
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.
311 if BR2_CCACHE
313 config BR2_CCACHE_DIR
314         string "Compiler cache location"
315         default "$(HOME)/.buildroot-ccache"
316         help
317           Where ccache should store cached files.
319 config BR2_CCACHE_INITIAL_SETUP
320         string "Compiler cache initial setup"
321         help
322           Initial ccache settings to apply, such as --max-files or
323           --max-size.
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
328           (--max-size) option.
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
334           compiled.
336 config BR2_CCACHE_USE_BASEDIR
337         bool "Use relative paths"
338         default y
339         help
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
355           to cache misses.
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.
363 endif
365 config BR2_ENABLE_DEBUG
366         bool "build packages with debugging symbols"
367         help
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.
375 if BR2_ENABLE_DEBUG
376 choice
377         prompt "gcc debug level"
378         default BR2_DEBUG_2
379         help
380           Set the debug level for gcc
382 config BR2_DEBUG_1
383         bool "debug level 1"
384         help
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
389           line numbers.
391 config BR2_DEBUG_2
392         bool "debug level 2"
393         help
394           The default gcc debug level is 2
396 config BR2_DEBUG_3
397         bool "debug level 3"
398         help
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.
402 endchoice
403 endif
405 choice
406         prompt "strip command for binaries on target"
407         default BR2_STRIP_strip
409 config BR2_STRIP_strip
410         bool "strip"
411         depends on !BR2_PACKAGE_HOST_ELF2FLT
412         help
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
420         bool "none"
421         help
422           Do not strip binaries and libraries in the target filesystem.
423 endchoice
425 config BR2_STRIP_EXCLUDE_FILES
426         string "executables that should not be stripped"
427         depends on !BR2_STRIP_none
428         default ""
429         help
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
436         default ""
437         help
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
442           slash.
444 choice
445         prompt "gcc optimization level"
446         default BR2_OPTIMIZE_S
447         help
448           Set the optimization level for gcc
450 config BR2_OPTIMIZE_0
451         bool "optimization level 0"
452         help
453           Do not optimize. This is the default.
455 config BR2_OPTIMIZE_1
456         bool "optimization level 1"
457         help
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"
473         help
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"
495         help
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
503         help
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"
512         help
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
521 endchoice
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
531         help
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"
544         default ""
545         help
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
549           breakpad.
551           A directory structure that can be used by minidump-stackwalk
552           will be created at:
554           $(STAGING_DIR)/usr/share/google-breakpad-symbols
556 endif
558 choice
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
562         help
563           Enable stack smashing protection support using GCC's
564           -fstack-protector option family.
566           See
567           http://www.linuxfromscratch.org/hints/downloads/files/ssp.txt
568           for details.
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.
574 config BR2_SSP_NONE
575         bool "None"
576         help
577           Disable stack-smashing protection.
579 config BR2_SSP_REGULAR
580         bool "-fstack-protector"
581         help
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
593         help
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
601 config BR2_SSP_ALL
602         bool "-fstack-protector-all"
603         help
604           Like -fstack-protector except that all functions are
605           protected. This option might have a significant performance
606           impact on the compiled binaries.
608 endchoice
610 comment "Stack Smashing Protection needs a toolchain w/ SSP"
611         depends on !BR2_TOOLCHAIN_HAS_SSP
613 choice
614         bool "libraries"
615         default BR2_SHARED_LIBS if BR2_BINFMT_SUPPORTS_SHARED
616         default BR2_STATIC_LIBS if !BR2_BINFMT_SUPPORTS_SHARED
617         help
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
625         bool "static only"
626         help
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
632           support.
634 config BR2_SHARED_LIBS
635         bool "shared only"
636         depends on BR2_BINFMT_SUPPORTS_SHARED
637         help
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
644         help
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.
650 endchoice
653 config BR2_PACKAGE_OVERRIDE_FILE
654         string "location of a package override file"
655         default "$(CONFIG_DIR)/local.mk"
656         help
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"
665         help
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
681           applied.
683 menu "Advanced"
685 config BR2_COMPILER_PARANOID_UNSAFE_PATH
686         bool "paranoid check of library/header paths"
687         default y
688         help
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
692           a warning.
694           By enabling this option, this warning is turned into an error,
695           which will completely abort the build when such unsafe paths
696           are encountered.
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)"
704         help
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           This is labeled as an experimental feature, as not all
711           packages behave properly to ensure reproducibility.
713 endmenu
715 endmenu
717 source "toolchain/Config.in"
719 source "system/Config.in"
721 source "linux/Config.in"
723 source "package/Config.in"
725 source "fs/Config.in"
727 source "boot/Config.in"
729 source "package/Config.in.host"
731 source "Config.in.legacy"
733 source "$BR2_BUILD_DIR/.br2-external.in"