1 # FreeRTOS internal cmake file. Do not use it in user top-level project
3 if (FREERTOS_PORT STREQUAL "A_CUSTOM_PORT")
4 message(STATUS "Using a custom FREERTOS_PORT.")
8 # FreeRTOS internal cmake file. Do not use it in user top-level project
10 add_library(freertos_kernel_port STATIC
12 $<$<STREQUAL:${FREERTOS_PORT},TEMPLATE>:
15 # 16-Bit DOS ports for BCC
16 $<$<STREQUAL:${FREERTOS_PORT},BCC_16BIT_DOS_FLSH186>:
17 BCC/16BitDOS/common/portcomn.c
18 BCC/16BitDOS/Flsh186/port.c>
20 $<$<STREQUAL:${FREERTOS_PORT},BCC_16BIT_DOS_PC>:
21 BCC/16BitDOS/common/portcomn.c
22 BCC/16BitDOS/PC/port.c>
24 # ARMv7-M port for Texas Instruments Code Composer Studio
25 $<$<STREQUAL:${FREERTOS_PORT},CCS_ARM_CM3>:
27 CCS/ARM_CM3/portasm.asm>
29 # ARMv7E-M port for Texas Instruments Code Composer Studio
30 $<$<STREQUAL:${FREERTOS_PORT},CCS_ARM_CM4F>:
32 CCS/ARM_CM4F/portasm.asm>
34 # ARMv7-R port for Texas Instruments Code Composer Studio
35 $<$<STREQUAL:${FREERTOS_PORT},CCS_ARM_CR4>:
36 CCS/ARM_Cortex-R4/port.c
37 CCS/ARM_Cortex-R4/portASM.asm>
39 # Texas Instruments MSP430 port for Texas Instruments Code Composer Studio
40 $<$<STREQUAL:${FREERTOS_PORT},CCS_MSP430X>:
42 CCS/MSP430X/portext.asm>
44 # NXP (formerly Motorola, Freescale) Cold Fire and 68HCS12 ports for Code Warrior
45 $<$<STREQUAL:${FREERTOS_PORT},CODEWARRIOR_COLDFIRE_V1>:
46 CodeWarrior/ColdFire_V1/port.c
47 CodeWarrior/ColdFire_V1/portasm.S>
49 $<$<STREQUAL:${FREERTOS_PORT},CODEWARRIOR_COLDFIRE_V2>:
50 CodeWarrior/ColdFire_V2/port.c
51 CodeWarrior/ColdFire_V2/portasm.S>
53 $<$<STREQUAL:${FREERTOS_PORT},CODEWARRIOR_HCS12>:
54 CodeWarrior/HCS12/port.c>
56 # ARMv7-A port for GCC
57 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CA9>:
59 GCC/ARM_CA9/portASM.S>
61 # ARMv8-A ports for GCC
62 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CA53_64_BIT>:
63 GCC/ARM_CA53_64_BIT/port.c
64 GCC/ARM_CA53_64_BIT/portASM.S>
66 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CA53_64_BIT_SRE>:
67 GCC/ARM_CA53_64_BIT_SRE/port.c
68 GCC/ARM_CA53_64_BIT_SRE/portASM.S>
70 # ARMv6-M port for GCC
71 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM0>:
74 # ARMv6-M / Cortex-M0 Raspberry PI RP2040 port for GCC
75 $<$<STREQUAL:${FREERTOS_PORT},GCC_RP2040>:
76 ThirdParty/GCC/RP2040/idle_task_static_memory.c
77 ThirdParty/GCC/RP2040/port.c>
79 # ARMv7-M ports for GCC
80 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM3>:
83 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM3_MPU>:
84 GCC/ARM_CM3_MPU/port.c>
86 # ARMv7E-M ports for GCC
87 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM4_MPU>:
88 GCC/ARM_CM4_MPU/port.c>
90 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM4F>:
93 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM7>:
94 GCC/ARM_CM7/r0p1/port.c>
96 # ARMv8-M ports for GCC
97 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM23_NONSECURE>:
98 GCC/ARM_CM23/non_secure/port.c
99 GCC/ARM_CM23/non_secure/portasm.c>
101 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM23_SECURE>:
102 GCC/ARM_CM23/secure/secure_context_port.c
103 GCC/ARM_CM23/secure/secure_context.c
104 GCC/ARM_CM23/secure/secure_heap.c
105 GCC/ARM_CM23/secure/secure_init.c>
107 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM23_NTZ_NONSECURE>:
108 GCC/ARM_CM23_NTZ/non_secure/port.c
109 GCC/ARM_CM23_NTZ/non_secure/portasm.c>
111 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_NONSECURE>:
112 GCC/ARM_CM33/non_secure/port.c
113 GCC/ARM_CM33/non_secure/portasm.c>
115 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_SECURE>:
116 GCC/ARM_CM33/secure/secure_context_port.c
117 GCC/ARM_CM33/secure/secure_context.c
118 GCC/ARM_CM33/secure/secure_heap.c
119 GCC/ARM_CM33/secure/secure_init.c>
121 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_NTZ_NONSECURE>:
122 GCC/ARM_CM33_NTZ/non_secure/port.c
123 GCC/ARM_CM33_NTZ/non_secure/portasm.c>
125 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_TFM>:
126 GCC/ARM_CM33_NTZ/non_secure/port.c
127 GCC/ARM_CM33_NTZ/non_secure/portasm.c
128 ThirdParty/GCC/ARM_TFM/os_wrapper_freertos.c>
130 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM35P_NONSECURE>:
131 GCC/ARM_CM35P/non_secure/port.c
132 GCC/ARM_CM35P/non_secure/portasm.c>
134 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM35P_SECURE>:
135 GCC/ARM_CM35P/secure/secure_context_port.c
136 GCC/ARM_CM35P/secure/secure_context.c
137 GCC/ARM_CM35P/secure/secure_heap.c
138 GCC/ARM_CM35P/secure/secure_init.c>
140 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM35P_NTZ_NONSECURE>:
141 GCC/ARM_CM35P_NTZ/non_secure/port.c
142 GCC/ARM_CM35P_NTZ/non_secure/portasm.c>
144 # ARMv8.1-M ports for GCC
145 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_NONSECURE>:
146 GCC/ARM_CM55/non_secure/port.c
147 GCC/ARM_CM55/non_secure/portasm.c>
149 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_SECURE>:
150 GCC/ARM_CM55/secure/secure_context_port.c
151 GCC/ARM_CM55/secure/secure_context.c
152 GCC/ARM_CM55/secure/secure_heap.c
153 GCC/ARM_CM55/secure/secure_init.c>
155 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_NTZ_NONSECURE>:
156 GCC/ARM_CM55_NTZ/non_secure/port.c
157 GCC/ARM_CM55_NTZ/non_secure/portasm.c>
159 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_TFM>:
160 GCC/ARM_CM55_NTZ/non_secure/port.c
161 GCC/ARM_CM55_NTZ/non_secure/portasm.c
162 ThirdParty/GCC/ARM_TFM/os_wrapper_freertos.c>
164 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_NONSECURE>:
165 GCC/ARM_CM85/non_secure/port.c
166 GCC/ARM_CM85/non_secure/portasm.c>
168 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_SECURE>:
169 GCC/ARM_CM85/secure/secure_context_port.c
170 GCC/ARM_CM85/secure/secure_context.c
171 GCC/ARM_CM85/secure/secure_heap.c
172 GCC/ARM_CM85/secure/secure_init.c>
174 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_NTZ_NONSECURE>:
175 GCC/ARM_CM85_NTZ/non_secure/port.c
176 GCC/ARM_CM85_NTZ/non_secure/portasm.c>
178 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_TFM>:
179 GCC/ARM_CM85_NTZ/non_secure/port.c
180 GCC/ARM_CM85_NTZ/non_secure/portasm.c
181 ThirdParty/GCC/ARM_TFM/os_wrapper_freertos.c>
183 # ARMv7-R ports for GCC
184 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CR5>:
186 GCC/ARM_CR5/portASM.S>
188 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CRX_NOGIC>:
189 GCC/ARM_CRx_No_GIC/port.c
190 GCC/ARM_CRx_No_GIC/portASM.S>
192 # ARMv4T ARM7TDMI ports for GCC
193 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_AT91FR40008>:
194 GCC/ARM7_AT91FR40008/port.c
195 GCC/ARM7_AT91FR40008/portISR.c>
197 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_AT91SAM7S>:
198 GCC/ARM7_AT91SAM7S/lib_AT91SAM7X256.c
199 GCC/ARM7_AT91SAM7S/port.c
200 GCC/ARM7_AT91SAM7S/portISR.c>
202 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_LPC2000>:
203 GCC/ARM7_LPC2000/port.c
204 GCC/ARM7_LPC2000/portISR.c>
206 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_LPC23XX>:
207 GCC/ARM7_LPC23xx/port.c
208 GCC/ARM7_LPC23xx/portISR.c>
210 $<$<STREQUAL:${FREERTOS_PORT},GCC_STR75X>:
212 GCC/STR75x/portISR.c>
214 # Microchip (formerly Ateml) AVR8 ports for GCC
215 $<$<STREQUAL:${FREERTOS_PORT},GCC_ATMEGA323>:
216 GCC/ATMega323/port.c>
218 $<$<STREQUAL:${FREERTOS_PORT},GCC_ATMEGA>:
219 ThirdParty/GCC/ATmega/port.c>
221 $<$<STREQUAL:${FREERTOS_PORT},GCC_AVRDX>:
222 ThirdParty/Partner-Supported-Ports/GCC/AVR_AVRDx/port.c>
224 $<$<STREQUAL:${FREERTOS_PORT},GCC_AVR_MEGA0>:
225 ThirdParty/Partner-Supported-Ports/GCC/AVR_Mega0/port.c>
227 # Microchip (formerly Ateml) AVR32 port for GCC
228 $<$<STREQUAL:${FREERTOS_PORT},GCC_AVR32_UC3>:
229 GCC/AVR32_UC3/exception.S
230 GCC/AVR32_UC3/port.c>
232 # NXP (formerly Motorola, Freescale) Cold Fire and 68HCS12 ports for GCC
233 $<$<STREQUAL:${FREERTOS_PORT},GCC_COLDFIRE_V2>:
234 GCC/ColdFire_V2/port.c
235 GCC/ColdFire_V2/portasm.S>
237 $<$<STREQUAL:${FREERTOS_PORT},GCC_HCS12>:
240 # Cortus APS3 soft core port for GCC
241 $<$<STREQUAL:${FREERTOS_PORT},GCC_CORTUS_APS3>:
242 GCC/CORTUS_APS3/port.c>
244 # Renesas (formerly Hitach) H8S port for GCC
245 $<$<STREQUAL:${FREERTOS_PORT},GCC_H8S2329>:
248 # x86 / IA32 flat memory model port for GCC
249 $<$<STREQUAL:${FREERTOS_PORT},GCC_IA32_FLAT>:
251 GCC/IA32_flat/portASM.S>
253 # Xilinx MicroBlaze soft core ports for GCC
254 $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE>:
255 GCC/MicroBlaze/port.c
256 GCC/MicroBlaze/portasm.s>
258 $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE_V8>:
259 GCC/MicroBlazeV8/port.c
260 GCC/MicroBlazeV8/port_exceptions.c
261 GCC/MicroBlazeV8/portasm.S>
263 $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE_V9>:
264 GCC/MicroBlazeV9/port.c
265 GCC/MicroBlazeV9/port_exceptions.c
266 GCC/MicroBlazeV9/portasm.S>
268 # Xilinx PCC4XX soft core ports for GCC
269 $<$<STREQUAL:${FREERTOS_PORT},GCC_PPC405_XILINX>:
270 GCC/PPC405_Xilinx/port.c
271 GCC/PPC405_Xilinx/portasm.S>
273 $<$<STREQUAL:${FREERTOS_PORT},GCC_PPC440_XILINX>:
274 GCC/PPC440_Xilinx/port.c
275 GCC/PPC440_Xilinx/portasm.S>
277 # Texas Instruments MSP430 port for GCC
278 $<$<STREQUAL:${FREERTOS_PORT},GCC_MSP430F449>:
279 GCC/MSP430F449/port.c>
281 # Intel (formerly Altera) NIOS II soft core port for GCC
282 $<$<STREQUAL:${FREERTOS_PORT},GCC_NIOSII>:
284 GCC/NiosII/port_asm.S>
286 # RISC-V architecture ports for GCC
287 $<$<STREQUAL:${FREERTOS_PORT},GCC_RISC_V>:
289 GCC/RISC-V/portASM.S>
291 $<$<STREQUAL:${FREERTOS_PORT},GCC_RISC_V_PULPINO_VEGA_RV32M1RM>:
293 GCC/RISC-V/portASM.S>
295 # Renesas RL78 port for GCC
296 $<$<STREQUAL:${FREERTOS_PORT},GCC_RL78>:
300 # Renesas RX architecture ports for GCC
301 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX100>:
304 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX200>:
307 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX600>:
310 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX600_V2>:
313 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX700_V3_DPFPU>:
314 GCC/RX700v3_DPFPU/port.c>
316 # Infineon TriCore 1782 port for GCC
317 $<$<STREQUAL:${FREERTOS_PORT},GCC_TRICORE_1782>:
318 GCC/TriCore_1782/port.c
319 GCC/TriCore_1782/porttrap.c>
321 # Synopsys ARC architecture ports for GCC
322 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARC_EM_HS>:
323 ThirdParty/GCC/ARC_EM_HS/arc_freertos_exceptions.c
324 ThirdParty/GCC/ARC_EM_HS/arc_support.s
325 ThirdParty/GCC/ARC_EM_HS/freertos_tls.c
326 ThirdParty/GCC/ARC_EM_HS/port.c>
328 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARC_V1>:
329 ThirdParty/GCC/ARC_v1/arc_freertos_exceptions.c
330 ThirdParty/GCC/ARC_v1/arc_support.s
331 ThirdParty/GCC/ARC_v1/port.c>
333 # Posix Simulator port for GCC
334 $<$<STREQUAL:${FREERTOS_PORT},GCC_POSIX>:
335 ThirdParty/GCC/Posix/port.c
336 ThirdParty/GCC/Posix/utils/wait_for_event.c>
338 # Xtensa LX / Espressif ESP32 port for GCC
339 $<$<STREQUAL:${FREERTOS_PORT},GCC_XTENSA_ESP32>:
340 ThirdParty/GCC/Xtensa_ESP32/FreeRTOS-openocd.c
341 ThirdParty/GCC/Xtensa_ESP32/port.c
342 ThirdParty/GCC/Xtensa_ESP32/portasm.S
343 ThirdParty/GCC/Xtensa_ESP32/xtensa_context.S
344 ThirdParty/GCC/Xtensa_ESP32/xtensa_init.c
345 ThirdParty/GCC/Xtensa_ESP32/xtensa_intr_asm.S
346 ThirdParty/GCC/Xtensa_ESP32/xtensa_intr.c
347 ThirdParty/GCC/Xtensa_ESP32/xtensa_loadstore_handler.S
348 ThirdParty/GCC/Xtensa_ESP32/xtensa_overlay_os_hook.c
349 ThirdParty/GCC/Xtensa_ESP32/xtensa_vector_defaults.S
350 ThirdParty/GCC/Xtensa_ESP32/xtensa_vectors.S>
352 # Renesas (formerly NEC) 78K port for IAR EW78K
353 $<$<STREQUAL:${FREERTOS_PORT},IAR_78K0K>:
355 IAR/78K0R/portasm.s26>
357 # ARMv7-A ports for IAR EWARM
358 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CA5_NOGIC>:
359 IAR/ARM_CA5_No_GIC/port.c
360 IAR/ARM_CA5_No_GIC/portASM.s>
362 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CA9>:
364 IAR/ARM_CA9/portASM.s>
366 # ARMv6-M port for IAR EWARM
367 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM0>:
369 IAR/ARM_CM0/portasm.s>
371 # ARMv7-M port for IAR EWARM
372 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM3>:
374 IAR/ARM_CM3/portasm.s>
376 # ARMv7E-M ports for IAR EWARM
377 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM4F>:
379 IAR/ARM_CM4F/portasm.s>
381 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM4F_MPU>:
382 IAR/ARM_CM4F_MPU/port.c
383 IAR/ARM_CM4F_MPU/portasm.s>
385 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM7>:
386 IAR/ARM_CM7/r0p1/port.c
387 IAR/ARM_CM7/r0p1/portasm.s>
389 # ARMv8-M Ports for IAR EWARM
390 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM23_NONSECURE>:
391 IAR/ARM_CM23/non_secure/port.c
392 IAR/ARM_CM23/non_secure/portasm.s>
394 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM23_SECURE>:
395 IAR/ARM_CM23/secure/secure_context_port_asm.s
396 IAR/ARM_CM23/secure/secure_context.c
397 IAR/ARM_CM23/secure/secure_heap.c
398 IAR/ARM_CM23/secure/secure_init.c>
400 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM23_NTZ_NONSECURE>:
401 IAR/ARM_CM23_NTZ/non_secure/port.c
402 IAR/ARM_CM23_NTZ/non_secure/portasm.s>
404 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_NONSECURE>:
405 IAR/ARM_CM33/non_secure/port.c
406 IAR/ARM_CM33/non_secure/portasm.s>
408 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_SECURE>:
409 IAR/ARM_CM33/secure/secure_context_port_asm.s
410 IAR/ARM_CM33/secure/secure_context.c
411 IAR/ARM_CM33/secure/secure_heap.c
412 IAR/ARM_CM33/secure/secure_init.c>
414 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_NTZ_NONSECURE>:
415 IAR/ARM_CM33_NTZ/non_secure/port.c
416 IAR/ARM_CM33_NTZ/non_secure/portasm.s>
418 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM35P_NONSECURE>:
419 IAR/ARM_CM35P/non_secure/port.c
420 IAR/ARM_CM35P/non_secure/portasm.s>
422 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM35P_SECURE>:
423 IAR/ARM_CM35P/secure/secure_context_port_asm.s
424 IAR/ARM_CM35P/secure/secure_context.c
425 IAR/ARM_CM35P/secure/secure_heap.c
426 IAR/ARM_CM35P/secure/secure_init.c>
428 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM35P_NTZ_NONSECURE>:
429 IAR/ARM_CM35P_NTZ/non_secure/port.c
430 IAR/ARM_CM35P_NTZ/non_secure/portasm.s>
432 # ARMv8.1-M ports for IAR EWARM
433 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_NONSECURE>:
434 IAR/ARM_CM55/non_secure/port.c
435 IAR/ARM_CM55/non_secure/portasm.s>
437 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_SECURE>:
438 IAR/ARM_CM55/secure/secure_context_port_asm.s
439 IAR/ARM_CM55/secure/secure_context.c
440 IAR/ARM_CM55/secure/secure_heap.c
441 IAR/ARM_CM55/secure/secure_init.c>
443 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_NTZ_NONSECURE>:
444 IAR/ARM_CM55_NTZ/non_secure/port.c
445 IAR/ARM_CM55_NTZ/non_secure/portasm.s>
447 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_NONSECURE>:
448 IAR/ARM_CM85/non_secure/port.c
449 IAR/ARM_CM85/non_secure/portasm.s>
451 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_SECURE>:
452 IAR/ARM_CM85/secure/secure_context_port_asm.s
453 IAR/ARM_CM85/secure/secure_context.c
454 IAR/ARM_CM85/secure/secure_heap.c
455 IAR/ARM_CM85/secure/secure_init.c>
457 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_NTZ_NONSECURE>:
458 IAR/ARM_CM85_NTZ/non_secure/port.c
459 IAR/ARM_CM85_NTZ/non_secure/portasm.s>
461 # ARMv7-R Ports for IAR EWARM
462 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CRX_NOGIC>:
463 IAR/ARM_CRx_No_GIC/port.c
464 IAR/ARM_CRx_No_GIC/portASM.s>
466 # Microchip (formerly Atmel) AVR8 ports for IAR EWAVR
467 $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEGA323>:
469 IAR/ATMega323/portmacro.s90>
471 $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR_AVRDX>:
473 IAR/AVR_AVRDx/portmacro.s90>
475 $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR_MEGA0>:
477 IAR/AVR_Mega0/portmacro.s90>
479 # Microchip (formerly Atmel) AVR32 port for IAR Embedded Workbench for AVR32
480 $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR32_UC3>:
481 IAR/AVR32_UC3/exception.s82
484 IAR/AVR32_UC3/write.c>
486 # Texas Instruments MSP430 ports for IAR Embedded Workbench for MSP430
487 $<$<STREQUAL:${FREERTOS_PORT},IAR_MSP430>:
489 IAR/MSP430/portext.s43>
491 $<$<STREQUAL:${FREERTOS_PORT},IAR_MSP430X>:
493 IAR/MSP430X/portext.s43>
495 # RISC-V architecture port for IAR Embedded Workbench for RISC-V
496 $<$<STREQUAL:${FREERTOS_PORT},IAR_RISC_V>:
498 IAR/RISC-V/portASM.s>
500 # Renesas RL78 port for IAR EWRL78
501 $<$<STREQUAL:${FREERTOS_PORT},IAR_RL78>:
503 IAR/RL78/portasm.s87>
505 # Renesas RX architecture ports for IAR EWRX
506 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX100>:
508 IAR/RX100/port_asm.s>
510 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX600>:
512 IAR/RX600/port_asm.s>
514 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX700_V3_DPFPU>:
515 IAR/RX700v3_DPFPU/port.c>
517 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX_V2>:
521 # Renesas (formerly NEC) V850ES port for IAR EWV850
522 $<$<STREQUAL:${FREERTOS_PORT},IAR_V850ES_FX3>:
524 IAR/V850ES/portasm_Fx3.s85>
526 $<$<STREQUAL:${FREERTOS_PORT},IAR_V850ES_HX3>:
528 IAR/V850ES/portasm_Hx2.s85>
530 # ARMv4T ARM7TDMI ports for IAR Embedded Workbench for ARM
531 $<$<STREQUAL:${FREERTOS_PORT},IAR_STR71X>:
533 IAR/STR71x/portasm.s79>
535 $<$<STREQUAL:${FREERTOS_PORT},IAR_STR75X>:
537 IAR/STR75x/portasm.s79>
539 $<$<STREQUAL:${FREERTOS_PORT},IAR_LPC2000>:
541 IAR/LPC2000/portasm.s79>
543 $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEL_SAM7S64>:
544 IAR/AtmelSAM7S64/port.c
545 IAR/AtmelSAM7S64/portasm.s79>
547 # ARMv5TE ARM926 ports for IAR Embedded Workbench for ARM
548 $<$<STREQUAL:${FREERTOS_PORT},IAR_STR91X>:
550 IAR/STR91x/portasm.s79>
552 $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEL_SAM9XE>:
553 IAR/AtmelSAM9XE/port.c
554 IAR/AtmelSAM9XE/portasm.s79>
556 # ARM Cortex-M4F port for the MikroElektronika MikroC compiler
557 $<$<STREQUAL:${FREERTOS_PORT},MIKROC_ARM_CM4F>:
558 MikroC/ARM_CM4F/port.c>
560 # Microchip PIC18 8-bit MCU port for MPLAB XC8
561 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC18F>:
564 # Microchip PIC24 16-bit MCU port for MPLAB XC16
565 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC24>:
566 MPLAB/PIC24_dsPIC/port.c
567 MPLAB/PIC24_dsPIC/portasm_PIC24.S> # TODO: What to do with portasm_dsPIC.S ?
569 # Microchip MIPS 32-Bit MCU ports for MPLAB XC32
570 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MEC14XX>:
571 MPLAB/PIC32MEC14xx/port.c
572 MPLAB/PIC32MEC14xx/port_asm.S>
574 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MX>:
576 MPLAB/PIC32MX/port_asm.S>
578 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MZ>:
580 MPLAB/PIC32MZ/port_asm.S>
582 # Windows Simulator for Microsoft Visual C Compiler and MinGW GCC
583 $<$<STREQUAL:${FREERTOS_PORT},MSVC_MINGW>:
586 # 16 bit DOS ports for Open Watcom
587 $<$<STREQUAL:${FREERTOS_PORT},OWATCOM_16BIT_DOS_FLSH186>:
588 oWatcom/16BitDOS/common/portcomn.c
589 oWatcom/16BitDOS/Flsh186/port.c>
591 $<$<STREQUAL:${FREERTOS_PORT},OWATCOM_16BIT_DOS_PC>:
592 oWatcom/16BitDOS/common/portcomn.c
593 oWatcom/16BitDOS/PC/port.c>
595 $<$<STREQUAL:${FREERTOS_PORT},PARADIGM_TERN_EE_LARGE>:
596 Paradigm/Tern_EE/large_untested/port.c>
598 $<$<STREQUAL:${FREERTOS_PORT},PARADIGM_TERN_EE_SMALL>:
599 Paradigm/Tern_EE/small/port.c>
601 # Renesas RX mcu ports for Renesas CC-RX
602 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX100>:
604 Renesas/RX100/port_asm.src>
606 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX200>:
608 Renesas/RX200/port_asm.src>
610 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX600>:
612 Renesas/RX600/port_asm.src>
614 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX600_V2>:
615 Renesas/RX600v2/port.c
616 Renesas/RX600v2/port_asm.src>
618 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX700_V3_DPFPU>:
619 Renesas/RX700v3_DPFPU/port.c
620 Renesas/RX700v3_DPFPU/port_asm.src>
622 # Renesas (formerly Hitach) SHA2 SuperH port for the Renesas SH C Compiler
623 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_SH2A_FPU>:
624 Renesas/SH2A_FPU/port.c
625 Renesas/SH2A_FPU/portasm.src>
627 # Texas Instruments MSP430 port for Rowley CrossWorks
628 $<$<STREQUAL:${FREERTOS_PORT},ROWLEY_MSP430F449>:
629 Rowley/MSP430F449/port.c
630 Rowley/MSP430F449/portext.asm>
632 # ARMv7-A Cortex-A9 port for ARM RVDS / armcc
633 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CA9>:
635 RVDS/ARM_CA9/portASM.s>
637 # ARMv6-M port for ARM RVDS / armcc
638 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM0>:
641 # ARMv7-M port for ARM RVDS / armcc
642 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM3>:
645 # ARMv7E-M ports for ARM RVDS / armcc
646 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM4_MPU>:
647 RVDS/ARM_CM4_MPU/port.c>
649 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM4F>:
650 RVDS/ARM_CM4F/port.c>
652 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM7>:
653 RVDS/ARM_CM7/r0p1/port.c>
655 # ARMv4T / ARM7TDMI LPC21XX port for ARM RVDS / armcc
656 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM7_LPC21XX>:
657 RVDS/ARM7_LPC21xx/port.c
658 RVDS/ARM7_LPC21xx/portASM.s>
660 # Cygnal c8051 port for SDCC (Small Device C Compiler)
661 $<$<STREQUAL:${FREERTOS_PORT},SDCC_CYGNAL>:
664 # Infineon (formerly Fujitsu, Spansion, Cypress) MB9x ports for Softune C Compiler
665 $<$<STREQUAL:${FREERTOS_PORT},SOFTUNE_MB91460>:
666 Softune/MB91460/__STD_LIB_sbrk.c
667 Softune/MB91460/port.c>
669 $<$<STREQUAL:${FREERTOS_PORT},SOFTUNE_MB96340>:
670 Softune/MB96340/__STD_LIB_sbrk.c
671 Softune/MB96340/port.c>
673 # ARMv7E-M (Cortex-M4F) port for TASKING VX-toolset for ARM
674 $<$<STREQUAL:${FREERTOS_PORT},TASKING_ARM_CM4F>:
675 Tasking/ARM_CM4F/port.c
676 Tasking/ARM_CM4F/port_asm.asm>
678 # Port for C-SKY T-HEAD CK802
679 $<$<STREQUAL:${FREERTOS_PORT},CDK_THEAD_CK802>:
680 ThirdParty/CDK/T-HEAD_CK802/port.c
681 ThirdParty/CDK/T-HEAD_CK802/portasm.S>
683 # Tensilica Xtensa port for XCC
684 $<$<STREQUAL:${FREERTOS_PORT},XCC_XTENSA>:
685 ThirdParty/XCC/Xtensa/port.c
686 ThirdParty/XCC/Xtensa/portasm.S
687 ThirdParty/XCC/Xtensa/portclib.c
688 ThirdParty/XCC/Xtensa/xtensa_context.S
689 ThirdParty/XCC/Xtensa/xtensa_init.c
690 ThirdParty/XCC/Xtensa/xtensa_intr_asm.S
691 ThirdParty/XCC/Xtensa/xtensa_intr.c
692 ThirdParty/XCC/Xtensa/xtensa_overlay_os_hook.c
693 ThirdParty/XCC/Xtensa/xtensa_vectors.S>
695 # Microchip PIC18 port for WIZ-C
696 $<$<STREQUAL:${FREERTOS_PORT},WIZC_PIC18>:
698 WizC/PIC18/Drivers/Tick/isrTick.c
699 WizC/PIC18/Drivers/Tick/Tick.c>
702 if( FREERTOS_PORT MATCHES "GCC_ARM_CM(3|4)_MPU" OR
703 FREERTOS_PORT STREQUAL "IAR_ARM_CM4F_MPU" OR
704 FREERTOS_PORT STREQUAL "RVDS_ARM_CM4_MPU" OR
705 FREERTOS_PORT MATCHES "GCC_ARM_CM(23|33|55|85)_NTZ_NONSECURE" OR
706 FREERTOS_PORT MATCHES "GCC_ARM_CM(23|33|55|85)_NONSECURE" OR
707 FREERTOS_PORT MATCHES "GCC_ARM_CM(33|55|85)_TFM" OR
708 FREERTOS_PORT MATCHES "IAR_ARM_CM(23|33|55|85)_NTZ_NONSECURE" OR
709 FREERTOS_PORT MATCHES "IAR_ARM_CM(23|33|55|85)_NONSECURE"
711 target_sources(freertos_kernel_port PRIVATE Common/mpu_wrappers.c)
714 target_include_directories(freertos_kernel_port PUBLIC
716 $<$<STREQUAL:${FREERTOS_PORT},TEMPLATE>:${CMAKE_CURRENT_LIST_DIR}/template>
718 # 16-Bit DOS ports for BCC
719 $<$<STREQUAL:${FREERTOS_PORT},BCC_16BIT_DOS_FLSH186>:
720 ${CMAKE_CURRENT_LIST_DIR}/BCC/16BitDOS/common
721 ${CMAKE_CURRENT_LIST_DIR}/BCC/16BitDOS/Flsh186>
723 $<$<STREQUAL:${FREERTOS_PORT},BCC_16BIT_DOS_PC>:
724 ${CMAKE_CURRENT_LIST_DIR}/BCC/16BitDOS/common
725 ${CMAKE_CURRENT_LIST_DIR}/BCC/16BitDOS/PC>
727 # ARMv7-M port for Texas Instruments Code Composer Studio
728 $<$<STREQUAL:${FREERTOS_PORT},CCS_ARM_CM3>:${CMAKE_CURRENT_LIST_DIR}/CCS/ARM_CM3>
730 # ARMv7E-M port for Texas Instruments Code Composer Studio
731 $<$<STREQUAL:${FREERTOS_PORT},CCS_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/CCS/ARM_CM4F>
733 # ARMv7-R port for Texas Instruments Code Composer Studio
734 $<$<STREQUAL:${FREERTOS_PORT},CCS_ARM_CR4>:${CMAKE_CURRENT_LIST_DIR}/CCS/ARM_Cortex-R4>
736 # Texas Instruments MSP430 port for Texas Instruments Code Composer Studio
737 $<$<STREQUAL:${FREERTOS_PORT},CCS_MSP430X>:${CMAKE_CURRENT_LIST_DIR}/CCS/MSP430X>
739 # NXP (formerly Motorola, Freescale) Cold Fire and 68HCS12 ports for Code Warrior
740 $<$<STREQUAL:${FREERTOS_PORT},CODEWARRIOR_COLDFIRE_V1>:${CMAKE_CURRENT_LIST_DIR}/CodeWarrior/ColdFire_V1>
741 $<$<STREQUAL:${FREERTOS_PORT},CODEWARRIOR_COLDFIRE_V2>:${CMAKE_CURRENT_LIST_DIR}/CodeWarrior/ColdFire_V2>
742 $<$<STREQUAL:${FREERTOS_PORT},CODEWARRIOR_HCS12>:${CMAKE_CURRENT_LIST_DIR}/CodeWarrior/HCS12>
744 # ARMv7-A port for GCC
745 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CA9>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CA9>
747 # ARMv8-A ports for GCC
748 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CA53_64_BIT>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CA53_64_BIT>
749 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CA53_64_BIT_SRE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CA53_64_BIT_SRE>
751 # ARMv6-M port for GCC
752 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM0>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM0>
754 # ARMv6-M / Cortex-M0 Raspberry PI RP2040 port for GCC
755 $<$<STREQUAL:${FREERTOS_PORT},GCC_RP2040>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/RP2040/include>
757 # ARMv7-M ports for GCC
758 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM3>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM3>
759 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM3_MPU>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM3_MPU>
761 # ARMv7E-M ports for GCC
762 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM4_MPU>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM4_MPU>
763 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM4F>
764 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM7>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM7/r0p1>
766 # ARMv8-M ports for GCC
767 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM23_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM23/non_secure>
768 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM23_SECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM23/secure>
769 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM23_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM23_NTZ/non_secure>
771 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM33/non_secure>
772 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_SECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM33/secure>
773 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM33_NTZ/non_secure>
774 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_TFM>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM33_NTZ/non_secure>
776 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM35P_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM35P/non_secure>
777 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM35P_SECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM35P/secure>
778 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM35P_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM35P_NTZ/non_secure>
780 # ARMv8.1-M ports for GCC
781 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM55/non_secure>
782 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_SECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM55/secure>
783 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM55_NTZ/non_secure>
784 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_TFM>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM55_NTZ/non_secure>
786 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM85/non_secure>
787 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_SECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM85/secure>
788 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM85_NTZ/non_secure>
789 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_TFM>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM85_NTZ/non_secure>
791 # ARMv7-R ports for GCC
792 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CR5>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CR5>
793 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CRX_NOGIC>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CRx_No_GIC>
795 # ARMv4T ARM7TDMI ports for GCC
796 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_AT91FR40008>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM7_AT91FR40008>
797 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_AT91SAM7S>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM7_AT91SAM7S>
798 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_LPC2000>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM7_LPC2000>
799 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_LPC23XX>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM7_LPC23xx>
800 $<$<STREQUAL:${FREERTOS_PORT},GCC_STR75X>:${CMAKE_CURRENT_LIST_DIR}/GCC/STR75x>
802 # Microchip (formerly Ateml) AVR8 ports for GCC
803 $<$<STREQUAL:${FREERTOS_PORT},GCC_ATMEGA323>:${CMAKE_CURRENT_LIST_DIR}/GCC/ATMega323>
804 $<$<STREQUAL:${FREERTOS_PORT},GCC_ATMEGA>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/ATmega>
805 $<$<STREQUAL:${FREERTOS_PORT},GCC_AVRDX>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/Partner-Supported-Ports/GCC/AVR_AVRDx>
806 $<$<STREQUAL:${FREERTOS_PORT},GCC_AVR_MEGA0>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/Partner-Supported-Ports/GCC/AVR_Mega0>
808 # Microchip (formerly Ateml) AVR32 port for GCC
809 $<$<STREQUAL:${FREERTOS_PORT},GCC_AVR32_UC3>:${CMAKE_CURRENT_LIST_DIR}/GCC/AVR32_UC3>
811 # NXP (formerly Motorola, Freescale) Cold Fire and 68HCS12 ports for GCC
812 $<$<STREQUAL:${FREERTOS_PORT},GCC_COLDFIRE_V2>:${CMAKE_CURRENT_LIST_DIR}/GCC/ColdFire_V2>
813 $<$<STREQUAL:${FREERTOS_PORT},GCC_HCS12>:${CMAKE_CURRENT_LIST_DIR}/GCC/HCS12>
815 # Cortus APS3 soft core port for GCC
816 $<$<STREQUAL:${FREERTOS_PORT},GCC_CORTUS_APS3>:${CMAKE_CURRENT_LIST_DIR}/GCC/CORTUS_APS3>
818 # Renesas (formerly Hitach) H8S port for GCC
819 $<$<STREQUAL:${FREERTOS_PORT},GCC_H8S2329>:${CMAKE_CURRENT_LIST_DIR}/GCC/H8S2329>
821 # x86 / IA32 flat memory model port for GCC
822 $<$<STREQUAL:${FREERTOS_PORT},GCC_IA32_FLAT>:${CMAKE_CURRENT_LIST_DIR}/GCC/IA32_flat>
824 # Intel (formerly Altera) NIOS II soft core port for GCC
825 $<$<STREQUAL:${FREERTOS_PORT},GCC_NIOSII>:${CMAKE_CURRENT_LIST_DIR}/GCC/NiosII>
827 # Texas Instruments MSP430 port for GCC
828 $<$<STREQUAL:${FREERTOS_PORT},GCC_MSP430F449>:${CMAKE_CURRENT_LIST_DIR}/GCC/MSP430F449>
830 # Xilinx MicroBlaze soft core ports for GCC
831 $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE>:${CMAKE_CURRENT_LIST_DIR}/GCC/MicroBlaze>
832 $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE_V8>:${CMAKE_CURRENT_LIST_DIR}/GCC/MicroBlazeV8>
833 $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE_V9>:${CMAKE_CURRENT_LIST_DIR}/GCC/MicroBlazeV9>
835 # Xilinx PCC4XX soft core ports for GCC
836 $<$<STREQUAL:${FREERTOS_PORT},GCC_PPC405_XILINX>:${CMAKE_CURRENT_LIST_DIR}/GCC/PPC405_Xilinx>
837 $<$<STREQUAL:${FREERTOS_PORT},GCC_PPC440_XILINX>:${CMAKE_CURRENT_LIST_DIR}/GCC/PPC440_Xilinx>
839 # RISC-V architecture ports for GCC
840 $<$<STREQUAL:${FREERTOS_PORT},GCC_RISC_V>:
841 ${CMAKE_CURRENT_LIST_DIR}/GCC/RISC-V
842 ${CMAKE_CURRENT_LIST_DIR}/GCC/RISC-V/chip_specific_extensions/RISCV_MTIME_CLINT_no_extensions>
844 $<$<STREQUAL:${FREERTOS_PORT},GCC_RISC_V_PULPINO_VEGA_RV32M1RM>:
845 ${CMAKE_CURRENT_LIST_DIR}/GCC/RISC-V
846 ${CMAKE_CURRENT_LIST_DIR}/GCC/RISC-V/chip_specific_extensions/Pulpino_Vega_RV32M1RM>
848 # Renesas RL78 port for GCC
849 $<$<STREQUAL:${FREERTOS_PORT},GCC_RL78>:${CMAKE_CURRENT_LIST_DIR}/GCC/RL78>
851 # Renesas RX architecture ports for GCC
852 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX100>:${CMAKE_CURRENT_LIST_DIR}/GCC/RX100>
853 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX200>:${CMAKE_CURRENT_LIST_DIR}/GCC/RX200>
854 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX600>:${CMAKE_CURRENT_LIST_DIR}/GCC/RX600>
855 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX600_V2>:${CMAKE_CURRENT_LIST_DIR}/GCC/RX600v2>
856 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX700_V3_DPFPU>:${CMAKE_CURRENT_LIST_DIR}/GCC/RX700v3_DPFPU>
858 # Infineon TriCore 1782 port for GCC
859 $<$<STREQUAL:${FREERTOS_PORT},GCC_TRICORE_1782>:${CMAKE_CURRENT_LIST_DIR}/GCC/TriCore_1782>
861 # Synopsys ARC architecture ports for GCC
862 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARC_EM_HS>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/ARC_EM_HS>
863 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARC_V1>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/ARC_v1>
865 # Posix Simulator port for GCC
866 $<$<STREQUAL:${FREERTOS_PORT},GCC_POSIX>:
867 ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/Posix
868 ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/Posix/utils>
870 # Xtensa LX / Espressif ESP32 port for GCC
871 $<$<STREQUAL:${FREERTOS_PORT},GCC_XTENSA_ESP32>:
872 ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/Xtensa_ESP32
873 ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/Xtensa_ESP32/include>
875 # Renesas (formerly NEC) 78K port for IAR EW78K
876 $<$<STREQUAL:${FREERTOS_PORT},IAR_78K0K>:${CMAKE_CURRENT_LIST_DIR}/IAR/78K0R>
878 # ARMv7-A ports for IAR EWARM
879 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CA5_NOGIC>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CA5_No_GIC>
880 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CA9>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CA9>
882 # ARMv6-M port for IAR EWARM
883 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM0>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM0>
885 # ARMv7-M port for IAR EWARM
886 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM3>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM3>
888 # ARMv7E-M ports for IAR EWARM
889 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM4F>
890 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM4F_MPU>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM4F_MPU>
891 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM7>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM7/r0p1>
893 # ARMv8-M Ports for IAR EWARM
894 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM23_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM23/non_secure>
895 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM23_SECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM23/secure>
896 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM23_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM23_NTZ/non_secure>
898 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM33/non_secure>
899 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_SECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM33/secure>
900 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM33_NTZ/non_secure>
902 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM35P_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM35P/non_secure>
903 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM35P_SECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM35P/secure>
904 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM35P_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM35P_NTZ/non_secure>
906 # ARMv8.1-M ports for IAR EWARM
907 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM55/non_secure>
908 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_SECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM55/secure>
909 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM55_NTZ/non_secure>
911 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM85/non_secure>
912 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_SECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM85/secure>
913 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM85_NTZ/non_secure>
915 # ARMv7-R Ports for IAR EWARM
916 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CRX_NOGIC>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CRx_No_GIC>
918 # ARMv4T ARM7TDMI ports for IAR Embedded Workbench for ARM
919 $<$<STREQUAL:${FREERTOS_PORT},IAR_STR71X>:${CMAKE_CURRENT_LIST_DIR}/IAR/STR71x>
920 $<$<STREQUAL:${FREERTOS_PORT},IAR_STR75X>:${CMAKE_CURRENT_LIST_DIR}/IAR/STR75x>
921 $<$<STREQUAL:${FREERTOS_PORT},IAR_LPC2000>:${CMAKE_CURRENT_LIST_DIR}/IAR/LPC2000>
922 $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEL_SAM7S64>:${CMAKE_CURRENT_LIST_DIR}/IAR/AtmelSAM7S64>
924 # ARMv5TE ARM926 ports for IAR Embedded Workbench for ARM
925 $<$<STREQUAL:${FREERTOS_PORT},IAR_STR91X>:${CMAKE_CURRENT_LIST_DIR}/IAR/STR91x>
926 $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEL_SAM9XE>:${CMAKE_CURRENT_LIST_DIR}/IAR/AtmelSAM9XE>
928 # Microchip (formerly Atmel) AVR8 ports for IAR EWAVR
929 $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEGA323>:${CMAKE_CURRENT_LIST_DIR}/IAR/ATMega323>
930 $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR_AVRDX>:${CMAKE_CURRENT_LIST_DIR}/IAR/AVR_AVRDx>
931 $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR_MEGA0>:${CMAKE_CURRENT_LIST_DIR}/IAR/AVR_Mega0>
933 # Microchip (formerly Atmel) AVR32 port for IAR Embedded Workbench for AVR32
934 $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR32_UC3>:${CMAKE_CURRENT_LIST_DIR}/IAR/AVR32_UC3>
936 # Texas Instruments MSP430 ports for IAR Embedded Workbench for MSP430
937 $<$<STREQUAL:${FREERTOS_PORT},IAR_MSP430>:${CMAKE_CURRENT_LIST_DIR}/IAR/MSP430>
938 $<$<STREQUAL:${FREERTOS_PORT},IAR_MSP430X>:${CMAKE_CURRENT_LIST_DIR}/IAR/MSP430X>
940 # RISC-V architecture port for IAR Embedded Workbench for RISC-V
941 $<$<STREQUAL:${FREERTOS_PORT},IAR_RISC_V>:
942 ${CMAKE_CURRENT_LIST_DIR}/IAR/RISC-V
943 ${CMAKE_CURRENT_LIST_DIR}/IAR/RISC-V/chip_specific_extensions/RV32I_CLINT_no_extensions>
945 # Renesas RL78 port for IAR EWRL78
946 $<$<STREQUAL:${FREERTOS_PORT},IAR_RL78>:${CMAKE_CURRENT_LIST_DIR}/IAR/RL78>
948 # Renesas RX architecture ports for IAR EWRX
949 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX100>:${CMAKE_CURRENT_LIST_DIR}/IAR/RX100>
950 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX600>:${CMAKE_CURRENT_LIST_DIR}/IAR/RX600>
951 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX700_V3_DPFPU>:${CMAKE_CURRENT_LIST_DIR}/IAR/RX700v3_DPFPU>
952 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX_V2>:${CMAKE_CURRENT_LIST_DIR}/IAR/RXv2>
954 # Renesas (formerly NEC) V850ES port for IAR EWV850
955 $<$<STREQUAL:${FREERTOS_PORT},IAR_V850ES_FX3>:${CMAKE_CURRENT_LIST_DIR}/IAR/V850ES>
956 $<$<STREQUAL:${FREERTOS_PORT},IAR_V850ES_HX3>:${CMAKE_CURRENT_LIST_DIR}/IAR/V850ES>
958 # ARM Cortex-M4F port for the MikroElektronika MikroC compiler
959 $<$<STREQUAL:${FREERTOS_PORT},MIKROC_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/MikroC/ARM_CM4F>
961 # Microchip PIC18 8-bit MCU port for MPLAB XC8
962 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC18F>:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC18F>
964 # Microchip PIC24 16-bit MCU port for MPLAB XC16
965 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC24>:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC24_dsPIC>
967 # Microchip MIPS 32-Bit MCU ports for MPLAB XC32
968 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MEC14XX>:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC32MEC14xx>
969 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MX>:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC32MX>
970 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MZ>:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC32MZ>
972 # Windows Simulator for Microsoft Visual C Compiler and MinGW GCC
973 $<$<STREQUAL:${FREERTOS_PORT},MSVC_MINGW>:${CMAKE_CURRENT_LIST_DIR}/MSVC-MingW>
975 # 16 bit DOS ports for Open Watcom
976 $<$<STREQUAL:${FREERTOS_PORT},OWATCOM_16BIT_DOS_FLSH186>:
977 ${CMAKE_CURRENT_LIST_DIR}/oWatcom/16BitDOS/common
978 ${CMAKE_CURRENT_LIST_DIR}/oWatcom/16BitDOS/Flsh186>
979 $<$<STREQUAL:${FREERTOS_PORT},OWATCOM_16BIT_DOS_PC>:
980 ${CMAKE_CURRENT_LIST_DIR}/oWatcom/16BitDOS/common
981 ${CMAKE_CURRENT_LIST_DIR}/oWatcom/16BitDOS/PC>
983 $<$<STREQUAL:${FREERTOS_PORT},PARADIGM_TERN_EE_LARGE>:${CMAKE_CURRENT_LIST_DIR}/Paradigm/Tern_EE/large_untested>
984 $<$<STREQUAL:${FREERTOS_PORT},PARADIGM_TERN_EE_SMALL>:${CMAKE_CURRENT_LIST_DIR}/Paradigm/Tern_EE/small>
986 # Renesas RX mcu ports for Renesas CC-RX
987 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX100>:${CMAKE_CURRENT_LIST_DIR}/Renesas/RX100>
988 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX200>:${CMAKE_CURRENT_LIST_DIR}/Renesas/RX200>
989 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX600>:${CMAKE_CURRENT_LIST_DIR}/Renesas/RX600>
990 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX600_V2>:${CMAKE_CURRENT_LIST_DIR}/Renesas/RX600v2>
991 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX700_V3_DPFPU>:${CMAKE_CURRENT_LIST_DIR}/Renesas/RX700v3_DPFPU>
993 # Renesas (formerly Hitach) SHA2 SuperH port for the Renesas SH C Compiler
994 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_SH2A_FPU>:${CMAKE_CURRENT_LIST_DIR}/Renesas/SH2A_FPU>
996 # Texas Instruments MSP430 port for Rowley CrossWorks
997 $<$<STREQUAL:${FREERTOS_PORT},ROWLEY_MSP430F449>:${CMAKE_CURRENT_LIST_DIR}/Rowley/MSP430F449>
999 # ARMv7-A Cortex-A9 port for ARM RVDS / armcc
1000 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CA9>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CA9>
1002 # ARMv6-M port for ARM RVDS / armcc
1003 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM0>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM0>
1005 # ARMv7-M port for ARM RVDS / armcc
1006 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM3>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM3>
1008 # ARMv7E-M ports for ARM RVDS / armcc
1009 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM4_MPU>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM4_MPU>
1010 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM4F>
1011 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM7>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM7/r0p1>
1013 # ARMv4T / ARM7TDMI LPC21XX port for ARM RVDS / armcc
1014 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM7_LPC21XX>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM7_LPC21xx>
1016 # Cygnal c8051 port for SDCC (Small Device C Compiler)
1017 $<$<STREQUAL:${FREERTOS_PORT},SDCC_CYGNAL>:${CMAKE_CURRENT_LIST_DIR}/SDCC/Cygnal>
1019 # Infineon (formerly Fujitsu, Spansion, Cypress) MB9x ports for Softune C Compiler
1020 $<$<STREQUAL:${FREERTOS_PORT},SOFTUNE_MB91460>:${CMAKE_CURRENT_LIST_DIR}/Softune/MB91460>
1021 $<$<STREQUAL:${FREERTOS_PORT},SOFTUNE_MB96340>:${CMAKE_CURRENT_LIST_DIR}/Softune/MB96340>
1023 # ARMv7E-M (Cortex-M4F) port for TASKING VX-toolset for ARM
1024 $<$<STREQUAL:${FREERTOS_PORT},TASKING_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/Tasking/ARM_CM4F>
1026 # Port for C-SKY T-HEAD CK802
1027 $<$<STREQUAL:${FREERTOS_PORT},CDK_THEAD_CK802>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/CDK/T-HEAD_CK802>
1029 # Tensilica Xtensa port for XCC
1030 $<$<STREQUAL:${FREERTOS_PORT},XCC_XTENSA>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/XCC/Xtensa>
1032 # Microchip PIC18 port for WIZ-C
1033 $<$<STREQUAL:${FREERTOS_PORT},WIZC_PIC18>:${CMAKE_CURRENT_LIST_DIR}/WizC/PIC18>
1036 if(FREERTOS_PORT STREQUAL GCC_POSIX)
1037 find_package(Threads REQUIRED)
1040 target_link_libraries(freertos_kernel_port
1042 $<$<STREQUAL:${FREERTOS_PORT},GCC_RP2040>:pico_base_headers>
1043 $<$<STREQUAL:${FREERTOS_PORT},GCC_XTENSA_ESP32>:idf::esp32>
1045 freertos_kernel_include
1046 $<$<STREQUAL:${FREERTOS_PORT},GCC_POSIX>:Threads::Threads>
1047 "$<$<STREQUAL:${FREERTOS_PORT},GCC_RP2040>:hardware_clocks;hardware_exception>"
1048 $<$<STREQUAL:${FREERTOS_PORT},MSVC_MINGW>:winmm> # Windows library which implements timers