@@ -4,75 +4,91 @@ if (NOT BOARD)
4
4
message (FATAL_ERROR "BOARD not specified" )
5
5
endif ()
6
6
7
- # enable LTO
8
- set (CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE )
7
+ set (SDK_DIR ${TOP} /hw/mcu/nxp/mcux-sdk )
8
+ set (CMSIS_DIR ${TOP} /lib/CMSIS_5 )
9
+
10
+ # include board specific
11
+ include (${CMAKE_CURRENT_LIST_DIR} /boards/${BOARD}/board.cmake )
9
12
10
13
# toolchain set up
11
14
set (CMAKE_SYSTEM_PROCESSOR cortex-m7 CACHE INTERNAL "System Processor" )
12
15
set (CMAKE_TOOLCHAIN_FILE ${TOP} /tools/cmake/toolchain/arm_${TOOLCHAIN}.cmake )
13
16
14
17
set (FAMILY_MCUS MIMXRT CACHE INTERNAL "" )
15
18
16
- # include board specific
17
- include (${CMAKE_CURRENT_LIST_DIR} /boards/${BOARD}/board.cmake )
19
+ # enable LTO if supported
20
+ include (CheckIPOSupported )
21
+ check_ipo_supported (RESULT IPO_SUPPORTED )
22
+ if (IPO_SUPPORTED )
23
+ set (CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE )
24
+ endif ()
18
25
19
26
20
27
#------------------------------------
21
28
# BOARD_TARGET
22
29
#------------------------------------
23
30
# only need to be built ONCE for all examples
24
- set (BOARD_TARGET board_${BOARD} )
25
- if (NOT TARGET ${BOARD_TARGET} )
26
- set (SDK_DIR ${TOP} /hw/mcu/nxp/mcux-sdk )
27
- set (CMSIS_DIR ${TOP} /lib/CMSIS_5 )
28
-
29
- add_library (${BOARD_TARGET} STATIC
30
- ${SDK_DIR} /drivers/common/fsl_common.c
31
- ${SDK_DIR} /drivers/igpio/fsl_gpio.c
32
- ${SDK_DIR} /drivers/lpuart/fsl_lpuart.c
33
- ${SDK_DIR} /devices/${MCU_VARIANT}/system_${MCU_VARIANT}.c
34
- ${SDK_DIR} /devices/${MCU_VARIANT}/xip/fsl_flexspi_nor_boot.c
35
- ${SDK_DIR} /devices/${MCU_VARIANT}/project_template/clock_config.c
36
- ${SDK_DIR} /devices/${MCU_VARIANT}/drivers/fsl_clock.c
37
- )
38
- target_compile_definitions (${BOARD_TARGET} PUBLIC
39
- __ARMVFP__=0
40
- __ARMFPV5__=0
41
- XIP_EXTERNAL_FLASH=1
42
- XIP_BOOT_HEADER_ENABLE=1
43
- )
44
- target_include_directories (${BOARD_TARGET} PUBLIC
45
- ${CMSIS_DIR} /CMSIS/Core/Include
46
- ${SDK_DIR} /devices/${MCU_VARIANT}
47
- ${SDK_DIR} /devices/${MCU_VARIANT}/project_template
48
- ${SDK_DIR} /devices/${MCU_VARIANT}/drivers
49
- ${SDK_DIR} /drivers/common
50
- ${SDK_DIR} /drivers/igpio
51
- ${SDK_DIR} /drivers/lpuart
52
- )
53
- update_board (${BOARD_TARGET} )
31
+ function (add_board_target BOARD_TARGET )
32
+ if (NOT TARGET ${BOARD_TARGET} )
33
+ add_library (${BOARD_TARGET} STATIC
34
+ ${SDK_DIR} /drivers/common/fsl_common.c
35
+ ${SDK_DIR} /drivers/igpio/fsl_gpio.c
36
+ ${SDK_DIR} /drivers/lpuart/fsl_lpuart.c
37
+ ${SDK_DIR} /devices/${MCU_VARIANT}/system_${MCU_VARIANT}.c
38
+ ${SDK_DIR} /devices/${MCU_VARIANT}/xip/fsl_flexspi_nor_boot.c
39
+ ${SDK_DIR} /devices/${MCU_VARIANT}/project_template/clock_config.c
40
+ ${SDK_DIR} /devices/${MCU_VARIANT}/drivers/fsl_clock.c
41
+ )
42
+ target_compile_definitions (${BOARD_TARGET} PUBLIC
43
+ __ARMVFP__=0
44
+ __ARMFPV5__=0
45
+ XIP_EXTERNAL_FLASH=1
46
+ XIP_BOOT_HEADER_ENABLE=1
47
+ )
48
+ target_include_directories (${BOARD_TARGET} PUBLIC
49
+ ${CMSIS_DIR} /CMSIS/Core/Include
50
+ ${SDK_DIR} /devices/${MCU_VARIANT}
51
+ ${SDK_DIR} /devices/${MCU_VARIANT}/project_template
52
+ ${SDK_DIR} /devices/${MCU_VARIANT}/drivers
53
+ ${SDK_DIR} /drivers/common
54
+ ${SDK_DIR} /drivers/igpio
55
+ ${SDK_DIR} /drivers/lpuart
56
+ )
54
57
55
- if (NOT DEFINED LD_FILE_${TOOLCHAIN} )
56
- set (LD_FILE_GCC ${SDK_DIR} /devices/${MCU_VARIANT}/gcc/${MCU_VARIANT}xxxxx_flexspi_nor.ld )
57
- endif ()
58
+ update_board (${BOARD_TARGET} )
59
+
60
+ # LD_FILE and STARTUP_FILE can be defined in board.cmake
61
+ if (NOT DEFINED LD_FILE_${CMAKE_C_COMPILER_ID} )
62
+ set (LD_FILE_GNU ${SDK_DIR} /devices/${MCU_VARIANT}/gcc/${MCU_VARIANT}xxxxx_flexspi_nor.ld )
63
+ #set(LD_FILE_IAR ${SDK_DIR}/devices/${MCU_VARIANT}/gcc/${MCU_VARIANT}xxxxx_flexspi_nor.ld)
64
+ endif ()
65
+
66
+ if (NOT DEFINED STARTUP_FILE_${CMAKE_C_COMPILER_ID} )
67
+ set (STARTUP_FILE_GNU ${SDK_DIR} /devices/${MCU_VARIANT}/gcc/startup_${MCU_VARIANT}.S )
68
+ #set(STARTUP_FILE_IAR ${SDK_DIR}/devices/${MCU_VARIANT}/gcc/startup_${MCU_VARIANT}.S)
69
+ endif ()
58
70
59
- if (TOOLCHAIN STREQUAL "gcc" )
60
71
target_sources (${BOARD_TARGET} PUBLIC
61
- ${SDK_DIR} /devices/${MCU_VARIANT}/gcc/startup_${MCU_VARIANT}.S
72
+ ${STARTUP_FILE_${CMAKE_C_COMPILER_ID}}
62
73
)
63
- target_link_options (${BOARD_TARGET} PUBLIC
64
- "LINKER:--script=${LD_FILE_GCC} "
65
- # nanolib
66
- --specs=nosys.specs
67
- --specs=nano.specs
68
- # force linker to look for these symbols
69
- -Wl,-uimage_vector_table
70
- -Wl,-ug_boot_data
71
- )
72
- else ()
73
- # TODO support IAR
74
+
75
+ if (CMAKE_C_COMPILER_ID STREQUAL "GNU" )
76
+ target_link_options (${BOARD_TARGET} PUBLIC
77
+ "LINKER:--script=${LD_FILE_GNU} "
78
+ # nanolib
79
+ --specs=nosys.specs
80
+ --specs=nano.specs
81
+ # force linker to look for these symbols
82
+ -Wl,-uimage_vector_table
83
+ -Wl,-ug_boot_data
84
+ )
85
+ elseif (CMAKE_C_COMPILER_ID STREQUAL "IAR" )
86
+ target_link_options (${BOARD_TARGET} PUBLIC
87
+ "LINKER:--config=${LD_FILE_IAR} "
88
+ )
89
+ endif ()
74
90
endif ()
75
- endif () # BOARD_TARGET
91
+ endfunction ()
76
92
77
93
78
94
#------------------------------------
@@ -81,6 +97,9 @@ endif () # BOARD_TARGET
81
97
function (family_configure_example TARGET )
82
98
family_configure_common (${TARGET} )
83
99
100
+ # Board target
101
+ add_board_target (board_${BOARD} )
102
+
84
103
#---------- Port Specific ----------
85
104
# These files are built for each example since it depends on example's tusb_config.h
86
105
target_sources (${TARGET} PUBLIC
@@ -103,12 +122,11 @@ function(family_configure_example TARGET)
103
122
family_add_tinyusb (${TARGET} OPT_MCU_MIMXRT )
104
123
105
124
# Link dependencies
106
- target_link_libraries (${TARGET} PUBLIC ${BOARD_TARGET } ${TARGET} -tinyusb )
125
+ target_link_libraries (${TARGET} PUBLIC board_${BOARD } ${TARGET} -tinyusb )
107
126
108
127
# Flashing
109
128
family_flash_jlink (${TARGET} )
110
- family_flash_nxplink (${TARGET} )
111
- #family_flash_pyocd(${TARGET})
129
+ #family_flash_nxplink(${TARGET})
112
130
endfunction ()
113
131
114
132
0 commit comments