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 $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 "$(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_GENERIC_SECTIONS_PRESENT_AT_BOOT 264 bool "Generic sections are present at boot" if DEMAND_PAGING && LINKER_USE_PINNED_SECTION 265 default y 266 help 267 When disabled, the linker sections other than the boot and 268 pinned sections will be marked as not present in the page 269 tables. This allows kernel to pull in data pages on demand 270 as required by current execution context when demand paging 271 is enabled. There is no need to load all code and data into 272 memory at once. 273 274 If unsure, say Y. 275 276config LINKER_LAST_SECTION_ID 277 bool "Last section identifier" 278 default y 279 depends on ARM || ARM64 || RISCV 280 help 281 If enabled, the last section will contain an identifier. 282 This ensures that the '_flash_used' linker symbol will always be 283 correctly calculated, even in cases where the location counter may 284 have been incremented for alignment purposes but no data is placed 285 after alignment. 286 287 Note: in cases where the flash is fully used, for example application 288 specific data is written at the end of the flash area, then writing a 289 last section identifier may cause rom region overflow. 290 In such cases this setting should be disabled. 291 292config LINKER_LAST_SECTION_ID_PATTERN 293 hex "Last section identifier pattern" 294 default "0xE015E015" 295 depends on LINKER_LAST_SECTION_ID 296 help 297 Pattern to fill into last section as identifier. 298 Default pattern is 0xE015 (end of last section), but any pattern can 299 be used. 300 The size of the pattern must not exceed 4 bytes. 301 302config LINKER_USE_NO_RELAX 303 bool 304 help 305 Hidden symbol to allow features to force the use of no relax. 306 307config LINKER_USE_RELAX 308 bool "Linker optimization of call addressing" 309 depends on !LINKER_USE_NO_RELAX 310 default y 311 help 312 This option performs global optimizations that become possible when the linker resolves 313 addressing in the program, such as relaxing address modes and synthesizing new 314 instructions in the output object file. For ld and lld, this enables `--relax`. 315 On platforms where this is not supported, `--relax' is accepted, but ignored. 316 Disabling it can reduce performance, as the linker is no longer able to substiture long / 317 in-effective jump calls to shorter / more effective instructions. 318 319endmenu # "Linker Sections" 320 321config LINKER_ITERABLE_SUBALIGN 322 int 323 default 8 if 64BIT 324 default 4 325 help 326 Hidden option for the default subalignment of iterable sections. 327 328config LINKER_DEVNULL_SUPPORT 329 bool 330 default y if CPU_CORTEX_M || (RISCV && !64BIT) 331 332config LINKER_DEVNULL_MEMORY 333 bool "Devnull region" 334 depends on LINKER_DEVNULL_SUPPORT 335 help 336 Devnull region is created. It is stripped from final binary but remains 337 in byproduct elf file. 338 339config LINKER_DEVNULL_MEMORY_SIZE 340 int "Devnull region size" 341 depends on LINKER_DEVNULL_MEMORY 342 default 262144 343 help 344 Size can be adjusted so it fits all data placed in that region. 345 346endmenu 347 348menu "Compiler Options" 349 350config REQUIRES_STD_C99 351 bool 352 help 353 Hidden option to select compiler support C99 standard or higher. 354 355config REQUIRES_STD_C11 356 bool 357 select REQUIRES_STD_C99 358 help 359 Hidden option to select compiler support C11 standard or higher. 360 361config REQUIRES_STD_C17 362 bool 363 select REQUIRES_STD_C11 364 help 365 Hidden option to select compiler support C17 standard or higher. 366 367config REQUIRES_STD_C23 368 bool 369 select REQUIRES_STD_C17 370 help 371 Hidden option to select compiler support C23 standard or higher. 372 373choice STD_C 374 prompt "C Standard" 375 default STD_C23 if REQUIRES_STD_C23 376 default STD_C17 if REQUIRES_STD_C17 377 default STD_C11 if REQUIRES_STD_C11 378 default STD_C99 379 help 380 C Standards. 381 382config STD_C90 383 bool "C90" 384 depends on !REQUIRES_STD_C99 385 help 386 1989 C standard as completed in 1989 and ratified by ISO/IEC 387 as ISO/IEC 9899:1990. This version is known as "ANSI C". 388 389config STD_C99 390 bool "C99" 391 depends on !REQUIRES_STD_C11 392 help 393 1999 C standard. 394 395config STD_C11 396 bool "C11" 397 depends on !REQUIRES_STD_C17 398 help 399 2011 C standard. 400 401config STD_C17 402 bool "C17" 403 depends on !REQUIRES_STD_C23 404 help 405 2017 C standard, addresses defects in C11 without introducing 406 new language features. 407 408config STD_C23 409 bool "C23" 410 help 411 2023 C standard. 412 413endchoice 414 415config TOOLCHAIN_SUPPORTS_GNU_EXTENSIONS 416 bool 417 default y if "$(ZEPHYR_TOOLCHAIN_VARIANT)" = "zephyr" 418 help 419 Hidden option to signal that toolchain supports GNU Extensions. 420 421config GNU_C_EXTENSIONS 422 bool "GNU C Extensions" 423 depends on TOOLCHAIN_SUPPORTS_GNU_EXTENSIONS 424 help 425 Enable GNU C Extensions. GNU C provides several language features 426 not found in ISO standard C. 427 428config CODING_GUIDELINE_CHECK 429 bool "Enforce coding guideline rules" 430 help 431 Use available compiler flags to check coding guideline rules during 432 the build. 433 434config NATIVE_LIBC 435 bool 436 select FULL_LIBC_SUPPORTED 437 help 438 Zephyr will use the host system C library. 439 440config NATIVE_LIBCPP 441 bool 442 select FULL_LIBCPP_SUPPORTED 443 help 444 Zephyr will use the host system C++ library 445 446config NATIVE_BUILD 447 bool 448 select NATIVE_LIBC if EXTERNAL_LIBC 449 select NATIVE_LIBCPP if EXTERNAL_LIBCPP 450 help 451 Zephyr will be built targeting the host system for debug and 452 development purposes. 453 454config NATIVE_APPLICATION 455 bool 456 default y if ARCH_POSIX 457 depends on !NATIVE_LIBRARY 458 select NATIVE_BUILD 459 help 460 Build as a native application that can run on the host and using 461 resources and libraries provided by the host. 462 463config NATIVE_LIBRARY 464 bool 465 select NATIVE_BUILD 466 help 467 Build as a prelinked library for the native host target. 468 This library can later be built into an executable for the host. 469 470config COMPILER_FREESTANDING 471 bool "Build in a freestanding compiler mode" 472 help 473 Configure the compiler to operate in freestanding mode according to 474 the C and C++ language specifications. Freestanding mode reduces the 475 requirements of the compiler and language environment, which can 476 negatively impact the ability for the compiler to detect errors and 477 perform optimizations. 478 479choice COMPILER_OPTIMIZATIONS 480 prompt "Optimization level" 481 default NO_OPTIMIZATIONS if COVERAGE 482 default DEBUG_OPTIMIZATIONS if DEBUG 483 default SIZE_OPTIMIZATIONS_AGGRESSIVE if "$(ZEPHYR_TOOLCHAIN_VARIANT)" = "llvm" 484 default SIZE_OPTIMIZATIONS 485 help 486 Note that these flags shall only control the compiler 487 optimization level, and that no extra debug code shall be 488 conditionally compiled based on them. 489 490config SIZE_OPTIMIZATIONS 491 bool "Optimize for size" 492 help 493 Compiler optimizations will be set to -Os independently of other 494 options. 495 496config SIZE_OPTIMIZATIONS_AGGRESSIVE 497 bool "Aggressively optimize for size" 498 help 499 Compiler optimizations wil be set to -Oz independently of other 500 options. 501 502config SPEED_OPTIMIZATIONS 503 bool "Optimize for speed" 504 help 505 Compiler optimizations will be set to -O2 independently of other 506 options. 507 508config DEBUG_OPTIMIZATIONS 509 bool "Optimize debugging experience" 510 help 511 Compiler optimizations will be set to -Og independently of other 512 options. 513 514config NO_OPTIMIZATIONS 515 bool "Optimize nothing" 516 help 517 Compiler optimizations will be set to -O0 independently of other 518 options. 519 520 Selecting this option will likely require manual tuning of the 521 default stack sizes in order to avoid stack overflows. 522endchoice 523 524config LTO 525 bool "Link Time Optimization [EXPERIMENTAL]" 526 depends on !(GEN_ISR_TABLES || GEN_IRQ_VECTOR_TABLE) || ISR_TABLES_LOCAL_DECLARATION 527 depends on !NATIVE_LIBRARY 528 depends on !CODE_DATA_RELOCATION 529 select EXPERIMENTAL 530 help 531 This option enables Link Time Optimization. 532 533config COMPILER_WARNINGS_AS_ERRORS 534 bool "Treat warnings as errors" 535 help 536 Turn on "warning as error" toolchain flags 537 538config COMPILER_SAVE_TEMPS 539 bool "Save temporary object files" 540 help 541 Instruct the compiler to save the temporary intermediate files 542 permanently. These can be useful for troubleshooting build issues. 543 544config COMPILER_TRACK_MACRO_EXPANSION 545 bool "Track macro expansion" 546 default y 547 help 548 When enabled, locations of tokens across macro expansions will be 549 tracked. Disabling this option may be useful to debug long macro 550 expansion chains. 551 552config COMPILER_COLOR_DIAGNOSTICS 553 bool "Colored diagnostics" 554 default y 555 help 556 Compiler diagnostic messages are colorized. 557 558choice COMPILER_SECURITY_FORTIFY 559 prompt "Detect buffer overflows in libc calls" 560 default FORTIFY_SOURCE_NONE if NO_OPTIMIZATIONS || MINIMAL_LIBC || NATIVE_BUILD 561 default FORTIFY_SOURCE_COMPILE_TIME 562 help 563 Buffer overflow checking in libc calls. Supported by Clang and 564 GCC when using Picolibc or Newlib. Requires compiler optimization 565 to be enabled. 566 567config FORTIFY_SOURCE_NONE 568 bool "No detection" 569 help 570 Disables both compile-time and run-time checking. 571 572config FORTIFY_SOURCE_COMPILE_TIME 573 bool "Compile-time detection" 574 help 575 Enables only compile-time checking. Compile-time checking 576 doesn't increase executable size or reduce performance, it 577 limits checking to what can be done with information available 578 at compile time. 579 580config FORTIFY_SOURCE_RUN_TIME 581 bool "Compile-time and run-time detection" 582 help 583 Enables both compile-time and run-time checking. Run-time 584 checking increases coverage at the expense of additional code, 585 and means that applications will raise a runtime exception 586 when buffer overflow is detected. 587 588endchoice 589 590config COMPILER_OPT 591 string "Custom compiler options" 592 help 593 This option is a free-form string that is passed to the compiler 594 when building all parts of a project (i.e. kernel). 595 The compiler options specified by this string supplement the 596 predefined set of compiler supplied by the build system, 597 and can be used to change compiler optimization, warning and error 598 messages, and so on. 599 600config MISRA_SANE 601 bool "MISRA standards compliance features" 602 help 603 Causes the source code to build in "MISRA" mode, which 604 disallows some otherwise-permitted features of the C 605 standard for safety reasons. Specifically variable length 606 arrays are not permitted (and gcc will enforce this). 607 608endmenu 609 610choice 611 prompt "Error checking behavior for CHECK macro" 612 default RUNTIME_ERROR_CHECKS 613 614config ASSERT_ON_ERRORS 615 bool "Assert on all errors" 616 help 617 Assert on errors covered with the CHECKIF() macro. 618 619config NO_RUNTIME_CHECKS 620 bool "No runtime error checks" 621 help 622 Do not do any runtime checks or asserts when using the CHECKIF() macro. 623 624config RUNTIME_ERROR_CHECKS 625 bool "Runtime error checks" 626 help 627 Always perform runtime checks covered with the CHECKIF() macro. This 628 option is the default and the only option used during testing. 629 630endchoice 631 632menu "Build Options" 633 634config KERNEL_BIN_NAME 635 string "The kernel binary name" 636 default "zephyr" 637 help 638 This option sets the name of the generated kernel binary. 639 640config OUTPUT_STAT 641 bool "Create a statistics file" 642 default y 643 help 644 Create a stat file using readelf -e <elf> 645 646config OUTPUT_SYMBOLS 647 bool "Create a symbol file" 648 help 649 Create a symbol file using nm <elf> 650 651config OUTPUT_DISASSEMBLY 652 bool "Create a disassembly file" 653 help 654 Create an .lst file with the assembly listing of the firmware. 655 656config OUTPUT_DISASSEMBLE_ALL 657 bool "Disassemble all sections with source. Fill zeros." 658 default n 659 depends on OUTPUT_DISASSEMBLY 660 help 661 The .lst file will contain complete disassembly of the firmware 662 not just those expected to contain instructions including zeros 663 664config OUTPUT_DISASSEMBLY_WITH_SOURCE 665 bool "Include source code in output disassembly file" 666 default y 667 depends on OUTPUT_DISASSEMBLY && !OUTPUT_DISASSEMBLE_ALL 668 help 669 The .lst file will also contain the source code. Having 670 control over this can be useful for reproducible builds 671 since it can be used to remove one of the elements of 672 the .lst file that can vary across platforms because 673 of reasons such as having ".." include paths. 674 675config OUTPUT_PRINT_MEMORY_USAGE 676 bool "Print memory usage to stdout" 677 default y 678 help 679 If the toolchain supports it, this option will pass 680 --print-memory-region to the linker when it is doing it's first 681 linker pass. Note that the memory regions are symbolic concepts 682 defined by the linker scripts and do not necessarily map 683 directly to the real physical address space. Take also note that 684 some platforms do two passes of the linker so the results do not 685 match exactly to the final elf file. See also rom_report, 686 ram_report and 687 https://sourceware.org/binutils/docs/ld/MEMORY.html 688 689config CLEANUP_INTERMEDIATE_FILES 690 bool "Remove all intermediate files" 691 help 692 Delete intermediate files to save space and cleanup clutter resulting 693 from the build process. Note this breaks incremental builds, west spdx 694 (Software Bill of Material generation), and maybe others. 695 696config BUILD_NO_GAP_FILL 697 bool "Don't fill gaps in generated hex/bin/s19 files." 698 699config BUILD_OUTPUT_HEX 700 bool "Build a binary in HEX format" 701 help 702 Build an Intel HEX binary zephyr/zephyr.hex in the build directory. 703 The name of this file can be customized with CONFIG_KERNEL_BIN_NAME. 704 705config BUILD_OUTPUT_BIN 706 bool "Build a binary in BIN format" 707 default y 708 help 709 Build a "raw" binary zephyr/zephyr.bin in the build directory. 710 The name of this file can be customized with CONFIG_KERNEL_BIN_NAME. 711 712config BUILD_OUTPUT_EFI 713 bool "Build as an EFI application" 714 default n 715 depends on X86_64 716 help 717 Build as an EFI application. 718 719 This works by creating a "zephyr.efi" EFI binary containing a zephyr 720 image extracted from a built zephyr.elf file. EFI applications are 721 relocatable, and cannot be placed at specific locations in memory. 722 Instead, the stub code will copy the embedded zephyr sections to the 723 appropriate locations at startup, clear any zero-filled (BSS, etc...) 724 areas, then jump into the 64 bit entry point. 725 726config BUILD_OUTPUT_EXE 727 bool "Build a binary in ELF format with .exe extension" 728 help 729 Build an ELF binary that can run in the host system at 730 zephyr/zephyr.exe in the build directory. 731 The name of this file can be customized with CONFIG_KERNEL_BIN_NAME. 732 733config BUILD_OUTPUT_S19 734 bool "Build a binary in S19 format" 735 help 736 Build an S19 binary zephyr/zephyr.s19 in the build directory. 737 The name of this file can be customized with CONFIG_KERNEL_BIN_NAME. 738 739config BUILD_OUTPUT_UF2 740 bool "Build a binary in UF2 format" 741 depends on BUILD_OUTPUT_BIN 742 help 743 Build a UF2 binary zephyr/zephyr.uf2 in the build directory. 744 The name of this file can be customized with CONFIG_KERNEL_BIN_NAME. 745 746if BUILD_OUTPUT_UF2 747 748config BUILD_OUTPUT_UF2_FAMILY_ID 749 string "UF2 device family ID" 750 default "0x1c5f21b0" if SOC_SERIES_ESP32 751 default "0x621e937a" if SOC_NRF52833_QIAA 752 default "0xada52840" if SOC_NRF52840_QIAA 753 default "0x4fb2d5bd" if SOC_SERIES_IMXRT10XX || SOC_SERIES_IMXRT11XX 754 default "0x2abc77ec" if SOC_SERIES_LPC55XXX 755 default "0xe48bff56" if SOC_SERIES_RP2XXX 756 default "0x68ed2b88" if SOC_SERIES_SAMD21 757 default "0x55114460" if SOC_SERIES_SAMD51 758 default "0x647824b6" if SOC_SERIES_STM32F0X 759 default "0x5d1a0a2e" if SOC_SERIES_STM32F2X 760 default "0x6b846188" if SOC_SERIES_STM32F3X 761 default "0x53b80f00" if SOC_SERIES_STM32F7X 762 default "0x300f5633" if SOC_SERIES_STM32G0X 763 default "0x4c71240a" if SOC_SERIES_STM32G4X 764 default "0x6db66082" if SOC_SERIES_STM32H7X 765 default "0x202e3a91" if SOC_SERIES_STM32L0X 766 default "0x1e1f432d" if SOC_SERIES_STM32L1X 767 default "0x00ff6919" if SOC_SERIES_STM32L4X 768 default "0x04240bdf" if SOC_SERIES_STM32L5X 769 default "0x70d16653" if SOC_SERIES_STM32WBX 770 default "0x5ee21072" if SOC_STM32F103XE 771 default "0x57755a57" if SOC_SERIES_STM32F4X && (!SOC_STM32F407XE) && (!SOC_STM32F407XG) 772 default "0x6d0922fa" if SOC_STM32F407XE 773 default "0x8fb060fe" if SOC_STM32F407XG 774 help 775 UF2 bootloaders only accept UF2 files with a matching family ID. 776 This can be either a hex, e.g. 0x68ed2b88, or well-known family 777 name string. If the SoC in use is known by UF2, the Family ID will 778 be pre-filled with the known value. 779 780config BUILD_OUTPUT_UF2_USE_FLASH_BASE 781 bool 782 default n 783 784config BUILD_OUTPUT_UF2_USE_FLASH_OFFSET 785 bool 786 default n 787 788endif # BUILD_OUTPUT_UF2 789 790config BUILD_OUTPUT_STRIPPED 791 bool "Build a stripped binary" 792 help 793 Build a stripped binary zephyr/zephyr.strip in the build directory. 794 The name of this file can be customized with CONFIG_KERNEL_BIN_NAME. 795 796config BUILD_OUTPUT_COMPRESS_DEBUG_SECTIONS 797 bool "Compress debug sections in the ELF file" 798 help 799 Compress debug sections in the ELF file to reduce the file size. 800 801config BUILD_OUTPUT_ADJUST_LMA 802 string 803 help 804 This will adjust the LMA address in the final ELF and hex files with 805 the value provided. 806 This will not affect the internal address symbols inside the image but 807 can be useful when adjusting the LMA address for flash tools or multi 808 stage loaders where a pre-loader may copy image to a second location 809 before booting a second core. 810 The value will be evaluated as a math expression, this means that 811 following are valid expression 812 - 1024 813 - 0x1000 814 - -0x1000 815 - 0x20000000 - 0x10000000 816 Note: negative numbers are valid. 817 To adjust according to a chosen flash partition one can specify a 818 default as: 819 DT_CHOSEN_IMAGE_<name> := <name>,<name>-partition 820 DT_CHOSEN_Z_FLASH := zephyr,flash 821 config BUILD_OUTPUT_ADJUST_LMA 822 default "$(dt_chosen_reg_addr_hex,$(DT_CHOSEN_IMAGE_M4))-\ 823 $(dt_chosen_reg_addr_hex,$(DT_CHOSEN_Z_FLASH))" 824 825config BUILD_OUTPUT_INFO_HEADER 826 bool "Create a image information header" 827 help 828 Create an image information header which will contain image 829 information from the Zephyr binary. 830 Example of information contained in the header file: 831 - Number of segments in the image 832 - LMA address of each segment 833 - VMA address of each segment 834 - Size of each segment 835 836config BUILD_ALIGN_LMA 837 bool "Align LMA in output image" 838 default y if BUILD_OUTPUT_ADJUST_LMA!="" 839 help 840 Ensure that the LMA for each section in the output image respects 841 the alignment requirements of that section. This is required for 842 some tooling, such as objcopy, to be able to adjust the LMA of the 843 ELF file. 844 845config APPLICATION_DEFINED_SYSCALL 846 bool "Scan application folder for any syscall definition" 847 help 848 Scan additional folders inside application source folder 849 for application defined syscalls. 850 851config MAKEFILE_EXPORTS 852 bool "Generate build metadata files named Makefile.exports" 853 help 854 Generates a file with build information that can be read by 855 third party Makefile-based build systems. 856 857config BUILD_OUTPUT_META 858 bool "Create a build meta file" 859 help 860 Create a build meta file in the build directory containing lists of: 861 - Zephyr: path and revision (if git repo) 862 - Zephyr modules: name, path, and revision (if git repo) 863 - West: 864 - manifest: path and revision 865 - projects: path and revision 866 - Workspace: 867 - dirty: one or more repositories are marked dirty 868 - extra: extra Zephyr modules are manually included in the build 869 - off: the SHA of one or more west projects are not what the manifest 870 defined when `west update` was run the last time (`manifest-rev`). 871 The off state is only present if a west workspace is found. 872 File extension is .meta 873 874config BUILD_OUTPUT_META_STATE_PROPAGATE 875 bool "Propagate module and project state" 876 depends on BUILD_OUTPUT_META 877 help 878 Propagate to state of each module to the Zephyr revision field. 879 If west is used the state of each west project is also propagated to 880 the Zephyr revision field. 881 West manifest repo revision field will also 882 be marked with the same state as the Zephyr revision. 883 The final revision will become: <SHA>-<state1>-<state2>-<state3>... 884 If no states are appended to the SHA it means the build is of a clean 885 tree. 886 - dirty: one or more repositories are marked dirty 887 - extra: extra Zephyr modules are manually included in the build 888 - off: the SHA of one or more west projects are not what the manifest 889 defined when `west update` was run the last time (`manifest-rev`). 890 The off state is only present if a west workspace is found. 891 892config BUILD_OUTPUT_STRIP_PATHS 893 bool "Strip absolute paths from binaries" 894 default y 895 help 896 If the compiler supports it, strip the ${ZEPHYR_BASE} prefix from the 897 __FILE__ macro used in __ASSERT*, in the 898 .noinit."/home/joe/zephyr/fu/bar.c" section names and in any 899 application code. 900 This saves some memory, stops leaking user locations in binaries, makes 901 failure logs more deterministic and most importantly makes builds more 902 deterministic. 903 Debuggers usually have a path mapping feature to ensure the files are 904 still found. 905 906config CHECK_INIT_PRIORITIES 907 bool "Build time initialization priorities check" 908 default y 909 # If we are building a native_simulator target, we can only check the init priorities 910 # if we are building the final output but we are not assembling several images together 911 depends on !(NATIVE_LIBRARY && (!BUILD_OUTPUT_EXE || NATIVE_SIMULATOR_EXTRA_IMAGE_PATHS != "")) 912 depends on "$(ZEPHYR_TOOLCHAIN_VARIANT)" != "armclang" 913 help 914 Check the build for initialization priority issues by comparing the 915 initialization priority in the build with the device dependency 916 derived from the devicetree definition. 917 918 Fails the build on priority errors (dependent devices, inverted 919 priority). 920 921config EMIT_ALL_SYSCALLS 922 bool "Emit all possible syscalls in the tree" 923 help 924 This tells the build system to emit all possible syscalls found 925 in the tree, instead of only those syscalls associated with enabled 926 drivers and subsystems. 927 928endmenu 929 930config DEPRECATED 931 bool 932 help 933 Symbol that must be selected by a feature or module if it is 934 considered to be deprecated. 935 936config WARN_DEPRECATED 937 bool 938 default y 939 prompt "Warn on deprecated usage" 940 help 941 Print a warning when the Kconfig tree is parsed if any deprecated 942 features are enabled. 943 944config EXPERIMENTAL 945 bool 946 help 947 Symbol that must be selected by a feature if it is considered to be 948 at an experimental implementation stage. 949 950config WARN_EXPERIMENTAL 951 bool 952 prompt "Warn on experimental usage" 953 help 954 Print a warning when the Kconfig tree is parsed if any experimental 955 features are enabled. 956 957config TAINT 958 bool 959 help 960 Symbol that must be selected by a feature or module if the Zephyr 961 build is considered tainted. 962 963config ENFORCE_ZEPHYR_STDINT 964 bool 965 prompt "Enforce Zephyr convention for stdint" 966 depends on !ARCH_POSIX 967 default y 968 help 969 This enforces the Zephyr stdint convention where int32_t = int, 970 int64_t = long long, and intptr_t = long so that short string 971 format length modifiers can be used universally across ILP32 972 and LP64 architectures. Sometimes this is not possible e.g. when 973 linking against a binary-only C++ library whose type mangling 974 is incompatible with the Zephyr convention, or if the build 975 environment doesn't allow such enforcement, in which case this 976 should be turned off with the caveat that argument type validation 977 on Zephyr code will be skipped. 978 979endmenu 980 981 982menu "Boot Options" 983 984config IS_BOOTLOADER 985 bool "Act as a bootloader" 986 depends on XIP 987 depends on ARM 988 help 989 This option indicates that Zephyr will act as a bootloader to execute 990 a separate Zephyr image payload. 991 992config BOOTLOADER_SRAM_SIZE 993 int "SRAM reserved for bootloader [DEPRECATED]" 994 default 0 995 depends on !XIP || IS_BOOTLOADER 996 depends on ARM || XTENSA 997 help 998 This option specifies the amount of SRAM (measure in kB) reserved for 999 a bootloader image, when either: 1000 - the Zephyr image itself is to act as the bootloader, or 1001 - Zephyr is a !XIP image, which implicitly assumes existence of a 1002 bootloader that loads the Zephyr !XIP image onto SRAM. 1003 1004 This option is deprecated, users should transition to using DTS to set this, if needed. 1005 To be removed after Zephyr 3.7 release. 1006 1007config BOOTLOADER_SRAM_SIZE_DEPRECATED 1008 bool 1009 default y 1010 select DEPRECATED 1011 depends on BOOTLOADER_SRAM_SIZE != 0 1012 depends on !XIP || IS_BOOTLOADER 1013 depends on ARM || XTENSA 1014 help 1015 Non-prompt symbol to indicate that the deprecated BOOTLOADER_SRAM_SIZE Kconfig has a 1016 non-0 value. Please transition to using devicetree. 1017 1018config BOOTLOADER_BOSSA 1019 bool "BOSSA bootloader support" 1020 select USE_DT_CODE_PARTITION 1021 1022 help 1023 Signifies that the target uses a BOSSA compatible bootloader. If CDC 1024 ACM USB support is also enabled then the board will reboot into the 1025 bootloader automatically when bossac is run. 1026 1027config BOOTLOADER_BOSSA_DEVICE_NAME 1028 string "BOSSA CDC ACM device name" 1029 depends on BOOTLOADER_BOSSA && CDC_ACM_DTE_RATE_CALLBACK_SUPPORT 1030 default "CDC_ACM_0" 1031 help 1032 Sets the CDC ACM port to watch for reboot commands. 1033 1034choice 1035 prompt "BOSSA bootloader variant" 1036 depends on BOOTLOADER_BOSSA 1037 1038config BOOTLOADER_BOSSA_LEGACY 1039 bool "Legacy" 1040 help 1041 Select the Legacy variant of the BOSSA bootloader. This is defined 1042 for compatibility mode only. The recommendation is use newer 1043 versions like Arduino or Adafruit UF2. 1044 1045config BOOTLOADER_BOSSA_ARDUINO 1046 bool "Arduino" 1047 help 1048 Select the Arduino variant of the BOSSA bootloader. Uses 0x07738135 1049 as the magic value to enter the bootloader. 1050 1051config BOOTLOADER_BOSSA_ADAFRUIT_UF2 1052 bool "Adafruit UF2" 1053 help 1054 Select the Adafruit UF2 variant of the BOSSA bootloader. Uses 1055 0xf01669ef as the magic value to enter the bootloader. 1056 1057endchoice 1058 1059endmenu 1060 1061menu "Compatibility" 1062 1063config LEGACY_GENERATED_INCLUDE_PATH 1064 bool "Legacy include path for generated headers" 1065 default y 1066 help 1067 Allow applications and libraries to use the Zephyr legacy include 1068 path for the generated headers which does not use the `zephyr/` prefix. 1069 1070 From now on, i.e., the preferred way to include the `version.h` header is to 1071 use <zephyr/version.h>, this Kconfig is currently enabled by default so that 1072 user applications won't immediately fail to compile. 1073 1074 This Kconfig will be deprecated and eventually removed in the future releases. 1075 1076endmenu 1077