1menu "Toolchain" 2 3# Invisible option that makes sure the toolchain package always gets 4# built 5config BR2_TOOLCHAIN 6 bool 7 default y 8 9# Should be selected for glibc or eglibc 10config BR2_TOOLCHAIN_USES_GLIBC 11 bool 12 select BR2_USE_WCHAR 13 select BR2_ENABLE_LOCALE 14 select BR2_TOOLCHAIN_HAS_FULL_GETTEXT 15 select BR2_TOOLCHAIN_HAS_THREADS 16 select BR2_TOOLCHAIN_HAS_THREADS_DEBUG 17 select BR2_TOOLCHAIN_HAS_THREADS_NPTL 18 select BR2_TOOLCHAIN_HAS_UCONTEXT 19 select BR2_TOOLCHAIN_SUPPORTS_PIE 20 21config BR2_TOOLCHAIN_USES_UCLIBC 22 bool 23 # ucontext is only available for a subset of the supported 24 # architectures 25 select BR2_TOOLCHAIN_HAS_UCONTEXT if BR2_ARM_CPU_HAS_ARM || BR2_i386 \ 26 || BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el \ 27 || BR2_sparc || BR2_x86_64 28 select BR2_TOOLCHAIN_SUPPORTS_PIE if !BR2_m68k && !BR2_microblaze && !BR2_STATIC_LIBS 29 30config BR2_TOOLCHAIN_USES_MUSL 31 bool 32 select BR2_USE_WCHAR 33 select BR2_ENABLE_LOCALE 34 select BR2_TOOLCHAIN_HAS_THREADS 35 select BR2_TOOLCHAIN_HAS_THREADS_DEBUG 36 select BR2_TOOLCHAIN_HAS_THREADS_NPTL 37 select BR2_TOOLCHAIN_SUPPORTS_PIE if !BR2_STATIC_LIBS 38 39choice 40 prompt "Toolchain type" 41 help 42 Select whether to use the toolchain provided by buildroot 43 or an external toolchain. 44 45 Some vendors provide toolchains in binary form, some in 46 source form. 47 48config BR2_TOOLCHAIN_BUILDROOT 49 bool "Buildroot toolchain" 50 depends on BR2_ARCH_HAS_TOOLCHAIN_BUILDROOT 51 52config BR2_TOOLCHAIN_EXTERNAL 53 bool "External toolchain" 54 help 55 Select if you want to use an existing cross-compiling 56 toolchain. Buildroot can either download automatically a 57 toolchain, or use an already installed toolchain. 58 59endchoice 60 61source "toolchain/toolchain-buildroot/Config.in" 62source "toolchain/toolchain-external/Config.in" 63 64# Generic toolchain options 65 66# we want gdb config in the middle of both source and external 67# toolchains, but mconf won't let us source the same file twice, 68# so put it here instead 69source "package/gdb/Config.in.host" 70 71comment "Toolchain Generic Options" 72 73# https://sourceware.org/bugzilla/show_bug.cgi?id=30730 74# Affect toolchains built with binutils 2.40, still not fixed. 75config BR2_TOOLCHAIN_HAS_BINUTILS_BUG_30730 76 bool 77 default y if BR2_m68k_cf 78 79# Atomic types can be: 80# - never lock-free 81# - sometimes lock-free 82# - always lock-free 83# see https://en.cppreference.com/w/c/atomic/ATOMIC_LOCK_FREE_consts 84# 85# On most architectures, gcc provides "always lock-free" atomic types, 86# but a few architectures are limited to "sometimes lock-free" 87# types. This hidden option allows to know if the architecture 88# provides "always lock-free" atomic types. 89config BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS 90 bool 91 default y 92 depends on !BR2_nios2 93 depends on !BR2_ARM_CPU_ARMV4 94 depends on !BR2_ARM_CPU_ARMV5 95 depends on !BR2_sparc_v8 96 depends on !BR2_m68k_cf5208 97 98# GCC uses thunk functions to adjust the 'this' pointer when calling 99# C++ member functions in classes derived with multiple inheritance. 100# Generation of thunk functions requires support from the compiler 101# back end. In the absence of that support target-independent code 102# in the C++ front end is used to generate thunk functions, but it 103# does not support vararg functions. 104# or1k will support it in the gcc mainline starting with gcc-9. 105config BR2_TOOLCHAIN_SUPPORTS_VARIADIC_MI_THUNK 106 bool 107 default y 108 depends on !BR2_or1k 109 depends on !BR2_xtensa 110 111# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43744. This bug 112# reappeared on gcc 9.x and is still not fixed on gcc 11.x 113config BR2_TOOLCHAIN_HAS_GCC_BUG_43744 114 bool 115 default y if !BR2_TOOLCHAIN_GCC_AT_LEAST_8 116 default y if BR2_TOOLCHAIN_GCC_AT_LEAST_9 117 depends on BR2_sh 118 119# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63261. This bug no 120# longer exists in gcc 8.x. 121config BR2_TOOLCHAIN_HAS_GCC_BUG_63261 122 bool 123 default y if BR2_microblaze 124 depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_8 125 126# Prior to gcc 7.x, exception_ptr, nested_exception and future from 127# libstdc++ would only be provided on architectures that support 128# always lock-free atomic ints. See 129# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64735. This issue has 130# been removed in GCC 7.x, where exception propagation is now 131# supported without lock-free atomic int. 132config BR2_TOOLCHAIN_HAS_GCC_BUG_64735 133 bool 134 default y if !BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS && \ 135 !BR2_TOOLCHAIN_GCC_AT_LEAST_7 136 137# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68485. This bug still 138# exists in gcc 12.x 139config BR2_TOOLCHAIN_HAS_GCC_BUG_68485 140 bool 141 default y if BR2_microblaze 142 143# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81426 144config BR2_TOOLCHAIN_HAS_GCC_BUG_81426 145 bool 146 default y if BR2_sh 147 148# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83143 149# Error: invalid operands (*UND* and .text sections) for `-' on sh4. 150# This bug no longer exists in gcc 10.x but reappeared on gcc 11.x and 151# it still not been fixed yet. 152config BR2_TOOLCHAIN_HAS_GCC_BUG_83143 153 bool 154 default y if !BR2_TOOLCHAIN_GCC_AT_LEAST_10 155 default y if BR2_TOOLCHAIN_GCC_AT_LEAST_11 156 depends on BR2_sh 157 158# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85180. This bug no 159# longer exists in gcc 8.x. 160config BR2_TOOLCHAIN_HAS_GCC_BUG_85180 161 bool 162 default y if BR2_microblaze 163 depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_8 164 165# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85862 166# An infinite loop exists in the find_base_term() logic of 6.x 167# on microblaze. http://autobuild.buildroot.net/results/158e8ebb39713e1b436a5cc1a1916f46c30694df/ 168config BR2_TOOLCHAIN_HAS_GCC_BUG_85862 169 bool 170 default y if BR2_microblaze 171 depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_7 172 173# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90620 174# ICE: in do_output_reload, at reload1.c:7978 on microblaze. 175# This bug no longer exists in gcc 10.x but reappeared in gcc 11.x 176config BR2_TOOLCHAIN_HAS_GCC_BUG_90620 177 bool 178 default y if BR2_microblaze 179 depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_10 \ 180 || BR2_TOOLCHAIN_GCC_AT_LEAST_11 181 182# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93847 183# ICE: compiler error: Segmentation fault on Nios II. This bug 184# no longer exists in gcc 9.x. 185config BR2_TOOLCHAIN_HAS_GCC_BUG_93847 186 bool 187 default y if BR2_nios2 && !BR2_TOOLCHAIN_GCC_AT_LEAST_9 188 189# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99410 190# Error: branch offset out of range on Nios II. This bug 191# no longer exists in gcc 8.x but reappeared on gcc 9.x and still exists 192# on gcc 12.x 193config BR2_TOOLCHAIN_HAS_GCC_BUG_99410 194 bool 195 default y if !BR2_TOOLCHAIN_GCC_AT_LEAST_8 196 default y if BR2_TOOLCHAIN_GCC_AT_LEAST_9 197 depends on BR2_nios2 198 199# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101737 200# ICE: SH4 -Os causes internal compiler error. This bug 201# still exists in gcc = 11.1.0 202config BR2_TOOLCHAIN_HAS_GCC_BUG_101737 203 bool 204 default y if BR2_sh 205 206# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101915 207# ICE: in extract_insn, at recog.c:2294 on microblaze. 208# This bug still exists in gcc = 12.1.0 209config BR2_TOOLCHAIN_HAS_GCC_BUG_101915 210 bool 211 default y if BR2_microblaze 212 213# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101916 214# ICE: on SH4: Segmentation fault signal terminated program cc1. 215# This bug still exists in gcc = 11.1.0 216config BR2_TOOLCHAIN_HAS_GCC_BUG_101916 217 bool 218 default y if BR2_sh4 219 220# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101952 221# ICE: on SH4: unaligned opcodes detected in executable segment. 222# This bug still exists in gcc = 11.1.0 223config BR2_TOOLCHAIN_HAS_GCC_BUG_101952 224 bool 225 default y if BR2_sh4 226 227# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104028 228# ICE: on M68K: Error: value -16034 out of range 229# This bug still exists in gcc = 11.1.0 230config BR2_TOOLCHAIN_HAS_GCC_BUG_104028 231 bool 232 default y if BR2_m68k 233 234# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107728 235# https://sourceware.org/bugzilla/show_bug.cgi?id=29621 236config BR2_TOOLCHAIN_HAS_GCC_BUG_107728 237 bool 238 default y if BR2_microblazebe || BR2_microblazeel \ 239 || BR2_mips || BR2_mipsel \ 240 || BR2_nios2 \ 241 || BR2_or1k \ 242 || BR2_sh 243 depends on BR2_TOOLCHAIN_USES_GLIBC 244 depends on BR2_OPTIMIZE_0 245 246# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110934 247# ICE: on M68K: in change_address_1, at emit-rtl.cc:2287 248# This bug exists in gcc = 12.3.0 and gcc = 13.2.0 249config BR2_TOOLCHAIN_HAS_GCC_BUG_110934 250 bool 251 default y if BR2_m68k 252 253# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111001 254# ICE: on SH4: during RTL pass: sh_treg_combine2 255# This bug exist in gcc = 13.2.0 256config BR2_TOOLCHAIN_HAS_GCC_BUG_111001 257 bool 258 default y if BR2_sh 259 depends on BR2_TOOLCHAIN_GCC_AT_LEAST_13 260 depends on BR2_OPTIMIZE_1 || \ 261 BR2_OPTIMIZE_2 || \ 262 BR2_OPTIMIZE_3 263 264config BR2_TOOLCHAIN_HAS_NATIVE_RPC 265 bool 266 267config BR2_USE_WCHAR 268 bool 269 270config BR2_ENABLE_LOCALE 271 bool 272 273config BR2_INSTALL_LIBSTDCPP 274 bool 275 276config BR2_TOOLCHAIN_HAS_DLANG 277 bool 278 279config BR2_TOOLCHAIN_HAS_FORTRAN 280 bool 281 282config BR2_TOOLCHAIN_HAS_THREADS 283 bool 284 285config BR2_TOOLCHAIN_HAS_THREADS_DEBUG 286 bool 287 288config BR2_TOOLCHAIN_HAS_THREADS_NPTL 289 bool 290 291config BR2_TOOLCHAIN_HAS_SSP 292 bool 293 294config BR2_TOOLCHAIN_HAS_SSP_STRONG 295 bool 296 default y if BR2_TOOLCHAIN_HAS_SSP && BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 297 298# This boolean is true if the toolchain provides a full featured 299# ucontext implementation with ucontext_t and {get,make,set}context 300config BR2_TOOLCHAIN_HAS_UCONTEXT 301 bool 302 303config BR2_TOOLCHAIN_HAS_OPENMP 304 bool 305 306config BR2_TOOLCHAIN_SUPPORTS_PIE 307 bool 308 309config BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY 310 bool "Copy gconv libraries" 311 depends on BR2_TOOLCHAIN_USES_GLIBC 312 help 313 The gconv libraries are used to convert between different 314 character sets (charsets). 315 316 Say 'y' if you need to store and/or display different 317 charsets. 318 319config BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_LIST 320 string "Gconv libraries to copy" 321 depends on BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY 322 help 323 Set to the list of gconv libraries to copy. 324 Leave empty to copy all gconv libraries. 325 326 Specify only the basename of the libraries, leave 327 out the .so extension. Eg.: 328 IBM850 ISO8859-15 UNICODE 329 330 Note: the full set of gconv libs are ~8MiB (on ARM). 331 332config BR2_TOOLCHAIN_EXTRA_LIBS 333 string "Extra toolchain libraries to be copied to target" 334 default BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS if BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS != "" # legacy 335 depends on !BR2_STATIC_LIBS 336 help 337 If your toolchain provides extra libraries that need to be 338 copied to the target filesystem, enter them here, separated 339 by spaces. The library should not include a suffix or any 340 type of pre/post wildcard. 341 342 Examples where this can be useful is for adding debug 343 libraries to the target like the GCC libsanitizer. 344 e.g. "libasan liblsan libtsan libubsan" 345 346# This boolean is true if the toolchain provides a built-in full 347# featured gettext implementation (glibc), and false if only a stub 348# gettext implementation is provided (uclibc, musl) 349config BR2_TOOLCHAIN_HAS_FULL_GETTEXT 350 bool 351 352config BR2_TARGET_OPTIMIZATION 353 string "Target Optimizations" 354 default "" 355 help 356 Optimizations to use when building for the target host. 357 NOTE: gcc optimization level is defined in build options. 358 359config BR2_TARGET_LDFLAGS 360 string "Target linker options" 361 help 362 Extra options to pass to the linker when building for the 363 target. 364 365 Note that options with a '$' sign (eg. 366 -Wl,-rpath='$ORIGIN/../lib') are not supported. 367 368# Options for packages to depend on, if they require at least a 369# specific version of the kernel headers. 370# Toolchains should choose the adequate option (ie. the highest 371# version, not all of them). 372config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 373 bool 374 375config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1 376 bool 377 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 378 379config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2 380 bool 381 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1 382 383config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3 384 bool 385 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2 386 387config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 388 bool 389 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3 390 391config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5 392 bool 393 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 394 395config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6 396 bool 397 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5 398 399config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 400 bool 401 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6 402 403config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8 404 bool 405 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 406 407config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9 408 bool 409 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8 410 411config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 412 bool 413 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9 414 415config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11 416 bool 417 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 418 419config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 420 bool 421 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11 422 423config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13 424 bool 425 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 426 427config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14 428 bool 429 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13 430 431config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15 432 bool 433 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14 434 435config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 436 bool 437 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15 438 439config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 440 bool 441 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 442 443config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 444 bool 445 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 446 447config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19 448 bool 449 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 450 451config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0 452 bool 453 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19 454 455config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1 456 bool 457 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0 458 459config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2 460 bool 461 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1 462 463config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3 464 bool 465 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2 466 467config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4 468 bool 469 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3 470 471config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5 472 bool 473 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4 474 475config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6 476 bool 477 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5 478 479config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7 480 bool 481 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6 482 483config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8 484 bool 485 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7 486 487config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9 488 bool 489 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8 490 491config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10 492 bool 493 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9 494 495config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11 496 bool 497 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10 498 499config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 500 bool 501 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11 502 503config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13 504 bool 505 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 506 507config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14 508 bool 509 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13 510 511config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15 512 bool 513 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14 514 515config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16 516 bool 517 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15 518 519config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17 520 bool 521 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16 522 523config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18 524 bool 525 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17 526 527config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 528 bool 529 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18 530 531config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20 532 bool 533 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 534 535config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0 536 bool 537 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20 538 539config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1 540 bool 541 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0 542 543config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2 544 bool 545 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1 546 547config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3 548 bool 549 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2 550 551config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4 552 bool 553 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3 554 555config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5 556 bool 557 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4 558 559config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6 560 bool 561 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5 562 563config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7 564 bool 565 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6 566 567config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8 568 bool 569 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7 570 571config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9 572 bool 573 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8 574 575config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10 576 bool 577 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9 578 579config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_11 580 bool 581 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10 582 583config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_12 584 bool 585 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_11 586 587config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_13 588 bool 589 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_12 590 591config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14 592 bool 593 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_13 594 595config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 596 bool 597 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14 598 599config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_16 600 bool 601 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 602 603config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_17 604 bool 605 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_16 606 607config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_18 608 bool 609 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_17 610 611config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_19 612 bool 613 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_18 614 615config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_0 616 bool 617 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_19 618 619config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_1 620 bool 621 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_0 622 623config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_2 624 bool 625 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_1 626 627config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_3 628 bool 629 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_2 630 631config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_4 632 bool 633 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_3 634 635config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_5 636 bool 637 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_4 638 639config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_6 640 bool 641 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_5 642 643config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_7 644 bool 645 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_6 646 647config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_8 648 bool 649 select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_7 650 select BR2_TOOLCHAIN_HEADERS_LATEST 651 652# This should be selected by the latest version, above, to indicate that 653# Buildroot does not know of more recent headers than the ones selected. 654# This allows using toolchains with headers more recent than Buildroot 655# knows about, while still enforcing strict check for older headers. 656config BR2_TOOLCHAIN_HEADERS_LATEST 657 bool 658 659# This order guarantees that the highest version is set, as kconfig 660# stops affecting a value on the first matching default. 661config BR2_TOOLCHAIN_HEADERS_AT_LEAST 662 string 663 default "6.8" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_8 664 default "6.7" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_7 665 default "6.6" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_6 666 default "6.5" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_5 667 default "6.4" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_4 668 default "6.3" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_3 669 default "6.2" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_2 670 default "6.1" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_1 671 default "6.0" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_0 672 default "5.19" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_19 673 default "5.18" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_18 674 default "5.17" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_17 675 default "5.16" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_16 676 default "5.15" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15 677 default "5.14" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14 678 default "5.13" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_13 679 default "5.12" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_12 680 default "5.11" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_11 681 default "5.10" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10 682 default "5.9" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9 683 default "5.8" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8 684 default "5.7" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7 685 default "5.6" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6 686 default "5.5" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5 687 default "5.4" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4 688 default "5.3" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3 689 default "5.2" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2 690 default "5.1" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1 691 default "5.0" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0 692 default "4.20" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20 693 default "4.19" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19 694 default "4.18" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18 695 default "4.17" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17 696 default "4.16" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16 697 default "4.15" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15 698 default "4.14" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14 699 default "4.13" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13 700 default "4.12" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12 701 default "4.11" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11 702 default "4.10" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10 703 default "4.9" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9 704 default "4.8" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8 705 default "4.7" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7 706 default "4.6" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6 707 default "4.5" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5 708 default "4.4" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4 709 default "4.3" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3 710 default "4.2" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2 711 default "4.1" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1 712 default "4.0" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0 713 default "3.19" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19 714 default "3.18" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18 715 default "3.17" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 716 default "3.16" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16 717 default "3.15" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15 718 default "3.14" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14 719 default "3.13" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13 720 default "3.12" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 721 default "3.11" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11 722 default "3.10" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 723 default "3.9" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9 724 default "3.8" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8 725 default "3.7" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7 726 default "3.6" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6 727 default "3.5" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5 728 default "3.4" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 729 default "3.3" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3 730 default "3.2" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2 731 default "3.1" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1 732 default "3.0" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0 733 default "2.6" 734 735config BR2_TOOLCHAIN_GCC_AT_LEAST_4_3 736 bool 737 738config BR2_TOOLCHAIN_GCC_AT_LEAST_4_4 739 bool 740 select BR2_TOOLCHAIN_GCC_AT_LEAST_4_3 741 742config BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 743 bool 744 select BR2_TOOLCHAIN_GCC_AT_LEAST_4_4 745 746config BR2_TOOLCHAIN_GCC_AT_LEAST_4_6 747 bool 748 select BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 749 750config BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 751 bool 752 select BR2_TOOLCHAIN_GCC_AT_LEAST_4_6 753 754config BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 755 bool 756 select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 757 758config BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 759 bool 760 select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 761 762config BR2_TOOLCHAIN_GCC_AT_LEAST_5 763 bool 764 select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 765 766config BR2_TOOLCHAIN_GCC_AT_LEAST_6 767 bool 768 select BR2_TOOLCHAIN_GCC_AT_LEAST_5 769 770config BR2_TOOLCHAIN_GCC_AT_LEAST_7 771 bool 772 select BR2_TOOLCHAIN_GCC_AT_LEAST_6 773 774config BR2_TOOLCHAIN_GCC_AT_LEAST_8 775 bool 776 select BR2_TOOLCHAIN_GCC_AT_LEAST_7 777 778config BR2_TOOLCHAIN_GCC_AT_LEAST_9 779 bool 780 select BR2_TOOLCHAIN_GCC_AT_LEAST_8 781 782config BR2_TOOLCHAIN_GCC_AT_LEAST_10 783 bool 784 select BR2_TOOLCHAIN_GCC_AT_LEAST_9 785 786config BR2_TOOLCHAIN_GCC_AT_LEAST_11 787 bool 788 select BR2_TOOLCHAIN_GCC_AT_LEAST_10 789 790config BR2_TOOLCHAIN_GCC_AT_LEAST_12 791 bool 792 select BR2_TOOLCHAIN_GCC_AT_LEAST_11 793 794config BR2_TOOLCHAIN_GCC_AT_LEAST_13 795 bool 796 select BR2_TOOLCHAIN_GCC_AT_LEAST_12 797 798config BR2_TOOLCHAIN_GCC_AT_LEAST_14 799 bool 800 select BR2_TOOLCHAIN_GCC_AT_LEAST_13 801 802# This order guarantees that the highest version is set, as kconfig 803# stops affecting a value on the first matching default. 804config BR2_TOOLCHAIN_GCC_AT_LEAST 805 string 806 default "14" if BR2_TOOLCHAIN_GCC_AT_LEAST_14 807 default "13" if BR2_TOOLCHAIN_GCC_AT_LEAST_13 808 default "12" if BR2_TOOLCHAIN_GCC_AT_LEAST_12 809 default "11" if BR2_TOOLCHAIN_GCC_AT_LEAST_11 810 default "10" if BR2_TOOLCHAIN_GCC_AT_LEAST_10 811 default "9" if BR2_TOOLCHAIN_GCC_AT_LEAST_9 812 default "8" if BR2_TOOLCHAIN_GCC_AT_LEAST_8 813 default "7" if BR2_TOOLCHAIN_GCC_AT_LEAST_7 814 default "6" if BR2_TOOLCHAIN_GCC_AT_LEAST_6 815 default "5" if BR2_TOOLCHAIN_GCC_AT_LEAST_5 816 default "4.9" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 817 default "4.8" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 818 default "4.7" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 819 default "4.6" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_6 820 default "4.5" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 821 default "4.4" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_4 822 default "4.3" if BR2_TOOLCHAIN_GCC_AT_LEAST_4_3 823 824config BR2_TOOLCHAIN_HAS_MNAN_OPTION 825 bool 826 default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 827 828config BR2_TOOLCHAIN_HAS_SYNC_1 829 bool 830 default y 831 depends on !BR2_m68k_cf 832 depends on !BR2_microblaze 833 depends on !BR2_sparc 834 depends on !(BR2_arc && !BR2_ARC_ATOMIC_EXT) 835 836config BR2_TOOLCHAIN_HAS_SYNC_2 837 bool 838 default y if BR2_TOOLCHAIN_HAS_SYNC_1 839 840config BR2_TOOLCHAIN_HAS_SYNC_4 841 bool 842 default y 843 depends on !BR2_m68k_cf 844 depends on !BR2_sparc 845 depends on !(BR2_arc && !BR2_ARC_ATOMIC_EXT) 846 847# The availability of __sync for 8-byte types on ARM is somewhat 848# complicated: 849# 850# - It appeared in gcc starting with gcc 4.7. 851# 852# - On ARMv7, there is no problem, it can be directly implemented in 853# userspace. 854# 855# - On < ARMv7, it requires help from the kernel. Unfortunately, the 856# libgcc code implementing 8-byte __sync with the help from the 857# kernel calls __write() when a failure occurs, which is a function 858# internal to glibc, not available in uClibc and musl. This means 859# that the 8-byte __sync operations are not available on < ARMv7 860# with uClibc and musl. This problem was fixed as part of gcc 861# PR68059, which was backported to the gcc 5 branch, but isn't yet 862# part of any gcc 5.x release. 863# 864config BR2_TOOLCHAIN_ARM_HAS_SYNC_8 865 bool 866 default y 867 depends on BR2_arm || BR2_armeb 868 depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 869 depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_ARM_CPU_ARMV7A 870 871# 8-byte intrinsics available on most x86 CPUs, except a few old ones 872config BR2_TOOLCHAIN_X86_HAS_SYNC_8 873 bool 874 default y 875 depends on BR2_i386 876 depends on !BR2_x86_i486 877 depends on !BR2_x86_c3 878 depends on !BR2_x86_winchip_c6 879 depends on !BR2_x86_winchip2 880 881# 8-byte intrinsics available: 882# - On all 64 bits architecture 883# - On a certain combinations of ARM platforms 884# - On certain x86 32 bits CPUs 885config BR2_TOOLCHAIN_HAS_SYNC_8 886 bool 887 default y if BR2_ARCH_IS_64 888 default y if BR2_TOOLCHAIN_ARM_HAS_SYNC_8 889 default y if BR2_TOOLCHAIN_X86_HAS_SYNC_8 890 891# libatomic is available since gcc 4.8, when thread support is enabled. 892# However, the gcc logic in libatomic/configure.tgt does not recognize 893# "uclinux" as a valid OS part of the target tuple, and therefore it 894# does not build libatomic. The "uclinux" part of the tuple is used by 895# Buildroot when BR2_BINFMT_FLAT=y. This broken logic has only been 896# fixed for arm since gcc 10.1.0. 897config BR2_TOOLCHAIN_HAS_LIBATOMIC 898 bool 899 default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 900 depends on BR2_TOOLCHAIN_HAS_THREADS 901 depends on BR2_BINFMT_ELF || \ 902 (BR2_BINFMT_FLAT && BR2_arm && \ 903 BR2_TOOLCHAIN_GCC_AT_LEAST_10) 904 905# __atomic intrinsics are available: 906# - with gcc 4.8, either through built-ins or libatomic, on all 907# architectures. Since we don't want to separate the cases where 908# libatomic is needed vs. not needed, we simplify thing and only 909# support situations where libatomic is available, even if on some 910# architectures libatomic is not strictly needed as all __atomic 911# intrinsics might be built-in. The only case where libatomic is 912# missing entirely is when the toolchain does not have support for 913# threads. However, a package that does not need threads but still 914# uses atomics is quite a corner case, which does not warrant the 915# added complexity. 916# - with gcc 4.7, libatomic did not exist, so only built-ins are 917# available. This means that __atomic can only be used in a subset 918# of the architectures 919config BR2_TOOLCHAIN_HAS_ATOMIC 920 bool 921 default y if BR2_TOOLCHAIN_HAS_LIBATOMIC 922 default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_arm 923 default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_armeb 924 default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_xtensa 925 default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_ARCH_IS_64 926 927# - libquadmath is not needed/available on all architectures (but gcc 928# correctly handles this already). 929# - At least, libquadmath is available on: 930# - i*86 931# - x86_64 932# - PowerPC with vector scalar (VSX) instruction set 933# - When available, libquadmath requires wchar support. 934config BR2_TOOLCHAIN_HAS_LIBQUADMATH 935 bool 936 default y if BR2_i386 || BR2_x86_64 937 default y if BR2_POWERPC_CPU_HAS_VSX 938 939comment "Bare metal toolchain" 940 941config BR2_TOOLCHAIN_BARE_METAL_BUILDROOT 942 bool "Build a bare metal toolchain" 943 select BR2_PACKAGE_NEWLIB_BARE_METAL 944 help 945 Select if you need a bare-metal toolchain for building 946 platform specific firmware images. 947 948source "toolchain/toolchain-bare-metal-buildroot/Config.in" 949 950endmenu 951