208 lines
8.2 KiB
CMake
208 lines
8.2 KiB
CMake
CMAKE_MINIMUM_REQUIRED(VERSION 3.10)
|
|
|
|
project(mcxn947_template)
|
|
|
|
# ENABLE ASM
|
|
ENABLE_LANGUAGE(ASM)
|
|
|
|
# Linker scripts
|
|
set(TARGET_LDSCRIPT_FLASH "${CMAKE_SOURCE_DIR}/SDK/devices/MCXN947/gcc/MCXN947_cm33_core0_flash.ld")
|
|
set(TARGET_LDSCRIPT_RAM "${CMAKE_SOURCE_DIR}/SDK/devices/MCXN947/gcc/MCXN947_cm33_core0_ram.ld")
|
|
|
|
# Sources
|
|
set(TARGET_C_SOURCES
|
|
"SDK/components/serial_manager/fsl_component_serial_manager.c"
|
|
"SDK/components/serial_manager/fsl_component_serial_port_uart.c"
|
|
"SDK/components/uart/fsl_adapter_lpuart.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_cache.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_cache_lpcac.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_cdog.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_clock.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_cmc.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_common.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_common_arm.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_crc.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_ctimer.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_dac.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_dac14.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_edma.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_edma_soc.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_eim.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_enc.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_enet.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_erm.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_evtg.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_ewm.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_flexcan.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_flexio.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_flexio_i2c_master.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_flexio_mculcd.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_flexio_mculcd_edma.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_flexio_spi.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_flexio_spi_edma.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_flexio_uart.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_flexio_uart_edma.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_flexspi.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_flexspi_edma.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_freqme.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_gpio.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_i3c.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_inputmux.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_intm.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_irtc.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_itrc.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_lpadc.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_lpcmp.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_lpflexcomm.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_lpi2c.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_lpi2c_edma.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_lpspi.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_lpspi_edma.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_lptmr.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_lpuart.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_lpuart_edma.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_mrt.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_opamp.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_ostimer.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_pdm.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_pdm_edma.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_pint.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_plu.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_power.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_powerquad_basic.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_powerquad_cmsis.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_powerquad_data.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_powerquad_filter.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_powerquad_math.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_powerquad_matrix.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_powerquad_transform.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_puf_v3.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_pwm.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_reset.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_sai.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_sai_edma.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_sctimer.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_smartcard_emvsim.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_smartcard_phy_emvsim.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_spc.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_tsi_v6.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_usdhc.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_utick.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_vbat.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_vref.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_wuu.c"
|
|
"SDK/devices/MCXN947/drivers/fsl_wwdt.c"
|
|
"SDK/devices/MCXN947/drivers/romapi/flash/src/fsl_flash.c"
|
|
"SDK/devices/MCXN947/drivers/romapi/mem_interface/src/fsl_mem_interface.c"
|
|
"SDK/devices/MCXN947/drivers/romapi/runbootloader/src/fsl_runbootloader.c"
|
|
"SDK/devices/MCXN947/gcc/startup_MCXN947_cm33_core0.S"
|
|
"SDK/devices/MCXN947/system_MCXN947_cm33_core0.c"
|
|
"SDK/devices/MCXN947/utilities/debug_console/fsl_debug_console.c"
|
|
"SDK/devices/MCXN947/utilities/str/fsl_str.c"
|
|
"board/board.c"
|
|
"board/clock_config.c"
|
|
"board/pin_mux.c"
|
|
"src/main.c"
|
|
)
|
|
|
|
# Include directories (private, excl. SDK)
|
|
set(TARGET_INCLUDE_DIRS
|
|
"SDK/CMSIS/Core/Include"
|
|
"SDK/CMSIS/DSP/Include"
|
|
"SDK/components/serial_manager"
|
|
"SDK/components/uart"
|
|
"SDK/devices/MCXN947"
|
|
"SDK/devices/MCXN947/drivers"
|
|
"SDK/devices/MCXN947/drivers/romapi/flash"
|
|
"SDK/devices/MCXN947/drivers/romapi/mem_interface"
|
|
"SDK/devices/MCXN947/drivers/romapi/nboot"
|
|
"SDK/devices/MCXN947/drivers/romapi/runbootloader"
|
|
"SDK/devices/MCXN947/utilities/debug_console"
|
|
"SDK/devices/MCXN947/utilities/str"
|
|
"board"
|
|
"include"
|
|
)
|
|
|
|
set(TARGET_DEFINITIONS
|
|
"CPU_MCXN947VDF_cm33_core0"
|
|
"FFR_INCLUDE=\"fsl_iap_ffr.h\""
|
|
"MCUXPRESSO_SDK"
|
|
"SDK_DEBUGCONSOLE=1"
|
|
"SERIAL_PORT_TYPE_UART=1"
|
|
)
|
|
|
|
set(TARGET_LIBRARY_DIRS
|
|
"SDK/devices/MCXN947/gcc"
|
|
)
|
|
|
|
set(TARGET_LIBRARIES
|
|
"c"
|
|
"m"
|
|
"nosys"
|
|
)
|
|
|
|
# Flags for debug
|
|
set(CMAKE_C_FLAGS_DEBUG "-DDEBUG -g -O0")
|
|
set(CMAKE_CXX_FLAGS_DEBUG "-DDEBUG -g -O0")
|
|
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "")
|
|
|
|
# Flags for release
|
|
set(CMAKE_C_FLAGS_RELEASE "-DNDEBUG -flto -O2")
|
|
set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG -flto -O2")
|
|
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "-flto")
|
|
|
|
# Final flags
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -fno-common -ffunction-sections -fdata-sections -ffreestanding -fno-builtin")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fno-common -ffunction-sections -fdata-sections -ffreestanding -fno-builtin")
|
|
set(CMAKE_ASM_FLAGS "${CMAKE_C_FLAGS} -xassembler-with-cpp")
|
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gc-sections")
|
|
|
|
# Add subdirectories here.
|
|
|
|
# Main targets
|
|
# Common definitions and include directories are added here,
|
|
# to prevent subdirectory from including them.
|
|
include_directories(${TARGET_INCLUDE_DIRS})
|
|
add_compile_definitions(${TARGET_DEFINITIONS})
|
|
link_directories(${TARGET_LIBRARY_DIRS})
|
|
link_libraries(${TARGET_LIBRARIES})
|
|
|
|
# Link to FLASH
|
|
add_executable("${CMAKE_PROJECT_NAME}_FLASH.elf" ${TARGET_C_SOURCES})
|
|
target_link_options(${CMAKE_PROJECT_NAME}_FLASH.elf
|
|
PRIVATE -T${TARGET_LDSCRIPT_FLASH}
|
|
PRIVATE -Wl,--Map=${CMAKE_PROJECT_NAME}_FLASH.map
|
|
)
|
|
set_property(TARGET "${CMAKE_PROJECT_NAME}_FLASH.elf" APPEND
|
|
PROPERTY ADDITIONAL_CLEAN_FILES "${CMAKE_PROJECT_NAME}_FLASH.map"
|
|
)
|
|
add_custom_command(OUTPUT "${CMAKE_PROJECT_NAME}_FLASH.hex"
|
|
COMMAND ${CMAKE_OBJCOPY} "-O" "ihex" "${CMAKE_PROJECT_NAME}_FLASH.elf" "${CMAKE_PROJECT_NAME}_FLASH.hex"
|
|
DEPENDS "${CMAKE_PROJECT_NAME}_FLASH.elf"
|
|
)
|
|
add_custom_target("${CMAKE_PROJECT_NAME}_FLASH_HEX" DEPENDS "${CMAKE_PROJECT_NAME}_FLASH.hex")
|
|
if(DEFINED TARGET_TOOLCHAIN_SIZE)
|
|
add_custom_command(TARGET "${CMAKE_PROJECT_NAME}_FLASH.elf" POST_BUILD
|
|
COMMAND ${TARGET_TOOLCHAIN_SIZE} "${CMAKE_PROJECT_NAME}_FLASH.elf"
|
|
)
|
|
endif()
|
|
|
|
# Link to RAM
|
|
add_executable("${CMAKE_PROJECT_NAME}_RAM.elf" ${TARGET_C_SOURCES})
|
|
target_link_options("${CMAKE_PROJECT_NAME}_RAM.elf"
|
|
PRIVATE -T${TARGET_LDSCRIPT_RAM}
|
|
PRIVATE -Wl,--Map=${CMAKE_PROJECT_NAME}_RAM.map
|
|
)
|
|
set_property(TARGET "${CMAKE_PROJECT_NAME}_RAM.elf" APPEND
|
|
PROPERTY ADDITIONAL_CLEAN_FILES "${CMAKE_PROJECT_NAME}_RAM.map"
|
|
)
|
|
add_custom_command(OUTPUT "${CMAKE_PROJECT_NAME}_RAM.hex"
|
|
COMMAND ${CMAKE_OBJCOPY} "-O" "ihex" "${CMAKE_PROJECT_NAME}_RAM.elf" "${CMAKE_PROJECT_NAME}_RAM.hex"
|
|
DEPENDS "${CMAKE_PROJECT_NAME}_RAM.elf"
|
|
)
|
|
add_custom_target("${CMAKE_PROJECT_NAME}_RAM_HEX" DEPENDS "${CMAKE_PROJECT_NAME}_RAM.hex")
|
|
if(DEFINED TARGET_TOOLCHAIN_SIZE)
|
|
add_custom_command(TARGET "${CMAKE_PROJECT_NAME}_RAM.elf" POST_BUILD
|
|
COMMAND ${TARGET_TOOLCHAIN_SIZE} "${CMAKE_PROJECT_NAME}_RAM.elf"
|
|
)
|
|
endif() |