51 lines
2.5 KiB
CMake
51 lines
2.5 KiB
CMake
function(cortexm CORE)
|
|
target_sources(${PROJECT_NAME} PRIVATE ${ROOT}/Device/ARM/${CORE}/Source/ARM/startup_${CORE}.s)
|
|
target_sources(${PROJECT_NAME} PRIVATE ${ROOT}/Device/ARM/${CORE}/Source/system_${CORE}.c)
|
|
target_include_directories(${PROJECT_NAME} PRIVATE ${ROOT}/Device/ARM/${CORE}/Include)
|
|
target_include_directories(${PROJECT_NAME} PRIVATE ${ROOT}/CMSIS/Core/Include)
|
|
|
|
if (TESTFRAMEWORK)
|
|
# Need bigger sections for test framework
|
|
# So we use the test framework scatter file
|
|
set(SCATTERFILE "${ROOT}/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/ARMCLANG/armcc6_arm.sct")
|
|
else()
|
|
set(SCATTERFILE "${ROOT}/Device/ARM/${CORE}/Source/ARM/${CORE}_ac6.sct")
|
|
endif()
|
|
|
|
target_link_options(${PROJECT_NAME} PRIVATE "--info=sizes;--entry=Reset_Handler;--scatter=${SCATTERFILE}")
|
|
|
|
endfunction()
|
|
|
|
function(cortexa CORE)
|
|
target_sources(${PROJECT_NAME} PRIVATE ${ROOT}/Device/ARM/${CORE}/Source/mmu_${CORE}.c)
|
|
target_sources(${PROJECT_NAME} PRIVATE ${ROOT}/Device/ARM/${CORE}/Source/system_${CORE}.c)
|
|
target_sources(${PROJECT_NAME} PRIVATE ${ROOT}/CMSIS/Core_A/Source/irq_ctrl_gic.c)
|
|
|
|
target_include_directories(${PROJECT_NAME} PRIVATE ${ROOT}/Device/ARM/${CORE}/Include)
|
|
target_include_directories(${PROJECT_NAME} PRIVATE ${ROOT}/Device/ARM/${CORE}/Config)
|
|
target_include_directories(${PROJECT_NAME} PRIVATE ${ROOT}/CMSIS/Core_A/Include)
|
|
|
|
target_sources(${PROJECT_NAME} PRIVATE ${ROOT}/Device/ARM/${CORE}/Source/AC6/startup_${CORE}.c)
|
|
|
|
if (TESTFRAMEWORK)
|
|
# Test scatter file is missing some sections required by startup file for
|
|
# cortex-a
|
|
#set(SCATTERFILE "${ROOT}/CMSIS/DSP/DSP_Lib_TestSuite/Common/platform/ARMCLANG/armcc6_arm.sct")
|
|
target_include_directories(${PROJECT_NAME} PRIVATE ../Examples/ARM/boot)
|
|
else()
|
|
target_include_directories(${PROJECT_NAME} PRIVATE ../boot)
|
|
endif()
|
|
|
|
set(SCATTERFILE ${CMAKE_CURRENT_BINARY_DIR}/tempLink/${CORE}.sct)
|
|
|
|
|
|
# Copy the mem file to the build directory
|
|
# so that it can be find when preprocessing the scatter file
|
|
# since we cannot pass an include path to armlink
|
|
file(COPY ${ROOT}/Device/ARM/${CORE}/Config/mem_${CORE}.h DESTINATION tempLink)
|
|
file(COPY ${ROOT}/Device/ARM/${CORE}/Source/AC6/${CORE}.sct DESTINATION tempLink)
|
|
|
|
target_compile_definitions(${PROJECT_NAME} PRIVATE -DCMSIS_device_header="${CORE}.h")
|
|
|
|
target_link_options(${PROJECT_NAME} PRIVATE "--info=sizes;--entry=Vectors;--scatter=${SCATTERFILE}")
|
|
endfunction() |