zephyr/modules/hal_nxp/mcux/mcux-sdk-ng/device/device.cmake

81 lines
2.4 KiB
CMake
Raw Normal View History

# Copyright 2025 NXP
#
# SPDX-License-Identifier: Apache-2.0
string(TOUPPER ${CONFIG_SOC} MCUX_DEVICE)
# Find the folder in mcux-sdk/devices that matches the device name
message(STATUS "Looking for device ${MCUX_DEVICE} in ${SdkRootDirPath}/devices/")
file(GLOB_RECURSE device_cmake_files ${SdkRootDirPath}/devices/*/CMakeLists.txt)
foreach(file ${device_cmake_files})
get_filename_component(folder ${file} DIRECTORY)
get_filename_component(folder_name ${folder} NAME)
if(folder_name STREQUAL ${MCUX_DEVICE})
message(STATUS "Found device folder: ${folder}")
set(mcux_device_folder ${folder})
break()
endif()
endforeach()
if(NOT mcux_device_folder)
message(FATAL_ERROR "Device ${MCUX_DEVICE} not found in ${SdkRootDirPath}/devices/")
endif()
if(DEFINED CONFIG_MCUX_CORE_SUFFIX)
string (REGEX REPLACE "^_" "" core_id "${CONFIG_MCUX_CORE_SUFFIX}")
endif()
# Definitions to load device drivers
set(CONFIG_MCUX_HW_DEVICE_CORE "${MCUX_DEVICE}${CONFIG_MCUX_CORE_SUFFIX}")
# Define CPU macro
zephyr_compile_definitions("CPU_${CONFIG_SOC_PART_NUMBER}${CONFIG_MCUX_CORE_SUFFIX}")
if(CONFIG_SOC_SERIES_IMXRT10XX OR CONFIG_SOC_SERIES_IMXRT11XX)
set(CONFIG_MCUX_COMPONENT_device.boot_header ON)
endif()
set(CONFIG_MCUX_COMPONENT_device.system ON)
set(CONFIG_MCUX_COMPONENT_device.CMSIS ON)
if(NOT CONFIG_CLOCK_CONTROL_ARM_SCMI)
set(CONFIG_MCUX_COMPONENT_driver.clock ON)
endif()
# Exclude fsl_power.c for DSP domains
if((CONFIG_ARM) AND (NOT CONFIG_CLOCK_CONTROL_ARM_SCMI))
set(CONFIG_MCUX_COMPONENT_driver.power ON)
endif()
if(NOT CONFIG_CPU_CORTEX_A)
set(CONFIG_MCUX_COMPONENT_driver.reset ON)
set(CONFIG_MCUX_COMPONENT_driver.memory ON)
endif()
# Include fsl_dsp.c for ARM domains (applicable to i.MX RTxxx devices)
if(CONFIG_ARM)
set(CONFIG_MCUX_COMPONENT_driver.dsp ON)
endif()
# load device variables
include(${mcux_device_folder}/variable.cmake)
# Load device files
mcux_add_cmakelists(${mcux_device_folder})
# Workaround for fsl_flexspi_nor_boot link error, remove the one in SDK, use the Zephyr file.
if(CONFIG_MCUX_COMPONENT_device.boot_header)
get_target_property(MCUXSDK_SOURCES ${MCUX_SDK_PROJECT_NAME} SOURCES)
list(FILTER MCUXSDK_SOURCES INCLUDE REGEX ".*fsl_flexspi_nor_boot\.c$")
if(NOT MCUXSDK_SOURCES STREQUAL "")
file(RELATIVE_PATH MCUXSDK_SOURCES ${SdkRootDirPath} ${MCUXSDK_SOURCES})
mcux_project_remove_source(
BASE_PATH ${SdkRootDirPath}
SOURCES ${MCUXSDK_SOURCES}
)
endif()
endif()