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
#
config SOC_NOINIT_LD
	bool
	depends on (ARC || ARM || X86 || NIOS2 || RISCV32)
	help
	  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
	depends on (ARC || ARM || X86 || NIOS2 || RISCV32)
	help
	  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
	depends on (ARC || ARM || X86 || NIOS2 || RISCV32)
	help
	  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/.
