blob: fc8bc9cc84040b8d755e2f3b577b5ff19b43b4c3 [file] [log] [blame]
Christophe Favergeon6b604eb2019-05-17 13:46:33 +02001include(CMakePrintHelpers)
Christophe Favergeon6b604eb2019-05-17 13:46:33 +02002
Christophe Favergeon3b2a0ee2019-06-12 13:29:14 +02003enable_language(CXX C ASM)
Christophe Favergeon6b604eb2019-05-17 13:46:33 +02004
Christophe Favergeon6b604eb2019-05-17 13:46:33 +02005
6# Otherwise there is a .obj on windows and it creates problems
7# with armlink.
8SET(CMAKE_C_OUTPUT_EXTENSION .o)
9SET(CMAKE_CXX_OUTPUT_EXTENSION .o)
10SET(CMAKE_ASM_OUTPUT_EXTENSION .o)
11
12
13get_filename_component(PROJECT_NAME ${CMAKE_CURRENT_SOURCE_DIR} NAME)
14
15cmake_print_variables(PROJECT_NAME)
16
Christophe Favergeon6b604eb2019-05-17 13:46:33 +020017
Christophe Favergeon26c2f682019-09-06 14:43:32 +010018function(cortexm CORE PROJECT_NAME ROOT PLATFORMFOLDER CSTARTUP)
Christophe Favergeon3b2a0ee2019-06-12 13:29:14 +020019
20 target_include_directories(${PROJECT_NAME} PRIVATE ${ROOT}/CMSIS/Core/Include)
21
22 target_sources(${PROJECT_NAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/system_${CORE}.c)
23
Christophe Favergeon6b604eb2019-05-17 13:46:33 +020024
Christophe Favergeon26c2f682019-09-06 14:43:32 +010025 toolchainSpecificLinkForCortexM(${PROJECT_NAME} ${ROOT} ${CORE} ${PLATFORMFOLDER} ${CSTARTUP})
Christophe Favergeon3b2a0ee2019-06-12 13:29:14 +020026
27 configplatformForApp(${PROJECT_NAME} ${ROOT} ${CORE} ${PLATFORMFOLDER})
28 SET(PLATFORMID ${PLATFORMID} PARENT_SCOPE)
29
30endfunction()
31
32function(cortexa CORE PROJECT_NAME ROOT PLATFORMFOLDER)
33 target_include_directories(${PROJECT_NAME} PRIVATE ${ROOT}/CMSIS/Core_A/Include)
34
35 target_sources(${PROJECT_NAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/irq_ctrl_gic.c)
36 target_sources(${PROJECT_NAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/mmu_${CORE}.c)
37 target_sources(${PROJECT_NAME} PRIVATE ${PLATFORMFOLDER}/${CORE}/system_${CORE}.c)
38
39
40 target_compile_definitions(${PROJECT_NAME} PRIVATE -DCMSIS_device_header="${CORE}.h")
41
42 toolchainSpecificLinkForCortexA(${PROJECT_NAME} ${ROOT} ${CORE} ${PLATFORMFOLDER})
43
44 configplatformForApp(${PROJECT_NAME} ${ROOT} ${CORE} ${PLATFORMFOLDER})
45 SET(PLATFORMID ${PLATFORMID} PARENT_SCOPE)
46endfunction()
47
48function(configboot PROJECT_NAME ROOT PLATFORMFOLDER)
49
50 target_include_directories(${PROJECT_NAME} PRIVATE ${ROOT}/CMSIS/DSP/Include)
51 set_platform_core()
Christophe Favergeon26c2f682019-09-06 14:43:32 +010052
53 if(EXPERIMENTAL)
54 experimentalConfigboot(${PROJECT_NAME} ${ROOT} ${PLATFORMFOLDER})
55 if (ISCORTEXM)
56 cortexm(${CORE} ${PROJECT_NAME} ${ROOT} ${PLATFORMFOLDER} ${HASCSTARTUP})
57 else()
58 cortexa(${CORE} ${PROJECT_NAME} ${ROOT} ${PLATFORMFOLDER})
59 endif()
60 endif()
Christophe Favergeon6b604eb2019-05-17 13:46:33 +020061 ###################
62 #
Christophe Favergeonc4c34802019-09-24 14:05:01 +020063 # Cortex M
Christophe Favergeon6b604eb2019-05-17 13:46:33 +020064 #
Christophe Favergeonc4c34802019-09-24 14:05:01 +020065 if (ARM_CPU MATCHES "^[cC]ortex-[Mm].*$")
Christophe Favergeon26c2f682019-09-06 14:43:32 +010066 cortexm(${CORE} ${PROJECT_NAME} ${ROOT} ${PLATFORMFOLDER} OFF)
Christophe Favergeon6b604eb2019-05-17 13:46:33 +020067
68 endif()
69
Christophe Favergeon6b604eb2019-05-17 13:46:33 +020070
71 ###################
72 #
73 # Cortex cortex-a5
74 #
Christophe Favergeonc4c34802019-09-24 14:05:01 +020075 if (ARM_CPU MATCHES "^[cC]ortex-[Aa].*")
Christophe Favergeon3b2a0ee2019-06-12 13:29:14 +020076 cortexa(${CORE} ${PROJECT_NAME} ${ROOT} ${PLATFORMFOLDER})
77
78 endif()
79
80 SET(PLATFORMID ${PLATFORMID} PARENT_SCOPE)
81
82endfunction()
83