FRDM_MCXN947_Template/CMakeLists.txt

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()