Revert "toolchain: allow side by side sysroot directories"
[buildroot-gz.git] / Config.in
blob9fa74157a4be4d60b742bc274540bf4e70e9930a
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_EXTERNAL
18         string
19         option env="BR2_EXTERNAL"
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_6
27         bool
28         default y if BR2_HOST_GCC_VERSION = "4 6"
30 config BR2_HOST_GCC_AT_LEAST_4_7
31         bool
32         default y if BR2_HOST_GCC_VERSION = "4 7"
33         select BR2_HOST_GCC_AT_LEAST_4_6
35 config BR2_HOST_GCC_AT_LEAST_4_8
36         bool
37         default y if BR2_HOST_GCC_VERSION = "4 8"
38         select BR2_HOST_GCC_AT_LEAST_4_7
40 config BR2_HOST_GCC_AT_LEAST_4_9
41         bool
42         default y if BR2_HOST_GCC_VERSION = "4 9"
43         select BR2_HOST_GCC_AT_LEAST_4_8
45 config BR2_HOST_GCC_AT_LEAST_5
46         bool
47         default y if BR2_HOST_GCC_VERSION = "5"
48         select BR2_HOST_GCC_AT_LEAST_4_9
50 config BR2_HOST_GCC_AT_LEAST_6
51         bool
52         default y if BR2_HOST_GCC_VERSION = "6"
53         select BR2_HOST_GCC_AT_LEAST_5
55 # Hidden boolean selected by packages in need of Java in order to build
56 # (example: xbmc)
57 config BR2_NEEDS_HOST_JAVA
58         bool
60 # Hidden boolean selected by packages in need of javac in order to build
61 # (example: classpath)
62 config BR2_NEEDS_HOST_JAVAC
63         bool
65 # Hidden boolean selected by packages in need of jar in order to build
66 # (example: classpath)
67 config BR2_NEEDS_HOST_JAR
68         bool
70 # Hidden boolean selected by pre-built packages for x86, when they
71 # need to run on x86-64 machines (example: pre-built external
72 # toolchains, binary tools like SAM-BA, etc.).
73 config BR2_HOSTARCH_NEEDS_IA32_LIBS
74         bool
76 # Hidden boolean selected by packages that need to build 32 bits
77 # binaries with the host compiler, even on 64 bits build machines (e.g
78 # bootloaders).
79 config BR2_HOSTARCH_NEEDS_IA32_COMPILER
80         bool
82 source "arch/Config.in"
84 menu "Build options"
86 menu "Commands"
88 config BR2_WGET
89         string "Wget command"
90         default "wget --passive-ftp -nd -t 3"
92 config BR2_SVN
93         string "Subversion (svn) command"
94         default "svn"
96 config BR2_BZR
97         string "Bazaar (bzr) command"
98         default "bzr"
100 config BR2_GIT
101         string "Git command"
102         default "git"
104 config BR2_CVS
105         string "CVS command"
106         default "cvs"
108 config BR2_LOCALFILES
109         string "Local files retrieval command"
110         default "cp"
112 config BR2_SCP
113         string "Secure copy (scp) command"
114         default "scp"
116 config BR2_SSH
117         string "Secure shell (ssh) command"
118         default "ssh"
120 config BR2_HG
121         string "Mercurial (hg) command"
122         default "hg"
124 config BR2_ZCAT
125         string "zcat command"
126         default "gzip -d -c"
127         help
128           Command to be used to extract a gzip'ed file to stdout. zcat
129           is identical to gunzip -c except that the former may not be
130           available on your system.
131           Default is "gzip -d -c"
132           Other possible values include "gunzip -c" or "zcat".
134 config BR2_BZCAT
135         string "bzcat command"
136         default "bzcat"
137         help
138           Command to be used to extract a bzip2'ed file to stdout.
139           bzcat is identical to bunzip2 -c except that the former may
140           not be available on your system.
141           Default is "bzcat"
142           Other possible values include "bunzip2 -c" or "bzip2 -d -c".
144 config BR2_XZCAT
145         string "xzcat command"
146         default "xzcat"
147         help
148           Command to be used to extract a xz'ed file to stdout.
149           Default is "xzcat"
151 config BR2_TAR_OPTIONS
152         string "Tar options"
153         default ""
154         help
155           Options to pass to tar when extracting the sources.
156           E.g. " -v --exclude='*.svn*'" to exclude all .svn internal files
157           and to be verbose.
159 endmenu
161 config BR2_DEFCONFIG_FROM_ENV
162         string
163         option env="BR2_DEFCONFIG"
165 config BR2_DEFCONFIG
166         string "Location to save buildroot config"
167         default BR2_DEFCONFIG_FROM_ENV if BR2_DEFCONFIG_FROM_ENV != ""
168         default "$(CONFIG_DIR)/defconfig"
169         help
170           When running 'make savedefconfig', the defconfig file will be
171           saved in this location.
173 config BR2_DL_DIR
174         string "Download dir"
175         default "$(TOPDIR)/dl"
176         help
177           Directory to store all the source files that we need to fetch.
178           If the Linux shell environment has defined the BR2_DL_DIR
179           environment variable, then this overrides this configuration
180           item.
182           The default is $(TOPDIR)/dl
184 config BR2_HOST_DIR
185         string "Host dir"
186         default "$(BASE_DIR)/host"
187         help
188           Directory to store all the binary files that are built for the
189           host. This includes the cross compilation toolchain when
190           building the internal buildroot toolchain.
192           The default is $(BASE_DIR)/host
194 menu "Mirrors and Download locations"
196 config BR2_PRIMARY_SITE
197         string "Primary download site"
198         default ""
199         help
200           Primary site to download from. If this option is set then
201           buildroot will try to download package source first from this
202           site and try the default if the file is not found.
203           Valid URIs are:
204             - URIs recognized by $(WGET)
205             - local URIs of the form file://absolutepath
206             - scp URIs of the form scp://[user@]host:path.
208 config BR2_PRIMARY_SITE_ONLY
209         bool "Only allow downloads from primary download site"
210         depends on BR2_PRIMARY_SITE != ""
211         help
212           If this option is enabled, downloads will only be attempted
213           from the primary download site. Other locations, like the
214           package's official download location or the backup download
215           site, will not be considered. Therefore, if the package is not
216           present on the primary site, the download fails.
218           This is useful for project developers who want to ensure that
219           the project can be built even if the upstream tarball
220           locations disappear.
222 if !BR2_PRIMARY_SITE_ONLY
224 config BR2_BACKUP_SITE
225         string "Backup download site"
226         default "http://sources.buildroot.net"
227         help
228           Backup site to download from. If this option is set then
229           buildroot will fall back to download package sources from here
230           if the normal location fails.
232 config BR2_KERNEL_MIRROR
233         string "Kernel.org mirror"
234         default "https://cdn.kernel.org/pub"
235         help
236           kernel.org is mirrored on a number of servers around the
237           world. The following allows you to select your preferred
238           mirror. By default, a CDN is used, which automatically
239           redirects to a mirror geographically close to you.
241           Have a look on the kernel.org site for a list of mirrors, then
242           enter the URL to the base directory. Examples:
244              http://www.XX.kernel.org/pub (XX = country code)
245              http://mirror.aarnet.edu.au/pub/ftp.kernel.org
247 config BR2_GNU_MIRROR
248         string "GNU Software mirror"
249         default "http://ftpmirror.gnu.org"
250         help
251           GNU has multiple software mirrors scattered around the
252           world. The following allows you to select your preferred
253           mirror. By default, a generic address is used, which
254           automatically selects an up-to-date and local mirror.
256           Have a look on the gnu.org site for a list of mirrors, then
257           enter the URL to the base directory. Examples:
259              http://ftp.gnu.org/pub/gnu
260              http://mirror.aarnet.edu.au/pub/gnu
262 config BR2_LUAROCKS_MIRROR
263         string "LuaRocks mirror"
264         default "http://rocks.moonscript.org"
265         help
266           LuaRocks repository.
268           See http://luarocks.org
270 config BR2_CPAN_MIRROR
271         string "CPAN mirror (Perl packages)"
272         default "http://cpan.metacpan.org"
273         help
274           CPAN (Comprehensive Perl Archive Network) is a repository of
275           Perl packages. It has multiple software mirrors scattered
276           around the world. This option allows you to select a mirror.
278           The list of mirrors is available at:
279           http://search.cpan.org/mirror
281 endif
283 endmenu
285 config BR2_JLEVEL
286         int "Number of jobs to run simultaneously (0 for auto)"
287         default "0"
288         help
289           Number of jobs to run simultaneously. If 0, determine
290           automatically according to number of CPUs on the host system.
292 config BR2_CCACHE
293         bool "Enable compiler cache"
294         help
295           This option will enable the use of ccache, a compiler cache.
296           It will cache the result of previous builds to speed up future
297           builds. By default, the cache is stored in
298           $HOME/.buildroot-ccache.
300           Note that Buildroot does not try to invalidate the cache
301           contents when the compiler changes in an incompatible way.
302           Therefore, if you make a change to the compiler version and/or
303           configuration, you are responsible for purging the ccache
304           cache by removing the $HOME/.buildroot-ccache directory.
306 if BR2_CCACHE
308 config BR2_CCACHE_DIR
309         string "Compiler cache location"
310         default "$(HOME)/.buildroot-ccache"
311         help
312           Where ccache should store cached files.
314 config BR2_CCACHE_INITIAL_SETUP
315         string "Compiler cache initial setup"
316         help
317           Initial ccache settings to apply, such as --max-files or
318           --max-size.
320           For example, if your project is known to require more space
321           than the default max cache size, then you might want to
322           increase the cache size to a suitable amount using the -M
323           (--max-size) option.
325           The string you specify here is passed verbatim to ccache.
326           Refer to ccache documentation for more details.
328           These initial settings are applied after ccache has been
329           compiled.
331 config BR2_CCACHE_USE_BASEDIR
332         bool "Use relative paths"
333         default y
334         help
335           Allow ccache to convert absolute paths within the output
336           directory into relative paths.
338           During the build, many -I include directives are given with an
339           absolute path. These absolute paths end up in the hashes that
340           are computed by ccache. Therefore, when you build from a
341           different directory, the hash will be different and the cached
342           object will not be used.
344           To improve cache performance, set this option to y. This
345           allows ccache to rewrite absolute paths within the output
346           directory into relative paths. Note that only paths within the
347           output directory will be rewritten; therefore, if you change
348           BR2_HOST_DIR to point outside the output directory and
349           subsequently move it to a different location, this will lead
350           to cache misses.
352           This option has as a result that the debug information in the
353           object files also has only relative paths. Therefore, make
354           sure you cd to the build directory before starting gdb. See
355           the section "COMPILING IN DIFFERENT DIRECTORIES" in the ccache
356           manual for more information.
358 endif
360 config BR2_DEPRECATED
361         bool "Show options and packages that are deprecated or obsolete"
362         help
363           This option shows outdated/obsolete versions of packages and
364           options that are otherwise hidden.
366 if BR2_DEPRECATED
368 config BR2_DEPRECATED_SINCE_2015_05
369         bool
370         default y
372 config BR2_DEPRECATED_SINCE_2015_08
373         bool
374         default y
376 config BR2_DEPRECATED_SINCE_2015_11
377         bool
378         default y
380 config BR2_DEPRECATED_SINCE_2016_02
381         bool
382         default y
384 config BR2_DEPRECATED_SINCE_2016_05
385         bool
386         default y
388 endif
390 config BR2_ENABLE_DEBUG
391         bool "build packages with debugging symbols"
392         help
393           Build packages with debugging symbols enabled. All libraries
394           and binaries in the 'staging' directory will have debugging
395           symbols, which allows remote debugging even if libraries and
396           binaries are stripped on the target. Whether libraries and
397           binaries are stripped on the target is controlled by the
398           BR2_STRIP_* options below.
400 if BR2_ENABLE_DEBUG
401 choice
402         prompt "gcc debug level"
403         default BR2_DEBUG_2
404         help
405           Set the debug level for gcc
407 config BR2_DEBUG_1
408         bool "debug level 1"
409         help
410           Debug level 1 produces minimal information, enough for making
411           backtraces in parts of the program that you don't plan to
412           debug. This includes descriptions of functions and external
413           variables, but no information about local variables and no
414           line numbers.
416 config BR2_DEBUG_2
417         bool "debug level 2"
418         help
419           The default gcc debug level is 2
421 config BR2_DEBUG_3
422         bool "debug level 3"
423         help
424           Level 3 includes extra information, such as all the macro
425           definitions present in the program. Some debuggers support
426           macro expansion when you use -g3.
427 endchoice
428 endif
430 choice
431         prompt "strip command for binaries on target"
432         default BR2_STRIP_strip
434 config BR2_STRIP_strip
435         bool "strip"
436         depends on !BR2_PACKAGE_HOST_ELF2FLT
437         help
438           Binaries and libraries in the target filesystem will be
439           stripped using the normal 'strip' command. This allows to save
440           space, mainly by removing debugging symbols. Debugging symbols
441           on the target are needed for native debugging, but not when
442           remote debugging is used.
444 config BR2_STRIP_none
445         bool "none"
446         help
447           Do not strip binaries and libraries in the target filesystem.
448 endchoice
450 config BR2_STRIP_EXCLUDE_FILES
451         string "executables that should not be stripped"
452         depends on !BR2_STRIP_none
453         default ""
454         help
455           You may specify a space-separated list of binaries and
456           libraries here that should not be stripped on the target.
458 config BR2_STRIP_EXCLUDE_DIRS
459         string "directories that should be skipped when stripping"
460         depends on !BR2_STRIP_none
461         default ""
462         help
463           You may specify a space-separated list of directories that
464           should be skipped when stripping. Binaries and libraries in
465           these directories will not be touched. The directories should
466           be specified relative to the target directory, without leading
467           slash.
469 choice
470         prompt "gcc optimization level"
471         default BR2_OPTIMIZE_S
472         help
473           Set the optimization level for gcc
475 config BR2_OPTIMIZE_0
476         bool "optimization level 0"
477         help
478           Do not optimize. This is the default.
480 config BR2_OPTIMIZE_1
481         bool "optimization level 1"
482         help
483           Optimize. Optimizing compilation takes somewhat more time, and
484           a lot more memory for a large function. With -O, the compiler
485           tries to reduce code size and execution time, without
486           performing any optimizations that take a great deal of
487           compilation time. -O turns on the following optimization
488           flags: -fdefer-pop -fdelayed-branch -fguess-branch-probability
489           -fcprop-registers -floop-optimize -fif-conversion
490           -fif-conversion2 -ftree-ccp -ftree-dce -ftree-dominator-opts
491           -ftree-dse -ftree-ter -ftree-lrs -ftree-sra -ftree-copyrename
492           -ftree-fre -ftree-ch -funit-at-a-time -fmerge-constants. -O
493           also turns on -fomit-frame-pointer on machines where doing so
494           does not interfere with debugging.
496 config BR2_OPTIMIZE_2
497         bool "optimization level 2"
498         help
499           Optimize even more. GCC performs nearly all supported
500           optimizations that do not involve a space-speed tradeoff. The
501           compiler does not perform loop unrolling or function inlining
502           when you specify -O2. As compared to -O, this option increases
503           both compilation time and the performance of the generated
504           code. -O2 turns on all optimization flags specified by -O. It
505           also turns on the following optimization flags:
506           -fthread-jumps -fcrossjumping -foptimize-sibling-calls
507           -fcse-follow-jumps -fcse-skip-blocks -fgcse  -fgcse-lm
508           -fexpensive-optimizations -fstrength-reduce
509           -frerun-cse-after-loop -frerun-loop-opt -fcaller-saves
510           -fpeephole2 -fschedule-insns -fschedule-insns2
511           -fsched-interblock -fsched-spec -fregmove -fstrict-aliasing
512           -fdelete-null-pointer-checks -freorder-blocks
513           -freorder-functions -falign-functions -falign-jumps
514           -falign-loops -falign-labels -ftree-vrp -ftree-pre. Please
515           note the warning under -fgcse about invoking -O2 on programs
516           that use computed gotos.
518 config BR2_OPTIMIZE_3
519         bool "optimization level 3"
520         help
521           Optimize yet more. -O3 turns on all optimizations specified by
522           -O2 and also turns on the -finline-functions, -funswitch-loops
523           and -fgcse-after-reload options.
525 config BR2_OPTIMIZE_G
526         bool "optimize for debugging"
527         depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
528         help
529           Optimize for debugging. This enables optimizations that do not
530           interfere with debugging. It should be the optimization level
531           of choice for the standard edit-compile-debug cycle, offering
532           a reasonable level of optimization while maintaining fast
533           compilation and a good debugging experience.
535 config BR2_OPTIMIZE_S
536         bool "optimize for size"
537         help
538           Optimize for size. -Os enables all -O2 optimizations that do
539           not typically increase code size. It also performs further
540           optimizations designed to reduce code size. -Os disables the
541           following optimization flags: -falign-functions -falign-jumps
542           -falign-loops -falign-labels -freorder-blocks
543           -freorder-blocks-and-partition -fprefetch-loop-arrays
544           -ftree-vect-loop-version
546 endchoice
548 config BR2_GOOGLE_BREAKPAD_ENABLE
549         bool "Enable google-breakpad support"
550         select BR2_PACKAGE_GOOGLE_BREAKPAD
551         depends on BR2_INSTALL_LIBSTDCPP
552         depends on BR2_TOOLCHAIN_USES_GLIBC
553         depends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS
554         help
555           This option will enable the use of google breakpad, a library
556           and tool suite that allows you to distribute an application to
557           users with compiler-provided debugging information removed,
558           record crashes in compact "minidump" files, send them back to
559           your server and produce C and C++ stack traces from these
560           minidumps. Breakpad can also write minidumps on request for
561           programs that have not crashed.
563 if BR2_GOOGLE_BREAKPAD_ENABLE
565 config BR2_GOOGLE_BREAKPAD_INCLUDE_FILES
566         string "List of executables and libraries to extract symbols from"
567         default ""
568         help
569           You may specify a space-separated list of binaries and
570           libraries with full paths relative to $(TARGET_DIR) of which
571           debug symbols will be dumped for further use with google
572           breakpad.
574           A directory structure that can be used by minidump-stackwalk
575           will be created at:
577           $(STAGING_DIR)/usr/share/google-breakpad-symbols
579 endif
581 choice
582         bool "build code with Stack Smashing Protection"
583         default BR2_SSP_ALL if BR2_ENABLE_SSP # legacy
584         depends on BR2_TOOLCHAIN_HAS_SSP
585         help
586           Enable stack smashing protection support using GCC's
587           -fstack-protector option family.
589           See
590           http://www.linuxfromscratch.org/hints/downloads/files/ssp.txt
591           for details.
593           Note that this requires the toolchain to have SSP support.
594           This is always the case for glibc and eglibc toolchain, but is
595           optional in uClibc toolchains.
597 config BR2_SSP_NONE
598         bool "None"
599         help
600           Disable stack-smashing protection.
602 config BR2_SSP_REGULAR
603         bool "-fstack-protector"
604         help
605           Emit extra code to check for buffer overflows, such as stack
606           smashing attacks. This is done by adding a guard variable to
607           functions with vulnerable objects. This includes functions
608           that call alloca, and functions with buffers larger than 8
609           bytes. The guards are initialized when a function is entered
610           and then checked when the function exits. If a guard check
611           fails, an error message is printed and the program exits.
613 config BR2_SSP_STRONG
614         bool "-fstack-protector-strong"
615         depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
616         help
617           Like -fstack-protector but includes additional functions to be
618           protected - those that have local array definitions, or have
619           references to local frame addresses.
621 comment "Stack Smashing Protection strong needs a toolchain w/ gcc >= 4.9"
622         depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
624 config BR2_SSP_ALL
625         bool "-fstack-protector-all"
626         help
627           Like -fstack-protector except that all functions are
628           protected. This option might have a significant performance
629           impact on the compiled binaries.
631 endchoice
633 comment "Stack Smashing Protection needs a toolchain w/ SSP"
634         depends on !BR2_TOOLCHAIN_HAS_SSP
636 choice
637         bool "libraries"
638         default BR2_SHARED_LIBS if BR2_BINFMT_SUPPORTS_SHARED
639         default BR2_STATIC_LIBS if !BR2_BINFMT_SUPPORTS_SHARED
640         help
641           Select the type of libraries you want to use on the target.
643           The default is to build dynamic libraries and use those on the
644           target filesystem, except when the architecture and/or the
645           selected binary format does not support shared libraries.
647 config BR2_STATIC_LIBS
648         bool "static only"
649         help
650           Build and use only static libraries. No shared libraries will
651           be instaled on the target. This potentially increases your
652           code size and should only be used if you know what you are
653           doing. Note that some packages may not be available when this
654           option is enabled, due to their need for dynamic library
655           support.
657 config BR2_SHARED_LIBS
658         bool "shared only"
659         depends on BR2_BINFMT_SUPPORTS_SHARED
660         help
661           Build and use only shared libraries. This is the recommended
662           solution as it saves space and build time.
664 config BR2_SHARED_STATIC_LIBS
665         bool "both static and shared"
666         depends on BR2_BINFMT_SUPPORTS_SHARED
667         help
668           Build both shared and static libraries, but link executables
669           dynamically. While building both shared and static libraries
670           take more time and more disk space, having static libraries
671           may be useful to link some of the applications statically.
673 endchoice
676 config BR2_PACKAGE_OVERRIDE_FILE
677         string "location of a package override file"
678         default "$(CONFIG_DIR)/local.mk"
679         help
680           A package override file is a short makefile that contains
681           variable definitions of the form <pkg>_OVERRIDE_SRCDIR, which
682           allows to tell Buildroot to use an existing directory as the
683           source directory for a particular package. See the Buildroot
684           documentation for more details on this feature.
686 config BR2_GLOBAL_PATCH_DIR
687         string "global patch directories"
688         help
689           You may specify a space separated list of one or more
690           directories containing global package patches. For a specific
691           version <packageversion> of a specific package <packagename>,
692           patches are applied as follows:
694           First, the default Buildroot patch set for the package is
695           applied from the package's directory in Buildroot.
697           Then for every directory - <global-patch-dir> - that exists in
698           BR2_GLOBAL_PATCH_DIR, if the directory
699           <global-patch-dir>/<packagename>/<packageversion>/ exists,
700           then all *.patch files in this directory will be applied.
702           Otherwise, if the directory <global-patch-dir>/<packagename>
703           exists, then all *.patch files in the directory will be
704           applied.
706 menu "Advanced"
708 config BR2_COMPILER_PARANOID_UNSAFE_PATH
709         bool "paranoid check of library/header paths"
710         default y
711         help
712           By default, when this option is disabled, when the Buildroot
713           cross-compiler will encounter an unsafe library or header path
714           (such as /usr/include, or /usr/lib), the compiler will display
715           a warning.
717           By enabling this option, this warning is turned into an error,
718           which will completely abort the build when such unsafe paths
719           are encountered.
721           Note that this mechanism is available for both the internal
722           toolchain (through the toolchain wrapper and binutils patches)
723           and external toolchain backends (through the toolchain wrapper).
725 endmenu
727 endmenu
729 source "toolchain/Config.in"
731 source "system/Config.in"
733 source "linux/Config.in"
735 source "package/Config.in"
737 source "fs/Config.in"
739 source "boot/Config.in"
741 source "package/Config.in.host"
743 source "Config.in.legacy"
745 menu "User-provided options"
746         depends on BR2_EXTERNAL != "support/dummy-external"
748 source "$BR2_EXTERNAL/Config.in"
750 endmenu