]> Git Repo - buildroot-mgba.git/blob - Config.in
Config.in: add BR2_HOST_GCC_AT_LEAST_9
[buildroot-mgba.git] / Config.in
1 #
2
3 mainmenu "Buildroot $BR2_VERSION Configuration"
4
5 config BR2_HAVE_DOT_CONFIG
6         bool
7         default y
8
9 config BR2_VERSION
10         string
11         option env="BR2_VERSION_FULL"
12
13 config BR2_HOSTARCH
14         string
15         option env="HOSTARCH"
16
17 config BR2_BASE_DIR
18         string
19         option env="BASE_DIR"
20
21 # br2-external paths definitions
22 source "$BR2_BASE_DIR/.br2-external.in.paths"
23
24 # Hidden config symbols for packages to check system gcc version
25 config BR2_HOST_GCC_VERSION
26         string
27         option env="HOST_GCC_VERSION"
28
29 config BR2_HOST_GCC_AT_LEAST_4_9
30         bool
31         default y if BR2_HOST_GCC_VERSION = "4 9"
32
33 config BR2_HOST_GCC_AT_LEAST_5
34         bool
35         default y if BR2_HOST_GCC_VERSION = "5"
36         select BR2_HOST_GCC_AT_LEAST_4_9
37
38 config BR2_HOST_GCC_AT_LEAST_6
39         bool
40         default y if BR2_HOST_GCC_VERSION = "6"
41         select BR2_HOST_GCC_AT_LEAST_5
42
43 config BR2_HOST_GCC_AT_LEAST_7
44         bool
45         default y if BR2_HOST_GCC_VERSION = "7"
46         select BR2_HOST_GCC_AT_LEAST_6
47
48 config BR2_HOST_GCC_AT_LEAST_8
49         bool
50         default y if BR2_HOST_GCC_VERSION = "8"
51         select BR2_HOST_GCC_AT_LEAST_7
52
53 config BR2_HOST_GCC_AT_LEAST_9
54         bool
55         default y if BR2_HOST_GCC_VERSION = "9"
56         select BR2_HOST_GCC_AT_LEAST_8
57
58 # When adding new entries above, be sure to update
59 # the HOSTCC_MAX_VERSION variable in the Makefile.
60
61 # Hidden boolean selected by packages in need of Java in order to build
62 # (example: kodi)
63 config BR2_NEEDS_HOST_JAVA
64         bool
65
66 # Hidden boolean selected by packages in need of javac in order to build
67 # (example: classpath)
68 config BR2_NEEDS_HOST_JAVAC
69         bool
70
71 # Hidden boolean selected by packages in need of jar in order to build
72 # (example: classpath)
73 config BR2_NEEDS_HOST_JAR
74         bool
75
76 # Hidden boolean selected by pre-built packages for x86, when they
77 # need to run on x86-64 machines (example: pre-built external
78 # toolchains, binary tools like SAM-BA, etc.).
79 config BR2_HOSTARCH_NEEDS_IA32_LIBS
80         bool
81
82 # Hidden boolean selected by packages that need to build 32 bits
83 # binaries with the host compiler, even on 64 bits build machines (e.g
84 # bootloaders).
85 config BR2_HOSTARCH_NEEDS_IA32_COMPILER
86         bool
87
88 # Hidden boolean selected by packages that need the host to have an
89 # UTF8 locale.
90 config BR2_NEEDS_HOST_UTF8_LOCALE
91         bool
92
93 source "arch/Config.in"
94
95 menu "Build options"
96
97 menu "Commands"
98
99 config BR2_WGET
100         string "Wget command"
101         default "wget --passive-ftp -nd -t 3"
102
103 config BR2_SVN
104         string "Subversion (svn) command"
105         default "svn --non-interactive"
106
107 config BR2_BZR
108         string "Bazaar (bzr) command"
109         default "bzr"
110
111 config BR2_GIT
112         string "Git command"
113         default "git"
114
115 config BR2_CVS
116         string "CVS command"
117         default "cvs"
118
119 config BR2_LOCALFILES
120         string "Local files retrieval command"
121         default "cp"
122
123 config BR2_SCP
124         string "Secure copy (scp) command"
125         default "scp"
126
127 config BR2_HG
128         string "Mercurial (hg) command"
129         default "hg"
130
131 config BR2_ZCAT
132         string "zcat command"
133         default "gzip -d -c"
134         help
135           Command to be used to extract a gzip'ed file to stdout. zcat
136           is identical to gunzip -c except that the former may not be
137           available on your system.
138           Default is "gzip -d -c"
139           Other possible values include "gunzip -c" or "zcat".
140
141 config BR2_BZCAT
142         string "bzcat command"
143         default "bzcat"
144         help
145           Command to be used to extract a bzip2'ed file to stdout.
146           bzcat is identical to bunzip2 -c except that the former may
147           not be available on your system.
148           Default is "bzcat"
149           Other possible values include "bunzip2 -c" or "bzip2 -d -c".
150
151 config BR2_XZCAT
152         string "xzcat command"
153         default "xzcat"
154         help
155           Command to be used to extract a xz'ed file to stdout.
156           Default is "xzcat"
157
158 config BR2_LZCAT
159         string "lzcat command"
160         default "lzip -d -c"
161         help
162           Command to be used to extract a lzip'ed file to stdout.
163           Default is "lzip -d -c"
164
165 config BR2_TAR_OPTIONS
166         string "Tar options"
167         default ""
168         help
169           Options to pass to tar when extracting the sources.
170           E.g. " -v --exclude='*.svn*'" to exclude all .svn internal
171           files and to be verbose.
172
173 endmenu
174
175 config BR2_DEFCONFIG_FROM_ENV
176         string
177         option env="BR2_DEFCONFIG"
178
179 config BR2_DEFCONFIG
180         string "Location to save buildroot config"
181         default BR2_DEFCONFIG_FROM_ENV if BR2_DEFCONFIG_FROM_ENV != ""
182         default "$(CONFIG_DIR)/defconfig"
183         help
184           When running 'make savedefconfig', the defconfig file will be
185           saved in this location.
186
187 config BR2_DL_DIR
188         string "Download dir"
189         default "$(TOPDIR)/dl"
190         help
191           Directory to store all the source files that we need to fetch.
192           If the Linux shell environment has defined the BR2_DL_DIR
193           environment variable, then this overrides this configuration
194           item.
195           The directory is organized with a subdirectory for each
196           package. Each package has its own $(LIBFOO_DL_DIR) variable
197           that can be used to find the correct path.
198
199           The default is $(TOPDIR)/dl
200
201 config BR2_HOST_DIR
202         string "Host dir"
203         default "$(BASE_DIR)/host"
204         help
205           Directory to store all the binary files that are built for the
206           host. This includes the cross compilation toolchain when
207           building the internal buildroot toolchain.
208
209           The default is $(BASE_DIR)/host
210
211 menu "Mirrors and Download locations"
212
213 config BR2_PRIMARY_SITE
214         string "Primary download site"
215         default ""
216         help
217           Primary site to download from. If this option is set then
218           buildroot will try to download package source first from this
219           site and try the default if the file is not found.
220           Valid URIs are:
221             - URIs recognized by $(WGET)
222             - local URIs of the form file://absolutepath
223             - scp URIs of the form scp://[user@]host:path.
224
225 config BR2_PRIMARY_SITE_ONLY
226         bool "Only allow downloads from primary download site"
227         depends on BR2_PRIMARY_SITE != ""
228         help
229           If this option is enabled, downloads will only be attempted
230           from the primary download site. Other locations, like the
231           package's official download location or the backup download
232           site, will not be considered. Therefore, if the package is not
233           present on the primary site, the download fails.
234
235           This is useful for project developers who want to ensure that
236           the project can be built even if the upstream tarball
237           locations disappear.
238
239 if !BR2_PRIMARY_SITE_ONLY
240
241 config BR2_BACKUP_SITE
242         string "Backup download site"
243         default "http://sources.buildroot.net"
244         help
245           Backup site to download from. If this option is set then
246           buildroot will fall back to download package sources from here
247           if the normal location fails.
248
249 config BR2_KERNEL_MIRROR
250         string "Kernel.org mirror"
251         default "https://cdn.kernel.org/pub"
252         help
253           kernel.org is mirrored on a number of servers around the
254           world. The following allows you to select your preferred
255           mirror. By default, a CDN is used, which automatically
256           redirects to a mirror geographically close to you.
257
258           Have a look on the kernel.org site for a list of mirrors, then
259           enter the URL to the base directory. Examples:
260
261              http://www.XX.kernel.org/pub (XX = country code)
262              http://mirror.aarnet.edu.au/pub/ftp.kernel.org
263
264 config BR2_GNU_MIRROR
265         string "GNU Software mirror"
266         default "http://ftpmirror.gnu.org"
267         help
268           GNU has multiple software mirrors scattered around the
269           world. The following allows you to select your preferred
270           mirror. By default, a generic address is used, which
271           automatically selects an up-to-date and local mirror.
272
273           Have a look on the gnu.org site for a list of mirrors, then
274           enter the URL to the base directory. Examples:
275
276              http://ftp.gnu.org/pub/gnu
277              http://mirror.aarnet.edu.au/pub/gnu
278
279 config BR2_LUAROCKS_MIRROR
280         string "LuaRocks mirror"
281         default "http://rocks.moonscript.org"
282         help
283           LuaRocks repository.
284
285           See http://luarocks.org
286
287 config BR2_CPAN_MIRROR
288         string "CPAN mirror (Perl packages)"
289         default "http://cpan.metacpan.org"
290         help
291           CPAN (Comprehensive Perl Archive Network) is a repository of
292           Perl packages. It has multiple software mirrors scattered
293           around the world. This option allows you to select a mirror.
294
295           The list of mirrors is available at:
296           http://search.cpan.org/mirror
297
298 endif
299
300 endmenu
301
302 config BR2_JLEVEL
303         int "Number of jobs to run simultaneously (0 for auto)"
304         default "0"
305         help
306           Number of jobs to run simultaneously. If 0, determine
307           automatically according to number of CPUs on the host system.
308
309 config BR2_CCACHE
310         bool "Enable compiler cache"
311         help
312           This option will enable the use of ccache, a compiler cache.
313           It will cache the result of previous builds to speed up future
314           builds. By default, the cache is stored in
315           $HOME/.buildroot-ccache.
316
317           Note that Buildroot does not try to invalidate the cache
318           contents when the compiler changes in an incompatible way.
319           Therefore, if you make a change to the compiler version and/or
320           configuration, you are responsible for purging the ccache
321           cache by removing the $HOME/.buildroot-ccache directory.
322
323 if BR2_CCACHE
324
325 config BR2_CCACHE_DIR
326         string "Compiler cache location"
327         default "$(HOME)/.buildroot-ccache"
328         help
329           Where ccache should store cached files.
330           If the Linux shell environment has defined the BR2_CCACHE_DIR
331           environment variable, then this overrides this configuration
332           item.
333
334 config BR2_CCACHE_INITIAL_SETUP
335         string "Compiler cache initial setup"
336         help
337           Initial ccache settings to apply, such as --max-files or
338           --max-size.
339
340           For example, if your project is known to require more space
341           than the default max cache size, then you might want to
342           increase the cache size to a suitable amount using the -M
343           (--max-size) option.
344
345           The string you specify here is passed verbatim to ccache.
346           Refer to ccache documentation for more details.
347
348           These initial settings are applied after ccache has been
349           compiled.
350
351 config BR2_CCACHE_USE_BASEDIR
352         bool "Use relative paths"
353         default y
354         help
355           Allow ccache to convert absolute paths within the output
356           directory into relative paths.
357
358           During the build, many -I include directives are given with an
359           absolute path. These absolute paths end up in the hashes that
360           are computed by ccache. Therefore, when you build from a
361           different directory, the hash will be different and the cached
362           object will not be used.
363
364           To improve cache performance, set this option to y. This
365           allows ccache to rewrite absolute paths within the output
366           directory into relative paths. Note that only paths within the
367           output directory will be rewritten; therefore, if you change
368           BR2_HOST_DIR to point outside the output directory and
369           subsequently move it to a different location, this will lead
370           to cache misses.
371
372           This option has as a result that the debug information in the
373           object files also has only relative paths. Therefore, make
374           sure you cd to the build directory before starting gdb. See
375           the section "COMPILING IN DIFFERENT DIRECTORIES" in the ccache
376           manual for more information.
377
378 endif
379
380 config BR2_ENABLE_DEBUG
381         bool "build packages with debugging symbols"
382         help
383           Build packages with debugging symbols enabled. All libraries
384           and binaries in the 'staging' directory will have debugging
385           symbols, which allows remote debugging even if libraries and
386           binaries are stripped on the target. Whether libraries and
387           binaries are stripped on the target is controlled by the
388           BR2_STRIP_* options below.
389
390 if BR2_ENABLE_DEBUG
391 choice
392         prompt "gcc debug level"
393         default BR2_DEBUG_2
394         help
395           Set the debug level for gcc
396
397 config BR2_DEBUG_1
398         bool "debug level 1"
399         help
400           Debug level 1 produces minimal information, enough for making
401           backtraces in parts of the program that you don't plan to
402           debug. This includes descriptions of functions and external
403           variables, but no information about local variables and no
404           line numbers.
405
406 config BR2_DEBUG_2
407         bool "debug level 2"
408         help
409           The default gcc debug level is 2
410
411 config BR2_DEBUG_3
412         bool "debug level 3"
413         help
414           Level 3 includes extra information, such as all the macro
415           definitions present in the program. Some debuggers support
416           macro expansion when you use -g3.
417 endchoice
418 endif
419
420 config BR2_STRIP_strip
421         bool "strip target binaries"
422         default y
423         depends on !BR2_PACKAGE_HOST_ELF2FLT
424         help
425           Binaries and libraries in the target filesystem will be
426           stripped using the normal 'strip' command. This allows to save
427           space, mainly by removing debugging symbols. Debugging symbols
428           on the target are needed for native debugging, but not when
429           remote debugging is used.
430
431 config BR2_STRIP_EXCLUDE_FILES
432         string "executables that should not be stripped"
433         default ""
434         depends on BR2_STRIP_strip
435         help
436           You may specify a space-separated list of binaries and
437           libraries here that should not be stripped on the target.
438
439 config BR2_STRIP_EXCLUDE_DIRS
440         string "directories that should be skipped when stripping"
441         default ""
442         depends on BR2_STRIP_strip
443         help
444           You may specify a space-separated list of directories that
445           should be skipped when stripping. Binaries and libraries in
446           these directories will not be touched. The directories should
447           be specified relative to the target directory, without leading
448           slash.
449
450 choice
451         prompt "gcc optimization level"
452         default BR2_OPTIMIZE_S
453         help
454           Set the optimization level for gcc
455
456 config BR2_OPTIMIZE_0
457         bool "optimization level 0"
458         help
459           Do not optimize.
460
461 config BR2_OPTIMIZE_1
462         bool "optimization level 1"
463         help
464           Optimize. Optimizing compilation takes somewhat more time, and
465           a lot more memory for a large function. With -O, the compiler
466           tries to reduce code size and execution time, without
467           performing any optimizations that take a great deal of
468           compilation time. -O turns on the following optimization
469           flags: -fdefer-pop -fdelayed-branch -fguess-branch-probability
470           -fcprop-registers -floop-optimize -fif-conversion
471           -fif-conversion2 -ftree-ccp -ftree-dce -ftree-dominator-opts
472           -ftree-dse -ftree-ter -ftree-lrs -ftree-sra -ftree-copyrename
473           -ftree-fre -ftree-ch -funit-at-a-time -fmerge-constants. -O
474           also turns on -fomit-frame-pointer on machines where doing so
475           does not interfere with debugging.
476
477 config BR2_OPTIMIZE_2
478         bool "optimization level 2"
479         help
480           Optimize even more. GCC performs nearly all supported
481           optimizations that do not involve a space-speed tradeoff. The
482           compiler does not perform loop unrolling or function inlining
483           when you specify -O2. As compared to -O, this option increases
484           both compilation time and the performance of the generated
485           code. -O2 turns on all optimization flags specified by -O. It
486           also turns on the following optimization flags:
487           -fthread-jumps -fcrossjumping -foptimize-sibling-calls
488           -fcse-follow-jumps -fcse-skip-blocks -fgcse  -fgcse-lm
489           -fexpensive-optimizations -fstrength-reduce
490           -frerun-cse-after-loop -frerun-loop-opt -fcaller-saves
491           -fpeephole2 -fschedule-insns -fschedule-insns2
492           -fsched-interblock -fsched-spec -fregmove -fstrict-aliasing
493           -fdelete-null-pointer-checks -freorder-blocks
494           -freorder-functions -falign-functions -falign-jumps
495           -falign-loops -falign-labels -ftree-vrp -ftree-pre. Please
496           note the warning under -fgcse about invoking -O2 on programs
497           that use computed gotos.
498
499 config BR2_OPTIMIZE_3
500         bool "optimization level 3"
501         help
502           Optimize yet more. -O3 turns on all optimizations specified by
503           -O2 and also turns on the -finline-functions, -funswitch-loops
504           and -fgcse-after-reload options.
505
506 config BR2_OPTIMIZE_G
507         bool "optimize for debugging"
508         depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
509         help
510           Optimize for debugging. This enables optimizations that do not
511           interfere with debugging. It should be the optimization level
512           of choice for the standard edit-compile-debug cycle, offering
513           a reasonable level of optimization while maintaining fast
514           compilation and a good debugging experience.
515
516 config BR2_OPTIMIZE_S
517         bool "optimize for size"
518         help
519           Optimize for size. -Os enables all -O2 optimizations that do
520           not typically increase code size. It also performs further
521           optimizations designed to reduce code size. -Os disables the
522           following optimization flags: -falign-functions -falign-jumps
523           -falign-loops -falign-labels -freorder-blocks
524           -freorder-blocks-and-partition -fprefetch-loop-arrays
525           -ftree-vect-loop-version
526           This is the default.
527
528 config BR2_OPTIMIZE_FAST
529         bool "optimize for fast"
530         depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_6
531         help
532           Optimize for fast. Disregard strict standards
533           compliance. -Ofast enables all -O3 optimizations. It also
534           enables optimizations that are not valid for all
535           standard-compliant programs. It turns on -ffast-math and the
536           Fortran-specific -fstack-arrays, unless -fmax-stack-var-size
537           is specified, and -fno-protect-parens.
538
539 endchoice
540
541 config BR2_GOOGLE_BREAKPAD_ENABLE
542         bool "Enable google-breakpad support"
543         depends on BR2_INSTALL_LIBSTDCPP
544         depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11
545         depends on BR2_USE_WCHAR
546         depends on BR2_TOOLCHAIN_HAS_THREADS
547         depends on (BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_UCLIBC)
548         depends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS
549         depends on BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS
550         select BR2_PACKAGE_GOOGLE_BREAKPAD
551         help
552           This option will enable the use of google breakpad, a library
553           and tool suite that allows you to distribute an application to
554           users with compiler-provided debugging information removed,
555           record crashes in compact "minidump" files, send them back to
556           your server and produce C and C++ stack traces from these
557           minidumps. Breakpad can also write minidumps on request for
558           programs that have not crashed.
559
560 if BR2_GOOGLE_BREAKPAD_ENABLE
561
562 config BR2_GOOGLE_BREAKPAD_INCLUDE_FILES
563         string "List of executables and libraries to extract symbols from"
564         default ""
565         help
566           You may specify a space-separated list of binaries and
567           libraries with full paths relative to $(TARGET_DIR) of which
568           debug symbols will be dumped for further use with google
569           breakpad.
570
571           A directory structure that can be used by minidump-stackwalk
572           will be created at:
573
574           $(STAGING_DIR)/usr/share/google-breakpad-symbols
575
576 endif
577
578 choice
579         bool "libraries"
580         default BR2_SHARED_LIBS if BR2_BINFMT_SUPPORTS_SHARED
581         default BR2_STATIC_LIBS if !BR2_BINFMT_SUPPORTS_SHARED
582         help
583           Select the type of libraries you want to use on the target.
584
585           The default is to build dynamic libraries and use those on the
586           target filesystem, except when the architecture and/or the
587           selected binary format does not support shared libraries.
588
589 config BR2_STATIC_LIBS
590         bool "static only"
591         help
592           Build and use only static libraries. No shared libraries will
593           be installed on the target. This potentially increases your
594           code size and should only be used if you know what you are
595           doing. Note that some packages may not be available when this
596           option is enabled, due to their need for dynamic library
597           support.
598
599 config BR2_SHARED_LIBS
600         bool "shared only"
601         depends on BR2_BINFMT_SUPPORTS_SHARED
602         help
603           Build and use only shared libraries. This is the recommended
604           solution as it saves space and build time.
605
606 config BR2_SHARED_STATIC_LIBS
607         bool "both static and shared"
608         depends on BR2_BINFMT_SUPPORTS_SHARED
609         help
610           Build both shared and static libraries, but link executables
611           dynamically. While building both shared and static libraries
612           take more time and more disk space, having static libraries
613           may be useful to link some of the applications statically.
614
615 endchoice
616
617 config BR2_PACKAGE_OVERRIDE_FILE
618         string "location of a package override file"
619         default "$(CONFIG_DIR)/local.mk"
620         help
621           A package override file is a short makefile that contains
622           variable definitions of the form <pkg>_OVERRIDE_SRCDIR, which
623           allows to tell Buildroot to use an existing directory as the
624           source directory for a particular package. See the Buildroot
625           documentation for more details on this feature.
626
627 config BR2_GLOBAL_PATCH_DIR
628         string "global patch directories"
629         help
630           You may specify a space separated list of one or more
631           directories containing global package patches. For a specific
632           version <packageversion> of a specific package <packagename>,
633           patches are applied as follows:
634
635           First, the default Buildroot patch set for the package is
636           applied from the package's directory in Buildroot.
637
638           Then for every directory - <global-patch-dir> - that exists in
639           BR2_GLOBAL_PATCH_DIR, if the directory
640           <global-patch-dir>/<packagename>/<packageversion>/ exists,
641           then all *.patch files in this directory will be applied.
642
643           Otherwise, if the directory <global-patch-dir>/<packagename>
644           exists, then all *.patch files in the directory will be
645           applied.
646
647 menu "Advanced"
648
649 config BR2_COMPILER_PARANOID_UNSAFE_PATH
650         bool "paranoid check of library/header paths"
651         default y
652         help
653           By default, when this option is disabled, when the Buildroot
654           cross-compiler will encounter an unsafe library or header path
655           (such as /usr/include, or /usr/lib), the compiler will display
656           a warning.
657
658           By enabling this option, this warning is turned into an error,
659           which will completely abort the build when such unsafe paths
660           are encountered.
661
662           Note that this mechanism is available for both the internal
663           toolchain (through the toolchain wrapper and binutils patches)
664           and external toolchain backends (through the toolchain
665           wrapper).
666
667 config BR2_FORCE_HOST_BUILD
668         bool "Force the building of host dependencies"
669         help
670           Build all available host dependencies, even if they are
671           already installed on the system.
672
673           This option can be used to ensure that the download cache of
674           source archives for packages remain consistent between
675           different build hosts.
676
677           This option will increase build time.
678
679 config BR2_REPRODUCIBLE
680         bool "Make the build reproducible (experimental)"
681         # SOURCE_DATE_EPOCH support in toolchain-wrapper requires GCC 4.4
682         depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
683         help
684           This option will remove all sources of non-reproducibility
685           from the build process. For a given Buildroot configuration,
686           this allows to generate exactly identical binaries from one
687           build to the other, including on different machines.
688
689           The current implementation is restricted to builds with the
690           same output directory. Many (absolute) paths are recorded in
691           intermediary files, and it is very likely that some of these
692           paths leak into the target rootfs. If you build with the
693           same O=... path, however, the result is identical.
694
695           This is labeled as an experimental feature, as not all
696           packages behave properly to ensure reproducibility.
697
698 config BR2_PER_PACKAGE_DIRECTORIES
699         bool "Use per-package directories (experimental)"
700         help
701           This option will change the build process of Buildroot
702           package to use per-package target and host directories.
703
704           This is useful for two related purposes:
705
706             - Cleanly isolate the build of each package, so that a
707               given package only "sees" the dependencies it has
708               explicitly expressed, and not other packages that may
709               have by chance been built before.
710
711             - Enable top-level parallel build.
712
713           This is labeled as an experimental feature, as not all
714           packages behave properly with per-package directories.
715
716 endmenu
717
718 comment "Security Hardening Options"
719
720 config BR2_PIC_PIE
721         bool "Build code with PIC/PIE"
722         depends on BR2_SHARED_LIBS
723         depends on BR2_TOOLCHAIN_SUPPORTS_PIE
724         help
725           Generate Position-Independent Code (PIC) and link
726           Position-Independent Executables (PIE).
727
728 comment "PIC/PIE needs a toolchain w/ PIE"
729         depends on BR2_SHARED_LIBS
730         depends on !BR2_TOOLCHAIN_SUPPORTS_PIE
731
732 choice
733         bool "Stack Smashing Protection"
734         default BR2_SSP_ALL if BR2_ENABLE_SSP # legacy
735         depends on BR2_TOOLCHAIN_HAS_SSP
736         help
737           Enable stack smashing protection support using GCC's
738           -fstack-protector option family.
739
740           See
741           http://www.linuxfromscratch.org/hints/downloads/files/ssp.txt
742           for details.
743
744           Note that this requires the toolchain to have SSP support.
745           This is always the case for glibc and eglibc toolchain, but is
746           optional in uClibc toolchains.
747
748 config BR2_SSP_NONE
749         bool "None"
750         help
751           Disable stack-smashing protection.
752
753 config BR2_SSP_REGULAR
754         bool "-fstack-protector"
755         help
756           Emit extra code to check for buffer overflows, such as stack
757           smashing attacks. This is done by adding a guard variable to
758           functions with vulnerable objects. This includes functions
759           that call alloca, and functions with buffers larger than 8
760           bytes. The guards are initialized when a function is entered
761           and then checked when the function exits. If a guard check
762           fails, an error message is printed and the program exits.
763
764 config BR2_SSP_STRONG
765         bool "-fstack-protector-strong"
766         depends on BR2_TOOLCHAIN_HAS_SSP_STRONG
767         help
768           Like -fstack-protector but includes additional functions to be
769           protected - those that have local array definitions, or have
770           references to local frame addresses.
771
772           -fstack-protector-strong officially appeared in gcc 4.9, but
773           some vendors have backported -fstack-protector-strong to older
774           versions of gcc.
775
776 config BR2_SSP_ALL
777         bool "-fstack-protector-all"
778         help
779           Like -fstack-protector except that all functions are
780           protected. This option might have a significant performance
781           impact on the compiled binaries.
782
783 endchoice
784
785 config BR2_SSP_OPTION
786         string
787         default "-fstack-protector"        if BR2_SSP_REGULAR
788         default "-fstack-protector-strong" if BR2_SSP_STRONG
789         default "-fstack-protector-all"    if BR2_SSP_ALL
790
791 comment "Stack Smashing Protection needs a toolchain w/ SSP"
792         depends on !BR2_TOOLCHAIN_HAS_SSP
793
794 choice
795         bool "RELRO Protection"
796         depends on BR2_SHARED_LIBS
797         help
798           Enable a link-time protection know as RELRO (RELocation Read
799           Only) which helps to protect from certain type of exploitation
800           techniques altering the content of some ELF sections.
801
802 config BR2_RELRO_NONE
803         bool "None"
804         help
805           Disables Relocation link-time protections.
806
807 config BR2_RELRO_PARTIAL
808         bool "Partial"
809         help
810           This option makes the dynamic section not writeable after
811           initialization (with almost no performance penalty).
812
813 config BR2_RELRO_FULL
814         bool "Full"
815         depends on BR2_TOOLCHAIN_SUPPORTS_PIE
816         select BR2_PIC_PIE
817         help
818           This option includes the partial configuration, but also marks
819           the GOT as read-only at the cost of initialization time during
820           program loading, i.e every time an executable is started.
821
822 comment "RELRO Full needs a toolchain w/ PIE"
823         depends on !BR2_TOOLCHAIN_SUPPORTS_PIE
824
825 endchoice
826
827 comment "RELocation Read Only (RELRO) needs shared libraries"
828         depends on !BR2_SHARED_LIBS
829
830 choice
831         bool "Buffer-overflow Detection (FORTIFY_SOURCE)"
832         depends on BR2_TOOLCHAIN_USES_GLIBC
833         depends on !BR2_OPTIMIZE_0
834         help
835           Enable the _FORTIFY_SOURCE macro which introduces additional
836           checks to detect buffer-overflows in the following standard
837           library functions: memcpy, mempcpy, memmove, memset, strcpy,
838           stpcpy, strncpy, strcat, strncat, sprintf, vsprintf, snprintf,
839           vsnprintf, gets.
840
841           NOTE: This feature requires an optimization level of s/1/2/3/g
842
843           Support for this feature has been present since GCC 4.x.
844
845 config BR2_FORTIFY_SOURCE_NONE
846         bool "None"
847         help
848           Disables additional checks to detect buffer-overflows.
849
850 config BR2_FORTIFY_SOURCE_1
851         bool "Conservative"
852         # gcc bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61164
853         depends on !BR2_TOOLCHAIN_BUILDROOT || BR2_TOOLCHAIN_GCC_AT_LEAST_6
854         help
855           This option sets _FORTIFY_SOURCE to 1 and only introduces
856           checks that shouldn't change the behavior of conforming
857           programs.  Adds checks at compile-time only.
858
859 config BR2_FORTIFY_SOURCE_2
860         bool "Aggressive"
861         # gcc bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61164
862         depends on !BR2_TOOLCHAIN_BUILDROOT || BR2_TOOLCHAIN_GCC_AT_LEAST_6
863         help
864           This option sets _FORTIFY_SOURCES to 2 and some more
865           checking is added, but some conforming programs might fail.
866           Also adds checks at run-time (detected buffer overflow
867           terminates the program)
868
869 endchoice
870
871 comment "Fortify Source needs a glibc toolchain and optimization"
872         depends on (!BR2_TOOLCHAIN_USES_GLIBC || BR2_OPTIMIZE_0)
873 endmenu
874
875 source "toolchain/Config.in"
876
877 source "system/Config.in"
878
879 source "linux/Config.in"
880
881 source "package/Config.in"
882
883 source "fs/Config.in"
884
885 source "boot/Config.in"
886
887 source "package/Config.in.host"
888
889 source "Config.in.legacy"
890
891 # br2-external menus definitions
892 source "$BR2_BASE_DIR/.br2-external.in.menus"
This page took 0.076612 seconds and 4 git commands to generate.