1 if( FREERTOS_PORT STREQUAL "GCC_RISC_V_GENERIC" )
2 include( GCC/RISC-V/chip_extensions.cmake )
5 if( FREERTOS_PORT STREQUAL "IAR_RISC_V_GENERIC" )
6 include( IAR/RISC-V/chip_extensions.cmake )
9 # FreeRTOS internal cmake file. Do not use it in user top-level project
11 if (FREERTOS_PORT STREQUAL "A_CUSTOM_PORT")
12 message(STATUS "Using a custom FREERTOS_PORT.")
16 # FreeRTOS internal cmake file. Do not use it in user top-level project
18 add_library(freertos_kernel_port OBJECT
20 $<$<STREQUAL:${FREERTOS_PORT},TEMPLATE>:
23 # 16-Bit DOS ports for BCC
24 $<$<STREQUAL:${FREERTOS_PORT},BCC_16BIT_DOS_FLSH186>:
25 BCC/16BitDOS/common/portcomn.c
26 BCC/16BitDOS/Flsh186/port.c>
28 $<$<STREQUAL:${FREERTOS_PORT},BCC_16BIT_DOS_PC>:
29 BCC/16BitDOS/common/portcomn.c
30 BCC/16BitDOS/PC/port.c>
32 # ARMv7-M port for Texas Instruments Code Composer Studio
33 $<$<STREQUAL:${FREERTOS_PORT},CCS_ARM_CM3>:
35 CCS/ARM_CM3/portasm.asm>
37 # ARMv7E-M port for Texas Instruments Code Composer Studio
38 $<$<STREQUAL:${FREERTOS_PORT},CCS_ARM_CM4F>:
40 CCS/ARM_CM4F/portasm.asm>
42 # ARMv7-R port for Texas Instruments Code Composer Studio
43 $<$<STREQUAL:${FREERTOS_PORT},CCS_ARM_CR4>:
44 CCS/ARM_Cortex-R4/port.c
45 CCS/ARM_Cortex-R4/portASM.asm>
47 # Texas Instruments MSP430 port for Texas Instruments Code Composer Studio
48 $<$<STREQUAL:${FREERTOS_PORT},CCS_MSP430X>:
50 CCS/MSP430X/portext.asm>
52 # NXP (formerly Motorola, Freescale) Cold Fire and 68HCS12 ports for Code Warrior
53 $<$<STREQUAL:${FREERTOS_PORT},CODEWARRIOR_COLDFIRE_V1>:
54 CodeWarrior/ColdFire_V1/port.c
55 CodeWarrior/ColdFire_V1/portasm.S>
57 $<$<STREQUAL:${FREERTOS_PORT},CODEWARRIOR_COLDFIRE_V2>:
58 CodeWarrior/ColdFire_V2/port.c
59 CodeWarrior/ColdFire_V2/portasm.S>
61 $<$<STREQUAL:${FREERTOS_PORT},CODEWARRIOR_HCS12>:
62 CodeWarrior/HCS12/port.c>
64 # ARMv7-A port for GCC
65 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CA9>:
67 GCC/ARM_CA9/portASM.S>
69 # ARMv8-A ports for GCC
70 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_AARCH64>:
71 GCC/ARM_AARCH64/port.c
72 GCC/ARM_AARCH64/portASM.S>
74 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_AARCH64_SRE>:
75 GCC/ARM_AARCH64_SRE/port.c
76 GCC/ARM_AARCH64_SRE/portASM.S>
78 # ARMv6-M port for GCC
79 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM0>:
82 GCC/ARM_CM0/mpu_wrappers_v2_asm.c>
84 # ARMv6-M / Cortex-M0 Raspberry PI RP2040 port for GCC
85 $<$<STREQUAL:${FREERTOS_PORT},GCC_RP2040>:
86 ThirdParty/GCC/RP2040/port.c>
88 # ARMv7-M ports for GCC
89 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM3>:
92 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM3_MPU>:
93 GCC/ARM_CM3_MPU/port.c
94 GCC/ARM_CM3_MPU/mpu_wrappers_v2_asm.c>
96 # ARMv7E-M ports for GCC
97 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM4_MPU>:
98 GCC/ARM_CM4_MPU/port.c
99 GCC/ARM_CM4_MPU/mpu_wrappers_v2_asm.c>
101 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM4F>:
104 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM7>:
105 GCC/ARM_CM7/r0p1/port.c>
107 # ARMv8-M ports for GCC
108 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM23_NONSECURE>:
109 GCC/ARM_CM23/non_secure/port.c
110 GCC/ARM_CM23/non_secure/portasm.c
111 GCC/ARM_CM23/non_secure/mpu_wrappers_v2_asm.c>
113 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM23_SECURE>:
114 GCC/ARM_CM23/secure/secure_context_port.c
115 GCC/ARM_CM23/secure/secure_context.c
116 GCC/ARM_CM23/secure/secure_heap.c
117 GCC/ARM_CM23/secure/secure_init.c>
119 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM23_NTZ_NONSECURE>:
120 GCC/ARM_CM23_NTZ/non_secure/port.c
121 GCC/ARM_CM23_NTZ/non_secure/portasm.c
122 GCC/ARM_CM23_NTZ/non_secure/mpu_wrappers_v2_asm.c>
124 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_NONSECURE>:
125 GCC/ARM_CM33/non_secure/port.c
126 GCC/ARM_CM33/non_secure/portasm.c
127 GCC/ARM_CM33/non_secure/mpu_wrappers_v2_asm.c>
129 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_SECURE>:
130 GCC/ARM_CM33/secure/secure_context_port.c
131 GCC/ARM_CM33/secure/secure_context.c
132 GCC/ARM_CM33/secure/secure_heap.c
133 GCC/ARM_CM33/secure/secure_init.c>
135 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_NTZ_NONSECURE>:
136 GCC/ARM_CM33_NTZ/non_secure/port.c
137 GCC/ARM_CM33_NTZ/non_secure/portasm.c
138 GCC/ARM_CM33_NTZ/non_secure/mpu_wrappers_v2_asm.c>
140 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_TFM>:
141 GCC/ARM_CM33_NTZ/non_secure/port.c
142 GCC/ARM_CM33_NTZ/non_secure/portasm.c
143 GCC/ARM_CM33_NTZ/non_secure/mpu_wrappers_v2_asm.c
144 ThirdParty/GCC/ARM_TFM/os_wrapper_freertos.c>
146 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM35P_NONSECURE>:
147 GCC/ARM_CM35P/non_secure/port.c
148 GCC/ARM_CM35P/non_secure/portasm.c
149 GCC/ARM_CM35P/non_secure/mpu_wrappers_v2_asm.c>
151 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM35P_SECURE>:
152 GCC/ARM_CM35P/secure/secure_context_port.c
153 GCC/ARM_CM35P/secure/secure_context.c
154 GCC/ARM_CM35P/secure/secure_heap.c
155 GCC/ARM_CM35P/secure/secure_init.c>
157 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM35P_NTZ_NONSECURE>:
158 GCC/ARM_CM35P_NTZ/non_secure/port.c
159 GCC/ARM_CM35P_NTZ/non_secure/portasm.c
160 GCC/ARM_CM35P_NTZ/non_secure/mpu_wrappers_v2_asm.c>
162 # ARMv8.1-M ports for GCC
163 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_NONSECURE>:
164 GCC/ARM_CM55/non_secure/port.c
165 GCC/ARM_CM55/non_secure/portasm.c
166 GCC/ARM_CM55/non_secure/mpu_wrappers_v2_asm.c>
168 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_SECURE>:
169 GCC/ARM_CM55/secure/secure_context_port.c
170 GCC/ARM_CM55/secure/secure_context.c
171 GCC/ARM_CM55/secure/secure_heap.c
172 GCC/ARM_CM55/secure/secure_init.c>
174 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_NTZ_NONSECURE>:
175 GCC/ARM_CM55_NTZ/non_secure/port.c
176 GCC/ARM_CM55_NTZ/non_secure/portasm.c
177 GCC/ARM_CM55_NTZ/non_secure/mpu_wrappers_v2_asm.c>
179 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_TFM>:
180 GCC/ARM_CM55_NTZ/non_secure/port.c
181 GCC/ARM_CM55_NTZ/non_secure/portasm.c
182 GCC/ARM_CM55_NTZ/non_secure/mpu_wrappers_v2_asm.c
183 ThirdParty/GCC/ARM_TFM/os_wrapper_freertos.c>
185 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_NONSECURE>:
186 GCC/ARM_CM85/non_secure/port.c
187 GCC/ARM_CM85/non_secure/portasm.c
188 GCC/ARM_CM85/non_secure/mpu_wrappers_v2_asm.c>
190 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_SECURE>:
191 GCC/ARM_CM85/secure/secure_context_port.c
192 GCC/ARM_CM85/secure/secure_context.c
193 GCC/ARM_CM85/secure/secure_heap.c
194 GCC/ARM_CM85/secure/secure_init.c>
196 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_NTZ_NONSECURE>:
197 GCC/ARM_CM85_NTZ/non_secure/port.c
198 GCC/ARM_CM85_NTZ/non_secure/portasm.c
199 GCC/ARM_CM85_NTZ/non_secure/mpu_wrappers_v2_asm.c>
201 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_TFM>:
202 GCC/ARM_CM85_NTZ/non_secure/port.c
203 GCC/ARM_CM85_NTZ/non_secure/portasm.c
204 GCC/ARM_CM85_NTZ/non_secure/mpu_wrappers_v2_asm.c
205 ThirdParty/GCC/ARM_TFM/os_wrapper_freertos.c>
207 # ARMv7-R ports for GCC
208 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CR5>:
210 GCC/ARM_CR5/portASM.S>
212 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CRX_MPU>:
213 GCC/ARM_CRx_MPU/port.c
214 GCC/ARM_CRx_MPU/portASM.S
215 GCC/ARM_CRx_MPU/mpu_wrappers_v2_asm.S>
217 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CRX_NOGIC>:
218 GCC/ARM_CRx_No_GIC/port.c
219 GCC/ARM_CRx_No_GIC/portASM.S>
221 # ARMv4T ARM7TDMI ports for GCC
222 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_AT91FR40008>:
223 GCC/ARM7_AT91FR40008/port.c
224 GCC/ARM7_AT91FR40008/portISR.c>
226 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_AT91SAM7S>:
227 GCC/ARM7_AT91SAM7S/lib_AT91SAM7X256.c
228 GCC/ARM7_AT91SAM7S/port.c
229 GCC/ARM7_AT91SAM7S/portISR.c>
231 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_LPC2000>:
232 GCC/ARM7_LPC2000/port.c
233 GCC/ARM7_LPC2000/portISR.c>
235 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_LPC23XX>:
236 GCC/ARM7_LPC23xx/port.c
237 GCC/ARM7_LPC23xx/portISR.c>
239 $<$<STREQUAL:${FREERTOS_PORT},GCC_STR75X>:
241 GCC/STR75x/portISR.c>
243 # Microchip (formerly Ateml) AVR8 ports for GCC
244 $<$<STREQUAL:${FREERTOS_PORT},GCC_ATMEGA323>:
245 GCC/ATMega323/port.c>
247 $<$<STREQUAL:${FREERTOS_PORT},GCC_ATMEGA>:
248 ThirdParty/GCC/ATmega/port.c>
250 $<$<STREQUAL:${FREERTOS_PORT},GCC_AVRDX>:
251 ThirdParty/Partner-Supported-Ports/GCC/AVR_AVRDx/port.c>
253 $<$<STREQUAL:${FREERTOS_PORT},GCC_AVR_MEGA0>:
254 ThirdParty/Partner-Supported-Ports/GCC/AVR_Mega0/port.c>
256 # Microchip (formerly Ateml) AVR32 port for GCC
257 $<$<STREQUAL:${FREERTOS_PORT},GCC_AVR32_UC3>:
258 GCC/AVR32_UC3/exception.S
259 GCC/AVR32_UC3/port.c>
261 # NXP (formerly Motorola, Freescale) Cold Fire and 68HCS12 ports for GCC
262 $<$<STREQUAL:${FREERTOS_PORT},GCC_COLDFIRE_V2>:
263 GCC/ColdFire_V2/port.c
264 GCC/ColdFire_V2/portasm.S>
266 $<$<STREQUAL:${FREERTOS_PORT},GCC_HCS12>:
269 # Cortus APS3 soft core port for GCC
270 $<$<STREQUAL:${FREERTOS_PORT},GCC_CORTUS_APS3>:
271 GCC/CORTUS_APS3/port.c>
273 # Renesas (formerly Hitach) H8S port for GCC
274 $<$<STREQUAL:${FREERTOS_PORT},GCC_H8S2329>:
277 # x86 / IA32 flat memory model port for GCC
278 $<$<STREQUAL:${FREERTOS_PORT},GCC_IA32_FLAT>:
280 GCC/IA32_flat/portASM.S>
282 # Xilinx MicroBlaze soft core ports for GCC
283 $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE>:
284 GCC/MicroBlaze/port.c
285 GCC/MicroBlaze/portasm.s>
287 $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE_V8>:
288 GCC/MicroBlazeV8/port.c
289 GCC/MicroBlazeV8/port_exceptions.c
290 GCC/MicroBlazeV8/portasm.S>
292 $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE_V9>:
293 GCC/MicroBlazeV9/port.c
294 GCC/MicroBlazeV9/port_exceptions.c
295 GCC/MicroBlazeV9/portasm.S>
297 # Xilinx PCC4XX soft core ports for GCC
298 $<$<STREQUAL:${FREERTOS_PORT},GCC_PPC405_XILINX>:
299 GCC/PPC405_Xilinx/port.c
300 GCC/PPC405_Xilinx/portasm.S>
302 $<$<STREQUAL:${FREERTOS_PORT},GCC_PPC440_XILINX>:
303 GCC/PPC440_Xilinx/port.c
304 GCC/PPC440_Xilinx/portasm.S>
306 # Texas Instruments MSP430 port for GCC
307 $<$<STREQUAL:${FREERTOS_PORT},GCC_MSP430F449>:
308 GCC/MSP430F449/port.c>
310 # Intel (formerly Altera) NIOS II soft core port for GCC
311 $<$<STREQUAL:${FREERTOS_PORT},GCC_NIOSII>:
313 GCC/NiosII/port_asm.S>
315 # RISC-V architecture ports for GCC
316 $<$<STREQUAL:${FREERTOS_PORT},GCC_RISC_V>:
318 GCC/RISC-V/portASM.S>
320 $<$<STREQUAL:${FREERTOS_PORT},GCC_RISC_V_PULPINO_VEGA_RV32M1RM>:
322 GCC/RISC-V/portASM.S>
324 $<$<STREQUAL:${FREERTOS_PORT},GCC_RISC_V_GENERIC>:
326 GCC/RISC-V/portASM.S>
328 # Renesas RL78 port for GCC
329 $<$<STREQUAL:${FREERTOS_PORT},GCC_RL78>:
333 # Renesas RX architecture ports for GCC
334 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX100>:
337 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX200>:
340 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX600>:
343 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX600_V2>:
346 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX700_V3_DPFPU>:
347 GCC/RX700v3_DPFPU/port.c>
349 # Infineon TriCore 1782 port for GCC
350 $<$<STREQUAL:${FREERTOS_PORT},GCC_TRICORE_1782>:
351 GCC/TriCore_1782/port.c
352 GCC/TriCore_1782/porttrap.c>
354 # Synopsys ARC architecture ports for GCC
355 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARC_EM_HS>:
356 ThirdParty/GCC/ARC_EM_HS/arc_freertos_exceptions.c
357 ThirdParty/GCC/ARC_EM_HS/arc_support.s
358 ThirdParty/GCC/ARC_EM_HS/freertos_tls.c
359 ThirdParty/GCC/ARC_EM_HS/port.c>
361 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARC_V1>:
362 ThirdParty/GCC/ARC_v1/arc_freertos_exceptions.c
363 ThirdParty/GCC/ARC_v1/arc_support.s
364 ThirdParty/GCC/ARC_v1/port.c>
366 # Posix Simulator port for GCC
367 $<$<STREQUAL:${FREERTOS_PORT},GCC_POSIX>:
368 ThirdParty/GCC/Posix/port.c
369 ThirdParty/GCC/Posix/utils/wait_for_event.c>
371 # Xtensa LX / Espressif ESP32 port for GCC
372 $<$<STREQUAL:${FREERTOS_PORT},GCC_XTENSA_ESP32>:
373 ThirdParty/GCC/Xtensa_ESP32/FreeRTOS-openocd.c
374 ThirdParty/GCC/Xtensa_ESP32/port.c
375 ThirdParty/GCC/Xtensa_ESP32/portasm.S
376 ThirdParty/GCC/Xtensa_ESP32/xtensa_context.S
377 ThirdParty/GCC/Xtensa_ESP32/xtensa_init.c
378 ThirdParty/GCC/Xtensa_ESP32/xtensa_intr_asm.S
379 ThirdParty/GCC/Xtensa_ESP32/xtensa_intr.c
380 ThirdParty/GCC/Xtensa_ESP32/xtensa_loadstore_handler.S
381 ThirdParty/GCC/Xtensa_ESP32/xtensa_overlay_os_hook.c
382 ThirdParty/GCC/Xtensa_ESP32/xtensa_vector_defaults.S
383 ThirdParty/GCC/Xtensa_ESP32/xtensa_vectors.S>
385 # Renesas (formerly NEC) 78K port for IAR EW78K
386 $<$<STREQUAL:${FREERTOS_PORT},IAR_78K0K>:
388 IAR/78K0R/portasm.s26>
390 # ARMv7-A ports for IAR EWARM
391 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CA5_NOGIC>:
392 IAR/ARM_CA5_No_GIC/port.c
393 IAR/ARM_CA5_No_GIC/portASM.s>
395 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CA9>:
397 IAR/ARM_CA9/portASM.s>
399 # ARMv6-M port for IAR EWARM
400 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM0>:
402 IAR/ARM_CM0/portasm.s>
404 # ARMv7-M port for IAR EWARM
405 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM3>:
407 IAR/ARM_CM3/portasm.s>
409 # ARMv7E-M ports for IAR EWARM
410 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM4F>:
412 IAR/ARM_CM4F/portasm.s>
414 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM4F_MPU>:
415 IAR/ARM_CM4F_MPU/port.c
416 IAR/ARM_CM4F_MPU/portasm.s
417 IAR/ARM_CM4F_MPU/mpu_wrappers_v2_asm.S>
419 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM7>:
420 IAR/ARM_CM7/r0p1/port.c
421 IAR/ARM_CM7/r0p1/portasm.s>
423 # ARMv8-M Ports for IAR EWARM
424 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM23_NONSECURE>:
425 IAR/ARM_CM23/non_secure/port.c
426 IAR/ARM_CM23/non_secure/portasm.s
427 IAR/ARM_CM23/non_secure/mpu_wrappers_v2_asm.S>
429 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM23_SECURE>:
430 IAR/ARM_CM23/secure/secure_context_port_asm.s
431 IAR/ARM_CM23/secure/secure_context.c
432 IAR/ARM_CM23/secure/secure_heap.c
433 IAR/ARM_CM23/secure/secure_init.c>
435 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM23_NTZ_NONSECURE>:
436 IAR/ARM_CM23_NTZ/non_secure/port.c
437 IAR/ARM_CM23_NTZ/non_secure/portasm.s
438 IAR/ARM_CM23_NTZ/non_secure/mpu_wrappers_v2_asm.S>
440 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_NONSECURE>:
441 IAR/ARM_CM33/non_secure/port.c
442 IAR/ARM_CM33/non_secure/portasm.s
443 IAR/ARM_CM33/non_secure/mpu_wrappers_v2_asm.S>
445 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_SECURE>:
446 IAR/ARM_CM33/secure/secure_context_port_asm.s
447 IAR/ARM_CM33/secure/secure_context.c
448 IAR/ARM_CM33/secure/secure_heap.c
449 IAR/ARM_CM33/secure/secure_init.c>
451 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_NTZ_NONSECURE>:
452 IAR/ARM_CM33_NTZ/non_secure/port.c
453 IAR/ARM_CM33_NTZ/non_secure/portasm.s
454 IAR/ARM_CM33_NTZ/non_secure/mpu_wrappers_v2_asm.S>
456 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_TFM>:
457 IAR/ARM_CM33_NTZ/non_secure/port.c
458 IAR/ARM_CM33_NTZ/non_secure/portasm.s
459 IAR/ARM_CM33_NTZ/non_secure/mpu_wrappers_v2_asm.S
460 ThirdParty/GCC/ARM_TFM/os_wrapper_freertos.c>
462 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM35P_NONSECURE>:
463 IAR/ARM_CM35P/non_secure/port.c
464 IAR/ARM_CM35P/non_secure/portasm.s
465 IAR/ARM_CM35P/non_secure/mpu_wrappers_v2_asm.S>
467 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM35P_SECURE>:
468 IAR/ARM_CM35P/secure/secure_context_port_asm.s
469 IAR/ARM_CM35P/secure/secure_context.c
470 IAR/ARM_CM35P/secure/secure_heap.c
471 IAR/ARM_CM35P/secure/secure_init.c>
473 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM35P_NTZ_NONSECURE>:
474 IAR/ARM_CM35P_NTZ/non_secure/port.c
475 IAR/ARM_CM35P_NTZ/non_secure/portasm.s
476 IAR/ARM_CM35P_NTZ/non_secure/mpu_wrappers_v2_asm.S>
478 # ARMv8.1-M ports for IAR EWARM
479 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_NONSECURE>:
480 IAR/ARM_CM55/non_secure/port.c
481 IAR/ARM_CM55/non_secure/portasm.s
482 IAR/ARM_CM55/non_secure/mpu_wrappers_v2_asm.S>
484 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_SECURE>:
485 IAR/ARM_CM55/secure/secure_context_port_asm.s
486 IAR/ARM_CM55/secure/secure_context.c
487 IAR/ARM_CM55/secure/secure_heap.c
488 IAR/ARM_CM55/secure/secure_init.c>
490 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_NTZ_NONSECURE>:
491 IAR/ARM_CM55_NTZ/non_secure/port.c
492 IAR/ARM_CM55_NTZ/non_secure/portasm.s
493 IAR/ARM_CM55_NTZ/non_secure/mpu_wrappers_v2_asm.S>
495 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_TFM>:
496 IAR/ARM_CM55_NTZ/non_secure/port.c
497 IAR/ARM_CM55_NTZ/non_secure/portasm.s
498 IAR/ARM_CM55_NTZ/non_secure/mpu_wrappers_v2_asm.S
499 ThirdParty/GCC/ARM_TFM/os_wrapper_freertos.c>
501 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_NONSECURE>:
502 IAR/ARM_CM85/non_secure/port.c
503 IAR/ARM_CM85/non_secure/portasm.s
504 IAR/ARM_CM85/non_secure/mpu_wrappers_v2_asm.S>
506 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_SECURE>:
507 IAR/ARM_CM85/secure/secure_context_port_asm.s
508 IAR/ARM_CM85/secure/secure_context.c
509 IAR/ARM_CM85/secure/secure_heap.c
510 IAR/ARM_CM85/secure/secure_init.c>
512 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_NTZ_NONSECURE>:
513 IAR/ARM_CM85_NTZ/non_secure/port.c
514 IAR/ARM_CM85_NTZ/non_secure/portasm.s
515 IAR/ARM_CM85_NTZ/non_secure/mpu_wrappers_v2_asm.S>
517 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_TFM>:
518 IAR/ARM_CM85_NTZ/non_secure/port.c
519 IAR/ARM_CM85_NTZ/non_secure/portasm.s
520 IAR/ARM_CM85_NTZ/non_secure/mpu_wrappers_v2_asm.S
521 ThirdParty/GCC/ARM_TFM/os_wrapper_freertos.c>
523 # ARMv7-R Ports for IAR EWARM
524 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CRX_NOGIC>:
525 IAR/ARM_CRx_No_GIC/port.c
526 IAR/ARM_CRx_No_GIC/portASM.s>
528 # Microchip (formerly Atmel) AVR8 ports for IAR EWAVR
529 $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEGA323>:
531 IAR/ATMega323/portmacro.s90>
533 $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR_AVRDX>:
535 IAR/AVR_AVRDx/portmacro.s90>
537 $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR_MEGA0>:
539 IAR/AVR_Mega0/portmacro.s90>
541 # Microchip (formerly Atmel) AVR32 port for IAR Embedded Workbench for AVR32
542 $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR32_UC3>:
543 IAR/AVR32_UC3/exception.s82
546 IAR/AVR32_UC3/write.c>
548 # Texas Instruments MSP430 ports for IAR Embedded Workbench for MSP430
549 $<$<STREQUAL:${FREERTOS_PORT},IAR_MSP430>:
551 IAR/MSP430/portext.s43>
553 $<$<STREQUAL:${FREERTOS_PORT},IAR_MSP430X>:
555 IAR/MSP430X/portext.s43>
557 # RISC-V architecture port for IAR Embedded Workbench for RISC-V
558 $<$<STREQUAL:${FREERTOS_PORT},IAR_RISC_V>:
560 IAR/RISC-V/portASM.s>
562 $<$<STREQUAL:${FREERTOS_PORT},IAR_RISC_V_GENERIC>:
564 IAR/RISC-V/portASM.s>
566 # Renesas RL78 port for IAR EWRL78
567 $<$<STREQUAL:${FREERTOS_PORT},IAR_RL78>:
569 IAR/RL78/portasm.s87>
571 # Renesas RX architecture ports for IAR EWRX
572 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX100>:
574 IAR/RX100/port_asm.s>
576 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX600>:
578 IAR/RX600/port_asm.s>
580 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX700_V3_DPFPU>:
581 IAR/RX700v3_DPFPU/port.c>
583 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX_V2>:
587 # Renesas (formerly NEC) V850ES port for IAR EWV850
588 $<$<STREQUAL:${FREERTOS_PORT},IAR_V850ES_FX3>:
590 IAR/V850ES/portasm_Fx3.s85>
592 $<$<STREQUAL:${FREERTOS_PORT},IAR_V850ES_HX3>:
594 IAR/V850ES/portasm_Hx2.s85>
596 # ARMv4T ARM7TDMI ports for IAR Embedded Workbench for ARM
597 $<$<STREQUAL:${FREERTOS_PORT},IAR_STR71X>:
599 IAR/STR71x/portasm.s79>
601 $<$<STREQUAL:${FREERTOS_PORT},IAR_STR75X>:
603 IAR/STR75x/portasm.s79>
605 $<$<STREQUAL:${FREERTOS_PORT},IAR_LPC2000>:
607 IAR/LPC2000/portasm.s79>
609 $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEL_SAM7S64>:
610 IAR/AtmelSAM7S64/port.c
611 IAR/AtmelSAM7S64/portasm.s79>
613 # ARMv5TE ARM926 ports for IAR Embedded Workbench for ARM
614 $<$<STREQUAL:${FREERTOS_PORT},IAR_STR91X>:
616 IAR/STR91x/portasm.s79>
618 $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEL_SAM9XE>:
619 IAR/AtmelSAM9XE/port.c
620 IAR/AtmelSAM9XE/portasm.s79>
622 # ARM Cortex-M4F port for the MikroElektronika MikroC compiler
623 $<$<STREQUAL:${FREERTOS_PORT},MIKROC_ARM_CM4F>:
624 MikroC/ARM_CM4F/port.c>
626 # Microchip PIC18 8-bit MCU port for MPLAB XC8
627 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC18F>:
630 # Microchip PIC24 16-bit MCU port for MPLAB XC16
631 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC24>:
632 MPLAB/PIC24_dsPIC/port.c
633 MPLAB/PIC24_dsPIC/portasm_PIC24.S> # TODO: What to do with portasm_dsPIC.S ?
635 # Microchip MIPS 32-Bit MCU ports for MPLAB XC32
636 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MEC14XX>:
637 MPLAB/PIC32MEC14xx/port.c
638 MPLAB/PIC32MEC14xx/port_asm.S>
640 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MX>:
642 MPLAB/PIC32MX/port_asm.S>
644 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MZ>:
646 MPLAB/PIC32MZ/port_asm.S>
648 # Windows Simulator for Microsoft Visual C Compiler and MinGW GCC
649 $<$<STREQUAL:${FREERTOS_PORT},MSVC_MINGW>:
652 # 16 bit DOS ports for Open Watcom
653 $<$<STREQUAL:${FREERTOS_PORT},OWATCOM_16BIT_DOS_FLSH186>:
654 oWatcom/16BitDOS/common/portcomn.c
655 oWatcom/16BitDOS/Flsh186/port.c>
657 $<$<STREQUAL:${FREERTOS_PORT},OWATCOM_16BIT_DOS_PC>:
658 oWatcom/16BitDOS/common/portcomn.c
659 oWatcom/16BitDOS/PC/port.c>
661 $<$<STREQUAL:${FREERTOS_PORT},PARADIGM_TERN_EE_LARGE>:
662 Paradigm/Tern_EE/large_untested/port.c>
664 $<$<STREQUAL:${FREERTOS_PORT},PARADIGM_TERN_EE_SMALL>:
665 Paradigm/Tern_EE/small/port.c>
667 # Renesas RX mcu ports for Renesas CC-RX
668 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX100>:
670 Renesas/RX100/port_asm.src>
672 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX200>:
674 Renesas/RX200/port_asm.src>
676 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX600>:
678 Renesas/RX600/port_asm.src>
680 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX600_V2>:
681 Renesas/RX600v2/port.c
682 Renesas/RX600v2/port_asm.src>
684 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX700_V3_DPFPU>:
685 Renesas/RX700v3_DPFPU/port.c
686 Renesas/RX700v3_DPFPU/port_asm.src>
688 # Renesas (formerly Hitach) SHA2 SuperH port for the Renesas SH C Compiler
689 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_SH2A_FPU>:
690 Renesas/SH2A_FPU/port.c
691 Renesas/SH2A_FPU/portasm.src>
693 # Texas Instruments MSP430 port for Rowley CrossWorks
694 $<$<STREQUAL:${FREERTOS_PORT},ROWLEY_MSP430F449>:
695 Rowley/MSP430F449/port.c
696 Rowley/MSP430F449/portext.asm>
698 # ARMv7-A Cortex-A9 port for ARM RVDS / armcc
699 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CA9>:
701 RVDS/ARM_CA9/portASM.s>
703 # ARMv6-M port for ARM RVDS / armcc
704 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM0>:
707 # ARMv7-M port for ARM RVDS / armcc
708 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM3>:
711 # ARMv7E-M ports for ARM RVDS / armcc
712 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM4_MPU>:
713 RVDS/ARM_CM4_MPU/port.c
714 RVDS/ARM_CM4_MPU/mpu_wrappers_v2_asm.c>
716 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM4F>:
717 RVDS/ARM_CM4F/port.c>
719 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM7>:
720 RVDS/ARM_CM7/r0p1/port.c>
722 # ARMv4T / ARM7TDMI LPC21XX port for ARM RVDS / armcc
723 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM7_LPC21XX>:
724 RVDS/ARM7_LPC21xx/port.c
725 RVDS/ARM7_LPC21xx/portASM.s>
727 # Cygnal c8051 port for SDCC (Small Device C Compiler)
728 $<$<STREQUAL:${FREERTOS_PORT},SDCC_CYGNAL>:
731 # Infineon (formerly Fujitsu, Spansion, Cypress) MB9x ports for Softune C Compiler
732 $<$<STREQUAL:${FREERTOS_PORT},SOFTUNE_MB91460>:
733 Softune/MB91460/__STD_LIB_sbrk.c
734 Softune/MB91460/port.c>
736 $<$<STREQUAL:${FREERTOS_PORT},SOFTUNE_MB96340>:
737 Softune/MB96340/__STD_LIB_sbrk.c
738 Softune/MB96340/port.c>
740 # ARMv7E-M (Cortex-M4F) port for TASKING VX-toolset for ARM
741 $<$<STREQUAL:${FREERTOS_PORT},TASKING_ARM_CM4F>:
742 Tasking/ARM_CM4F/port.c
743 Tasking/ARM_CM4F/port_asm.asm>
745 # Port for C-SKY T-HEAD CK802
746 $<$<STREQUAL:${FREERTOS_PORT},CDK_THEAD_CK802>:
747 ThirdParty/CDK/T-HEAD_CK802/port.c
748 ThirdParty/CDK/T-HEAD_CK802/portasm.S>
750 # Tensilica Xtensa port for XCC
751 $<$<STREQUAL:${FREERTOS_PORT},XCC_XTENSA>:
752 ThirdParty/XCC/Xtensa/port.c
753 ThirdParty/XCC/Xtensa/portasm.S
754 ThirdParty/XCC/Xtensa/portclib.c
755 ThirdParty/XCC/Xtensa/xtensa_context.S
756 ThirdParty/XCC/Xtensa/xtensa_init.c
757 ThirdParty/XCC/Xtensa/xtensa_intr_asm.S
758 ThirdParty/XCC/Xtensa/xtensa_intr.c
759 ThirdParty/XCC/Xtensa/xtensa_overlay_os_hook.c
760 ThirdParty/XCC/Xtensa/xtensa_vectors.S>
762 # Microchip PIC18 port for WIZ-C
763 $<$<STREQUAL:${FREERTOS_PORT},WIZC_PIC18>:
765 WizC/PIC18/Drivers/Tick/isrTick.c
766 WizC/PIC18/Drivers/Tick/Tick.c>
769 if( FREERTOS_PORT MATCHES "GCC_ARM_CM(3|4)_MPU" OR
770 FREERTOS_PORT STREQUAL "IAR_ARM_CM4F_MPU" OR
771 FREERTOS_PORT STREQUAL "RVDS_ARM_CM4_MPU" OR
772 FREERTOS_PORT MATCHES "GCC_ARM_CM(23|33|55|85)_NTZ_NONSECURE" OR
773 FREERTOS_PORT MATCHES "GCC_ARM_CM(23|33|55|85)_NONSECURE" OR
774 FREERTOS_PORT MATCHES "GCC_ARM_CM(33|55|85)_TFM" OR
775 FREERTOS_PORT MATCHES "IAR_ARM_CM(23|33|55|85)_NTZ_NONSECURE" OR
776 FREERTOS_PORT MATCHES "IAR_ARM_CM(23|33|55|85)_NONSECURE" OR
777 FREERTOS_PORT MATCHES "IAR_ARM_CM(33|55|85)_TFM"
779 target_sources(freertos_kernel_port PRIVATE
780 Common/mpu_wrappers.c
781 Common/mpu_wrappers_v2.c
785 if (DEFINED FREERTOS_ARM_V_8_1_M_PACBTI_CONFIG )
787 if(${CMAKE_C_COMPILER_ID} STREQUAL "GNU")
788 message(FATAL_ERROR "ARMv8.1-M PACBTI support in the kernel is not yet enabled for GNU toolchain due to known issues.")
791 if(FREERTOS_PORT MATCHES ".*ARM_CM85")
792 if(FREERTOS_ARM_V_8_1_M_PACBTI_CONFIG STREQUAL "ARM_V_8_1_M_PACBTI_CONFIG_STANDARD")
793 target_compile_options(freertos_kernel_port PUBLIC $<$<STREQUAL:${CMAKE_C_COMPILER_ID},ARMClang>:-mbranch-protection=standard>)
794 target_compile_options(freertos_kernel_port PUBLIC $<$<STREQUAL:${CMAKE_C_COMPILER_ID},IAR>:$<$<COMPILE_LANGUAGE:C,CXX>:--branch_protection=bti+pac-ret>>)
795 target_compile_definitions(freertos_config
800 elseif(FREERTOS_ARM_V_8_1_M_PACBTI_CONFIG STREQUAL "ARM_V_8_1_M_PACBTI_CONFIG_PACRET_LEAF_BTI")
801 if(${CMAKE_C_COMPILER_ID} STREQUAL "ARMClang")
802 target_compile_options(freertos_kernel_port
804 -mbranch-protection=bti+pac-ret+leaf
806 target_compile_definitions(freertos_config
811 elseif(${CMAKE_C_COMPILER_ID} STREQUAL "IAR")
812 message(FATAL_ERROR "ARM_V_8_1_M_PACBTI_CONFIG_PACRET_LEAF_BTI PACBTI option is not supported on IAR Compiler.")
814 elseif(FREERTOS_ARM_V_8_1_M_PACBTI_CONFIG STREQUAL "ARM_V_8_1_M_PACBTI_CONFIG_PACRET")
815 target_compile_options(freertos_kernel_port PUBLIC $<$<STREQUAL:${CMAKE_C_COMPILER_ID},ARMClang>:-mbranch-protection=pac-ret>)
816 target_compile_options(freertos_kernel_port PUBLIC $<$<STREQUAL:${CMAKE_C_COMPILER_ID},IAR>:$<$<COMPILE_LANGUAGE:C,CXX>:--branch_protection=pac-ret>>)
817 target_compile_definitions(freertos_config
821 elseif(FREERTOS_ARM_V_8_1_M_PACBTI_CONFIG STREQUAL "ARM_V_8_1_M_PACBTI_CONFIG_PACRET_LEAF")
822 if(${CMAKE_C_COMPILER_ID} STREQUAL "ARMClang")
823 target_compile_options(freertos_kernel_port
825 -mbranch-protection=pac-ret+leaf
827 target_compile_definitions(freertos_config
831 elseif(${CMAKE_C_COMPILER_ID} STREQUAL "IAR")
832 message(FATAL_ERROR "ARM_V_8_1_M_PACBTI_CONFIG_PACRET_LEAF PACBTI option is not supported on IAR Compiler.")
834 elseif(FREERTOS_ARM_V_8_1_M_PACBTI_CONFIG STREQUAL "ARM_V_8_1_M_PACBTI_CONFIG_BTI")
835 target_compile_options(freertos_kernel_port PUBLIC $<$<STREQUAL:${CMAKE_C_COMPILER_ID},ARMClang>:-mbranch-protection=bti>)
836 target_compile_options(freertos_kernel_port PUBLIC $<$<STREQUAL:${CMAKE_C_COMPILER_ID},IAR>:$<$<COMPILE_LANGUAGE:C,CXX>:--branch_protection=bti>>)
837 target_compile_definitions(freertos_config
841 elseif(FREERTOS_ARM_V_8_1_M_PACBTI_CONFIG STREQUAL "ARM_V_8_1_M_PACBTI_CONFIG_NONE")
842 if(${CMAKE_C_COMPILER_ID} STREQUAL "ARMClang")
843 target_compile_options(freertos_kernel_port
845 -mbranch-protection=none
848 target_compile_definitions(freertos_config
854 message(FATAL_ERROR "Invalid FREERTOS_ARM_V_8_1_M_PACBTI_CONFIG configuration, the supported configurations are
855 ARM_V_8_1_M_PACBTI_CONFIG_STANDARD,
856 ARM_V_8_1_M_PACBTI_CONFIG_PACRET_LEAF_BTI,
857 ARM_V_8_1_M_PACBTI_CONFIG_PACRET,
858 ARM_V_8_1_M_PACBTI_CONFIG_PACRET_LEAF,
859 ARM_V_8_1_M_PACBTI_CONFIG_BTI,
860 ARM_V_8_1_M_PACBTI_CONFIG_NONE
863 if(NOT FREERTOS_ARM_V_8_1_M_PACBTI_CONFIG STREQUAL "ARM_V_8_1_M_PACBTI_CONFIG_NONE")
864 # The reason why `--library_security=pacbti-m` link option is defined for both `freertos_kernel_port`, and
865 # `freertos_kernel` targets even though `freertos_kernel_port` gets linked to `freertos_kernel` is that the
866 # `freertos_kernel_port` is an object library where its linker options don't propagate to the targets that
868 target_link_options(freertos_kernel_port
870 --library_security=pacbti-m
872 target_link_options(freertos_kernel
874 --library_security=pacbti-m
878 message(FATAL_ERROR "FREERTOS_ARM_V_8_1_M_PACBTI_CONFIG option is currently only supported on ARM Cortex-M85 FreeRTOS port.")
882 add_library(freertos_kernel_port_headers INTERFACE)
884 target_include_directories(freertos_kernel_port_headers INTERFACE
886 $<$<STREQUAL:${FREERTOS_PORT},TEMPLATE>:${CMAKE_CURRENT_LIST_DIR}/template>
888 # 16-Bit DOS ports for BCC
889 $<$<STREQUAL:${FREERTOS_PORT},BCC_16BIT_DOS_FLSH186>:
890 ${CMAKE_CURRENT_LIST_DIR}/BCC/16BitDOS/common
891 ${CMAKE_CURRENT_LIST_DIR}/BCC/16BitDOS/Flsh186>
893 $<$<STREQUAL:${FREERTOS_PORT},BCC_16BIT_DOS_PC>:
894 ${CMAKE_CURRENT_LIST_DIR}/BCC/16BitDOS/common
895 ${CMAKE_CURRENT_LIST_DIR}/BCC/16BitDOS/PC>
897 # ARMv7-M port for Texas Instruments Code Composer Studio
898 $<$<STREQUAL:${FREERTOS_PORT},CCS_ARM_CM3>:${CMAKE_CURRENT_LIST_DIR}/CCS/ARM_CM3>
900 # ARMv7E-M port for Texas Instruments Code Composer Studio
901 $<$<STREQUAL:${FREERTOS_PORT},CCS_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/CCS/ARM_CM4F>
903 # ARMv7-R port for Texas Instruments Code Composer Studio
904 $<$<STREQUAL:${FREERTOS_PORT},CCS_ARM_CR4>:${CMAKE_CURRENT_LIST_DIR}/CCS/ARM_Cortex-R4>
906 # Texas Instruments MSP430 port for Texas Instruments Code Composer Studio
907 $<$<STREQUAL:${FREERTOS_PORT},CCS_MSP430X>:${CMAKE_CURRENT_LIST_DIR}/CCS/MSP430X>
909 # NXP (formerly Motorola, Freescale) Cold Fire and 68HCS12 ports for Code Warrior
910 $<$<STREQUAL:${FREERTOS_PORT},CODEWARRIOR_COLDFIRE_V1>:${CMAKE_CURRENT_LIST_DIR}/CodeWarrior/ColdFire_V1>
911 $<$<STREQUAL:${FREERTOS_PORT},CODEWARRIOR_COLDFIRE_V2>:${CMAKE_CURRENT_LIST_DIR}/CodeWarrior/ColdFire_V2>
912 $<$<STREQUAL:${FREERTOS_PORT},CODEWARRIOR_HCS12>:${CMAKE_CURRENT_LIST_DIR}/CodeWarrior/HCS12>
914 # ARMv7-A port for GCC
915 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CA9>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CA9>
917 # ARMv8-A ports for GCC
918 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_AARCH64>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_AARCH64>
919 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_AARCH64_SRE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_AARCH64_SRE>
921 # ARMv6-M port for GCC
922 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM0>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM0>
924 # ARMv6-M / Cortex-M0 Raspberry PI RP2040 port for GCC
925 $<$<STREQUAL:${FREERTOS_PORT},GCC_RP2040>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/RP2040/include>
927 # ARMv7-M ports for GCC
928 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM3>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM3>
929 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM3_MPU>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM3_MPU>
931 # ARMv7E-M ports for GCC
932 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM4_MPU>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM4_MPU>
933 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM4F>
934 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM7>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM7/r0p1>
936 # ARMv8-M ports for GCC
937 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM23_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM23/non_secure>
938 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM23_SECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM23/secure>
939 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM23_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM23_NTZ/non_secure>
941 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM33/non_secure>
942 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_SECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM33/secure>
943 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM33_NTZ/non_secure>
944 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_TFM>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM33_NTZ/non_secure>
946 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM35P_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM35P/non_secure>
947 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM35P_SECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM35P/secure>
948 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM35P_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM35P_NTZ/non_secure>
950 # ARMv8.1-M ports for GCC
951 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM55/non_secure>
952 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_SECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM55/secure>
953 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM55_NTZ/non_secure>
954 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_TFM>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM55_NTZ/non_secure>
956 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM85/non_secure>
957 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_SECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM85/secure>
958 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM85_NTZ/non_secure>
959 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_TFM>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM85_NTZ/non_secure>
961 # ARMv7-R ports for GCC
962 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CR5>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CR5>
963 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CRX_MPU>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CRx_MPU>
964 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CRX_NOGIC>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CRx_No_GIC>
966 # ARMv4T ARM7TDMI ports for GCC
967 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_AT91FR40008>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM7_AT91FR40008>
968 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_AT91SAM7S>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM7_AT91SAM7S>
969 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_LPC2000>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM7_LPC2000>
970 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_LPC23XX>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM7_LPC23xx>
971 $<$<STREQUAL:${FREERTOS_PORT},GCC_STR75X>:${CMAKE_CURRENT_LIST_DIR}/GCC/STR75x>
973 # Microchip (formerly Ateml) AVR8 ports for GCC
974 $<$<STREQUAL:${FREERTOS_PORT},GCC_ATMEGA323>:${CMAKE_CURRENT_LIST_DIR}/GCC/ATMega323>
975 $<$<STREQUAL:${FREERTOS_PORT},GCC_ATMEGA>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/ATmega>
976 $<$<STREQUAL:${FREERTOS_PORT},GCC_AVRDX>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/Partner-Supported-Ports/GCC/AVR_AVRDx>
977 $<$<STREQUAL:${FREERTOS_PORT},GCC_AVR_MEGA0>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/Partner-Supported-Ports/GCC/AVR_Mega0>
979 # Microchip (formerly Ateml) AVR32 port for GCC
980 $<$<STREQUAL:${FREERTOS_PORT},GCC_AVR32_UC3>:${CMAKE_CURRENT_LIST_DIR}/GCC/AVR32_UC3>
982 # NXP (formerly Motorola, Freescale) Cold Fire and 68HCS12 ports for GCC
983 $<$<STREQUAL:${FREERTOS_PORT},GCC_COLDFIRE_V2>:${CMAKE_CURRENT_LIST_DIR}/GCC/ColdFire_V2>
984 $<$<STREQUAL:${FREERTOS_PORT},GCC_HCS12>:${CMAKE_CURRENT_LIST_DIR}/GCC/HCS12>
986 # Cortus APS3 soft core port for GCC
987 $<$<STREQUAL:${FREERTOS_PORT},GCC_CORTUS_APS3>:${CMAKE_CURRENT_LIST_DIR}/GCC/CORTUS_APS3>
989 # Renesas (formerly Hitach) H8S port for GCC
990 $<$<STREQUAL:${FREERTOS_PORT},GCC_H8S2329>:${CMAKE_CURRENT_LIST_DIR}/GCC/H8S2329>
992 # x86 / IA32 flat memory model port for GCC
993 $<$<STREQUAL:${FREERTOS_PORT},GCC_IA32_FLAT>:${CMAKE_CURRENT_LIST_DIR}/GCC/IA32_flat>
995 # Intel (formerly Altera) NIOS II soft core port for GCC
996 $<$<STREQUAL:${FREERTOS_PORT},GCC_NIOSII>:${CMAKE_CURRENT_LIST_DIR}/GCC/NiosII>
998 # Texas Instruments MSP430 port for GCC
999 $<$<STREQUAL:${FREERTOS_PORT},GCC_MSP430F449>:${CMAKE_CURRENT_LIST_DIR}/GCC/MSP430F449>
1001 # Xilinx MicroBlaze soft core ports for GCC
1002 $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE>:${CMAKE_CURRENT_LIST_DIR}/GCC/MicroBlaze>
1003 $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE_V8>:${CMAKE_CURRENT_LIST_DIR}/GCC/MicroBlazeV8>
1004 $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE_V9>:${CMAKE_CURRENT_LIST_DIR}/GCC/MicroBlazeV9>
1006 # Xilinx PCC4XX soft core ports for GCC
1007 $<$<STREQUAL:${FREERTOS_PORT},GCC_PPC405_XILINX>:${CMAKE_CURRENT_LIST_DIR}/GCC/PPC405_Xilinx>
1008 $<$<STREQUAL:${FREERTOS_PORT},GCC_PPC440_XILINX>:${CMAKE_CURRENT_LIST_DIR}/GCC/PPC440_Xilinx>
1010 # RISC-V architecture ports for GCC
1011 $<$<STREQUAL:${FREERTOS_PORT},GCC_RISC_V>:
1012 ${CMAKE_CURRENT_LIST_DIR}/GCC/RISC-V
1013 ${CMAKE_CURRENT_LIST_DIR}/GCC/RISC-V/chip_specific_extensions/RISCV_MTIME_CLINT_no_extensions>
1015 $<$<STREQUAL:${FREERTOS_PORT},GCC_RISC_V_PULPINO_VEGA_RV32M1RM>:
1016 ${CMAKE_CURRENT_LIST_DIR}/GCC/RISC-V
1017 ${CMAKE_CURRENT_LIST_DIR}/GCC/RISC-V/chip_specific_extensions/Pulpino_Vega_RV32M1RM>
1019 $<$<STREQUAL:${FREERTOS_PORT},GCC_RISC_V_GENERIC>:
1020 ${CMAKE_CURRENT_LIST_DIR}/GCC/RISC-V
1021 ${CMAKE_CURRENT_LIST_DIR}/GCC/RISC-V/chip_specific_extensions/${FREERTOS_RISCV_EXTENSION}>
1023 # Renesas RL78 port for GCC
1024 $<$<STREQUAL:${FREERTOS_PORT},GCC_RL78>:${CMAKE_CURRENT_LIST_DIR}/GCC/RL78>
1026 # Renesas RX architecture ports for GCC
1027 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX100>:${CMAKE_CURRENT_LIST_DIR}/GCC/RX100>
1028 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX200>:${CMAKE_CURRENT_LIST_DIR}/GCC/RX200>
1029 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX600>:${CMAKE_CURRENT_LIST_DIR}/GCC/RX600>
1030 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX600_V2>:${CMAKE_CURRENT_LIST_DIR}/GCC/RX600v2>
1031 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX700_V3_DPFPU>:${CMAKE_CURRENT_LIST_DIR}/GCC/RX700v3_DPFPU>
1033 # Infineon TriCore 1782 port for GCC
1034 $<$<STREQUAL:${FREERTOS_PORT},GCC_TRICORE_1782>:${CMAKE_CURRENT_LIST_DIR}/GCC/TriCore_1782>
1036 # Synopsys ARC architecture ports for GCC
1037 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARC_EM_HS>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/ARC_EM_HS>
1038 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARC_V1>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/ARC_v1>
1040 # Posix Simulator port for GCC
1041 $<$<STREQUAL:${FREERTOS_PORT},GCC_POSIX>:
1042 ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/Posix
1043 ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/Posix/utils>
1045 # Xtensa LX / Espressif ESP32 port for GCC
1046 $<$<STREQUAL:${FREERTOS_PORT},GCC_XTENSA_ESP32>:
1047 ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/Xtensa_ESP32
1048 ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/Xtensa_ESP32/include>
1050 # Renesas (formerly NEC) 78K port for IAR EW78K
1051 $<$<STREQUAL:${FREERTOS_PORT},IAR_78K0K>:${CMAKE_CURRENT_LIST_DIR}/IAR/78K0R>
1053 # ARMv7-A ports for IAR EWARM
1054 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CA5_NOGIC>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CA5_No_GIC>
1055 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CA9>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CA9>
1057 # ARMv6-M port for IAR EWARM
1058 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM0>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM0>
1060 # ARMv7-M port for IAR EWARM
1061 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM3>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM3>
1063 # ARMv7E-M ports for IAR EWARM
1064 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM4F>
1065 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM4F_MPU>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM4F_MPU>
1066 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM7>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM7/r0p1>
1068 # ARMv8-M Ports for IAR EWARM
1069 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM23_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM23/non_secure>
1070 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM23_SECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM23/secure>
1071 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM23_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM23_NTZ/non_secure>
1073 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM33/non_secure>
1074 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_SECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM33/secure>
1075 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM33_NTZ/non_secure>
1076 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_TFM>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM33_NTZ/non_secure>
1078 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM35P_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM35P/non_secure>
1079 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM35P_SECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM35P/secure>
1080 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM35P_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM35P_NTZ/non_secure>
1082 # ARMv8.1-M ports for IAR EWARM
1083 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM55/non_secure>
1084 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_SECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM55/secure>
1085 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM55_NTZ/non_secure>
1086 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_TFM>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM55_NTZ/non_secure>
1088 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM85/non_secure>
1089 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_SECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM85/secure>
1090 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM85_NTZ/non_secure>
1091 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_TFM>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM85_NTZ/non_secure>
1093 # ARMv7-R Ports for IAR EWARM
1094 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CRX_NOGIC>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CRx_No_GIC>
1096 # ARMv4T ARM7TDMI ports for IAR Embedded Workbench for ARM
1097 $<$<STREQUAL:${FREERTOS_PORT},IAR_STR71X>:${CMAKE_CURRENT_LIST_DIR}/IAR/STR71x>
1098 $<$<STREQUAL:${FREERTOS_PORT},IAR_STR75X>:${CMAKE_CURRENT_LIST_DIR}/IAR/STR75x>
1099 $<$<STREQUAL:${FREERTOS_PORT},IAR_LPC2000>:${CMAKE_CURRENT_LIST_DIR}/IAR/LPC2000>
1100 $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEL_SAM7S64>:${CMAKE_CURRENT_LIST_DIR}/IAR/AtmelSAM7S64>
1102 # ARMv5TE ARM926 ports for IAR Embedded Workbench for ARM
1103 $<$<STREQUAL:${FREERTOS_PORT},IAR_STR91X>:${CMAKE_CURRENT_LIST_DIR}/IAR/STR91x>
1104 $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEL_SAM9XE>:${CMAKE_CURRENT_LIST_DIR}/IAR/AtmelSAM9XE>
1106 # Microchip (formerly Atmel) AVR8 ports for IAR EWAVR
1107 $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEGA323>:${CMAKE_CURRENT_LIST_DIR}/IAR/ATMega323>
1108 $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR_AVRDX>:${CMAKE_CURRENT_LIST_DIR}/IAR/AVR_AVRDx>
1109 $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR_MEGA0>:${CMAKE_CURRENT_LIST_DIR}/IAR/AVR_Mega0>
1111 # Microchip (formerly Atmel) AVR32 port for IAR Embedded Workbench for AVR32
1112 $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR32_UC3>:${CMAKE_CURRENT_LIST_DIR}/IAR/AVR32_UC3>
1114 # Texas Instruments MSP430 ports for IAR Embedded Workbench for MSP430
1115 $<$<STREQUAL:${FREERTOS_PORT},IAR_MSP430>:${CMAKE_CURRENT_LIST_DIR}/IAR/MSP430>
1116 $<$<STREQUAL:${FREERTOS_PORT},IAR_MSP430X>:${CMAKE_CURRENT_LIST_DIR}/IAR/MSP430X>
1118 # RISC-V architecture port for IAR Embedded Workbench for RISC-V
1119 $<$<STREQUAL:${FREERTOS_PORT},IAR_RISC_V>:
1120 ${CMAKE_CURRENT_LIST_DIR}/IAR/RISC-V
1121 ${CMAKE_CURRENT_LIST_DIR}/IAR/RISC-V/chip_specific_extensions/RV32I_CLINT_no_extensions>
1123 $<$<STREQUAL:${FREERTOS_PORT},IAR_RISC_V_GENERIC>:
1124 ${CMAKE_CURRENT_LIST_DIR}/IAR/RISC-V
1125 ${CMAKE_CURRENT_LIST_DIR}/IAR/RISC-V/chip_specific_extensions/${FREERTOS_RISCV_EXTENSION}>
1127 # Renesas RL78 port for IAR EWRL78
1128 $<$<STREQUAL:${FREERTOS_PORT},IAR_RL78>:${CMAKE_CURRENT_LIST_DIR}/IAR/RL78>
1130 # Renesas RX architecture ports for IAR EWRX
1131 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX100>:${CMAKE_CURRENT_LIST_DIR}/IAR/RX100>
1132 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX600>:${CMAKE_CURRENT_LIST_DIR}/IAR/RX600>
1133 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX700_V3_DPFPU>:${CMAKE_CURRENT_LIST_DIR}/IAR/RX700v3_DPFPU>
1134 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX_V2>:${CMAKE_CURRENT_LIST_DIR}/IAR/RXv2>
1136 # Renesas (formerly NEC) V850ES port for IAR EWV850
1137 $<$<STREQUAL:${FREERTOS_PORT},IAR_V850ES_FX3>:${CMAKE_CURRENT_LIST_DIR}/IAR/V850ES>
1138 $<$<STREQUAL:${FREERTOS_PORT},IAR_V850ES_HX3>:${CMAKE_CURRENT_LIST_DIR}/IAR/V850ES>
1140 # ARM Cortex-M4F port for the MikroElektronika MikroC compiler
1141 $<$<STREQUAL:${FREERTOS_PORT},MIKROC_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/MikroC/ARM_CM4F>
1143 # Microchip PIC18 8-bit MCU port for MPLAB XC8
1144 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC18F>:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC18F>
1146 # Microchip PIC24 16-bit MCU port for MPLAB XC16
1147 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC24>:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC24_dsPIC>
1149 # Microchip MIPS 32-Bit MCU ports for MPLAB XC32
1150 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MEC14XX>:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC32MEC14xx>
1151 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MX>:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC32MX>
1152 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MZ>:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC32MZ>
1154 # Windows Simulator for Microsoft Visual C Compiler and MinGW GCC
1155 $<$<STREQUAL:${FREERTOS_PORT},MSVC_MINGW>:${CMAKE_CURRENT_LIST_DIR}/MSVC-MingW>
1157 # 16 bit DOS ports for Open Watcom
1158 $<$<STREQUAL:${FREERTOS_PORT},OWATCOM_16BIT_DOS_FLSH186>:
1159 ${CMAKE_CURRENT_LIST_DIR}/oWatcom/16BitDOS/common
1160 ${CMAKE_CURRENT_LIST_DIR}/oWatcom/16BitDOS/Flsh186>
1161 $<$<STREQUAL:${FREERTOS_PORT},OWATCOM_16BIT_DOS_PC>:
1162 ${CMAKE_CURRENT_LIST_DIR}/oWatcom/16BitDOS/common
1163 ${CMAKE_CURRENT_LIST_DIR}/oWatcom/16BitDOS/PC>
1165 $<$<STREQUAL:${FREERTOS_PORT},PARADIGM_TERN_EE_LARGE>:${CMAKE_CURRENT_LIST_DIR}/Paradigm/Tern_EE/large_untested>
1166 $<$<STREQUAL:${FREERTOS_PORT},PARADIGM_TERN_EE_SMALL>:${CMAKE_CURRENT_LIST_DIR}/Paradigm/Tern_EE/small>
1168 # Renesas RX mcu ports for Renesas CC-RX
1169 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX100>:${CMAKE_CURRENT_LIST_DIR}/Renesas/RX100>
1170 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX200>:${CMAKE_CURRENT_LIST_DIR}/Renesas/RX200>
1171 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX600>:${CMAKE_CURRENT_LIST_DIR}/Renesas/RX600>
1172 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX600_V2>:${CMAKE_CURRENT_LIST_DIR}/Renesas/RX600v2>
1173 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX700_V3_DPFPU>:${CMAKE_CURRENT_LIST_DIR}/Renesas/RX700v3_DPFPU>
1175 # Renesas (formerly Hitach) SHA2 SuperH port for the Renesas SH C Compiler
1176 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_SH2A_FPU>:${CMAKE_CURRENT_LIST_DIR}/Renesas/SH2A_FPU>
1178 # Texas Instruments MSP430 port for Rowley CrossWorks
1179 $<$<STREQUAL:${FREERTOS_PORT},ROWLEY_MSP430F449>:${CMAKE_CURRENT_LIST_DIR}/Rowley/MSP430F449>
1181 # ARMv7-A Cortex-A9 port for ARM RVDS / armcc
1182 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CA9>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CA9>
1184 # ARMv6-M port for ARM RVDS / armcc
1185 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM0>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM0>
1187 # ARMv7-M port for ARM RVDS / armcc
1188 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM3>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM3>
1190 # ARMv7E-M ports for ARM RVDS / armcc
1191 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM4_MPU>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM4_MPU>
1192 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM4F>
1193 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM7>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM7/r0p1>
1195 # ARMv4T / ARM7TDMI LPC21XX port for ARM RVDS / armcc
1196 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM7_LPC21XX>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM7_LPC21xx>
1198 # Cygnal c8051 port for SDCC (Small Device C Compiler)
1199 $<$<STREQUAL:${FREERTOS_PORT},SDCC_CYGNAL>:${CMAKE_CURRENT_LIST_DIR}/SDCC/Cygnal>
1201 # Infineon (formerly Fujitsu, Spansion, Cypress) MB9x ports for Softune C Compiler
1202 $<$<STREQUAL:${FREERTOS_PORT},SOFTUNE_MB91460>:${CMAKE_CURRENT_LIST_DIR}/Softune/MB91460>
1203 $<$<STREQUAL:${FREERTOS_PORT},SOFTUNE_MB96340>:${CMAKE_CURRENT_LIST_DIR}/Softune/MB96340>
1205 # ARMv7E-M (Cortex-M4F) port for TASKING VX-toolset for ARM
1206 $<$<STREQUAL:${FREERTOS_PORT},TASKING_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/Tasking/ARM_CM4F>
1208 # Port for C-SKY T-HEAD CK802
1209 $<$<STREQUAL:${FREERTOS_PORT},CDK_THEAD_CK802>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/CDK/T-HEAD_CK802>
1211 # Tensilica Xtensa port for XCC
1212 $<$<STREQUAL:${FREERTOS_PORT},XCC_XTENSA>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/XCC/Xtensa>
1214 # Microchip PIC18 port for WIZ-C
1215 $<$<STREQUAL:${FREERTOS_PORT},WIZC_PIC18>:${CMAKE_CURRENT_LIST_DIR}/WizC/PIC18>
1218 target_link_libraries(freertos_kernel_port_headers
1220 $<$<STREQUAL:${FREERTOS_PORT},GCC_RP2040>:hardware_sync>
1223 if(FREERTOS_PORT STREQUAL GCC_POSIX)
1224 find_package(Threads REQUIRED)
1227 target_link_libraries(freertos_kernel_port
1229 $<$<STREQUAL:${FREERTOS_PORT},GCC_RP2040>:pico_base_headers>
1230 $<$<STREQUAL:${FREERTOS_PORT},GCC_XTENSA_ESP32>:idf::esp32>
1231 freertos_kernel_port_headers
1233 freertos_kernel_include
1234 $<$<STREQUAL:${FREERTOS_PORT},GCC_POSIX>:Threads::Threads>
1235 "$<$<STREQUAL:${FREERTOS_PORT},GCC_RP2040>:hardware_clocks;hardware_exception;pico_multicore>"
1236 $<$<STREQUAL:${FREERTOS_PORT},MSVC_MINGW>:winmm> # Windows library which implements timers