1# General configuration options 2 3# Copyright (c) 2014-2015 Wind River Systems, Inc. 4# Copyright (c) 2016 Intel Corporation 5# Copyright (c) 2023 Nordic Semiconductor ASA 6# SPDX-License-Identifier: Apache-2.0 7 8source "Kconfig.constants" 9 10osource "${APPLICATION_SOURCE_DIR}/VERSION" 11 12# Include Kconfig.defconfig files first so that they can override defaults and 13# other symbol/choice properties by adding extra symbol/choice definitions. 14# After merging all definitions for a symbol/choice, Kconfig picks the first 15# property (e.g. the first default) with a satisfied condition. 16# 17# Shield defaults should have precedence over board defaults, which should have 18# precedence over SoC defaults, so include them in that order. 19# 20# $ARCH and $KCONFIG_BOARD_DIR will be glob patterns when building documentation. 21# This loads custom shields defconfigs (from BOARD_ROOT) 22osource "$(KCONFIG_BINARY_DIR)/Kconfig.shield.defconfig" 23# This loads Zephyr base shield defconfigs 24source "boards/shields/*/Kconfig.defconfig" 25 26osource "$(KCONFIG_BOARD_DIR)/Kconfig.defconfig" 27 28# This loads Zephyr specific SoC root defconfigs 29source "$(KCONFIG_BINARY_DIR)/soc/Kconfig.defconfig" 30 31# This loads the toolchain defconfigs 32osource "$(TOOLCHAIN_KCONFIG_DIR)/Kconfig.defconfig" 33# This loads the testsuite defconfig 34source "subsys/testsuite/Kconfig.defconfig" 35 36# This should be early since the autogen Kconfig.dts symbols may get 37# used by modules 38source "dts/Kconfig" 39 40menu "Modules" 41 42source "modules/Kconfig" 43 44endmenu 45 46source "boards/Kconfig" 47source "soc/Kconfig" 48source "arch/Kconfig" 49source "kernel/Kconfig" 50source "drivers/Kconfig" 51source "lib/Kconfig" 52source "subsys/Kconfig" 53 54osource "$(TOOLCHAIN_KCONFIG_DIR)/Kconfig" 55 56menu "Build and Link Features" 57 58menu "Linker Options" 59 60choice LINKER_ORPHAN_CONFIGURATION 61 prompt "Linker Orphan Section Handling" 62 default LINKER_ORPHAN_SECTION_WARN 63 64config LINKER_ORPHAN_SECTION_PLACE 65 bool "Place" 66 help 67 Linker puts orphan sections in place without warnings 68 or errors. 69 70config LINKER_ORPHAN_SECTION_WARN 71 bool "Warn" 72 help 73 Linker places the orphan sections in output and issues 74 warning about those sections. 75 76config LINKER_ORPHAN_SECTION_ERROR 77 bool "Error" 78 help 79 Linker exits with error when an orphan section is found. 80 81endchoice 82 83config HAS_FLASH_LOAD_OFFSET 84 bool 85 help 86 This option is selected by targets having a FLASH_LOAD_OFFSET 87 and FLASH_LOAD_SIZE. 88 89if HAS_FLASH_LOAD_OFFSET 90 91config USE_DT_CODE_PARTITION 92 bool "Link application into /chosen/zephyr,code-partition from devicetree" 93 help 94 When enabled, the application will be linked into the flash partition 95 selected by the zephyr,code-partition property in /chosen in devicetree. 96 When this is disabled, the flash load offset and size can be set manually 97 below. 98 99# Workaround for not being able to have commas in macro arguments 100DT_CHOSEN_Z_CODE_PARTITION := zephyr,code-partition 101 102config FLASH_LOAD_OFFSET 103 # Only user-configurable when USE_DT_CODE_PARTITION is disabled 104 hex "Kernel load offset" if !USE_DT_CODE_PARTITION 105 default $(dt_chosen_reg_addr_hex,$(DT_CHOSEN_Z_CODE_PARTITION)) if USE_DT_CODE_PARTITION 106 default 0 107 help 108 This option specifies the byte offset from the beginning of flash that 109 the kernel should be loaded into. Changing this value from zero will 110 affect the Zephyr image's link, and will decrease the total amount of 111 flash available for use by application code. 112 113 If unsure, leave at the default value 0. 114 115config FLASH_LOAD_SIZE 116 # Only user-configurable when USE_DT_CODE_PARTITION is disabled 117 hex "Kernel load size" if !USE_DT_CODE_PARTITION 118 default $(dt_chosen_reg_size_hex,$(DT_CHOSEN_Z_CODE_PARTITION)) if USE_DT_CODE_PARTITION 119 default 0 120 help 121 If non-zero, this option specifies the size, in bytes, of the flash 122 area that the Zephyr image will be allowed to occupy. If zero, the 123 image will be able to occupy from the FLASH_LOAD_OFFSET to the end of 124 the device. 125 126 If unsure, leave at the default value 0. 127 128endif # HAS_FLASH_LOAD_OFFSET 129 130config ROM_START_OFFSET 131 hex 132 prompt "ROM start offset" if !BOOTLOADER_MCUBOOT 133 default 0x200 if BOOTLOADER_MCUBOOT 134 default 0 135 help 136 If the application is built for chain-loading by a bootloader this 137 variable is required to be set to value that leaves sufficient 138 space between the beginning of the image and the start of the first 139 section to store an image header or any other metadata. 140 In the particular case of the MCUboot bootloader this reserves enough 141 space to store the image header, which should also meet vector table 142 alignment requirements on most ARM targets, although some targets 143 may require smaller or larger values. 144 145config ROM_END_OFFSET 146 hex "ROM end offset" 147 default 0 148 help 149 If non-zero, this option reduces the maximum size that the Zephyr image is allowed to 150 occupy, this is to allow for additional image storage which can be created and used by 151 other systems such as bootloaders (for MCUboot, this would include the image swap 152 fields and TLV storage at the end of the image). 153 154 If unsure, leave at the default value 0. 155 156config LD_LINKER_SCRIPT_SUPPORTED 157 bool 158 default y 159 160choice LINKER_SCRIPT 161 prompt "Linker script" 162 default LD_LINKER_TEMPLATE if LD_LINKER_SCRIPT_SUPPORTED 163 164config LD_LINKER_TEMPLATE 165 bool "LD template" 166 depends on LD_LINKER_SCRIPT_SUPPORTED 167 help 168 Select this option to use the LD linker script templates. 169 The templates are pre-processed by the C pre-processor to create the 170 final LD linker script. 171 172config CMAKE_LINKER_GENERATOR 173 bool "CMake generator" 174 depends on ARM 175 help 176 Select this option to use the Zephyr CMake linker script generator. 177 The linker configuration is written in CMake and the final linker 178 script will be generated by the toolchain specific linker generator. 179 For LD based linkers, this will be the ld generator, for ARMClang / 180 armlink based linkers it will be the scatter generator. 181 182endchoice 183 184config HAVE_CUSTOM_LINKER_SCRIPT 185 bool "Custom linker script provided" 186 help 187 Set this option if you have a custom linker script which needed to 188 be define in CUSTOM_LINKER_SCRIPT. 189 190config CUSTOM_LINKER_SCRIPT 191 string "Path to custom linker script" 192 depends on HAVE_CUSTOM_LINKER_SCRIPT 193 help 194 Path to the linker script to be used instead of the one define by the 195 board. 196 197 The linker script must be based on a version provided by Zephyr since 198 the kernel can expect a certain layout/certain regions. 199 200 This is useful when an application needs to add sections into the 201 linker script and avoid having to change the script provided by 202 Zephyr. 203 204config KERNEL_ENTRY 205 string "Kernel entry symbol" 206 default "__start" 207 help 208 Code entry symbol, to be set at linking phase. 209 210config LINKER_SORT_BY_ALIGNMENT 211 bool "Sort input sections by alignment" 212 default y 213 help 214 This turns on the linker flag to sort sections by alignment 215 in decreasing size of symbols. This helps to minimize 216 padding between symbols. 217 218config SRAM_VECTOR_TABLE 219 bool "Place the vector table in SRAM instead of flash" 220 help 221 The option specifies that the vector table should be placed at the 222 start of SRAM instead of the start of flash. 223 224config HAS_SRAM_OFFSET 225 bool 226 help 227 This option is selected by targets that require SRAM_OFFSET. 228 229config SRAM_OFFSET 230 hex "Kernel SRAM offset" if HAS_SRAM_OFFSET 231 default 0 232 help 233 This option specifies the byte offset from the beginning of SRAM 234 where the kernel begins. Changing this value from zero will affect 235 the Zephyr image's link, and will decrease the total amount of 236 SRAM available for use by application code. 237 238 If unsure, leave at the default value 0. 239 240menu "Linker Sections" 241 242config LINKER_USE_BOOT_SECTION 243 bool "Use Boot Linker Section" 244 help 245 If enabled, the symbols which are needed for the boot process 246 will be put into another linker section reserved for these 247 symbols. 248 249 Requires that boot sections exist in the architecture, SoC, 250 board or custom linker script. 251 252config LINKER_USE_PINNED_SECTION 253 bool "Use Pinned Linker Section" 254 help 255 If enabled, the symbols which need to be pinned in memory 256 will be put into another linker section reserved for pinned 257 symbols. During boot, the corresponding memory will be marked 258 as pinned. 259 260 Requires that pinned sections exist in the architecture, SoC, 261 board or custom linker script. 262 263config LINKER_USE_ONDEMAND_SECTION 264 bool "Use Evictable Linker Section" 265 depends on DEMAND_MAPPING 266 depends on !LINKER_USE_PINNED_SECTION 267 depends on !ARCH_MAPS_ALL_RAM 268 help 269 If enabled, the symbols which may be evicted from memory 270 will be put into a linker section reserved for on-demand symbols. 271 During boot, the corresponding memory will be mapped as paged out. 272 This is conceptually the opposite of CONFIG_LINKER_USE_PINNED_SECTION. 273 274 Requires that on-demand sections exist in the architecture, SoC, 275 board or custom linker script. 276 277config LINKER_GENERIC_SECTIONS_PRESENT_AT_BOOT 278 bool "Generic sections are present at boot" if DEMAND_PAGING && LINKER_USE_PINNED_SECTION 279 default y 280 help 281 When disabled, the linker sections other than the boot and 282 pinned sections will be marked as not present in the page 283 tables. This allows kernel to pull in data pages on demand 284 as required by current execution context when demand paging 285 is enabled. There is no need to load all code and data into 286 memory at once. 287 288 If unsure, say Y. 289 290config LINKER_LAST_SECTION_ID 291 bool "Last section identifier" 292 default y if !ARM64 293 depends on ARM || ARM64 || RISCV 294 help 295 If enabled, the last section will contain an identifier. 296 This ensures that the '_flash_used' linker symbol will always be 297 correctly calculated, even in cases where the location counter may 298 have been incremented for alignment purposes but no data is placed 299 after alignment. 300 301 Note: in cases where the flash is fully used, for example application 302 specific data is written at the end of the flash area, then writing a 303 last section identifier may cause rom region overflow. 304 In such cases this setting should be disabled. 305 306config LINKER_LAST_SECTION_ID_PATTERN 307 hex "Last section identifier pattern" 308 default "0xE015E015" 309 depends on LINKER_LAST_SECTION_ID 310 help 311 Pattern to fill into last section as identifier. 312 Default pattern is 0xE015 (end of last section), but any pattern can 313 be used. 314 The size of the pattern must not exceed 4 bytes. 315 316config LINKER_USE_NO_RELAX 317 bool 318 help 319 Hidden symbol to allow features to force the use of no relax. 320 321config LINKER_USE_RELAX 322 bool "Linker optimization of call addressing" 323 depends on !LINKER_USE_NO_RELAX 324 default y 325 help 326 This option performs global optimizations that become possible when the linker resolves 327 addressing in the program, such as relaxing address modes and synthesizing new 328 instructions in the output object file. For ld and lld, this enables `--relax`. 329 On platforms where this is not supported, `--relax' is accepted, but ignored. 330 Disabling it can reduce performance, as the linker is no longer able to substiture long / 331 in-effective jump calls to shorter / more effective instructions. 332 333endmenu # "Linker Sections" 334 335config LINKER_ITERABLE_SUBALIGN 336 int 337 default 8 if 64BIT 338 default 4 339 help 340 Hidden option for the default subalignment of iterable sections. 341 342config LINKER_DEVNULL_SUPPORT 343 bool 344 default y if CPU_CORTEX_M || (RISCV && !64BIT) 345 346config LINKER_DEVNULL_MEMORY 347 bool "Devnull region" 348 depends on LINKER_DEVNULL_SUPPORT 349 help 350 Devnull region is created. It is stripped from final binary but remains 351 in byproduct elf file. 352 353config LINKER_DEVNULL_MEMORY_SIZE 354 int "Devnull region size" 355 depends on LINKER_DEVNULL_MEMORY 356 default 262144 357 help 358 Size can be adjusted so it fits all data placed in that region. 359 360endmenu 361 362menu "Compiler Options" 363 364config REQUIRES_STD_C99 365 bool 366 help 367 Hidden option to select compiler support C99 standard or higher. 368 369config REQUIRES_STD_C11 370 bool 371 select REQUIRES_STD_C99 372 help 373 Hidden option to select compiler support C11 standard or higher. 374 375config REQUIRES_STD_C17 376 bool 377 select REQUIRES_STD_C11 378 help 379 Hidden option to select compiler support C17 standard or higher. 380 381config REQUIRES_STD_C23 382 bool 383 select REQUIRES_STD_C17 384 help 385 Hidden option to select compiler support C23 standard or higher. 386 387choice STD_C 388 prompt "C Standard" 389 default STD_C23 if REQUIRES_STD_C23 390 default STD_C17 if REQUIRES_STD_C17 391 default STD_C11 if REQUIRES_STD_C11 392 default STD_C99 393 help 394 C Standards. 395 396config STD_C90 397 bool "C90" 398 depends on !REQUIRES_STD_C99 399 help 400 1989 C standard as completed in 1989 and ratified by ISO/IEC 401 as ISO/IEC 9899:1990. This version is known as "ANSI C". 402 403config STD_C99 404 bool "C99" 405 depends on !REQUIRES_STD_C11 406 help 407 1999 C standard. 408 409config STD_C11 410 bool "C11" 411 depends on !REQUIRES_STD_C17 412 help 413 2011 C standard. 414 415config STD_C17 416 bool "C17" 417 depends on !REQUIRES_STD_C23 418 help 419 2017 C standard, addresses defects in C11 without introducing 420 new language features. 421 422config STD_C23 423 bool "C23" 424 help 425 2023 C standard. 426 427endchoice 428 429config TOOLCHAIN_SUPPORTS_GNU_EXTENSIONS 430 bool 431 default y if "$(ZEPHYR_TOOLCHAIN_VARIANT)" = "zephyr" 432 help 433 Hidden option to signal that toolchain supports GNU Extensions. 434 435config GNU_C_EXTENSIONS 436 bool "GNU C Extensions" 437 depends on TOOLCHAIN_SUPPORTS_GNU_EXTENSIONS 438 help 439 Enable GNU C Extensions. GNU C provides several language features 440 not found in ISO standard C. 441 442config CODING_GUIDELINE_CHECK 443 bool "Enforce coding guideline rules" 444 help 445 Use available compiler flags to check coding guideline rules during 446 the build. 447 448config NATIVE_LIBC 449 bool 450 select FULL_LIBC_SUPPORTED 451 select TC_PROVIDES_POSIX_C_LANG_SUPPORT_R 452 help 453 Zephyr will use the host system C library. 454 455config NATIVE_LIBCPP 456 bool 457 select FULL_LIBCPP_SUPPORTED 458 help 459 Zephyr will use the host system C++ library 460 461config NATIVE_BUILD 462 bool 463 select NATIVE_LIBC if EXTERNAL_LIBC 464 select NATIVE_LIBCPP if EXTERNAL_LIBCPP 465 help 466 Zephyr will be built targeting the host system for debug and 467 development purposes. 468 469config NATIVE_APPLICATION 470 bool 471 default y if ARCH_POSIX 472 depends on !NATIVE_LIBRARY 473 select NATIVE_BUILD 474 select DEPRECATED 475 help 476 Build as a native application that can run on the host and using 477 resources and libraries provided by the host. This option is deprecated 478 and will be removed in Zephyr v4.3 479 480config NATIVE_LIBRARY 481 bool 482 select NATIVE_BUILD 483 help 484 Build as a prelinked library for the native host target. 485 This library can later be built into an executable for the host. 486 487config COMPILER_FREESTANDING 488 bool "Build in a freestanding compiler mode" 489 help 490 Configure the compiler to operate in freestanding mode according to 491 the C and C++ language specifications. Freestanding mode reduces the 492 requirements of the compiler and language environment, which can 493 negatively impact the ability for the compiler to detect errors and 494 perform optimizations. 495 496choice COMPILER_OPTIMIZATIONS 497 prompt "Optimization level" 498 default NO_OPTIMIZATIONS if COVERAGE 499 default DEBUG_OPTIMIZATIONS if DEBUG 500 default SIZE_OPTIMIZATIONS_AGGRESSIVE if "$(ZEPHYR_TOOLCHAIN_VARIANT)" = "llvm" 501 default SIZE_OPTIMIZATIONS 502 help 503 Note that these flags shall only control the compiler 504 optimization level, and that no extra debug code shall be 505 conditionally compiled based on them. 506 507config SIZE_OPTIMIZATIONS 508 bool "Optimize for size" 509 help 510 Compiler optimizations will be set to -Os independently of other 511 options. 512 513config SIZE_OPTIMIZATIONS_AGGRESSIVE 514 bool "Aggressively optimize for size" 515 help 516 Compiler optimizations wil be set to -Oz independently of other 517 options. 518 519config SPEED_OPTIMIZATIONS 520 bool "Optimize for speed" 521 help 522 Compiler optimizations will be set to -O2 independently of other 523 options. 524 525config DEBUG_OPTIMIZATIONS 526 bool "Optimize debugging experience" 527 help 528 Compiler optimizations will be set to -Og independently of other 529 options. 530 531config NO_OPTIMIZATIONS 532 bool "Optimize nothing" 533 help 534 Compiler optimizations will be set to -O0 independently of other 535 options. 536 537 Selecting this option will likely require manual tuning of the 538 default stack sizes in order to avoid stack overflows. 539endchoice 540 541config LTO 542 bool "Link Time Optimization" 543 depends on !(GEN_ISR_TABLES || GEN_IRQ_VECTOR_TABLE) || ISR_TABLES_LOCAL_DECLARATION 544 depends on !NATIVE_LIBRARY 545 depends on !CODE_DATA_RELOCATION 546 help 547 This option enables Link Time Optimization. 548 549config COMPILER_WARNINGS_AS_ERRORS 550 bool "Treat warnings as errors" 551 help 552 Turn on "warning as error" toolchain flags 553 554config COMPILER_SAVE_TEMPS 555 bool "Save temporary object files" 556 help 557 Instruct the compiler to save the temporary intermediate files 558 permanently. These can be useful for troubleshooting build issues. 559 560config COMPILER_TRACK_MACRO_EXPANSION 561 bool "Track macro expansion" 562 default y 563 help 564 When enabled, locations of tokens across macro expansions will be 565 tracked. Disabling this option may be useful to debug long macro 566 expansion chains. 567 568config COMPILER_COLOR_DIAGNOSTICS 569 bool "Colored diagnostics" 570 default y 571 help 572 Compiler diagnostic messages are colorized. 573 574choice COMPILER_SECURITY_FORTIFY 575 prompt "Detect buffer overflows in libc calls" 576 default FORTIFY_SOURCE_NONE if NO_OPTIMIZATIONS || MINIMAL_LIBC || NATIVE_BUILD 577 default FORTIFY_SOURCE_COMPILE_TIME 578 help 579 Buffer overflow checking in libc calls. Supported by Clang and 580 GCC when using Picolibc or Newlib. Requires compiler optimization 581 to be enabled. 582 583config FORTIFY_SOURCE_NONE 584 bool "No detection" 585 help 586 Disables both compile-time and run-time checking. 587 588config FORTIFY_SOURCE_COMPILE_TIME 589 bool "Compile-time detection" 590 help 591 Enables only compile-time checking. Compile-time checking 592 doesn't increase executable size or reduce performance, it 593 limits checking to what can be done with information available 594 at compile time. 595 596config FORTIFY_SOURCE_RUN_TIME 597 bool "Compile-time and run-time detection" 598 help 599 Enables both compile-time and run-time checking. Run-time 600 checking increases coverage at the expense of additional code, 601 and means that applications will raise a runtime exception 602 when buffer overflow is detected. 603 604endchoice 605 606config COMPILER_OPT 607 string "Custom compiler options" 608 help 609 This option is a free-form string that is passed to the compiler 610 when building all parts of a project (i.e. kernel). 611 The compiler options specified by this string supplement the 612 predefined set of compiler supplied by the build system, 613 and can be used to change compiler optimization, warning and error 614 messages, and so on. 615 616config MISRA_SANE 617 bool "MISRA standards compliance features" 618 help 619 Causes the source code to build in "MISRA" mode, which 620 disallows some otherwise-permitted features of the C 621 standard for safety reasons. Specifically variable length 622 arrays are not permitted (and gcc will enforce this). 623 624config TOOLCHAIN_SUPPORTS_VLA_IN_STATEMENTS 625 bool 626 default y 627 help 628 Hidden symbol to state if the toolchain can handle vla in 629 statements. 630 631endmenu 632 633choice 634 prompt "Error checking behavior for CHECK macro" 635 default RUNTIME_ERROR_CHECKS 636 637config ASSERT_ON_ERRORS 638 bool "Assert on all errors" 639 help 640 Assert on errors covered with the CHECKIF() macro. 641 642config NO_RUNTIME_CHECKS 643 bool "No runtime error checks" 644 help 645 Do not do any runtime checks or asserts when using the CHECKIF() macro. 646 647config RUNTIME_ERROR_CHECKS 648 bool "Runtime error checks" 649 help 650 Always perform runtime checks covered with the CHECKIF() macro. This 651 option is the default and the only option used during testing. 652 653endchoice 654 655menu "Build Options" 656 657config KERNEL_BIN_NAME 658 string "The kernel binary name" 659 default "zephyr" 660 help 661 This option sets the name of the generated kernel binary. 662 663config OUTPUT_STAT 664 bool "Create a statistics file" 665 default y 666 help 667 Create a stat file using readelf -e <elf> 668 669config OUTPUT_SYMBOLS 670 bool "Create a symbol file" 671 help 672 Create a symbol file using nm <elf> 673 674config OUTPUT_DISASSEMBLY 675 bool "Create a disassembly file" 676 help 677 Create an .lst file with the assembly listing of the firmware. 678 679config OUTPUT_DISASSEMBLE_ALL 680 bool "Disassemble all sections with source. Fill zeros." 681 default n 682 depends on OUTPUT_DISASSEMBLY 683 help 684 The .lst file will contain complete disassembly of the firmware 685 not just those expected to contain instructions including zeros 686 687config OUTPUT_DISASSEMBLY_WITH_SOURCE 688 bool "Include source code in output disassembly file" 689 default y 690 depends on OUTPUT_DISASSEMBLY && !OUTPUT_DISASSEMBLE_ALL 691 help 692 The .lst file will also contain the source code. Having 693 control over this can be useful for reproducible builds 694 since it can be used to remove one of the elements of 695 the .lst file that can vary across platforms because 696 of reasons such as having ".." include paths. 697 698config OUTPUT_PRINT_MEMORY_USAGE 699 bool "Print memory usage to stdout" 700 default y 701 help 702 If the toolchain supports it, this option will pass 703 --print-memory-region to the linker when it is doing it's first 704 linker pass. Note that the memory regions are symbolic concepts 705 defined by the linker scripts and do not necessarily map 706 directly to the real physical address space. Take also note that 707 some platforms do two passes of the linker so the results do not 708 match exactly to the final elf file. See also rom_report, 709 ram_report and 710 https://sourceware.org/binutils/docs/ld/MEMORY.html 711 712config CLEANUP_INTERMEDIATE_FILES 713 bool "Remove all intermediate files" 714 help 715 Delete intermediate files to save space and cleanup clutter resulting 716 from the build process. Note this breaks incremental builds, west spdx 717 (Software Bill of Material generation), and maybe others. 718 719config BUILD_GAP_FILL_PATTERN 720 hex "Gap fill pattern" 721 default 0xFF 722 help 723 Pattern used for gap filling of output files. 724 This value should be set to the value of a clean flash as this can 725 significantly reduce flash write times. 726 This setting only defines the gap fill pattern and doesn't enable gap 727 filling. 728 Note: binary files are always gap filled as they contain no address 729 information. 730 731config BUILD_NO_GAP_FILL 732 bool "Don't fill gaps in generated hex/s19 files [DEPRECATED]." 733 select DEPRECATED 734 735config BUILD_OUTPUT_HEX 736 bool "Build a binary in HEX format" 737 help 738 Build an Intel HEX binary zephyr/zephyr.hex in the build directory. 739 The name of this file can be customized with CONFIG_KERNEL_BIN_NAME. 740 741config BUILD_OUTPUT_HEX_GAP_FILL 742 bool "Fill gaps in hex files" 743 depends on !BUILD_NO_GAP_FILL 744 help 745 Fill gaps in hex based files. 746 747config BUILD_OUTPUT_BIN 748 bool "Build a binary in BIN format" 749 default y 750 help 751 Build a "raw" binary zephyr/zephyr.bin in the build directory. 752 The name of this file can be customized with CONFIG_KERNEL_BIN_NAME. 753 754config BUILD_OUTPUT_EFI 755 bool "Build as an EFI application" 756 default n 757 depends on X86_64 758 help 759 Build as an EFI application. 760 761 This works by creating a "zephyr.efi" EFI binary containing a zephyr 762 image extracted from a built zephyr.elf file. EFI applications are 763 relocatable, and cannot be placed at specific locations in memory. 764 Instead, the stub code will copy the embedded zephyr sections to the 765 appropriate locations at startup, clear any zero-filled (BSS, etc...) 766 areas, then jump into the 64 bit entry point. 767 768config BUILD_OUTPUT_EXE 769 bool "Build a binary in ELF format with .exe extension" 770 help 771 Build an ELF binary that can run in the host system at 772 zephyr/zephyr.exe in the build directory. 773 The name of this file can be customized with CONFIG_KERNEL_BIN_NAME. 774 775config BUILD_OUTPUT_S19 776 bool "Build a binary in S19 format" 777 help 778 Build an S19 binary zephyr/zephyr.s19 in the build directory. 779 The name of this file can be customized with CONFIG_KERNEL_BIN_NAME. 780 781config BUILD_OUTPUT_S19_GAP_FILL 782 bool "Fill gaps in s19 files" 783 depends on !BUILD_NO_GAP_FILL 784 help 785 Fill gaps in s19 based files. 786 787config BUILD_OUTPUT_UF2 788 bool "Build a binary in UF2 format" 789 depends on BUILD_OUTPUT_BIN 790 help 791 Build a UF2 binary zephyr/zephyr.uf2 in the build directory. 792 The name of this file can be customized with CONFIG_KERNEL_BIN_NAME. 793 794if BUILD_OUTPUT_UF2 795 796config BUILD_OUTPUT_UF2_FAMILY_ID 797 string "UF2 device family ID" 798 default "0x1c5f21b0" if SOC_SERIES_ESP32 799 default "0x621e937a" if SOC_NRF52833_QIAA 800 default "0xada52840" if SOC_NRF52840_QIAA 801 default "0x4fb2d5bd" if SOC_SERIES_IMXRT10XX || SOC_SERIES_IMXRT11XX 802 default "0x2abc77ec" if SOC_SERIES_LPC55XXX 803 default "0xe48bff56" if SOC_SERIES_RP2040 804 default "0xe48bff57" if SOC_SERIES_RP2350 805 default "0x68ed2b88" if SOC_SERIES_SAMD21 806 default "0x55114460" if SOC_SERIES_SAMD51 807 default "0x647824b6" if SOC_SERIES_STM32F0X 808 default "0x5d1a0a2e" if SOC_SERIES_STM32F2X 809 default "0x6b846188" if SOC_SERIES_STM32F3X 810 default "0x53b80f00" if SOC_SERIES_STM32F7X 811 default "0x300f5633" if SOC_SERIES_STM32G0X 812 default "0x4c71240a" if SOC_SERIES_STM32G4X 813 default "0x6db66082" if SOC_SERIES_STM32H7X 814 default "0x202e3a91" if SOC_SERIES_STM32L0X 815 default "0x1e1f432d" if SOC_SERIES_STM32L1X 816 default "0x00ff6919" if SOC_SERIES_STM32L4X 817 default "0x04240bdf" if SOC_SERIES_STM32L5X 818 default "0x70d16653" if SOC_SERIES_STM32WBX 819 default "0x5ee21072" if SOC_STM32F103XE 820 default "0x57755a57" if SOC_SERIES_STM32F4X && (!SOC_STM32F407XE) && (!SOC_STM32F407XG) 821 default "0x6d0922fa" if SOC_STM32F407XE 822 default "0x8fb060fe" if SOC_STM32F407XG 823 help 824 UF2 bootloaders only accept UF2 files with a matching family ID. 825 This can be either a hex, e.g. 0x68ed2b88, or well-known family 826 name string. If the SoC in use is known by UF2, the Family ID will 827 be pre-filled with the known value. 828 829config BUILD_OUTPUT_UF2_USE_FLASH_BASE 830 bool 831 default n 832 833config BUILD_OUTPUT_UF2_USE_FLASH_OFFSET 834 bool 835 default n 836 837endif # BUILD_OUTPUT_UF2 838 839config BUILD_OUTPUT_STRIPPED 840 bool "Build a stripped binary" 841 help 842 Build a stripped binary zephyr/zephyr.strip in the build directory. 843 The name of this file can be customized with CONFIG_KERNEL_BIN_NAME. 844 845config BUILD_OUTPUT_COMPRESS_DEBUG_SECTIONS 846 bool "Compress debug sections in the ELF file" 847 help 848 Compress debug sections in the ELF file to reduce the file size. 849 850config BUILD_OUTPUT_ADJUST_LMA 851 string 852 help 853 This will adjust the LMA address in the final ELF and hex files with 854 the value provided. 855 This will not affect the internal address symbols inside the image but 856 can be useful when adjusting the LMA address for flash tools or multi 857 stage loaders where a pre-loader may copy image to a second location 858 before booting a second core. 859 The value will be evaluated as a math expression, this means that 860 following are valid expression 861 - 1024 862 - 0x1000 863 - -0x1000 864 - 0x20000000 - 0x10000000 865 Note: negative numbers are valid. 866 To adjust according to a chosen flash partition one can specify a 867 default as: 868 DT_CHOSEN_IMAGE_<name> := <name>,<name>-partition 869 DT_CHOSEN_Z_FLASH := zephyr,flash 870 config BUILD_OUTPUT_ADJUST_LMA 871 default "$(dt_chosen_reg_addr_hex,$(DT_CHOSEN_IMAGE_M4))-\ 872 $(dt_chosen_reg_addr_hex,$(DT_CHOSEN_Z_FLASH))" 873 874config BUILD_OUTPUT_ADJUST_LMA_SECTIONS 875 def_string "*" 876 depends on BUILD_OUTPUT_ADJUST_LMA!="" 877 help 878 This determines the output sections to which the above LMA adjustment 879 will be applied. 880 The value can be the name of a section in the final ELF, like "text". 881 It can also be a pattern with wildcards, such as "*bss", which could 882 match more than one section name. Multiple such patterns can be given 883 as a ";"-separated list. It's possible to supply a 'negative' pattern 884 starting with "!", to exclude sections matched by a preceding pattern. 885 886 By default, all sections will have their LMA adjusted. The following 887 example excludes one section produced by the code relocation feature: 888 config BUILD_OUTPUT_ADJUST_LMA_SECTIONS 889 default "*;!.extflash_text_reloc" 890 891config BUILD_OUTPUT_INFO_HEADER 892 bool "Create a image information header" 893 help 894 Create an image information header which will contain image 895 information from the Zephyr binary. 896 Example of information contained in the header file: 897 - Number of segments in the image 898 - LMA address of each segment 899 - VMA address of each segment 900 - Size of each segment 901 902config BUILD_ALIGN_LMA 903 bool "Align LMA in output image" 904 default y if BUILD_OUTPUT_ADJUST_LMA!="" 905 help 906 Ensure that the LMA for each section in the output image respects 907 the alignment requirements of that section. This is required for 908 some tooling, such as objcopy, to be able to adjust the LMA of the 909 ELF file. 910 911config APPLICATION_DEFINED_SYSCALL 912 bool "Scan application folder for any syscall definition" 913 help 914 Scan additional folders inside application source folder 915 for application defined syscalls. 916 917config MAKEFILE_EXPORTS 918 bool "Generate build metadata files named Makefile.exports" 919 help 920 Generates a file with build information that can be read by 921 third party Makefile-based build systems. 922 923config BUILD_OUTPUT_META 924 bool "Create a build meta file" 925 help 926 Create a build meta file in the build directory containing lists of: 927 - Zephyr: path and revision (if git repo) 928 - Zephyr modules: name, path, and revision (if git repo) 929 - West: 930 - manifest: path and revision 931 - projects: path and revision 932 - Workspace: 933 - dirty: one or more repositories are marked dirty 934 - extra: extra Zephyr modules are manually included in the build 935 - off: the SHA of one or more west projects are not what the manifest 936 defined when `west update` was run the last time (`manifest-rev`). 937 The off state is only present if a west workspace is found. 938 File extension is .meta 939 940config BUILD_OUTPUT_META_STATE_PROPAGATE 941 bool "Propagate module and project state" 942 depends on BUILD_OUTPUT_META 943 help 944 Propagate to state of each module to the Zephyr revision field. 945 If west is used the state of each west project is also propagated to 946 the Zephyr revision field. 947 West manifest repo revision field will also 948 be marked with the same state as the Zephyr revision. 949 The final revision will become: <SHA>-<state1>-<state2>-<state3>... 950 If no states are appended to the SHA it means the build is of a clean 951 tree. 952 - dirty: one or more repositories are marked dirty 953 - extra: extra Zephyr modules are manually included in the build 954 - off: the SHA of one or more west projects are not what the manifest 955 defined when `west update` was run the last time (`manifest-rev`). 956 The off state is only present if a west workspace is found. 957 958config BUILD_OUTPUT_STRIP_PATHS 959 bool "Strip absolute paths from binaries" 960 default y 961 help 962 If the compiler supports it, strip the ${ZEPHYR_BASE} prefix from the 963 __FILE__ macro used in __ASSERT*, in the 964 .noinit."/home/joe/zephyr/fu/bar.c" section names and in any 965 application code. 966 This saves some memory, stops leaking user locations in binaries, makes 967 failure logs more deterministic and most importantly makes builds more 968 deterministic. 969 Debuggers usually have a path mapping feature to ensure the files are 970 still found. 971 972config CHECK_INIT_PRIORITIES 973 bool "Build time initialization priorities check" 974 default y 975 # If we are building a native_simulator target, we can only check the init priorities 976 # if we are building the final output but we are not assembling several images together 977 depends on !(NATIVE_LIBRARY && (!BUILD_OUTPUT_EXE || NATIVE_SIMULATOR_EXTRA_IMAGE_PATHS != "")) 978 depends on "$(ZEPHYR_TOOLCHAIN_VARIANT)" != "armclang" 979 help 980 Check the build for initialization priority issues by comparing the 981 initialization priority in the build with the device dependency 982 derived from the devicetree definition. 983 984 Fails the build on priority errors (dependent devices, inverted 985 priority). 986 987config EMIT_ALL_SYSCALLS 988 bool "Emit all possible syscalls in the tree" 989 help 990 This tells the build system to emit all possible syscalls found 991 in the tree, instead of only those syscalls associated with enabled 992 drivers and subsystems. 993 994endmenu 995 996config DEPRECATED 997 bool 998 help 999 Symbol that must be selected by a feature or module if it is 1000 considered to be deprecated. 1001 When adding this to an option, remember to follow the instructions in 1002 https://docs.zephyrproject.org/latest/develop/api/api_lifecycle.html#deprecated 1003 1004config WARN_DEPRECATED 1005 bool 1006 default y 1007 prompt "Warn on deprecated usage" 1008 help 1009 Print a warning when the Kconfig tree is parsed if any deprecated 1010 features are enabled. 1011 1012config EXPERIMENTAL 1013 bool 1014 help 1015 Symbol that must be selected by a feature if it is considered to be 1016 at an experimental implementation stage. 1017 1018config WARN_EXPERIMENTAL 1019 bool 1020 prompt "Warn on experimental usage" 1021 help 1022 Print a warning when the Kconfig tree is parsed if any experimental 1023 features are enabled. 1024 1025config TAINT 1026 bool 1027 help 1028 Symbol that must be selected by a feature or module if the Zephyr 1029 build is considered tainted. 1030 1031config ENFORCE_ZEPHYR_STDINT 1032 bool 1033 prompt "Enforce Zephyr convention for stdint" 1034 depends on !ARCH_POSIX 1035 default y 1036 help 1037 This enforces the Zephyr stdint convention where int32_t = int, 1038 int64_t = long long, and intptr_t = long so that short string 1039 format length modifiers can be used universally across ILP32 1040 and LP64 architectures. Sometimes this is not possible e.g. when 1041 linking against a binary-only C++ library whose type mangling 1042 is incompatible with the Zephyr convention, or if the build 1043 environment doesn't allow such enforcement, in which case this 1044 should be turned off with the caveat that argument type validation 1045 on Zephyr code will be skipped. 1046 1047endmenu 1048 1049 1050menu "Boot Options" 1051 1052config IS_BOOTLOADER 1053 bool "Act as a bootloader" 1054 depends on XIP 1055 depends on ARM 1056 help 1057 This option indicates that Zephyr will act as a bootloader to execute 1058 a separate Zephyr image payload. 1059 1060config BOOTLOADER_BOSSA 1061 bool "BOSSA bootloader support" 1062 select USE_DT_CODE_PARTITION 1063 1064 help 1065 Signifies that the target uses a BOSSA compatible bootloader. If CDC 1066 ACM USB support is also enabled then the board will reboot into the 1067 bootloader automatically when bossac is run. 1068 1069config BOOTLOADER_BOSSA_DEVICE_NAME 1070 string "BOSSA CDC ACM device name" 1071 depends on BOOTLOADER_BOSSA && CDC_ACM_DTE_RATE_CALLBACK_SUPPORT 1072 default "CDC_ACM_0" 1073 help 1074 Sets the CDC ACM port to watch for reboot commands. 1075 1076choice 1077 prompt "BOSSA bootloader variant" 1078 depends on BOOTLOADER_BOSSA 1079 1080config BOOTLOADER_BOSSA_LEGACY 1081 bool "Legacy" 1082 help 1083 Select the Legacy variant of the BOSSA bootloader. This is defined 1084 for compatibility mode only. The recommendation is use newer 1085 versions like Arduino or Adafruit UF2. 1086 1087config BOOTLOADER_BOSSA_ARDUINO 1088 bool "Arduino" 1089 help 1090 Select the Arduino variant of the BOSSA bootloader. Uses 0x07738135 1091 as the magic value to enter the bootloader. 1092 1093config BOOTLOADER_BOSSA_ADAFRUIT_UF2 1094 bool "Adafruit UF2" 1095 help 1096 Select the Adafruit UF2 variant of the BOSSA bootloader. Uses 1097 0xf01669ef as the magic value to enter the bootloader. 1098 1099endchoice 1100 1101endmenu 1102 1103menu "Compatibility" 1104 1105config LEGACY_GENERATED_INCLUDE_PATH 1106 bool "Legacy include path for generated headers" 1107 default y 1108 help 1109 Allow applications and libraries to use the Zephyr legacy include 1110 path for the generated headers which does not use the `zephyr/` prefix. 1111 1112 From now on, i.e., the preferred way to include the `version.h` header is to 1113 use <zephyr/version.h>, this Kconfig is currently enabled by default so that 1114 user applications won't immediately fail to compile. 1115 1116 This Kconfig will be deprecated and eventually removed in the future releases. 1117 1118endmenu 1119