1set(MCUX_SDK_PROJECT_NAME ${ZEPHYR_CURRENT_LIBRARY})
2# Translate the SoC name and part number into the mcux device and cpu
3# name respectively.
4# When this code completes, the following variables will be defined:
5# MCUX_DEVICE: SOC name, suffixed by core name when using a dual core part.
6#              Example: MIMXRT595S_cm33, or LPC55S36
7# MCUX_CPU: "CPU"+ SOC part number, followed by core name when using a dual core part.
8#              Example: CPU_MIMXRT595SFAWC_cm33, or  CPU_LPC55S36JBD100
9# MCU_DEVICE_PATH: SOC name without core suffix. Must match the name of the
10#              folder in MCUX HAL. IE MIMXRT595S, or LPC55S36
11
12if(NOT HWMv2)
13  # Include HWMv1 logic for MCUX variables
14  include(${CMAKE_CURRENT_LIST_DIR}/hwmv1.cmake)
15else()
16  string(TOUPPER ${CONFIG_SOC} MCUX_DEVICE_PATH)
17  string(TOUPPER ${CONFIG_SOC} MCUX_DEVICE)
18  set(MCUX_CPU CPU_${CONFIG_SOC_PART_NUMBER})
19
20  if(DEFINED CONFIG_MCUX_CORE_SUFFIX)
21    string(APPEND MCUX_DEVICE ${CONFIG_MCUX_CORE_SUFFIX})
22    string(APPEND MCUX_CPU ${CONFIG_MCUX_CORE_SUFFIX})
23  endif()
24endif()
25
26zephyr_include_directories(mcux-sdk/devices/${MCUX_DEVICE_PATH})
27zephyr_include_directories(mcux-sdk/devices/${MCUX_DEVICE_PATH}/drivers)
28
29#include device specific drivers
30if (${MCUX_DEVICE} MATCHES "MIMXRT1[0-9][0-9][0-9]")
31  zephyr_include_directories(mcux-sdk/devices/${MCUX_DEVICE_PATH}/xip)
32endif()
33
34#include CMSIS of mcux-sdk for Cortex-A
35if (CONFIG_CPU_CORTEX_A)
36  zephyr_include_directories(mcux-sdk/CMSIS/Core_AArch64/Include)
37endif()
38
39# The mcux uses the cpu name to expose SoC-specific features of a
40# given peripheral. For example, the UART peripheral may be
41# instantiated with/without a hardware FIFO, and the size of that FIFO
42# may be different for each instance in a given SoC. See
43# fsl_device_registers.h and ${MCUX_DEVICE}_features.h
44zephyr_compile_definitions(${MCUX_CPU})
45
46# Build mcux device-specific objects. Although it is not normal
47# practice, drilling down like this avoids the need for repetitive
48# build scripts for every mcux device.
49zephyr_library_sources(mcux-sdk/devices/${MCUX_DEVICE_PATH}/drivers/fsl_clock.c)
50if (${MCUX_DEVICE} MATCHES "LPC|MIMXRT6|MIMXRT5|MIMXRT7|RW6|MCXN.4.")
51  # fsl_power.c contains ARM specific symbols, which shouldn't be included for Xtensa cores
52  if (NOT ${MCUX_DEVICE} MATCHES "_dsp|_hifi1|_hifi4")
53    zephyr_library_sources(mcux-sdk/devices/${MCUX_DEVICE_PATH}/drivers/fsl_power.c)
54  endif()
55  zephyr_library_sources(mcux-sdk/devices/${MCUX_DEVICE_PATH}/drivers/fsl_reset.c)
56  zephyr_library_sources_ifdef(CONFIG_HWINFO_RW61X mcux-sdk/devices/${MCUX_DEVICE}/drivers/fsl_ocotp.c)
57endif()
58
59# RT11xx SOC initialization file requires additional drivers, import them
60if (${MCUX_DEVICE} MATCHES "MIMXRT11")
61  zephyr_library_sources(mcux-sdk/devices/${MCUX_DEVICE_PATH}/drivers/fsl_romapi.c)
62  zephyr_library_sources(mcux-sdk/devices/${MCUX_DEVICE_PATH}/drivers/fsl_pmu.c)
63  zephyr_library_sources(mcux-sdk/devices/${MCUX_DEVICE_PATH}/drivers/fsl_dcdc.c)
64  zephyr_library_sources_ifdef(CONFIG_SOC_MIMXRT1189 mcux-sdk/devices/${MCUX_DEVICE_PATH}/drivers/fsl_ele_base_api.c)
65if (${MCUX_DEVICE} MATCHES "MIMXRT117|MIMXRT116")
66  zephyr_library_sources(mcux-sdk/devices/${MCUX_DEVICE_PATH}/drivers/fsl_anatop_ai.c)
67endif()
68endif()
69
70zephyr_library_sources_ifdef(CONFIG_HAS_MCUX_AUDIOMIX mcux-sdk/devices/${MCUX_DEVICE_PATH}/drivers/fsl_audiomix.c)
71
72add_subdirectory(components)
73
74add_subdirectory_ifdef(
75  CONFIG_IEEE802154_KW41Z
76  middleware/wireless/framework_5.3.3
77  )
78
79add_subdirectory_ifdef(
80  CONFIG_WIFI_NXP
81  middleware/wifi_nxp
82  )
83
84#Include Entry cmake component
85include(${CMAKE_CURRENT_LIST_DIR}/hal_nxp.cmake)
86enable_language(C ASM)
87
88zephyr_library_sources_ifdef(CONFIG_SOC_LPC54114_M4 mcux-sdk/devices/${MCUX_DEVICE_PATH}/gcc/startup_LPC54114_cm4.S)
89
90zephyr_linker_sources(RWDATA quick_access_data.ld)
91zephyr_linker_sources_ifdef(CONFIG_ARCH_HAS_RAMFUNC_SUPPORT
92  RAMFUNC_SECTION
93  quick_access_code.ld
94)
95zephyr_linker_sources_ifdef(CONFIG_NOCACHE_MEMORY
96  NOCACHE_SECTION
97  nocache.ld
98)
99zephyr_library_compile_definitions_ifdef(CONFIG_NOCACHE_MEMORY
100  __STARTUP_INITIALIZE_NONCACHEDATA
101)
102
103add_subdirectory(middleware)
104