1# General configuration options
2
3# Copyright (c) 2014-2015 Wind River Systems, Inc.
4# Copyright (c) 2016 Intel Corporation
5# SPDX-License-Identifier: Apache-2.0
6
7
8# Include Kconfig.defconfig files first so that they can override defaults and
9# other symbol/choice properties by adding extra symbol/choice definitions.
10# After merging all definitions for a symbol/choice, Kconfig picks the first
11# property (e.g. the first default) with a satisfied condition.
12#
13# Shield defaults should have precedence over board defaults, which should have
14# precedence over SoC defaults, so include them in that order.
15#
16# $ARCH and $BOARD_DIR will be glob patterns when building documentation.
17# This loads custom shields defconfigs (from BOARD_ROOT)
18osource "$(KCONFIG_BINARY_DIR)/Kconfig.shield.defconfig"
19# This loads Zephyr base shield defconfigs
20source "boards/shields/*/Kconfig.defconfig"
21
22source "$(BOARD_DIR)/Kconfig.defconfig"
23
24# This loads custom SoC root defconfigs
25osource "$(KCONFIG_BINARY_DIR)/Kconfig.soc.defconfig"
26# This loads Zephyr base SoC root defconfigs
27osource "soc/$(ARCH)/*/Kconfig.defconfig"
28# This loads the toolchain defconfigs
29osource "$(TOOLCHAIN_KCONFIG_DIR)/Kconfig.defconfig"
30
31menu "Modules"
32
33source "modules/Kconfig"
34
35endmenu
36
37source "boards/Kconfig"
38source "soc/Kconfig"
39source "arch/Kconfig"
40source "kernel/Kconfig"
41source "dts/Kconfig"
42source "drivers/Kconfig"
43source "lib/Kconfig"
44source "subsys/Kconfig"
45
46osource "$(TOOLCHAIN_KCONFIG_DIR)/Kconfig"
47
48menu "Build and Link Features"
49
50menu "Linker Options"
51
52choice
53	prompt "Linker Orphan Section Handling"
54	default LINKER_ORPHAN_SECTION_WARN
55
56config LINKER_ORPHAN_SECTION_PLACE
57	bool "Place"
58	help
59	  Linker puts orphan sections in place without warnings
60	  or errors.
61
62config LINKER_ORPHAN_SECTION_WARN
63	bool "Warn"
64	help
65	  Linker places the orphan sections in output and issues
66	  warning about those sections.
67
68config LINKER_ORPHAN_SECTION_ERROR
69	bool "Error"
70	help
71	  Linker exits with error when an orphan section is found.
72
73endchoice
74
75config HAS_FLASH_LOAD_OFFSET
76	bool
77	help
78	  This option is selected by targets having a FLASH_LOAD_OFFSET
79	  and FLASH_LOAD_SIZE.
80
81if HAS_FLASH_LOAD_OFFSET
82
83config USE_DT_CODE_PARTITION
84	bool "Link application into /chosen/zephyr,code-partition from devicetree"
85	help
86	  When enabled, the application will be linked into the flash partition
87	  selected by the zephyr,code-partition property in /chosen in devicetree.
88	  When this is disabled, the flash load offset and size can be set manually
89	  below.
90
91# Workaround for not being able to have commas in macro arguments
92DT_CHOSEN_Z_CODE_PARTITION := zephyr,code-partition
93
94config FLASH_LOAD_OFFSET
95	# Only user-configurable when USE_DT_CODE_PARTITION is disabled
96	hex "Kernel load offset" if !USE_DT_CODE_PARTITION
97	default $(dt_chosen_reg_addr_hex,$(DT_CHOSEN_Z_CODE_PARTITION)) if USE_DT_CODE_PARTITION
98	default 0
99	help
100	  This option specifies the byte offset from the beginning of flash that
101	  the kernel should be loaded into. Changing this value from zero will
102	  affect the Zephyr image's link, and will decrease the total amount of
103	  flash available for use by application code.
104
105	  If unsure, leave at the default value 0.
106
107config FLASH_LOAD_SIZE
108	# Only user-configurable when USE_DT_CODE_PARTITION is disabled
109	hex "Kernel load size" if !USE_DT_CODE_PARTITION
110	default $(dt_chosen_reg_size_hex,$(DT_CHOSEN_Z_CODE_PARTITION)) if USE_DT_CODE_PARTITION
111	default 0
112	help
113	  If non-zero, this option specifies the size, in bytes, of the flash
114	  area that the Zephyr image will be allowed to occupy.  If zero, the
115	  image will be able to occupy from the FLASH_LOAD_OFFSET to the end of
116	  the device.
117
118	  If unsure, leave at the default value 0.
119
120endif # HAS_FLASH_LOAD_OFFSET
121
122config ROM_START_OFFSET
123	hex
124	prompt "ROM start offset" if !BOOTLOADER_MCUBOOT
125	default 0x200 if BOOTLOADER_MCUBOOT
126	default 0
127	help
128	  If the application is built for chain-loading by a bootloader this
129	  variable is required to be set to value that leaves sufficient
130	  space between the beginning of the image and the start of the first
131	  section to store an image header or any other metadata.
132	  In the particular case of the MCUboot bootloader this reserves enough
133	  space to store the image header, which should also meet vector table
134	  alignment requirements on most ARM targets, although some targets
135	  may require smaller or larger values.
136
137config LD_LINKER_SCRIPT_SUPPORTED
138	bool
139	default y
140
141choice LINKER_SCRIPT
142	prompt "Linker script"
143	default LD_LINKER_TEMPLATE if LD_LINKER_SCRIPT_SUPPORTED
144
145config LD_LINKER_TEMPLATE
146	bool "LD template"
147	depends on LD_LINKER_SCRIPT_SUPPORTED
148	help
149	  Select this option to use the LD linker script templates.
150	  The templates are pre-processed by the C pre-processor to create the
151	  final LD linker script.
152
153config CMAKE_LINKER_GENERATOR
154	bool "CMake generator"
155	depends on ARM
156	help
157	  Select this option to use the Zephyr CMake linker script generator.
158	  The linker configuration is written in CMake and the final linker
159	  script will be generated by the toolchain specific linker generator.
160	  For LD based linkers, this will be the ld generator, for ARMClang /
161	  armlink based linkers it will be the scatter generator.
162
163endchoice
164
165config HAVE_CUSTOM_LINKER_SCRIPT
166	bool "Custom linker script provided"
167	help
168	  Set this option if you have a custom linker script which needed to
169	  be define in CUSTOM_LINKER_SCRIPT.
170
171config CUSTOM_LINKER_SCRIPT
172	string "Path to custom linker script"
173	depends on HAVE_CUSTOM_LINKER_SCRIPT
174	help
175	  Path to the linker script to be used instead of the one define by the
176	  board.
177
178	  The linker script must be based on a version provided by Zephyr since
179	  the kernel can expect a certain layout/certain regions.
180
181	  This is useful when an application needs to add sections into the
182	  linker script and avoid having to change the script provided by
183	  Zephyr.
184
185config KERNEL_ENTRY
186	string "Kernel entry symbol"
187	default "__start"
188	help
189	  Code entry symbol, to be set at linking phase.
190
191config LINKER_SORT_BY_ALIGNMENT
192	bool "Sort input sections by alignment"
193	default y
194	help
195	  This turns on the linker flag to sort sections by alignment
196	  in decreasing size of symbols. This helps to minimize
197	  padding between symbols.
198
199config SRAM_VECTOR_TABLE
200	bool "Place the vector table in SRAM instead of flash"
201	help
202	  The option specifies that the vector table should be placed at the
203	  start of SRAM instead of the start of flash.
204
205config HAS_SRAM_OFFSET
206	bool
207	help
208	  This option is selected by targets that require SRAM_OFFSET.
209
210config SRAM_OFFSET
211	hex "Kernel SRAM offset" if HAS_SRAM_OFFSET
212	default 0
213	help
214	  This option specifies the byte offset from the beginning of SRAM
215	  where the kernel begins. Changing this value from zero will affect
216	  the Zephyr image's link, and will decrease the total amount of
217	  SRAM available for use by application code.
218
219	  If unsure, leave at the default value 0.
220
221menu "Linker Sections"
222
223config LINKER_USE_BOOT_SECTION
224	bool "Enable Usage of Boot Linker Section"
225	help
226	  If enabled, the symbols which are needed for the boot process
227	  will be put into another linker section reserved for these
228	  symbols.
229
230	  Requires that boot sections exist in the architecture, SoC,
231	  board or custom linker script.
232
233config LINKER_USE_PINNED_SECTION
234	bool "Enable Usage of Pinned Linker Section"
235	help
236	  If enabled, the symbols which need to be pinned in memory
237	  will be put into another linker section reserved for pinned
238	  symbols. During boot, the corresponding memory will be marked
239	  as pinned.
240
241	  Requires that pinned sections exist in the architecture, SoC,
242	  board or custom linker script.
243
244config LINKER_GENERIC_SECTIONS_PRESENT_AT_BOOT
245	bool "Generic sections are present at boot" if DEMAND_PAGING && LINKER_USE_PINNED_SECTION
246	default y
247	help
248	  When disabled, the linker sections other than the boot and
249	  pinned sections will be marked as not present in the page
250	  tables. This allows kernel to pull in data pages on demand
251	  as required by current execution context when demand paging
252	  is enabled. There is no need to load all code and data into
253	  memory at once.
254
255	  If unsure, say Y.
256
257endmenu # "Linker Sections"
258
259endmenu
260
261menu "Compiler Options"
262
263config CODING_GUIDELINE_CHECK
264	bool "Enforce coding guideline rules"
265	help
266	  Use available compiler flags to check coding guideline rules during
267	  the build.
268
269config NATIVE_APPLICATION
270	bool "Build as a native host application"
271	help
272	  Build as a native application that can run on the host and using
273	  resources and libraries provided by the host.
274
275choice
276	prompt "Optimization level"
277	default NO_OPTIMIZATIONS    if COVERAGE
278	default DEBUG_OPTIMIZATIONS if DEBUG
279	default SIZE_OPTIMIZATIONS
280	help
281	  Note that these flags shall only control the compiler
282	  optimization level, and that no extra debug code shall be
283	  conditionally compiled based on them.
284
285config SIZE_OPTIMIZATIONS
286	bool "Optimize for size"
287	help
288	  Compiler optimizations will be set to -Os independently of other
289	  options.
290
291config SPEED_OPTIMIZATIONS
292	bool "Optimize for speed"
293	help
294	  Compiler optimizations will be set to -O2 independently of other
295	  options.
296
297config DEBUG_OPTIMIZATIONS
298	bool "Optimize debugging experience"
299	help
300	  Compiler optimizations will be set to -Og independently of other
301	  options.
302
303config NO_OPTIMIZATIONS
304	bool "Optimize nothing"
305	help
306	  Compiler optimizations will be set to -O0 independently of other
307	  options.
308endchoice
309
310config COMPILER_WARNINGS_AS_ERRORS
311	bool "Treat warnings as errors"
312	help
313	  Turn on "warning as error" toolchain flags
314
315config COMPILER_COLOR_DIAGNOSTICS
316	bool "Enable colored diganostics"
317	default y
318	help
319	  Compiler diagnostic messages are colorized.
320
321config COMPILER_OPT
322	string "Custom compiler options"
323	help
324	  This option is a free-form string that is passed to the compiler
325	  when building all parts of a project (i.e. kernel).
326	  The compiler options specified by this string supplement the
327	  predefined set of compiler supplied by the build system,
328	  and can be used to change compiler optimization, warning and error
329	  messages, and so on.
330
331config MISRA_SANE
332	bool "MISRA standards compliance features"
333	help
334	  Causes the source code to build in "MISRA" mode, which
335	  disallows some otherwise-permitted features of the C
336	  standard for safety reasons.  Specifically variable length
337	  arrays are not permitted (and gcc will enforce this).
338
339endmenu
340
341choice
342	prompt "Error checking behavior for CHECK macro"
343	default RUNTIME_ERROR_CHECKS
344
345config ASSERT_ON_ERRORS
346	bool "Assert on all errors"
347	help
348	  Assert on errors covered with the CHECK macro.
349
350config NO_RUNTIME_CHECKS
351	bool "No runtime error checks"
352	help
353	  Do not do any runtime checks or asserts when using the CHECK macro.
354
355config RUNTIME_ERROR_CHECKS
356	bool "Enable runtime error checks"
357	help
358	  Always perform runtime checks covered with the CHECK macro. This
359	  option is the default and the only option used during testing.
360
361endchoice
362
363menu "Build Options"
364
365config KERNEL_BIN_NAME
366	string "The kernel binary name"
367	default "zephyr"
368	help
369	  This option sets the name of the generated kernel binary.
370
371config OUTPUT_STAT
372	bool "Create a statistics file"
373	default y
374	help
375	  Create a stat file using readelf -e <elf>
376
377config OUTPUT_DISASSEMBLY
378	bool "Create a disassembly file"
379	default y
380	help
381	  Create an .lst file with the assembly listing of the firmware.
382
383config OUTPUT_DISASSEMBLE_ALL
384	bool "Disassemble all sections with source. Fill zeros."
385	default n
386	depends on OUTPUT_DISASSEMBLY
387	help
388	  The .lst file will contain complete disassembly of the firmware
389	  not just those expected to contain instructions including zeros
390
391config OUTPUT_PRINT_MEMORY_USAGE
392	bool "Print memory usage to stdout"
393	default y
394	help
395	  If the toolchain supports it, this option will pass
396	  --print-memory-region to the linker when it is doing it's first
397	  linker pass. Note that the memory regions are symbolic concepts
398	  defined by the linker scripts and do not necessarily map
399	  directly to the real physical address space. Take also note that
400	  some platforms do two passes of the linker so the results do not
401	  match exactly to the final elf file. See also rom_report,
402	  ram_report and
403	  https://sourceware.org/binutils/docs/ld/MEMORY.html
404
405config CLEANUP_INTERMEDIATE_FILES
406	bool "Remove all intermediate files"
407	help
408	  Delete intermediate files to save space and cleanup clutter resulting
409	  from the build process.
410
411config BUILD_NO_GAP_FILL
412	bool "Don't fill gaps in generated hex/bin/s19 files."
413
414config BUILD_OUTPUT_HEX
415	bool "Build a binary in HEX format"
416	help
417	  Build an Intel HEX binary zephyr/zephyr.hex in the build directory.
418	  The name of this file can be customized with CONFIG_KERNEL_BIN_NAME.
419
420config BUILD_OUTPUT_BIN
421	bool "Build a binary in BIN format"
422	default y
423	help
424	  Build a "raw" binary zephyr/zephyr.bin in the build directory.
425	  The name of this file can be customized with CONFIG_KERNEL_BIN_NAME.
426
427config BUILD_OUTPUT_EFI
428	bool "Build as an EFI application"
429	default n
430	depends on X86_64
431	help
432	  Build as an EFI application.
433
434	  This works by creating a "zephyr.efi" EFI binary containing a zephyr
435	  image extracted from a built zephyr.elf file.  EFI applications are
436	  relocatable, and cannot be placed at specific locations in memory.
437	  Instead, the stub code will copy the embedded zephyr sections to the
438	  appropriate locations at startup, clear any zero-filled (BSS, etc...)
439	  areas, then jump into the 64 bit entry point.
440
441config BUILD_OUTPUT_EXE
442	bool "Build a binary in ELF format with .exe extension"
443	help
444	  Build an ELF binary that can run in the host system at
445	  zephyr/zephyr.exe in the build directory.
446	  The name of this file can be customized with CONFIG_KERNEL_BIN_NAME.
447
448config BUILD_OUTPUT_S19
449	bool "Build a binary in S19 format"
450	help
451	  Build an S19 binary zephyr/zephyr.s19 in the build directory.
452	  The name of this file can be customized with CONFIG_KERNEL_BIN_NAME.
453
454config BUILD_OUTPUT_UF2
455	bool "Build a binary in UF2 format"
456	depends on BUILD_OUTPUT_BIN
457	help
458	  Build a UF2 binary zephyr/zephyr.uf2 in the build directory.
459	  The name of this file can be customized with CONFIG_KERNEL_BIN_NAME.
460
461if BUILD_OUTPUT_UF2
462
463config BUILD_OUTPUT_UF2_FAMILY_ID
464	string "UF2 device family ID"
465	default "0x1c5f21b0" if SOC_ESP32
466	default "0xada52840" if SOC_NRF52840_QIAA
467	default "0x4fb2d5bd" if SOC_SERIES_IMX_RT
468	default "0x2abc77ec" if SOC_SERIES_LPC55XXX
469	default "0x68ed2b88" if SOC_SERIES_SAMD21
470	default "0x55114460" if SOC_SERIES_SAMD51
471	default "0x647824b6" if SOC_SERIES_STM32F0X
472	default "0x5d1a0a2e" if SOC_SERIES_STM32F2X
473	default "0x6b846188" if SOC_SERIES_STM32F3X
474	default "0x53b80f00" if SOC_SERIES_STM32F7X
475	default "0x300f5633" if SOC_SERIES_STM32G0X
476	default "0x4c71240a" if SOC_SERIES_STM32G4X
477	default "0x6db66082" if SOC_SERIES_STM32H7X
478	default "0x202e3a91" if SOC_SERIES_STM32L0X
479	default "0x1e1f432d" if SOC_SERIES_STM32L1X
480	default "0x00ff6919" if SOC_SERIES_STM32L4X
481	default "0x04240bdf" if SOC_SERIES_STM32L5X
482	default "0x70d16653" if SOC_SERIES_STM32WBX
483	default "0x5ee21072" if SOC_STM32F103XE
484	default "0x57755a57" if SOC_STM32F401XC || SOC_STM32F401XE
485	default "0x6d0922fa" if SOC_STM32F407XE
486	default "0x8fb060fe" if SOC_STM32F407XG
487	help
488	  UF2 bootloaders only accept UF2 files with a matching family ID.
489	  This can be either a hex, e.g. 0x68ed2b88, or well-known family
490	  name string. If the SoC in use is known by UF2, the Family ID will
491	  be pre-filled with the known value.
492
493endif # BUILD_OUTPUT_UF2
494
495config BUILD_OUTPUT_STRIPPED
496	bool "Build a stripped binary"
497	help
498	  Build a stripped binary zephyr/zephyr.strip in the build directory.
499	  The name of this file can be customized with CONFIG_KERNEL_BIN_NAME.
500
501config APPLICATION_DEFINED_SYSCALL
502	bool "Scan application folder for any syscall definition"
503	help
504	  Scan additional folders inside application source folder
505	  for application defined syscalls.
506
507config MAKEFILE_EXPORTS
508	bool "Generate build metadata files named Makefile.exports"
509	help
510	  Generates a file with build information that can be read by
511	  third party Makefile-based build systems.
512
513endmenu
514endmenu
515
516
517menu "Boot Options"
518
519config IS_BOOTLOADER
520	bool "Act as a bootloader"
521	depends on XIP
522	depends on ARM
523	help
524	  This option indicates that Zephyr will act as a bootloader to execute
525	  a separate Zephyr image payload.
526
527config BOOTLOADER_SRAM_SIZE
528	int "SRAM reserved for bootloader"
529	default 16
530	depends on !XIP || IS_BOOTLOADER
531	depends on ARM || XTENSA
532	help
533	  This option specifies the amount of SRAM (measure in kB) reserved for
534	  a bootloader image, when either:
535	  - the Zephyr image itself is to act as the bootloader, or
536	  - Zephyr is a !XIP image, which implicitly assumes existence of a
537	  bootloader that loads the Zephyr !XIP image onto SRAM.
538
539config MCUBOOT
540	bool
541	help
542	  Hidden option used to indicate that the current image is MCUBoot
543
544config BOOTLOADER_MCUBOOT
545	bool "MCUboot bootloader support"
546	select USE_DT_CODE_PARTITION
547	imply INIT_ARCH_HW_AT_BOOT if ARCH_SUPPORTS_ARCH_HW_INIT
548	depends on !MCUBOOT
549	help
550	  This option signifies that the target uses MCUboot as a bootloader,
551	  or in other words that the image is to be chain-loaded by MCUboot.
552	  This sets several required build system and Device Tree options in
553	  order for the image generated to be bootable using the MCUboot open
554	  source bootloader. Currently this includes:
555
556	    * Setting ROM_START_OFFSET to a default value that allows space
557	      for the MCUboot image header
558	    * Activating SW_VECTOR_RELAY_CLIENT on Cortex-M0
559	      (or Armv8-M baseline) targets with no built-in vector relocation
560	      mechanisms
561
562	  By default, this option instructs Zephyr to initialize the core
563	  architecture HW registers during boot, when this is supported by
564	  the application. This removes the need by MCUboot to reset
565	  the core registers' state itself.
566
567if BOOTLOADER_MCUBOOT
568
569config MCUBOOT_SIGNATURE_KEY_FILE
570	string "Path to the mcuboot signing key file"
571	default ""
572	help
573	  The file contains a key pair whose public half is verified
574	  by your target's MCUboot image. The file is in PEM format.
575
576	  If set to a non-empty value, the build system tries to
577	  sign the final binaries using a 'west sign -t imgtool' command.
578	  The signed binaries are placed in the build directory
579	  at zephyr/zephyr.signed.bin and zephyr/zephyr.signed.hex.
580
581	  The file names can be customized with CONFIG_KERNEL_BIN_NAME.
582	  The existence of bin and hex files depends on CONFIG_BUILD_OUTPUT_BIN
583	  and CONFIG_BUILD_OUTPUT_HEX.
584
585	  This option should contain a path to the same file as the
586	  BOOT_SIGNATURE_KEY_FILE option in your MCUboot .config. The path
587	  may be absolute or relative to the west workspace topdir. (The MCUboot
588	  config option is used for the MCUboot bootloader image; this option is
589	  for your application which is to be loaded by MCUboot. The MCUboot
590	  config option can be a relative path from the MCUboot repository
591	  root.)
592
593	  If left empty, you must sign the Zephyr binaries manually.
594
595config MCUBOOT_ENCRYPTION_KEY_FILE
596	string "Path to the mcuboot encryption key file"
597	default ""
598	depends on MCUBOOT_SIGNATURE_KEY_FILE != ""
599	help
600	  The file contains the public key that is used to encrypt the
601	  ephemeral key that encrypts the image. The corresponding
602	  private key is hard coded in the MCUboot source code and is
603	  used to decrypt the ephemeral key that is embedded in the
604	  image. The file is in PEM format.
605
606	  If set to a non-empty value, the build system tries to
607	  sign and encrypt the final binaries using a 'west sign -t imgtool'
608	  command. The binaries are placed in the build directory at
609	  zephyr/zephyr.signed.encrypted.bin and
610	  zephyr/zephyr.signed.encrypted.hex.
611
612	  The file names can be customized with CONFIG_KERNEL_BIN_NAME.
613	  The existence of bin and hex files depends on CONFIG_BUILD_OUTPUT_BIN
614	  and CONFIG_BUILD_OUTPUT_HEX.
615
616	  This option should either be an absolute path or a path relative to
617	  the west workspace topdir.
618	  Example: './bootloader/mcuboot/enc-rsa2048-pub.pem'
619
620	  If left empty, you must encrypt the Zephyr binaries manually.
621
622config MCUBOOT_EXTRA_IMGTOOL_ARGS
623	string "Extra arguments to pass to imgtool"
624	default ""
625	help
626	  If CONFIG_MCUBOOT_SIGNATURE_KEY_FILE is a non-empty string,
627	  you can use this option to pass extra options to imgtool.
628	  For example, you could set this to "--version 1.2".
629
630config MCUBOOT_GENERATE_CONFIRMED_IMAGE
631	bool "Also generate a padded, confirmed image"
632	help
633	  The signed, padded, and confirmed binaries are placed in the build
634	  directory at zephyr/zephyr.signed.confirmed.bin and
635	  zephyr/zephyr.signed.confirmed.hex.
636
637	  The file names can be customized with CONFIG_KERNEL_BIN_NAME.
638	  The existence of bin and hex files depends on CONFIG_BUILD_OUTPUT_BIN
639	  and CONFIG_BUILD_OUTPUT_HEX.
640
641endif # BOOTLOADER_MCUBOOT
642
643config BOOTLOADER_ESP_IDF
644	bool "ESP-IDF bootloader support"
645	depends on SOC_ESP32 || SOC_ESP32S2
646	help
647	  This option will trigger the compilation of the ESP-IDF bootloader
648	  inside the build folder.
649	  At flash time, the bootloader will be flashed with the zephyr image
650
651config BOOTLOADER_BOSSA
652	bool "BOSSA bootloader support"
653	select USE_DT_CODE_PARTITION
654
655	help
656	  Signifies that the target uses a BOSSA compatible bootloader.  If CDC
657	  ACM USB support is also enabled then the board will reboot into the
658	  bootloader automatically when bossac is run.
659
660config BOOTLOADER_BOSSA_DEVICE_NAME
661	string "BOSSA CDC ACM device name"
662	depends on BOOTLOADER_BOSSA && CDC_ACM_DTE_RATE_CALLBACK_SUPPORT
663	default "CDC_ACM_0"
664	help
665	  Sets the CDC ACM port to watch for reboot commands.
666
667choice
668	prompt "BOSSA bootloader variant"
669	depends on BOOTLOADER_BOSSA
670
671config BOOTLOADER_BOSSA_LEGACY
672	bool "Legacy"
673	help
674	  Select the Legacy variant of the BOSSA bootloader.  This is defined
675	  for compatibility mode only.  The recommendation is use newer
676	  versions like Arduino or Adafruit UF2.
677
678config BOOTLOADER_BOSSA_ARDUINO
679	bool "Arduino"
680	help
681	  Select the Arduino variant of the BOSSA bootloader.  Uses 0x07738135
682	  as the magic value to enter the bootloader.
683
684config BOOTLOADER_BOSSA_ADAFRUIT_UF2
685	bool "Adafruit UF2"
686	help
687	  Select the Adafruit UF2 variant of the BOSSA bootloader.  Uses
688	  0xf01669ef as the magic value to enter the bootloader.
689
690endchoice
691
692endmenu
693
694menu "Compatibility"
695
696config COMPAT_INCLUDES
697	bool "Suppress warnings when using header shims"
698	default y
699	help
700	  Suppress any warnings from the pre-processor when including
701	  deprecated header files.
702
703endmenu
704