blob: a85cfe80faedce55c9addfb756c3ad80718fb30d [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 Favergeon3b2a0ee2019-06-12 13:29:14 +020018function(cortexm CORE PROJECT_NAME ROOT PLATFORMFOLDER)
19
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 Favergeon3b2a0ee2019-06-12 13:29:14 +020025 toolchainSpecificLinkForCortexM(${PROJECT_NAME} ${ROOT} ${CORE} ${PLATFORMFOLDER})
26
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 Favergeon6b604eb2019-05-17 13:46:33 +020052 ###################
53 #
54 # Cortex cortex-m7
55 #
56 if (ARM_CPU STREQUAL "cortex-m7")
Christophe Favergeon3b2a0ee2019-06-12 13:29:14 +020057 cortexm(${CORE} ${PROJECT_NAME} ${ROOT} ${PLATFORMFOLDER})
Christophe Favergeon6b604eb2019-05-17 13:46:33 +020058
59 endif()
60
61 ###################
62 #
63 # Cortex cortex-m4
64 #
65 if (ARM_CPU STREQUAL "cortex-m4")
Christophe Favergeon3b2a0ee2019-06-12 13:29:14 +020066 cortexm(${CORE} ${PROJECT_NAME} ${ROOT} ${PLATFORMFOLDER})
Christophe Favergeon6b604eb2019-05-17 13:46:33 +020067 endif()
68
69 ###################
70 #
71 # Cortex cortex-m35p
72 #
73 if (ARM_CPU STREQUAL "cortex-m35")
Christophe Favergeon3b2a0ee2019-06-12 13:29:14 +020074 cortexm(${CORE} ${PROJECT_NAME} ${ROOT} ${PLATFORMFOLDER})
75
Christophe Favergeon6b604eb2019-05-17 13:46:33 +020076 endif()
77
78 ###################
79 #
80 # Cortex cortex-m33
81 #
82 if (ARM_CPU STREQUAL "cortex-m33")
Christophe Favergeon3b2a0ee2019-06-12 13:29:14 +020083 cortexm(${CORE} ${PROJECT_NAME} ${ROOT} ${PLATFORMFOLDER})
84
Christophe Favergeon6b604eb2019-05-17 13:46:33 +020085 endif()
86
87 ###################
88 #
89 # Cortex cortex-m23
90 #
91 if (ARM_CPU STREQUAL "cortex-m23")
Christophe Favergeon3b2a0ee2019-06-12 13:29:14 +020092 cortexm(${CORE} ${PROJECT_NAME} ${ROOT} ${PLATFORMFOLDER})
93
Christophe Favergeon6b604eb2019-05-17 13:46:33 +020094 endif()
95
96 ###################
97 #
98 # Cortex cortex-m0+
99 #
100 if (ARM_CPU STREQUAL "cortex-m0p")
Christophe Favergeon3b2a0ee2019-06-12 13:29:14 +0200101 cortexm(${CORE} ${PROJECT_NAME} ${ROOT} ${PLATFORMFOLDER})
102
Christophe Favergeon6b604eb2019-05-17 13:46:33 +0200103 endif()
104
105 ###################
106 #
107 # Cortex cortex-m0
108 #
109 if (ARM_CPU STREQUAL "cortex-m0")
Christophe Favergeon3b2a0ee2019-06-12 13:29:14 +0200110 cortexm(${CORE} ${PROJECT_NAME} ${ROOT} ${PLATFORMFOLDER})
111
Christophe Favergeon6b604eb2019-05-17 13:46:33 +0200112 endif()
113
114 ###################
115 #
116 # Cortex cortex-a5
117 #
118 if (ARM_CPU STREQUAL "cortex-a5")
Christophe Favergeon3b2a0ee2019-06-12 13:29:14 +0200119 cortexa(${CORE} ${PROJECT_NAME} ${ROOT} ${PLATFORMFOLDER})
120
Christophe Favergeon6b604eb2019-05-17 13:46:33 +0200121 endif()
122
123 ###################
124 #
125 # Cortex cortex-a7
126 #
127 if (ARM_CPU STREQUAL "cortex-a7")
Christophe Favergeon3b2a0ee2019-06-12 13:29:14 +0200128 cortexa(${CORE} ${PROJECT_NAME} ${ROOT} ${PLATFORMFOLDER})
129
Christophe Favergeon6b604eb2019-05-17 13:46:33 +0200130 endif()
131
132 ###################
133 #
134 # Cortex cortex-a9
135 #
136 if (ARM_CPU STREQUAL "cortex-a9")
Christophe Favergeon3b2a0ee2019-06-12 13:29:14 +0200137 cortexa(${CORE} ${PROJECT_NAME} ${ROOT} ${PLATFORMFOLDER})
138
Christophe Favergeon6b604eb2019-05-17 13:46:33 +0200139 endif()
Christophe Favergeon6b604eb2019-05-17 13:46:33 +0200140
Christophe Favergeon3b2a0ee2019-06-12 13:29:14 +0200141 ###################
142 #
143 # Cortex cortex-a15
144 #
145 if (ARM_CPU STREQUAL "cortex-a15")
146 cortexa(${CORE} ${PROJECT_NAME} ${ROOT} ${PLATFORMFOLDER})
147
148 endif()
149
150 SET(PLATFORMID ${PLATFORMID} PARENT_SCOPE)
151
152endfunction()
153