# SPDX-License-Identifier: Apache-2.0

choice
	prompt "SoC/CPU/Configuration Selection"

source "$(SOC_DIR)/$(ARCH)/*/Kconfig.soc"

endchoice

menu "Hardware Configuration"
osource "$(SOC_DIR)/$(ARCH)/Kconfig"
osource "$(SOC_DIR)/$(ARCH)/*/Kconfig"


module = SOC
module-str = SOC
source "subsys/logging/Kconfig.template.log_config"

endmenu

# The helper symbols below are put here due to an unusual setup: The simulated
# nrf52_bsim board uses the POSIX arch, but is compatible with Nordic ARM
# boards

config SOC_COMPATIBLE_NRF
	bool

config SOC_COMPATIBLE_NRF52X
	bool

config SOC_COMPATIBLE_NRF52832
	bool

#
# SOC_*_LD: SoC specific Linker script additions
#

if ARC || ARM || X86 || NIOS2 || RISCV

config SOC_NOINIT_LD
	bool
	help
	  Note: This is deprecated, use Cmake function zephyr_linker_sources() instead.
	  Include an SoC specific linker script fragment named soc-noinit.ld
	  for inserting additional data and linker directives into
	  the noinit section.

	  This only has effect if the SoC uses the common linker script
	  under include/arch/.

config SOC_RODATA_LD
	bool
	help
	  Note: This is deprecated, use Cmake function zephyr_linker_sources() instead.
	  Include an SoC specific linker script fragment named soc-rodata.ld
	  for inserting additional data and linker directives into
	  the rodata section.

	  This only has effect if the SoC uses the common linker script
	  under include/arch/.

config SOC_RWDATA_LD
	bool
	help
	  Note: This is deprecated, use Cmake function zephyr_linker_sources() instead.
	  Include an SoC specific linker script fragment named soc-rwdata.ld
	  for inserting additional data and linker directives into
	  the data section.

	  This only has effect if the SoC uses the common linker script
	  under include/arch/.

endif # ARC || ARM || X86 || NIOS2 || RISCV
