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 624endmenu 625 626choice 627 prompt "Error checking behavior for CHECK macro" 628 default RUNTIME_ERROR_CHECKS 629 630config ASSERT_ON_ERRORS 631 bool "Assert on all errors" 632 help 633 Assert on errors covered with the CHECKIF() macro. 634 635config NO_RUNTIME_CHECKS 636 bool "No runtime error checks" 637 help 638 Do not do any runtime checks or asserts when using the CHECKIF() macro. 639 640config RUNTIME_ERROR_CHECKS 641 bool "Runtime error checks" 642 help 643 Always perform runtime checks covered with the CHECKIF() macro. This 644 option is the default and the only option used during testing. 645 646endchoice 647 648menu "Build Options" 649 650config KERNEL_BIN_NAME 651 string "The kernel binary name" 652 default "zephyr" 653 help 654 This option sets the name of the generated kernel binary. 655 656config OUTPUT_STAT 657 bool "Create a statistics file" 658 default y 659 help 660 Create a stat file using readelf -e <elf> 661 662config OUTPUT_SYMBOLS 663 bool "Create a symbol file" 664 help 665 Create a symbol file using nm <elf> 666 667config OUTPUT_DISASSEMBLY 668 bool "Create a disassembly file" 669 help 670 Create an .lst file with the assembly listing of the firmware. 671 672config OUTPUT_DISASSEMBLE_ALL 673 bool "Disassemble all sections with source. Fill zeros." 674 default n 675 depends on OUTPUT_DISASSEMBLY 676 help 677 The .lst file will contain complete disassembly of the firmware 678 not just those expected to contain instructions including zeros 679 680config OUTPUT_DISASSEMBLY_WITH_SOURCE 681 bool "Include source code in output disassembly file" 682 default y 683 depends on OUTPUT_DISASSEMBLY && !OUTPUT_DISASSEMBLE_ALL 684 help 685 The .lst file will also contain the source code. Having 686 control over this can be useful for reproducible builds 687 since it can be used to remove one of the elements of 688 the .lst file that can vary across platforms because 689 of reasons such as having ".." include paths. 690 691config OUTPUT_PRINT_MEMORY_USAGE 692 bool "Print memory usage to stdout" 693 default y 694 help 695 If the toolchain supports it, this option will pass 696 --print-memory-region to the linker when it is doing it's first 697 linker pass. Note that the memory regions are symbolic concepts 698 defined by the linker scripts and do not necessarily map 699 directly to the real physical address space. Take also note that 700 some platforms do two passes of the linker so the results do not 701 match exactly to the final elf file. See also rom_report, 702 ram_report and 703 https://sourceware.org/binutils/docs/ld/MEMORY.html 704 705config CLEANUP_INTERMEDIATE_FILES 706 bool "Remove all intermediate files" 707 help 708 Delete intermediate files to save space and cleanup clutter resulting 709 from the build process. Note this breaks incremental builds, west spdx 710 (Software Bill of Material generation), and maybe others. 711 712config BUILD_GAP_FILL_PATTERN 713 hex "Gap fill pattern" 714 default 0xFF 715 help 716 Pattern used for gap filling of output files. 717 This value should be set to the value of a clean flash as this can 718 significantly reduce flash write times. 719 This setting only defines the gap fill pattern and doesn't enable gap 720 filling. 721 Note: binary files are always gap filled as they contain no address 722 information. 723 724config BUILD_NO_GAP_FILL 725 bool "Don't fill gaps in generated hex/s19 files [DEPRECATED]." 726 select DEPRECATED 727 728config BUILD_OUTPUT_HEX 729 bool "Build a binary in HEX format" 730 help 731 Build an Intel HEX binary zephyr/zephyr.hex in the build directory. 732 The name of this file can be customized with CONFIG_KERNEL_BIN_NAME. 733 734config BUILD_OUTPUT_HEX_GAP_FILL 735 bool "Fill gaps in hex files" 736 depends on !BUILD_NO_GAP_FILL 737 help 738 Fill gaps in hex based files. 739 740config BUILD_OUTPUT_BIN 741 bool "Build a binary in BIN format" 742 default y 743 help 744 Build a "raw" binary zephyr/zephyr.bin in the build directory. 745 The name of this file can be customized with CONFIG_KERNEL_BIN_NAME. 746 747config BUILD_OUTPUT_EFI 748 bool "Build as an EFI application" 749 default n 750 depends on X86_64 751 help 752 Build as an EFI application. 753 754 This works by creating a "zephyr.efi" EFI binary containing a zephyr 755 image extracted from a built zephyr.elf file. EFI applications are 756 relocatable, and cannot be placed at specific locations in memory. 757 Instead, the stub code will copy the embedded zephyr sections to the 758 appropriate locations at startup, clear any zero-filled (BSS, etc...) 759 areas, then jump into the 64 bit entry point. 760 761config BUILD_OUTPUT_EXE 762 bool "Build a binary in ELF format with .exe extension" 763 help 764 Build an ELF binary that can run in the host system at 765 zephyr/zephyr.exe in the build directory. 766 The name of this file can be customized with CONFIG_KERNEL_BIN_NAME. 767 768config BUILD_OUTPUT_S19 769 bool "Build a binary in S19 format" 770 help 771 Build an S19 binary zephyr/zephyr.s19 in the build directory. 772 The name of this file can be customized with CONFIG_KERNEL_BIN_NAME. 773 774config BUILD_OUTPUT_S19_GAP_FILL 775 bool "Fill gaps in s19 files" 776 depends on !BUILD_NO_GAP_FILL 777 help 778 Fill gaps in s19 based files. 779 780config BUILD_OUTPUT_UF2 781 bool "Build a binary in UF2 format" 782 depends on BUILD_OUTPUT_BIN 783 help 784 Build a UF2 binary zephyr/zephyr.uf2 in the build directory. 785 The name of this file can be customized with CONFIG_KERNEL_BIN_NAME. 786 787if BUILD_OUTPUT_UF2 788 789config BUILD_OUTPUT_UF2_FAMILY_ID 790 string "UF2 device family ID" 791 default "0x1c5f21b0" if SOC_SERIES_ESP32 792 default "0x621e937a" if SOC_NRF52833_QIAA 793 default "0xada52840" if SOC_NRF52840_QIAA 794 default "0x4fb2d5bd" if SOC_SERIES_IMXRT10XX || SOC_SERIES_IMXRT11XX 795 default "0x2abc77ec" if SOC_SERIES_LPC55XXX 796 default "0xe48bff56" if SOC_SERIES_RP2040 797 default "0xe48bff57" if SOC_SERIES_RP2350 798 default "0x68ed2b88" if SOC_SERIES_SAMD21 799 default "0x55114460" if SOC_SERIES_SAMD51 800 default "0x647824b6" if SOC_SERIES_STM32F0X 801 default "0x5d1a0a2e" if SOC_SERIES_STM32F2X 802 default "0x6b846188" if SOC_SERIES_STM32F3X 803 default "0x53b80f00" if SOC_SERIES_STM32F7X 804 default "0x300f5633" if SOC_SERIES_STM32G0X 805 default "0x4c71240a" if SOC_SERIES_STM32G4X 806 default "0x6db66082" if SOC_SERIES_STM32H7X 807 default "0x202e3a91" if SOC_SERIES_STM32L0X 808 default "0x1e1f432d" if SOC_SERIES_STM32L1X 809 default "0x00ff6919" if SOC_SERIES_STM32L4X 810 default "0x04240bdf" if SOC_SERIES_STM32L5X 811 default "0x70d16653" if SOC_SERIES_STM32WBX 812 default "0x5ee21072" if SOC_STM32F103XE 813 default "0x57755a57" if SOC_SERIES_STM32F4X && (!SOC_STM32F407XE) && (!SOC_STM32F407XG) 814 default "0x6d0922fa" if SOC_STM32F407XE 815 default "0x8fb060fe" if SOC_STM32F407XG 816 help 817 UF2 bootloaders only accept UF2 files with a matching family ID. 818 This can be either a hex, e.g. 0x68ed2b88, or well-known family 819 name string. If the SoC in use is known by UF2, the Family ID will 820 be pre-filled with the known value. 821 822config BUILD_OUTPUT_UF2_USE_FLASH_BASE 823 bool 824 default n 825 826config BUILD_OUTPUT_UF2_USE_FLASH_OFFSET 827 bool 828 default n 829 830endif # BUILD_OUTPUT_UF2 831 832config BUILD_OUTPUT_STRIPPED 833 bool "Build a stripped binary" 834 help 835 Build a stripped binary zephyr/zephyr.strip in the build directory. 836 The name of this file can be customized with CONFIG_KERNEL_BIN_NAME. 837 838config BUILD_OUTPUT_COMPRESS_DEBUG_SECTIONS 839 bool "Compress debug sections in the ELF file" 840 help 841 Compress debug sections in the ELF file to reduce the file size. 842 843config BUILD_OUTPUT_ADJUST_LMA 844 string 845 help 846 This will adjust the LMA address in the final ELF and hex files with 847 the value provided. 848 This will not affect the internal address symbols inside the image but 849 can be useful when adjusting the LMA address for flash tools or multi 850 stage loaders where a pre-loader may copy image to a second location 851 before booting a second core. 852 The value will be evaluated as a math expression, this means that 853 following are valid expression 854 - 1024 855 - 0x1000 856 - -0x1000 857 - 0x20000000 - 0x10000000 858 Note: negative numbers are valid. 859 To adjust according to a chosen flash partition one can specify a 860 default as: 861 DT_CHOSEN_IMAGE_<name> := <name>,<name>-partition 862 DT_CHOSEN_Z_FLASH := zephyr,flash 863 config BUILD_OUTPUT_ADJUST_LMA 864 default "$(dt_chosen_reg_addr_hex,$(DT_CHOSEN_IMAGE_M4))-\ 865 $(dt_chosen_reg_addr_hex,$(DT_CHOSEN_Z_FLASH))" 866 867config BUILD_OUTPUT_ADJUST_LMA_SECTIONS 868 def_string "*" 869 depends on BUILD_OUTPUT_ADJUST_LMA!="" 870 help 871 This determines the output sections to which the above LMA adjustment 872 will be applied. 873 The value can be the name of a section in the final ELF, like "text". 874 It can also be a pattern with wildcards, such as "*bss", which could 875 match more than one section name. Multiple such patterns can be given 876 as a ";"-separated list. It's possible to supply a 'negative' pattern 877 starting with "!", to exclude sections matched by a preceding pattern. 878 879 By default, all sections will have their LMA adjusted. The following 880 example excludes one section produced by the code relocation feature: 881 config BUILD_OUTPUT_ADJUST_LMA_SECTIONS 882 default "*;!.extflash_text_reloc" 883 884config BUILD_OUTPUT_INFO_HEADER 885 bool "Create a image information header" 886 help 887 Create an image information header which will contain image 888 information from the Zephyr binary. 889 Example of information contained in the header file: 890 - Number of segments in the image 891 - LMA address of each segment 892 - VMA address of each segment 893 - Size of each segment 894 895config BUILD_ALIGN_LMA 896 bool "Align LMA in output image" 897 default y if BUILD_OUTPUT_ADJUST_LMA!="" 898 help 899 Ensure that the LMA for each section in the output image respects 900 the alignment requirements of that section. This is required for 901 some tooling, such as objcopy, to be able to adjust the LMA of the 902 ELF file. 903 904config APPLICATION_DEFINED_SYSCALL 905 bool "Scan application folder for any syscall definition" 906 help 907 Scan additional folders inside application source folder 908 for application defined syscalls. 909 910config MAKEFILE_EXPORTS 911 bool "Generate build metadata files named Makefile.exports" 912 help 913 Generates a file with build information that can be read by 914 third party Makefile-based build systems. 915 916config BUILD_OUTPUT_META 917 bool "Create a build meta file" 918 help 919 Create a build meta file in the build directory containing lists of: 920 - Zephyr: path and revision (if git repo) 921 - Zephyr modules: name, path, and revision (if git repo) 922 - West: 923 - manifest: path and revision 924 - projects: path and revision 925 - Workspace: 926 - dirty: one or more repositories are marked dirty 927 - extra: extra Zephyr modules are manually included in the build 928 - off: the SHA of one or more west projects are not what the manifest 929 defined when `west update` was run the last time (`manifest-rev`). 930 The off state is only present if a west workspace is found. 931 File extension is .meta 932 933config BUILD_OUTPUT_META_STATE_PROPAGATE 934 bool "Propagate module and project state" 935 depends on BUILD_OUTPUT_META 936 help 937 Propagate to state of each module to the Zephyr revision field. 938 If west is used the state of each west project is also propagated to 939 the Zephyr revision field. 940 West manifest repo revision field will also 941 be marked with the same state as the Zephyr revision. 942 The final revision will become: <SHA>-<state1>-<state2>-<state3>... 943 If no states are appended to the SHA it means the build is of a clean 944 tree. 945 - dirty: one or more repositories are marked dirty 946 - extra: extra Zephyr modules are manually included in the build 947 - off: the SHA of one or more west projects are not what the manifest 948 defined when `west update` was run the last time (`manifest-rev`). 949 The off state is only present if a west workspace is found. 950 951config BUILD_OUTPUT_STRIP_PATHS 952 bool "Strip absolute paths from binaries" 953 default y 954 help 955 If the compiler supports it, strip the ${ZEPHYR_BASE} prefix from the 956 __FILE__ macro used in __ASSERT*, in the 957 .noinit."/home/joe/zephyr/fu/bar.c" section names and in any 958 application code. 959 This saves some memory, stops leaking user locations in binaries, makes 960 failure logs more deterministic and most importantly makes builds more 961 deterministic. 962 Debuggers usually have a path mapping feature to ensure the files are 963 still found. 964 965config CHECK_INIT_PRIORITIES 966 bool "Build time initialization priorities check" 967 default y 968 # If we are building a native_simulator target, we can only check the init priorities 969 # if we are building the final output but we are not assembling several images together 970 depends on !(NATIVE_LIBRARY && (!BUILD_OUTPUT_EXE || NATIVE_SIMULATOR_EXTRA_IMAGE_PATHS != "")) 971 depends on "$(ZEPHYR_TOOLCHAIN_VARIANT)" != "armclang" 972 help 973 Check the build for initialization priority issues by comparing the 974 initialization priority in the build with the device dependency 975 derived from the devicetree definition. 976 977 Fails the build on priority errors (dependent devices, inverted 978 priority). 979 980config EMIT_ALL_SYSCALLS 981 bool "Emit all possible syscalls in the tree" 982 help 983 This tells the build system to emit all possible syscalls found 984 in the tree, instead of only those syscalls associated with enabled 985 drivers and subsystems. 986 987endmenu 988 989config DEPRECATED 990 bool 991 help 992 Symbol that must be selected by a feature or module if it is 993 considered to be deprecated. 994 When adding this to an option, remember to follow the instructions in 995 https://docs.zephyrproject.org/latest/develop/api/api_lifecycle.html#deprecated 996 997config WARN_DEPRECATED 998 bool 999 default y 1000 prompt "Warn on deprecated usage" 1001 help 1002 Print a warning when the Kconfig tree is parsed if any deprecated 1003 features are enabled. 1004 1005config EXPERIMENTAL 1006 bool 1007 help 1008 Symbol that must be selected by a feature if it is considered to be 1009 at an experimental implementation stage. 1010 1011config WARN_EXPERIMENTAL 1012 bool 1013 prompt "Warn on experimental usage" 1014 help 1015 Print a warning when the Kconfig tree is parsed if any experimental 1016 features are enabled. 1017 1018config TAINT 1019 bool 1020 help 1021 Symbol that must be selected by a feature or module if the Zephyr 1022 build is considered tainted. 1023 1024config ENFORCE_ZEPHYR_STDINT 1025 bool 1026 prompt "Enforce Zephyr convention for stdint" 1027 depends on !ARCH_POSIX 1028 default y 1029 help 1030 This enforces the Zephyr stdint convention where int32_t = int, 1031 int64_t = long long, and intptr_t = long so that short string 1032 format length modifiers can be used universally across ILP32 1033 and LP64 architectures. Sometimes this is not possible e.g. when 1034 linking against a binary-only C++ library whose type mangling 1035 is incompatible with the Zephyr convention, or if the build 1036 environment doesn't allow such enforcement, in which case this 1037 should be turned off with the caveat that argument type validation 1038 on Zephyr code will be skipped. 1039 1040endmenu 1041 1042 1043menu "Boot Options" 1044 1045config IS_BOOTLOADER 1046 bool "Act as a bootloader" 1047 depends on XIP 1048 depends on ARM 1049 help 1050 This option indicates that Zephyr will act as a bootloader to execute 1051 a separate Zephyr image payload. 1052 1053config BOOTLOADER_BOSSA 1054 bool "BOSSA bootloader support" 1055 select USE_DT_CODE_PARTITION 1056 1057 help 1058 Signifies that the target uses a BOSSA compatible bootloader. If CDC 1059 ACM USB support is also enabled then the board will reboot into the 1060 bootloader automatically when bossac is run. 1061 1062config BOOTLOADER_BOSSA_DEVICE_NAME 1063 string "BOSSA CDC ACM device name" 1064 depends on BOOTLOADER_BOSSA && CDC_ACM_DTE_RATE_CALLBACK_SUPPORT 1065 default "CDC_ACM_0" 1066 help 1067 Sets the CDC ACM port to watch for reboot commands. 1068 1069choice 1070 prompt "BOSSA bootloader variant" 1071 depends on BOOTLOADER_BOSSA 1072 1073config BOOTLOADER_BOSSA_LEGACY 1074 bool "Legacy" 1075 help 1076 Select the Legacy variant of the BOSSA bootloader. This is defined 1077 for compatibility mode only. The recommendation is use newer 1078 versions like Arduino or Adafruit UF2. 1079 1080config BOOTLOADER_BOSSA_ARDUINO 1081 bool "Arduino" 1082 help 1083 Select the Arduino variant of the BOSSA bootloader. Uses 0x07738135 1084 as the magic value to enter the bootloader. 1085 1086config BOOTLOADER_BOSSA_ADAFRUIT_UF2 1087 bool "Adafruit UF2" 1088 help 1089 Select the Adafruit UF2 variant of the BOSSA bootloader. Uses 1090 0xf01669ef as the magic value to enter the bootloader. 1091 1092endchoice 1093 1094endmenu 1095 1096menu "Compatibility" 1097 1098config LEGACY_GENERATED_INCLUDE_PATH 1099 bool "Legacy include path for generated headers" 1100 default y 1101 help 1102 Allow applications and libraries to use the Zephyr legacy include 1103 path for the generated headers which does not use the `zephyr/` prefix. 1104 1105 From now on, i.e., the preferred way to include the `version.h` header is to 1106 use <zephyr/version.h>, this Kconfig is currently enabled by default so that 1107 user applications won't immediately fail to compile. 1108 1109 This Kconfig will be deprecated and eventually removed in the future releases. 1110 1111endmenu 1112