# Copyright (c) 2016 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

config HAS_CMSIS_CORE
	bool
	select HAS_CMSIS_CORE_A if CPU_AARCH32_CORTEX_A
	select HAS_CMSIS_CORE_R if CPU_AARCH32_CORTEX_R
	select HAS_CMSIS_CORE_M if CPU_CORTEX_M

if HAS_CMSIS_CORE

config HAS_CMSIS_CORE_A
	bool

config HAS_CMSIS_CORE_R
	bool

config HAS_CMSIS_CORE_M
	bool

endif

menuconfig CMSIS_DSP
	bool "CMSIS-DSP Library Support"
	depends on NEWLIB_LIBC || ARCH_POSIX

if CMSIS_DSP
source "modules/Kconfig.cmsis_dsp"
endif

menuconfig CMSIS_NN
	bool "CMSIS-NN Library Support"
	depends on CPU_CORTEX_M
	select CMSIS_DSP

if CMSIS_NN
source "modules/Kconfig.cmsis_nn"
endif
