106 lines
3.2 KiB
CMake
Executable File
106 lines
3.2 KiB
CMake
Executable File
include(CMakePrintHelpers)
|
|
|
|
|
|
|
|
get_filename_component(PROJECT_NAME ${CMAKE_CURRENT_SOURCE_DIR} NAME)
|
|
|
|
cmake_print_variables(PROJECT_NAME)
|
|
|
|
|
|
function(cortexm CORE PROJECT_NAME ROOT PLATFORMFOLDER CSTARTUP)
|
|
|
|
target_include_directories(${PROJECT_NAME} PRIVATE ${ROOT}/CMSIS/Core/Include)
|
|
|
|
target_sources(${PROJECT_NAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/system_${CORE}.c)
|
|
|
|
|
|
toolchainSpecificLinkForCortexM(${PROJECT_NAME} ${ROOT} ${CORE} ${PLATFORMFOLDER} ${CSTARTUP})
|
|
|
|
configplatformForApp(${PROJECT_NAME} ${ROOT} ${CORE} ${PLATFORMFOLDER})
|
|
SET(PLATFORMID ${PLATFORMID} PARENT_SCOPE)
|
|
|
|
endfunction()
|
|
|
|
function(cortexa CORE PROJECT_NAME ROOT PLATFORMFOLDER)
|
|
target_include_directories(${PROJECT_NAME} PRIVATE ${ROOT}/CMSIS/Core_A/Include)
|
|
|
|
target_sources(${PROJECT_NAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/irq_ctrl_gic.c)
|
|
target_sources(${PROJECT_NAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/mmu_${CORE}.c)
|
|
target_sources(${PROJECT_NAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/system_${CORE}.c)
|
|
|
|
|
|
target_compile_definitions(${PROJECT_NAME} PRIVATE -DCMSIS_device_header="${CORE}.h")
|
|
|
|
toolchainSpecificLinkForCortexA(${PROJECT_NAME} ${ROOT} ${CORE} ${PLATFORMFOLDER})
|
|
|
|
configplatformForApp(${PROJECT_NAME} ${ROOT} ${CORE} ${PLATFORMFOLDER})
|
|
SET(PLATFORMID ${PLATFORMID} PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
function(cortexr CORE PROJECT_NAME ROOT PLATFORMFOLDER)
|
|
target_include_directories(${PROJECT_NAME} PRIVATE ${CORER}/Include)
|
|
|
|
#target_sources(${PROJECT_NAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/irq_ctrl_gic.c)
|
|
target_sources(${PROJECT_NAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/mmu_${CORE}.c)
|
|
target_sources(${PROJECT_NAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/system_${CORE}.c)
|
|
|
|
|
|
target_compile_definitions(${PROJECT_NAME} PRIVATE -DCMSIS_device_header="${CORE}.h")
|
|
|
|
toolchainSpecificLinkForCortexR(${PROJECT_NAME} ${ROOT} ${CORE} ${PLATFORMFOLDER})
|
|
|
|
configplatformForApp(${PROJECT_NAME} ${ROOT} ${CORE} ${PLATFORMFOLDER})
|
|
SET(PLATFORMID ${PLATFORMID} PARENT_SCOPE)
|
|
endfunction()
|
|
|
|
function(configboot PROJECT_NAME ROOT PLATFORMFOLDER)
|
|
|
|
target_include_directories(${PROJECT_NAME} PRIVATE ${ROOT}/CMSIS/DSP/Include)
|
|
set_platform_core()
|
|
|
|
if(EXPERIMENTAL)
|
|
experimentalConfigboot(${PROJECT_NAME} ${ROOT} ${PLATFORMFOLDER})
|
|
if (ISCORTEXM)
|
|
cortexm(${CORE} ${PROJECT_NAME} ${ROOT} ${PLATFORMFOLDER} ${HASCSTARTUP})
|
|
else()
|
|
cortexa(${CORE} ${PROJECT_NAME} ${ROOT} ${PLATFORMFOLDER})
|
|
endif()
|
|
endif()
|
|
###################
|
|
#
|
|
# Cortex M
|
|
#
|
|
# C startup for M55 boot code
|
|
if (ARM_CPU MATCHES "^[cC]ortex-[Mm].*")
|
|
if (ARMAC5)
|
|
# ASM startup
|
|
cortexm(${CORE} ${PROJECT_NAME} ${ROOT} ${PLATFORMFOLDER} OFF)
|
|
else()
|
|
# C startup
|
|
cortexm(${CORE} ${PROJECT_NAME} ${ROOT} ${PLATFORMFOLDER} ON)
|
|
endif()
|
|
endif()
|
|
|
|
###################
|
|
#
|
|
# Cortex cortex-a
|
|
#
|
|
if (ARM_CPU MATCHES "^[cC]ortex-[Aa].*")
|
|
cortexa(${CORE} ${PROJECT_NAME} ${ROOT} ${PLATFORMFOLDER})
|
|
|
|
endif()
|
|
|
|
###################
|
|
#
|
|
# Cortex cortex-r
|
|
#
|
|
if (ARM_CPU MATCHES "^[cC]ortex-[rR].*")
|
|
cortexr(${CORE} ${PROJECT_NAME} ${ROOT} ${PLATFORMFOLDER})
|
|
|
|
endif()
|
|
|
|
SET(PLATFORMID ${PLATFORMID} PARENT_SCOPE)
|
|
|
|
endfunction()
|
|
|