]>
Commit | Line | Data |
---|---|---|
2d523c23 EA |
1 | # |
2 | ||
6a53b729 | 3 | mainmenu "Buildroot $BR2_VERSION Configuration" |
2d523c23 EA |
4 | |
5 | config BR2_HAVE_DOT_CONFIG | |
6 | bool | |
7 | default y | |
8 | ||
f5b8cd4a BRF |
9 | config BR2_VERSION |
10 | string | |
56c68bcd | 11 | option env="BR2_VERSION_FULL" |
f5b8cd4a | 12 | |
1d4104f0 FP |
13 | config BR2_HOSTARCH |
14 | string | |
15 | option env="HOSTARCH" | |
16 | ||
54af0551 | 17 | config BR2_BASE_DIR |
4802db3d | 18 | string |
54af0551 | 19 | option env="BASE_DIR" |
4802db3d | 20 | |
edf32b02 YM |
21 | # br2-external paths definitions |
22 | source "$BR2_BASE_DIR/.br2-external.in.paths" | |
23 | ||
12825f7a AV |
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 | ||
12825f7a AV |
29 | config BR2_HOST_GCC_AT_LEAST_4_9 |
30 | bool | |
31 | default y if BR2_HOST_GCC_VERSION = "4 9" | |
12825f7a AV |
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 | ||
3d217578 MB |
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 | ||
435b4cce APC |
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 | ||
e13ab2e0 SB |
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 | ||
1776190f RN |
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 | ||
da889335 AD |
58 | config BR2_HOST_GCC_AT_LEAST_10 |
59 | bool | |
60 | default y if BR2_HOST_GCC_VERSION = "10" | |
61 | select BR2_HOST_GCC_AT_LEAST_9 | |
62 | ||
63 | config BR2_HOST_GCC_AT_LEAST_11 | |
64 | bool | |
65 | default y if BR2_HOST_GCC_VERSION = "11" | |
66 | select BR2_HOST_GCC_AT_LEAST_10 | |
67 | ||
3950e69d YM |
68 | # When adding new entries above, be sure to update |
69 | # the HOSTCC_MAX_VERSION variable in the Makefile. | |
70 | ||
aac3d2b4 | 71 | # Hidden boolean selected by packages in need of Java in order to build |
4f3fdf15 | 72 | # (example: kodi) |
0721c713 | 73 | config BR2_NEEDS_HOST_JAVA |
aac3d2b4 MH |
74 | bool |
75 | ||
70d6037e TP |
76 | # Hidden boolean selected by pre-built packages for x86, when they |
77 | # need to run on x86-64 machines (example: pre-built external | |
71b5ea40 | 78 | # toolchains, binary tools, etc.). |
70d6037e TP |
79 | config BR2_HOSTARCH_NEEDS_IA32_LIBS |
80 | bool | |
81 | ||
0e4bc502 TP |
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 | ||
de0df997 YM |
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 | ||
e068f337 KB |
93 | # Hidden boolean selected by packages that need the host to have |
94 | # support for building gcc plugins | |
95 | config BR2_NEEDS_HOST_GCC_PLUGIN_SUPPORT | |
96 | bool | |
97 | ||
79ee3c1f | 98 | source "arch/Config.in" |
7d8a59b4 | 99 | |
5e050a88 AVEM |
100 | source "toolchain/Config.in" |
101 | ||
8e5fb3fb EA |
102 | menu "Build options" |
103 | ||
15929265 TP |
104 | menu "Commands" |
105 | ||
2d523c23 | 106 | config BR2_WGET |
8e5fb3fb | 107 | string "Wget command" |
6871b165 | 108 | default "wget --passive-ftp -nd -t 3" |
2d523c23 | 109 | |
cf71111b MP |
110 | config BR2_SVN |
111 | string "Subversion (svn) command" | |
ad477b08 | 112 | default "svn --non-interactive" |
e30cf26c | 113 | |
cf71111b MP |
114 | config BR2_BZR |
115 | string "Bazaar (bzr) command" | |
116 | default "bzr" | |
df03cdaf | 117 | |
85f54fbe | 118 | config BR2_GIT |
cf71111b MP |
119 | string "Git command" |
120 | default "git" | |
85f54fbe | 121 | |
15eb1faf GZ |
122 | config BR2_CVS |
123 | string "CVS command" | |
124 | default "cvs" | |
125 | ||
2690e76a DW |
126 | config BR2_LOCALFILES |
127 | string "Local files retrieval command" | |
128 | default "cp" | |
129 | ||
c61788f0 TDS |
130 | config BR2_SCP |
131 | string "Secure copy (scp) command" | |
132 | default "scp" | |
133 | ||
16f660f8 TP |
134 | config BR2_SFTP |
135 | string "Secure file transfer (sftp) command" | |
136 | default "sftp" | |
137 | ||
f694c076 TDS |
138 | config BR2_HG |
139 | string "Mercurial (hg) command" | |
140 | default "hg" | |
141 | ||
859b9137 BRF |
142 | config BR2_ZCAT |
143 | string "zcat command" | |
a9612bfd | 144 | default "gzip -d -c" |
859b9137 | 145 | help |
65f9b937 MK |
146 | Command to be used to extract a gzip'ed file to stdout. zcat |
147 | is identical to gunzip -c except that the former may not be | |
148 | available on your system. | |
a9612bfd BRF |
149 | Default is "gzip -d -c" |
150 | Other possible values include "gunzip -c" or "zcat". | |
6e2823c1 BRF |
151 | |
152 | config BR2_BZCAT | |
153 | string "bzcat command" | |
154 | default "bzcat" | |
155 | help | |
156 | Command to be used to extract a bzip2'ed file to stdout. | |
157 | bzcat is identical to bunzip2 -c except that the former may | |
158 | not be available on your system. | |
159 | Default is "bzcat" | |
160 | Other possible values include "bunzip2 -c" or "bzip2 -d -c". | |
859b9137 | 161 | |
177b4b4a AN |
162 | config BR2_XZCAT |
163 | string "xzcat command" | |
164 | default "xzcat" | |
165 | help | |
166 | Command to be used to extract a xz'ed file to stdout. | |
167 | Default is "xzcat" | |
168 | ||
f165032e BS |
169 | config BR2_LZCAT |
170 | string "lzcat command" | |
171 | default "lzip -d -c" | |
172 | help | |
173 | Command to be used to extract a lzip'ed file to stdout. | |
174 | Default is "lzip -d -c" | |
175 | ||
ce90aae1 BRF |
176 | config BR2_TAR_OPTIONS |
177 | string "Tar options" | |
7df4de6c BRF |
178 | default "" |
179 | help | |
180 | Options to pass to tar when extracting the sources. | |
d6109172 RM |
181 | E.g. " -v --exclude='*.svn*'" to exclude all .svn internal |
182 | files and to be verbose. | |
ce90aae1 | 183 | |
15929265 TP |
184 | endmenu |
185 | ||
4e0170d6 AVEM |
186 | config BR2_DEFCONFIG_FROM_ENV |
187 | string | |
188 | option env="BR2_DEFCONFIG" | |
189 | ||
190 | config BR2_DEFCONFIG | |
191 | string "Location to save buildroot config" | |
192 | default BR2_DEFCONFIG_FROM_ENV if BR2_DEFCONFIG_FROM_ENV != "" | |
193 | default "$(CONFIG_DIR)/defconfig" | |
194 | help | |
65f9b937 MK |
195 | When running 'make savedefconfig', the defconfig file will be |
196 | saved in this location. | |
4e0170d6 | 197 | |
59a63a91 MF |
198 | config BR2_DL_DIR |
199 | string "Download dir" | |
be695dcc | 200 | default "$(TOPDIR)/dl" |
59a63a91 MF |
201 | help |
202 | Directory to store all the source files that we need to fetch. | |
6768021c | 203 | If the Linux shell environment has defined the BR2_DL_DIR |
65f9b937 MK |
204 | environment variable, then this overrides this configuration |
205 | item. | |
7e58fdc5 TP |
206 | The directory is organized with a subdirectory for each |
207 | package. Each package has its own $(LIBFOO_DL_DIR) variable | |
208 | that can be used to find the correct path. | |
59a63a91 | 209 | |
be695dcc | 210 | The default is $(TOPDIR)/dl |
4b0d5a80 | 211 | |
a2b4f7fb GZ |
212 | config BR2_HOST_DIR |
213 | string "Host dir" | |
214 | default "$(BASE_DIR)/host" | |
215 | help | |
65f9b937 MK |
216 | Directory to store all the binary files that are built for the |
217 | host. This includes the cross compilation toolchain when | |
218 | building the internal buildroot toolchain. | |
a2b4f7fb GZ |
219 | |
220 | The default is $(BASE_DIR)/host | |
221 | ||
8008007c TP |
222 | menu "Mirrors and Download locations" |
223 | ||
224 | config BR2_PRIMARY_SITE | |
225 | string "Primary download site" | |
226 | default "" | |
227 | help | |
65f9b937 MK |
228 | Primary site to download from. If this option is set then |
229 | buildroot will try to download package source first from this | |
230 | site and try the default if the file is not found. | |
4a9d9807 JP |
231 | Valid URIs are: |
232 | - URIs recognized by $(WGET) | |
233 | - local URIs of the form file://absolutepath | |
234 | - scp URIs of the form scp://[user@]host:path. | |
8008007c | 235 | |
5a83e084 TDS |
236 | config BR2_PRIMARY_SITE_ONLY |
237 | bool "Only allow downloads from primary download site" | |
238 | depends on BR2_PRIMARY_SITE != "" | |
239 | help | |
240 | If this option is enabled, downloads will only be attempted | |
241 | from the primary download site. Other locations, like the | |
242 | package's official download location or the backup download | |
65f9b937 MK |
243 | site, will not be considered. Therefore, if the package is not |
244 | present on the primary site, the download fails. | |
5a83e084 | 245 | |
65f9b937 MK |
246 | This is useful for project developers who want to ensure that |
247 | the project can be built even if the upstream tarball | |
5a83e084 TDS |
248 | locations disappear. |
249 | ||
250 | if !BR2_PRIMARY_SITE_ONLY | |
251 | ||
8008007c TP |
252 | config BR2_BACKUP_SITE |
253 | string "Backup download site" | |
05296ced | 254 | default "https://sources.buildroot.net" |
8008007c | 255 | help |
65f9b937 MK |
256 | Backup site to download from. If this option is set then |
257 | buildroot will fall back to download package sources from here | |
258 | if the normal location fails. | |
8008007c TP |
259 | |
260 | config BR2_KERNEL_MIRROR | |
261 | string "Kernel.org mirror" | |
de76cb7d | 262 | default "https://cdn.kernel.org/pub" |
8008007c | 263 | help |
de76cb7d | 264 | kernel.org is mirrored on a number of servers around the |
65f9b937 | 265 | world. The following allows you to select your preferred |
de76cb7d AB |
266 | mirror. By default, a CDN is used, which automatically |
267 | redirects to a mirror geographically close to you. | |
8008007c | 268 | |
65f9b937 MK |
269 | Have a look on the kernel.org site for a list of mirrors, then |
270 | enter the URL to the base directory. Examples: | |
8008007c TP |
271 | |
272 | http://www.XX.kernel.org/pub (XX = country code) | |
273 | http://mirror.aarnet.edu.au/pub/ftp.kernel.org | |
274 | ||
275 | config BR2_GNU_MIRROR | |
276 | string "GNU Software mirror" | |
3999f0ad | 277 | default "http://ftpmirror.gnu.org" |
8008007c | 278 | help |
3999f0ad | 279 | GNU has multiple software mirrors scattered around the |
65f9b937 | 280 | world. The following allows you to select your preferred |
3999f0ad TP |
281 | mirror. By default, a generic address is used, which |
282 | automatically selects an up-to-date and local mirror. | |
8008007c | 283 | |
65f9b937 MK |
284 | Have a look on the gnu.org site for a list of mirrors, then |
285 | enter the URL to the base directory. Examples: | |
8008007c TP |
286 | |
287 | http://ftp.gnu.org/pub/gnu | |
288 | http://mirror.aarnet.edu.au/pub/gnu | |
289 | ||
72afb294 FP |
290 | config BR2_LUAROCKS_MIRROR |
291 | string "LuaRocks mirror" | |
0b8411af | 292 | default "http://rocks.moonscript.org" |
72afb294 FP |
293 | help |
294 | LuaRocks repository. | |
295 | ||
296 | See http://luarocks.org | |
297 | ||
9fbb1699 FP |
298 | config BR2_CPAN_MIRROR |
299 | string "CPAN mirror (Perl packages)" | |
add21fd6 | 300 | default "https://cpan.metacpan.org" |
9fbb1699 | 301 | help |
65f9b937 MK |
302 | CPAN (Comprehensive Perl Archive Network) is a repository of |
303 | Perl packages. It has multiple software mirrors scattered | |
9fbb1699 FP |
304 | around the world. This option allows you to select a mirror. |
305 | ||
306 | The list of mirrors is available at: | |
add21fd6 PS |
307 | http://mirrors.cpan.org/ (tabular) |
308 | http://mirrors.cpan.org/map.html (clickable world map) | |
9fbb1699 | 309 | |
3318a5a7 YM |
310 | endif |
311 | ||
8008007c | 312 | endmenu |
aa41d377 | 313 | |
8e5fb3fb | 314 | config BR2_JLEVEL |
5016aa02 NL |
315 | int "Number of jobs to run simultaneously (0 for auto)" |
316 | default "0" | |
8e5fb3fb | 317 | help |
65f9b937 MK |
318 | Number of jobs to run simultaneously. If 0, determine |
319 | automatically according to number of CPUs on the host system. | |
93ab6d30 | 320 | |
17b66aff TP |
321 | config BR2_CCACHE |
322 | bool "Enable compiler cache" | |
323 | help | |
65f9b937 MK |
324 | This option will enable the use of ccache, a compiler cache. |
325 | It will cache the result of previous builds to speed up future | |
326 | builds. By default, the cache is stored in | |
17b66aff TP |
327 | $HOME/.buildroot-ccache. |
328 | ||
f044e037 | 329 | Note that Buildroot does not try to invalidate the cache |
65f9b937 MK |
330 | contents when the compiler changes in an incompatible way. |
331 | Therefore, if you make a change to the compiler version and/or | |
332 | configuration, you are responsible for purging the ccache | |
333 | cache by removing the $HOME/.buildroot-ccache directory. | |
f044e037 | 334 | |
dd79f2df DM |
335 | if BR2_CCACHE |
336 | ||
43329076 TDS |
337 | config BR2_CCACHE_DIR |
338 | string "Compiler cache location" | |
43329076 TDS |
339 | default "$(HOME)/.buildroot-ccache" |
340 | help | |
341 | Where ccache should store cached files. | |
ad980ccc TP |
342 | If the Linux shell environment has defined the BR2_CCACHE_DIR |
343 | environment variable, then this overrides this configuration | |
344 | item. | |
43329076 | 345 | |
dd79f2df DM |
346 | config BR2_CCACHE_INITIAL_SETUP |
347 | string "Compiler cache initial setup" | |
348 | help | |
65f9b937 MK |
349 | Initial ccache settings to apply, such as --max-files or |
350 | --max-size. | |
dd79f2df | 351 | |
65f9b937 MK |
352 | For example, if your project is known to require more space |
353 | than the default max cache size, then you might want to | |
354 | increase the cache size to a suitable amount using the -M | |
355 | (--max-size) option. | |
dd79f2df | 356 | |
65f9b937 MK |
357 | The string you specify here is passed verbatim to ccache. |
358 | Refer to ccache documentation for more details. | |
dd79f2df | 359 | |
65f9b937 MK |
360 | These initial settings are applied after ccache has been |
361 | compiled. | |
dd79f2df | 362 | |
1e97b278 AV |
363 | config BR2_CCACHE_USE_BASEDIR |
364 | bool "Use relative paths" | |
365 | default y | |
366 | help | |
367 | Allow ccache to convert absolute paths within the output | |
368 | directory into relative paths. | |
369 | ||
65f9b937 MK |
370 | During the build, many -I include directives are given with an |
371 | absolute path. These absolute paths end up in the hashes that | |
372 | are computed by ccache. Therefore, when you build from a | |
373 | different directory, the hash will be different and the cached | |
374 | object will not be used. | |
1e97b278 AV |
375 | |
376 | To improve cache performance, set this option to y. This | |
377 | allows ccache to rewrite absolute paths within the output | |
65f9b937 MK |
378 | directory into relative paths. Note that only paths within the |
379 | output directory will be rewritten; therefore, if you change | |
380 | BR2_HOST_DIR to point outside the output directory and | |
1e97b278 AV |
381 | subsequently move it to a different location, this will lead |
382 | to cache misses. | |
383 | ||
384 | This option has as a result that the debug information in the | |
385 | object files also has only relative paths. Therefore, make | |
386 | sure you cd to the build directory before starting gdb. See | |
65f9b937 MK |
387 | the section "COMPILING IN DIFFERENT DIRECTORIES" in the ccache |
388 | manual for more information. | |
1e97b278 | 389 | |
dd79f2df DM |
390 | endif |
391 | ||
41f6b79f JV |
392 | config BR2_ENABLE_DEBUG |
393 | bool "build packages with debugging symbols" | |
41f6b79f | 394 | help |
a9a34676 TP |
395 | Build packages with debugging symbols enabled. All libraries |
396 | and binaries in the 'staging' directory will have debugging | |
397 | symbols, which allows remote debugging even if libraries and | |
398 | binaries are stripped on the target. Whether libraries and | |
399 | binaries are stripped on the target is controlled by the | |
400 | BR2_STRIP_* options below. | |
41f6b79f JV |
401 | |
402 | if BR2_ENABLE_DEBUG | |
403 | choice | |
404 | prompt "gcc debug level" | |
405 | default BR2_DEBUG_2 | |
406 | help | |
407 | Set the debug level for gcc | |
408 | ||
409 | config BR2_DEBUG_1 | |
410 | bool "debug level 1" | |
411 | help | |
65f9b937 MK |
412 | Debug level 1 produces minimal information, enough for making |
413 | backtraces in parts of the program that you don't plan to | |
414 | debug. This includes descriptions of functions and external | |
415 | variables, but no information about local variables and no | |
416 | line numbers. | |
41f6b79f JV |
417 | |
418 | config BR2_DEBUG_2 | |
419 | bool "debug level 2" | |
420 | help | |
421 | The default gcc debug level is 2 | |
422 | ||
423 | config BR2_DEBUG_3 | |
424 | bool "debug level 3" | |
425 | help | |
65f9b937 MK |
426 | Level 3 includes extra information, such as all the macro |
427 | definitions present in the program. Some debuggers support | |
428 | macro expansion when you use -g3. | |
41f6b79f JV |
429 | endchoice |
430 | endif | |
431 | ||
b7939fe2 TDS |
432 | config BR2_ENABLE_RUNTIME_DEBUG |
433 | bool "build packages with runtime debugging info" | |
434 | help | |
435 | Some packages may have runtime assertions, extra traces, and | |
436 | similar runtime elements that can help debugging. However, | |
437 | these elements may negatively influence performance so should | |
438 | normally not be enabled on production systems. | |
439 | ||
440 | Enable this option to enable such runtime debugging. | |
441 | ||
442 | Note: disabling this option is not a guarantee that all | |
443 | packages effectively removed these runtime debugging elements. | |
444 | ||
bbd251a0 | 445 | config BR2_STRIP_strip |
0d643fd3 | 446 | bool "strip target binaries" |
0d643fd3 | 447 | default y |
9db5eb25 | 448 | depends on BR2_BINFMT_ELF |
bbd251a0 | 449 | help |
a9a34676 | 450 | Binaries and libraries in the target filesystem will be |
65f9b937 MK |
451 | stripped using the normal 'strip' command. This allows to save |
452 | space, mainly by removing debugging symbols. Debugging symbols | |
453 | on the target are needed for native debugging, but not when | |
454 | remote debugging is used. | |
85f54fbe | 455 | |
2a97045d TDS |
456 | config BR2_STRIP_EXCLUDE_FILES |
457 | string "executables that should not be stripped" | |
2a97045d | 458 | default "" |
a1264445 | 459 | depends on BR2_STRIP_strip |
2a97045d | 460 | help |
65f9b937 MK |
461 | You may specify a space-separated list of binaries and |
462 | libraries here that should not be stripped on the target. | |
2a97045d TDS |
463 | |
464 | config BR2_STRIP_EXCLUDE_DIRS | |
465 | string "directories that should be skipped when stripping" | |
2a97045d | 466 | default "" |
a1264445 | 467 | depends on BR2_STRIP_strip |
2a97045d | 468 | help |
65f9b937 MK |
469 | You may specify a space-separated list of directories that |
470 | should be skipped when stripping. Binaries and libraries in | |
471 | these directories will not be touched. The directories should | |
472 | be specified relative to the target directory, without leading | |
473 | slash. | |
2a97045d | 474 | |
41f6b79f JV |
475 | choice |
476 | prompt "gcc optimization level" | |
292949c6 | 477 | default BR2_OPTIMIZE_2 |
923f42a3 | 478 | help |
41f6b79f JV |
479 | Set the optimization level for gcc |
480 | ||
481 | config BR2_OPTIMIZE_0 | |
482 | bool "optimization level 0" | |
483 | help | |
4e09fd8b | 484 | Do not optimize. |
41f6b79f JV |
485 | |
486 | config BR2_OPTIMIZE_1 | |
487 | bool "optimization level 1" | |
488 | help | |
65f9b937 MK |
489 | Optimize. Optimizing compilation takes somewhat more time, and |
490 | a lot more memory for a large function. With -O, the compiler | |
491 | tries to reduce code size and execution time, without | |
492 | performing any optimizations that take a great deal of | |
493 | compilation time. -O turns on the following optimization | |
02a623dd PK |
494 | flags: -fdefer-pop -fdelayed-branch -fguess-branch-probability |
495 | -fcprop-registers -floop-optimize -fif-conversion | |
496 | -fif-conversion2 -ftree-ccp -ftree-dce -ftree-dominator-opts | |
497 | -ftree-dse -ftree-ter -ftree-lrs -ftree-sra -ftree-copyrename | |
65f9b937 MK |
498 | -ftree-fre -ftree-ch -funit-at-a-time -fmerge-constants. -O |
499 | also turns on -fomit-frame-pointer on machines where doing so | |
500 | does not interfere with debugging. | |
41f6b79f JV |
501 | |
502 | config BR2_OPTIMIZE_2 | |
503 | bool "optimization level 2" | |
504 | help | |
65f9b937 MK |
505 | Optimize even more. GCC performs nearly all supported |
506 | optimizations that do not involve a space-speed tradeoff. The | |
507 | compiler does not perform loop unrolling or function inlining | |
508 | when you specify -O2. As compared to -O, this option increases | |
509 | both compilation time and the performance of the generated | |
510 | code. -O2 turns on all optimization flags specified by -O. It | |
511 | also turns on the following optimization flags: | |
512 | -fthread-jumps -fcrossjumping -foptimize-sibling-calls | |
02a623dd | 513 | -fcse-follow-jumps -fcse-skip-blocks -fgcse -fgcse-lm |
65f9b937 MK |
514 | -fexpensive-optimizations -fstrength-reduce |
515 | -frerun-cse-after-loop -frerun-loop-opt -fcaller-saves | |
516 | -fpeephole2 -fschedule-insns -fschedule-insns2 | |
517 | -fsched-interblock -fsched-spec -fregmove -fstrict-aliasing | |
518 | -fdelete-null-pointer-checks -freorder-blocks | |
519 | -freorder-functions -falign-functions -falign-jumps | |
520 | -falign-loops -falign-labels -ftree-vrp -ftree-pre. Please | |
521 | note the warning under -fgcse about invoking -O2 on programs | |
41f6b79f | 522 | that use computed gotos. |
292949c6 | 523 | This is the default. |
41f6b79f JV |
524 | |
525 | config BR2_OPTIMIZE_3 | |
526 | bool "optimization level 3" | |
527 | help | |
65f9b937 MK |
528 | Optimize yet more. -O3 turns on all optimizations specified by |
529 | -O2 and also turns on the -finline-functions, -funswitch-loops | |
530 | and -fgcse-after-reload options. | |
41f6b79f | 531 | |
5ff84592 MK |
532 | config BR2_OPTIMIZE_G |
533 | bool "optimize for debugging" | |
534 | depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 | |
535 | help | |
536 | Optimize for debugging. This enables optimizations that do not | |
65f9b937 MK |
537 | interfere with debugging. It should be the optimization level |
538 | of choice for the standard edit-compile-debug cycle, offering | |
539 | a reasonable level of optimization while maintaining fast | |
540 | compilation and a good debugging experience. | |
41f6b79f JV |
541 | |
542 | config BR2_OPTIMIZE_S | |
543 | bool "optimize for size" | |
544 | help | |
65f9b937 MK |
545 | Optimize for size. -Os enables all -O2 optimizations that do |
546 | not typically increase code size. It also performs further | |
547 | optimizations designed to reduce code size. -Os disables the | |
548 | following optimization flags: -falign-functions -falign-jumps | |
549 | -falign-loops -falign-labels -freorder-blocks | |
550 | -freorder-blocks-and-partition -fprefetch-loop-arrays | |
41f6b79f | 551 | -ftree-vect-loop-version |
02a623dd | 552 | |
ed6a7e18 | 553 | config BR2_OPTIMIZE_FAST |
3e186cee | 554 | bool "optimize for fast (may break packages!)" |
ed6a7e18 JH |
555 | depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_6 |
556 | help | |
557 | Optimize for fast. Disregard strict standards | |
558 | compliance. -Ofast enables all -O3 optimizations. It also | |
559 | enables optimizations that are not valid for all | |
3e186cee FF |
560 | standard-compliant programs, so be careful, as it may break |
561 | some packages. It turns on -ffast-math and the | |
ed6a7e18 JH |
562 | Fortran-specific -fstack-arrays, unless -fmax-stack-var-size |
563 | is specified, and -fno-protect-parens. | |
564 | ||
41f6b79f | 565 | endchoice |
923f42a3 | 566 | |
fb514227 AVEM |
567 | config BR2_ENABLE_LTO |
568 | bool "build packages with link-time optimisation" | |
569 | help | |
570 | Enable the link-time optimisation (LTO) option when building | |
571 | packages. Link-time optimisation re-runs optimisations at | |
572 | link time, which allows the compiler to do interprocedural | |
573 | analysis across compilation units and thus come with better | |
574 | results: smaller size and better performance. | |
575 | ||
576 | Note that this analysis is limited to statically linked | |
577 | object files and libraries. | |
578 | ||
579 | This option may significantly increase build times, | |
580 | sometimes 5 times longer, with only limited gains. | |
581 | ||
582 | At this time, this option only enables LTO in packages that | |
583 | have an explicit configuration option for it. Other packages | |
584 | always enable LTO, but most packages never enable LTO. | |
585 | ||
09a1a10f PH |
586 | config BR2_GOOGLE_BREAKPAD_ENABLE |
587 | bool "Enable google-breakpad support" | |
09a1a10f | 588 | depends on BR2_INSTALL_LIBSTDCPP |
109362c9 | 589 | depends on BR2_TOOLCHAIN_GCC_AT_LEAST_7 # C++17 |
e9ffb3b8 | 590 | depends on BR2_USE_WCHAR |
0bb3983c | 591 | depends on BR2_TOOLCHAIN_HAS_THREADS |
c20334d3 | 592 | depends on BR2_TOOLCHAIN_USES_GLIBC |
09a1a10f | 593 | depends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS |
fadc4383 | 594 | depends on BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS |
a1264445 | 595 | select BR2_PACKAGE_GOOGLE_BREAKPAD |
09a1a10f | 596 | help |
65f9b937 MK |
597 | This option will enable the use of google breakpad, a library |
598 | and tool suite that allows you to distribute an application to | |
599 | users with compiler-provided debugging information removed, | |
600 | record crashes in compact "minidump" files, send them back to | |
601 | your server and produce C and C++ stack traces from these | |
602 | minidumps. Breakpad can also write minidumps on request for | |
603 | programs that have not crashed. | |
09a1a10f PH |
604 | |
605 | if BR2_GOOGLE_BREAKPAD_ENABLE | |
606 | ||
607 | config BR2_GOOGLE_BREAKPAD_INCLUDE_FILES | |
608 | string "List of executables and libraries to extract symbols from" | |
609 | default "" | |
610 | help | |
611 | You may specify a space-separated list of binaries and | |
612 | libraries with full paths relative to $(TARGET_DIR) of which | |
613 | debug symbols will be dumped for further use with google | |
614 | breakpad. | |
615 | ||
616 | A directory structure that can be used by minidump-stackwalk | |
617 | will be created at: | |
618 | ||
619 | $(STAGING_DIR)/usr/share/google-breakpad-symbols | |
620 | ||
621 | endif | |
622 | ||
158001f5 TP |
623 | choice |
624 | bool "libraries" | |
f1d3e098 | 625 | default BR2_SHARED_LIBS if BR2_BINFMT_SUPPORTS_SHARED |
158001f5 TP |
626 | default BR2_STATIC_LIBS if !BR2_BINFMT_SUPPORTS_SHARED |
627 | help | |
628 | Select the type of libraries you want to use on the target. | |
629 | ||
65f9b937 MK |
630 | The default is to build dynamic libraries and use those on the |
631 | target filesystem, except when the architecture and/or the | |
632 | selected binary format does not support shared libraries. | |
158001f5 | 633 | |
665e13c8 | 634 | config BR2_STATIC_LIBS |
158001f5 | 635 | bool "static only" |
90932b40 | 636 | depends on !BR2_TOOLCHAIN_USES_GLIBC |
3096f34d | 637 | help |
65f9b937 | 638 | Build and use only static libraries. No shared libraries will |
d9312d63 | 639 | be installed on the target. This potentially increases your |
65f9b937 MK |
640 | code size and should only be used if you know what you are |
641 | doing. Note that some packages may not be available when this | |
642 | option is enabled, due to their need for dynamic library | |
643 | support. | |
3096f34d | 644 | |
90932b40 AVEM |
645 | comment "static only needs a toolchain w/ uclibc or musl" |
646 | depends on BR2_TOOLCHAIN_USES_GLIBC | |
647 | ||
158001f5 TP |
648 | config BR2_SHARED_LIBS |
649 | bool "shared only" | |
650 | depends on BR2_BINFMT_SUPPORTS_SHARED | |
651 | help | |
652 | Build and use only shared libraries. This is the recommended | |
653 | solution as it saves space and build time. | |
654 | ||
655 | config BR2_SHARED_STATIC_LIBS | |
656 | bool "both static and shared" | |
657 | depends on BR2_BINFMT_SUPPORTS_SHARED | |
658 | help | |
659 | Build both shared and static libraries, but link executables | |
660 | dynamically. While building both shared and static libraries | |
661 | take more time and more disk space, having static libraries | |
662 | may be useful to link some of the applications statically. | |
7d9c0df0 | 663 | |
158001f5 | 664 | endchoice |
7d9c0df0 | 665 | |
ee0246e1 TP |
666 | config BR2_PACKAGE_OVERRIDE_FILE |
667 | string "location of a package override file" | |
eda3d0e1 | 668 | default "$(CONFIG_DIR)/local.mk" |
ee0246e1 TP |
669 | help |
670 | A package override file is a short makefile that contains | |
65f9b937 MK |
671 | variable definitions of the form <pkg>_OVERRIDE_SRCDIR, which |
672 | allows to tell Buildroot to use an existing directory as the | |
673 | source directory for a particular package. See the Buildroot | |
674 | documentation for more details on this feature. | |
ee0246e1 | 675 | |
5538e476 | 676 | config BR2_GLOBAL_PATCH_DIR |
5d36710e | 677 | string "global patch and hash directories" |
5538e476 | 678 | help |
65f9b937 | 679 | You may specify a space separated list of one or more |
5d36710e YM |
680 | directories containing global package patches and/or hashes. |
681 | For a specific version <packageversion> of a specific package | |
682 | <packagename>, patches are looked up as follows: | |
5538e476 | 683 | |
65f9b937 MK |
684 | First, the default Buildroot patch set for the package is |
685 | applied from the package's directory in Buildroot. | |
5538e476 | 686 | |
bc4f79d6 RB |
687 | Then for every directory - <global-patch-dir> - that exists in |
688 | BR2_GLOBAL_PATCH_DIR, if the directory | |
65f9b937 MK |
689 | <global-patch-dir>/<packagename>/<packageversion>/ exists, |
690 | then all *.patch files in this directory will be applied. | |
5538e476 | 691 | |
65f9b937 MK |
692 | Otherwise, if the directory <global-patch-dir>/<packagename> |
693 | exists, then all *.patch files in the directory will be | |
694 | applied. | |
5538e476 | 695 | |
5d36710e YM |
696 | The hash files are looked up similarly to the patches. |
697 | ||
4ac8f78d TP |
698 | menu "Advanced" |
699 | ||
3f1b965b BF |
700 | config BR2_FORCE_HOST_BUILD |
701 | bool "Force the building of host dependencies" | |
702 | help | |
703 | Build all available host dependencies, even if they are | |
704 | already installed on the system. | |
705 | ||
706 | This option can be used to ensure that the download cache of | |
707 | source archives for packages remain consistent between | |
708 | different build hosts. | |
709 | ||
710 | This option will increase build time. | |
711 | ||
e091e318 YM |
712 | config BR2_DOWNLOAD_FORCE_CHECK_HASHES |
713 | bool "Force all downloads to have a valid hash" | |
e091e318 | 714 | help |
e091e318 YM |
715 | Say 'y' here to enforce downloads to have at least one valid |
716 | hash (and of course, that all hashes be valid). | |
717 | ||
5b0c02a7 TP |
718 | By default, Buildroot checks hashes of all packages |
719 | downloaded, except those for which a custom version is | |
720 | used. | |
e091e318 | 721 | |
5b0c02a7 TP |
722 | With this option turned on, Buildroot will check hashes of |
723 | all packages, including those that use a custom version. In | |
724 | order to provide hashes for such packages, place additional | |
725 | hash files in BR2_GLOBAL_PATCH_DIR directories. | |
e091e318 | 726 | |
71574a65 GC |
727 | config BR2_REPRODUCIBLE |
728 | bool "Make the build reproducible (experimental)" | |
6393b690 YM |
729 | # SOURCE_DATE_EPOCH support in toolchain-wrapper requires GCC 4.4 |
730 | depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_4 | |
a446ab74 JG |
731 | help |
732 | This option will remove all sources of non-reproducibility | |
733 | from the build process. For a given Buildroot configuration, | |
734 | this allows to generate exactly identical binaries from one | |
735 | build to the other, including on different machines. | |
736 | ||
bedb1610 JP |
737 | The current implementation is restricted to builds with the |
738 | same output directory. Many (absolute) paths are recorded in | |
739 | intermediary files, and it is very likely that some of these | |
740 | paths leak into the target rootfs. If you build with the | |
741 | same O=... path, however, the result is identical. | |
742 | ||
a446ab74 JG |
743 | This is labeled as an experimental feature, as not all |
744 | packages behave properly to ensure reproducibility. | |
71574a65 | 745 | |
c4e6d5c8 TP |
746 | config BR2_PER_PACKAGE_DIRECTORIES |
747 | bool "Use per-package directories (experimental)" | |
748 | help | |
749 | This option will change the build process of Buildroot | |
750 | package to use per-package target and host directories. | |
751 | ||
752 | This is useful for two related purposes: | |
753 | ||
754 | - Cleanly isolate the build of each package, so that a | |
755 | given package only "sees" the dependencies it has | |
756 | explicitly expressed, and not other packages that may | |
757 | have by chance been built before. | |
758 | ||
759 | - Enable top-level parallel build. | |
760 | ||
761 | This is labeled as an experimental feature, as not all | |
762 | packages behave properly with per-package directories. | |
763 | ||
8e5fb3fb | 764 | endmenu |
2d523c23 | 765 | |
3c427c64 TP |
766 | config BR2_TIME_BITS_64 |
767 | bool "Build Y2038-ready code" | |
768 | depends on BR2_TOOLCHAIN_USES_GLIBC && !BR2_ARCH_IS_64 | |
769 | help | |
770 | This option will pass -D_TIME_BITS=64 in the compiler flags | |
771 | to ensure the glibc C library uses a 64-bit representation | |
772 | for time_t and other time types, which ensures that | |
773 | programs/libraries will correctly handle time past year | |
774 | 2038. | |
775 | ||
776 | This option only has an effect with glibc >= 2.34, as | |
777 | earlier glibc versions did not have support for 64-bit | |
778 | time_t. | |
779 | ||
d3732cf4 MW |
780 | comment "Security Hardening Options" |
781 | ||
70dd4bd1 TP |
782 | config BR2_PIC_PIE_ARCH_SUPPORTS |
783 | bool | |
810ba387 | 784 | default y |
d120f844 RN |
785 | # Microblaze glibc toolchains don't work with PIC/PIE enabled |
786 | depends on !BR2_microblaze | |
6b4b63a5 RN |
787 | # Nios2 toolchains produce non working binaries with -fPIC |
788 | depends on !BR2_nios2 | |
70dd4bd1 TP |
789 | |
790 | config BR2_PIC_PIE | |
791 | bool "Build code with PIC/PIE" | |
792 | default y | |
793 | depends on BR2_PIC_PIE_ARCH_SUPPORTS | |
814f6e19 | 794 | depends on BR2_SHARED_LIBS |
de3fa438 | 795 | depends on BR2_TOOLCHAIN_SUPPORTS_PIE |
814f6e19 YM |
796 | help |
797 | Generate Position-Independent Code (PIC) and link | |
798 | Position-Independent Executables (PIE). | |
799 | ||
de3fa438 | 800 | comment "PIC/PIE needs a toolchain w/ PIE" |
70dd4bd1 | 801 | depends on BR2_PIC_PIE_ARCH_SUPPORTS |
de3fa438 FF |
802 | depends on BR2_SHARED_LIBS |
803 | depends on !BR2_TOOLCHAIN_SUPPORTS_PIE | |
804 | ||
d3732cf4 MW |
805 | choice |
806 | bool "Stack Smashing Protection" | |
50739073 | 807 | default BR2_SSP_ALL if BR2_ENABLE_SSP # legacy |
810ba387 FF |
808 | default BR2_SSP_STRONG if BR2_TOOLCHAIN_HAS_SSP_STRONG |
809 | default BR2_SSP_REGULAR | |
d3732cf4 MW |
810 | depends on BR2_TOOLCHAIN_HAS_SSP |
811 | help | |
812 | Enable stack smashing protection support using GCC's | |
813 | -fstack-protector option family. | |
814 | ||
815 | See | |
816 | http://www.linuxfromscratch.org/hints/downloads/files/ssp.txt | |
817 | for details. | |
818 | ||
819 | Note that this requires the toolchain to have SSP support. | |
820 | This is always the case for glibc and eglibc toolchain, but is | |
821 | optional in uClibc toolchains. | |
822 | ||
823 | config BR2_SSP_NONE | |
824 | bool "None" | |
825 | help | |
826 | Disable stack-smashing protection. | |
827 | ||
828 | config BR2_SSP_REGULAR | |
829 | bool "-fstack-protector" | |
830 | help | |
831 | Emit extra code to check for buffer overflows, such as stack | |
832 | smashing attacks. This is done by adding a guard variable to | |
833 | functions with vulnerable objects. This includes functions | |
834 | that call alloca, and functions with buffers larger than 8 | |
835 | bytes. The guards are initialized when a function is entered | |
836 | and then checked when the function exits. If a guard check | |
837 | fails, an error message is printed and the program exits. | |
838 | ||
839 | config BR2_SSP_STRONG | |
840 | bool "-fstack-protector-strong" | |
058dc9aa | 841 | depends on BR2_TOOLCHAIN_HAS_SSP_STRONG |
d3732cf4 MW |
842 | help |
843 | Like -fstack-protector but includes additional functions to be | |
844 | protected - those that have local array definitions, or have | |
845 | references to local frame addresses. | |
846 | ||
51db8974 YM |
847 | -fstack-protector-strong officially appeared in gcc 4.9, but |
848 | some vendors have backported -fstack-protector-strong to older | |
849 | versions of gcc. | |
d3732cf4 MW |
850 | |
851 | config BR2_SSP_ALL | |
852 | bool "-fstack-protector-all" | |
853 | help | |
854 | Like -fstack-protector except that all functions are | |
855 | protected. This option might have a significant performance | |
856 | impact on the compiled binaries. | |
857 | ||
858 | endchoice | |
859 | ||
b8ec113e YM |
860 | config BR2_SSP_OPTION |
861 | string | |
862 | default "-fstack-protector" if BR2_SSP_REGULAR | |
863 | default "-fstack-protector-strong" if BR2_SSP_STRONG | |
864 | default "-fstack-protector-all" if BR2_SSP_ALL | |
865 | ||
d3732cf4 MW |
866 | comment "Stack Smashing Protection needs a toolchain w/ SSP" |
867 | depends on !BR2_TOOLCHAIN_HAS_SSP | |
868 | ||
20a4583e MW |
869 | choice |
870 | bool "RELRO Protection" | |
810ba387 FF |
871 | default BR2_RELRO_FULL if BR2_TOOLCHAIN_SUPPORTS_PIE |
872 | default BR2_RELRO_PARTIAL | |
20a4583e MW |
873 | depends on BR2_SHARED_LIBS |
874 | help | |
d6109172 RM |
875 | Enable a link-time protection know as RELRO (RELocation Read |
876 | Only) which helps to protect from certain type of exploitation | |
877 | techniques altering the content of some ELF sections. | |
20a4583e MW |
878 | |
879 | config BR2_RELRO_NONE | |
880 | bool "None" | |
881 | help | |
882 | Disables Relocation link-time protections. | |
883 | ||
884 | config BR2_RELRO_PARTIAL | |
885 | bool "Partial" | |
886 | help | |
887 | This option makes the dynamic section not writeable after | |
888 | initialization (with almost no performance penalty). | |
889 | ||
890 | config BR2_RELRO_FULL | |
891 | bool "Full" | |
70dd4bd1 | 892 | depends on BR2_PIC_PIE_ARCH_SUPPORTS |
de3fa438 | 893 | depends on BR2_TOOLCHAIN_SUPPORTS_PIE |
814f6e19 | 894 | select BR2_PIC_PIE |
20a4583e | 895 | help |
d6109172 RM |
896 | This option includes the partial configuration, but also marks |
897 | the GOT as read-only at the cost of initialization time during | |
898 | program loading, i.e every time an executable is started. | |
20a4583e | 899 | |
de3fa438 | 900 | comment "RELRO Full needs a toolchain w/ PIE" |
70dd4bd1 | 901 | depends on BR2_PIC_PIE_ARCH_SUPPORTS |
de3fa438 FF |
902 | depends on !BR2_TOOLCHAIN_SUPPORTS_PIE |
903 | ||
20a4583e MW |
904 | endchoice |
905 | ||
906 | comment "RELocation Read Only (RELRO) needs shared libraries" | |
907 | depends on !BR2_SHARED_LIBS | |
908 | ||
2e94aeed RN |
909 | config BR2_FORTIFY_SOURCE_ARCH_SUPPORTS |
910 | bool | |
911 | default y | |
912 | # Microblaze glibc toolchains don't work with Fortify Source enabled | |
913 | depends on !BR2_microblaze | |
914 | ||
20a4583e MW |
915 | choice |
916 | bool "Buffer-overflow Detection (FORTIFY_SOURCE)" | |
810ba387 | 917 | default BR2_FORTIFY_SOURCE_1 |
2e94aeed | 918 | depends on BR2_FORTIFY_SOURCE_ARCH_SUPPORTS |
20a4583e MW |
919 | depends on BR2_TOOLCHAIN_USES_GLIBC |
920 | depends on !BR2_OPTIMIZE_0 | |
921 | help | |
922 | Enable the _FORTIFY_SOURCE macro which introduces additional | |
d6109172 RM |
923 | checks to detect buffer-overflows in the following standard |
924 | library functions: memcpy, mempcpy, memmove, memset, strcpy, | |
925 | stpcpy, strncpy, strcat, strncat, sprintf, vsprintf, snprintf, | |
926 | vsnprintf, gets. | |
20a4583e MW |
927 | |
928 | NOTE: This feature requires an optimization level of s/1/2/3/g | |
929 | ||
930 | Support for this feature has been present since GCC 4.x. | |
931 | ||
932 | config BR2_FORTIFY_SOURCE_NONE | |
933 | bool "None" | |
934 | help | |
935 | Disables additional checks to detect buffer-overflows. | |
936 | ||
937 | config BR2_FORTIFY_SOURCE_1 | |
938 | bool "Conservative" | |
a75ee0e8 RN |
939 | # gcc bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61164 |
940 | depends on !BR2_TOOLCHAIN_BUILDROOT || BR2_TOOLCHAIN_GCC_AT_LEAST_6 | |
20a4583e MW |
941 | help |
942 | This option sets _FORTIFY_SOURCE to 1 and only introduces | |
943 | checks that shouldn't change the behavior of conforming | |
944 | programs. Adds checks at compile-time only. | |
945 | ||
946 | config BR2_FORTIFY_SOURCE_2 | |
947 | bool "Aggressive" | |
a75ee0e8 RN |
948 | # gcc bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61164 |
949 | depends on !BR2_TOOLCHAIN_BUILDROOT || BR2_TOOLCHAIN_GCC_AT_LEAST_6 | |
20a4583e MW |
950 | help |
951 | This option sets _FORTIFY_SOURCES to 2 and some more | |
952 | checking is added, but some conforming programs might fail. | |
953 | Also adds checks at run-time (detected buffer overflow | |
954 | terminates the program) | |
955 | ||
2f54c2a8 JO |
956 | config BR2_FORTIFY_SOURCE_3 |
957 | bool "Extended" | |
958 | depends on BR2_TOOLCHAIN_GCC_AT_LEAST_12 | |
959 | help | |
960 | This option sets _FORTIFY_SOURCES to 3 and even more | |
961 | checking is added compared to level 2. Extends checks at | |
962 | run-time that can introduce an additional performance | |
963 | overhead. | |
964 | ||
20a4583e MW |
965 | endchoice |
966 | ||
967 | comment "Fortify Source needs a glibc toolchain and optimization" | |
2e94aeed | 968 | depends on BR2_FORTIFY_SOURCE_ARCH_SUPPORTS |
20a4583e | 969 | depends on (!BR2_TOOLCHAIN_USES_GLIBC || BR2_OPTIMIZE_0) |
1ac2cdd7 YM |
970 | endmenu |
971 | ||
6c3e3ad4 | 972 | source "system/Config.in" |
beb43c7d | 973 | |
24403857 | 974 | source "linux/Config.in" |
50100394 | 975 | |
24403857 | 976 | source "package/Config.in" |
d06e8022 | 977 | |
05852415 TP |
978 | source "fs/Config.in" |
979 | ||
649b5b92 TP |
980 | source "boot/Config.in" |
981 | ||
24403857 | 982 | source "package/Config.in.host" |
ebcfa987 AVEM |
983 | |
984 | source "Config.in.legacy" | |
8eb8aaf9 | 985 | |
edf32b02 YM |
986 | # br2-external menus definitions |
987 | source "$BR2_BASE_DIR/.br2-external.in.menus" |