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
11 # 16-Bit DOS ports for BCC
12 $<$<STREQUAL:${FREERTOS_PORT},BCC_16BIT_DOS_FLSH186>:
13 BCC/16BitDOS/common/portcomn.c
14 BCC/16BitDOS/Flsh186/port.c>
16 $<$<STREQUAL:${FREERTOS_PORT},BCC_16BIT_DOS_PC>:
17 BCC/16BitDOS/common/portcomn.c
18 BCC/16BitDOS/PC/port.c>
20 # ARMv7-M port for Texas Instruments Code Composer Studio
21 $<$<STREQUAL:${FREERTOS_PORT},CCS_ARM_CM3>:
23 CCS/ARM_CM3/portasm.asm>
25 # ARMv7E-M port for Texas Instruments Code Composer Studio
26 $<$<STREQUAL:${FREERTOS_PORT},CCS_ARM_CM4F>:
28 CCS/ARM_CM4F/portasm.asm>
30 # ARMv7-R port for Texas Instruments Code Composer Studio
31 $<$<STREQUAL:${FREERTOS_PORT},CCS_ARM_CR4>:
32 CCS/ARM_Cortex-R4/port.c
33 CCS/ARM_Cortex-R4/portASM.asm>
35 # Texas Instruments MSP430 port for Texas Instruments Code Composer Studio
36 $<$<STREQUAL:${FREERTOS_PORT},CCS_MSP430X>:
38 CCS/MSP430X/portext.asm>
40 # NXP (formerly Motorola, Freescale) Cold Fire and 68HCS12 ports for Code Warrior
41 $<$<STREQUAL:${FREERTOS_PORT},CODEWARRIOR_COLDFIRE_V1>:
42 CodeWarrior/ColdFire_V1/port.c
43 CodeWarrior/ColdFire_V1/portasm.S>
45 $<$<STREQUAL:${FREERTOS_PORT},CODEWARRIOR_COLDFIRE_V2>:
46 CodeWarrior/ColdFire_V2/port.c
47 CodeWarrior/ColdFire_V2/portasm.S>
49 $<$<STREQUAL:${FREERTOS_PORT},CODEWARRIOR_HCS12>:
50 CodeWarrior/HCS12/port.c>
52 # ARMv7-A port for GCC
53 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CA9>:
55 GCC/ARM_CA9/portASM.S>
57 # ARMv8-A ports for GCC
58 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CA53_64_BIT>:
59 GCC/ARM_CA53_64_BIT/port.c
60 GCC/ARM_CA53_64_BIT/portASM.S>
62 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CA53_64_BIT_SRE>:
63 GCC/ARM_CA53_64_BIT_SRE/port.c
64 GCC/ARM_CA53_64_BIT_SRE/portASM.S>
66 # ARMv6-M port for GCC
67 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM0>:
70 # ARMv6-M / Cortex-M0 Raspberry PI RP2040 port for GCC
71 $<$<STREQUAL:${FREERTOS_PORT},GCC_RP2040>:
72 ThirdParty/GCC/RP2040/idle_task_static_memory.c
73 ThirdParty/GCC/RP2040/port.c>
75 # ARMv7-M ports for GCC
76 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM3>:
79 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM3_MPU>:
80 GCC/ARM_CM3_MPU/port.c>
82 # ARMv7E-M ports for GCC
83 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM4_MPU>:
84 GCC/ARM_CM4_MPU/port.c>
86 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM4F>:
89 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM7>:
90 GCC/ARM_CM7/r0p1/port.c>
92 # ARMv8-M ports for GCC
93 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM23_NONSECURE>:
94 GCC/ARM_CM23/non_secure/port.c
95 GCC/ARM_CM23/non_secure/portasm.c>
97 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM23_SECURE>:
98 GCC/ARM_CM23/secure/secure_context_port.c
99 GCC/ARM_CM23/secure/secure_context.c
100 GCC/ARM_CM23/secure/secure_heap.c
101 GCC/ARM_CM23/secure/secure_init.c>
103 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM23_NTZ_NONSECURE>:
104 GCC/ARM_CM23_NTZ/non_secure/port.c
105 GCC/ARM_CM23_NTZ/non_secure/portasm.c>
107 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_NONSECURE>:
108 GCC/ARM_CM33/non_secure/port.c
109 GCC/ARM_CM33/non_secure/portasm.c>
111 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_SECURE>:
112 GCC/ARM_CM33/secure/secure_context_port.c
113 GCC/ARM_CM33/secure/secure_context.c
114 GCC/ARM_CM33/secure/secure_heap.c
115 GCC/ARM_CM33/secure/secure_init.c>
117 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_NTZ_NONSECURE>:
118 GCC/ARM_CM33_NTZ/non_secure/port.c
119 GCC/ARM_CM33_NTZ/non_secure/portasm.c>
121 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_TFM>:
122 GCC/ARM_CM33_NTZ/non_secure/port.c
123 GCC/ARM_CM33_NTZ/non_secure/portasm.c
124 ThirdParty/GCC/ARM_TFM/os_wrapper_freertos.c>
126 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM35P_NONSECURE>:
127 GCC/ARM_CM35P/non_secure/port.c
128 GCC/ARM_CM35P/non_secure/portasm.c>
130 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM35P_SECURE>:
131 GCC/ARM_CM35P/secure/secure_context_port.c
132 GCC/ARM_CM35P/secure/secure_context.c
133 GCC/ARM_CM35P/secure/secure_heap.c
134 GCC/ARM_CM35P/secure/secure_init.c>
136 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM35P_NTZ_NONSECURE>:
137 GCC/ARM_CM35P_NTZ/non_secure/port.c
138 GCC/ARM_CM35P_NTZ/non_secure/portasm.c>
140 # ARMv8.1-M ports for GCC
141 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_NONSECURE>:
142 GCC/ARM_CM55/non_secure/port.c
143 GCC/ARM_CM55/non_secure/portasm.c>
145 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_SECURE>:
146 GCC/ARM_CM55/secure/secure_context_port.c
147 GCC/ARM_CM55/secure/secure_context.c
148 GCC/ARM_CM55/secure/secure_heap.c
149 GCC/ARM_CM55/secure/secure_init.c>
151 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_NTZ_NONSECURE>:
152 GCC/ARM_CM55_NTZ/non_secure/port.c
153 GCC/ARM_CM55_NTZ/non_secure/portasm.c>
155 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_TFM>:
156 GCC/ARM_CM55_NTZ/non_secure/port.c
157 GCC/ARM_CM55_NTZ/non_secure/portasm.c
158 ThirdParty/GCC/ARM_TFM/os_wrapper_freertos.c>
160 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_NONSECURE>:
161 GCC/ARM_CM85/non_secure/port.c
162 GCC/ARM_CM85/non_secure/portasm.c>
164 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_SECURE>:
165 GCC/ARM_CM85/secure/secure_context_port.c
166 GCC/ARM_CM85/secure/secure_context.c
167 GCC/ARM_CM85/secure/secure_heap.c
168 GCC/ARM_CM85/secure/secure_init.c>
170 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_NTZ_NONSECURE>:
171 GCC/ARM_CM85_NTZ/non_secure/port.c
172 GCC/ARM_CM85_NTZ/non_secure/portasm.c>
174 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_TFM>:
175 GCC/ARM_CM85_NTZ/non_secure/port.c
176 GCC/ARM_CM85_NTZ/non_secure/portasm.c
177 ThirdParty/GCC/ARM_TFM/os_wrapper_freertos.c>
179 # ARMv7-R ports for GCC
180 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CR5>:
182 GCC/ARM_CR5/portASM.S>
184 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CRX_NOGIC>:
185 GCC/ARM_CRx_No_GIC/port.c
186 GCC/ARM_CRx_No_GIC/portASM.S>
188 # ARMv4T ARM7TDMI ports for GCC
189 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_AT91FR40008>:
190 GCC/ARM7_AT91FR40008/port.c
191 GCC/ARM7_AT91FR40008/portISR.c>
193 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_AT91SAM7S>:
194 GCC/ARM7_AT91SAM7S/lib_AT91SAM7X256.c
195 GCC/ARM7_AT91SAM7S/port.c
196 GCC/ARM7_AT91SAM7S/portISR.c>
198 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_LPC2000>:
199 GCC/ARM7_LPC2000/port.c
200 GCC/ARM7_LPC2000/portISR.c>
202 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_LPC23XX>:
203 GCC/ARM7_LPC23xx/port.c
204 GCC/ARM7_LPC23xx/portISR.c>
206 $<$<STREQUAL:${FREERTOS_PORT},GCC_STR75X>:
208 GCC/STR75x/portISR.c>
210 # Microchip (formerly Ateml) AVR8 ports for GCC
211 $<$<STREQUAL:${FREERTOS_PORT},GCC_ATMEGA323>:
212 GCC/ATMega323/port.c>
214 $<$<STREQUAL:${FREERTOS_PORT},GCC_ATMEGA>:
215 ThirdParty/GCC/ATmega/port.c>
217 $<$<STREQUAL:${FREERTOS_PORT},GCC_AVRDX>:
218 ThirdParty/Partner-Supported-Ports/GCC/AVR_AVRDx/port.c>
220 $<$<STREQUAL:${FREERTOS_PORT},GCC_AVR_MEGA0>:
221 ThirdParty/Partner-Supported-Ports/GCC/AVR_Mega0/port.c>
223 # Microchip (formerly Ateml) AVR32 port for GCC
224 $<$<STREQUAL:${FREERTOS_PORT},GCC_AVR32_UC3>:
225 GCC/AVR32_UC3/exception.S
226 GCC/AVR32_UC3/port.c>
228 # NXP (formerly Motorola, Freescale) Cold Fire and 68HCS12 ports for GCC
229 $<$<STREQUAL:${FREERTOS_PORT},GCC_COLDFIRE_V2>:
230 GCC/ColdFire_V2/port.c
231 GCC/ColdFire_V2/portasm.S>
233 $<$<STREQUAL:${FREERTOS_PORT},GCC_HCS12>:
236 # Cortus APS3 soft core port for GCC
237 $<$<STREQUAL:${FREERTOS_PORT},GCC_CORTUS_APS3>:
238 GCC/CORTUS_APS3/port.c>
240 # Renesas (formerly Hitach) H8S port for GCC
241 $<$<STREQUAL:${FREERTOS_PORT},GCC_H8S2329>:
244 # x86 / IA32 flat memory model port for GCC
245 $<$<STREQUAL:${FREERTOS_PORT},GCC_IA32_FLAT>:
247 GCC/IA32_flat/portASM.S>
249 # Xilinx MicroBlaze soft core ports for GCC
250 $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE>:
251 GCC/MicroBlaze/port.c
252 GCC/MicroBlaze/portasm.s>
254 $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE_V8>:
255 GCC/MicroBlazeV8/port.c
256 GCC/MicroBlazeV8/port_exceptions.c
257 GCC/MicroBlazeV8/portasm.S>
259 $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE_V9>:
260 GCC/MicroBlazeV9/port.c
261 GCC/MicroBlazeV9/port_exceptions.c
262 GCC/MicroBlazeV9/portasm.S>
264 # Xilinx PCC4XX soft core ports for GCC
265 $<$<STREQUAL:${FREERTOS_PORT},GCC_PPC405_XILINX>:
266 GCC/PPC405_Xilinx/port.c
267 GCC/PPC405_Xilinx/portasm.S>
269 $<$<STREQUAL:${FREERTOS_PORT},GCC_PPC440_XILINX>:
270 GCC/PPC440_Xilinx/port.c
271 GCC/PPC440_Xilinx/portasm.S>
273 # Texas Instruments MSP430 port for GCC
274 $<$<STREQUAL:${FREERTOS_PORT},GCC_MSP430F449>:
275 GCC/MSP430F449/port.c>
277 # Intel (formerly Altera) NIOS II soft core port for GCC
278 $<$<STREQUAL:${FREERTOS_PORT},GCC_NIOSII>:
280 GCC/NiosII/port_asm.S>
282 # RISC-V architecture ports for GCC
283 $<$<STREQUAL:${FREERTOS_PORT},GCC_RISC_V>:
285 GCC/RISC-V/portASM.S>
287 $<$<STREQUAL:${FREERTOS_PORT},GCC_RISC_V_PULPINO_VEGA_RV32M1RM>:
289 GCC/RISC-V/portASM.S>
291 # Renesas RL78 port for GCC
292 $<$<STREQUAL:${FREERTOS_PORT},GCC_RL78>:
296 # Renesas RX architecture ports for GCC
297 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX100>:
300 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX200>:
303 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX600>:
306 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX600_V2>:
309 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX700_V3_DPFPU>:
310 GCC/RX700v3_DPFPU/port.c>
312 # Infineon TriCore 1782 port for GCC
313 $<$<STREQUAL:${FREERTOS_PORT},GCC_TRICORE_1782>:
314 GCC/TriCore_1782/port.c
315 GCC/TriCore_1782/porttrap.c>
317 # Synopsys ARC architecture ports for GCC
318 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARC_EM_HS>:
319 ThirdParty/GCC/ARC_EM_HS/arc_freertos_exceptions.c
320 ThirdParty/GCC/ARC_EM_HS/arc_support.s
321 ThirdParty/GCC/ARC_EM_HS/freertos_tls.c
322 ThirdParty/GCC/ARC_EM_HS/port.c>
324 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARC_V1>:
325 ThirdParty/GCC/ARC_v1/arc_freertos_exceptions.c
326 ThirdParty/GCC/ARC_v1/arc_support.s
327 ThirdParty/GCC/ARC_v1/port.c>
329 # Posix Simulator port for GCC
330 $<$<STREQUAL:${FREERTOS_PORT},GCC_POSIX>:
331 ThirdParty/GCC/Posix/port.c
332 ThirdParty/GCC/Posix/utils/wait_for_event.c>
334 # Xtensa LX / Espressif ESP32 port for GCC
335 $<$<STREQUAL:${FREERTOS_PORT},GCC_XTENSA_ESP32>:
336 ThirdParty/GCC/Xtensa_ESP32/FreeRTOS-openocd.c
337 ThirdParty/GCC/Xtensa_ESP32/port.c
338 ThirdParty/GCC/Xtensa_ESP32/portasm.S
339 ThirdParty/GCC/Xtensa_ESP32/xtensa_context.S
340 ThirdParty/GCC/Xtensa_ESP32/xtensa_init.c
341 ThirdParty/GCC/Xtensa_ESP32/xtensa_intr_asm.S
342 ThirdParty/GCC/Xtensa_ESP32/xtensa_intr.c
343 ThirdParty/GCC/Xtensa_ESP32/xtensa_loadstore_handler.S
344 ThirdParty/GCC/Xtensa_ESP32/xtensa_overlay_os_hook.c
345 ThirdParty/GCC/Xtensa_ESP32/xtensa_vector_defaults.S
346 ThirdParty/GCC/Xtensa_ESP32/xtensa_vectors.S>
348 # Renesas (formerly NEC) 78K port for IAR EW78K
349 $<$<STREQUAL:${FREERTOS_PORT},IAR_78K0K>:
351 IAR/78K0R/portasm.s26>
353 # ARMv7-A ports for IAR EWARM
354 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CA5_NOGIC>:
355 IAR/ARM_CA5_No_GIC/port.c
356 IAR/ARM_CA5_No_GIC/portASM.s>
358 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CA9>:
360 IAR/ARM_CA9/portASM.s>
362 # ARMv6-M port for IAR EWARM
363 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM0>:
365 IAR/ARM_CM0/portasm.s>
367 # ARMv7-M port for IAR EWARM
368 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM3>:
370 IAR/ARM_CM3/portasm.s>
372 # ARMv7E-M ports for IAR EWARM
373 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM4F>:
375 IAR/ARM_CM4F/portasm.s>
377 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM4F_MPU>:
378 IAR/ARM_CM4F_MPU/port.c
379 IAR/ARM_CM4F_MPU/portasm.s>
381 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM7>:
382 IAR/ARM_CM7/r0p1/port.c
383 IAR/ARM_CM7/r0p1/portasm.s>
385 # ARMv8-M Ports for IAR EWARM
386 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM23_NONSECURE>:
387 IAR/ARM_CM23/non_secure/port.c
388 IAR/ARM_CM23/non_secure/portasm.s>
390 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM23_SECURE>:
391 IAR/ARM_CM23/secure/secure_context_port_asm.s
392 IAR/ARM_CM23/secure/secure_context.c
393 IAR/ARM_CM23/secure/secure_heap.c
394 IAR/ARM_CM23/secure/secure_init.c>
396 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM23_NTZ_NONSECURE>:
397 IAR/ARM_CM23_NTZ/non_secure/port.c
398 IAR/ARM_CM23_NTZ/non_secure/portasm.s>
400 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_NONSECURE>:
401 IAR/ARM_CM33/non_secure/port.c
402 IAR/ARM_CM33/non_secure/portasm.s>
404 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_SECURE>:
405 IAR/ARM_CM33/secure/secure_context_port_asm.s
406 IAR/ARM_CM33/secure/secure_context.c
407 IAR/ARM_CM33/secure/secure_heap.c
408 IAR/ARM_CM33/secure/secure_init.c>
410 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_NTZ_NONSECURE>:
411 IAR/ARM_CM33_NTZ/non_secure/port.c
412 IAR/ARM_CM33_NTZ/non_secure/portasm.s>
414 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM35P_NONSECURE>:
415 IAR/ARM_CM35P/non_secure/port.c
416 IAR/ARM_CM35P/non_secure/portasm.s>
418 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM35P_SECURE>:
419 IAR/ARM_CM35P/secure/secure_context_port_asm.s
420 IAR/ARM_CM35P/secure/secure_context.c
421 IAR/ARM_CM35P/secure/secure_heap.c
422 IAR/ARM_CM35P/secure/secure_init.c>
424 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM35P_NTZ_NONSECURE>:
425 IAR/ARM_CM35P_NTZ/non_secure/port.c
426 IAR/ARM_CM35P_NTZ/non_secure/portasm.s>
428 # ARMv8.1-M ports for IAR EWARM
429 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_NONSECURE>:
430 IAR/ARM_CM55/non_secure/port.c
431 IAR/ARM_CM55/non_secure/portasm.s>
433 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_SECURE>:
434 IAR/ARM_CM55/secure/secure_context_port_asm.s
435 IAR/ARM_CM55/secure/secure_context.c
436 IAR/ARM_CM55/secure/secure_heap.c
437 IAR/ARM_CM55/secure/secure_init.c>
439 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_NTZ_NONSECURE>:
440 IAR/ARM_CM55_NTZ/non_secure/port.c
441 IAR/ARM_CM55_NTZ/non_secure/portasm.s>
443 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_NONSECURE>:
444 IAR/ARM_CM85/non_secure/port.c
445 IAR/ARM_CM85/non_secure/portasm.s>
447 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_SECURE>:
448 IAR/ARM_CM85/secure/secure_context_port_asm.s
449 IAR/ARM_CM85/secure/secure_context.c
450 IAR/ARM_CM85/secure/secure_heap.c
451 IAR/ARM_CM85/secure/secure_init.c>
453 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_NTZ_NONSECURE>:
454 IAR/ARM_CM85_NTZ/non_secure/port.c
455 IAR/ARM_CM85_NTZ/non_secure/portasm.s>
457 # ARMv7-R Ports for IAR EWARM
458 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CRX_NOGIC>:
459 IAR/ARM_CRx_No_GIC/port.c
460 IAR/ARM_CRx_No_GIC/portASM.s>
462 # Microchip (formerly Atmel) AVR8 ports for IAR EWAVR
463 $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEGA323>:
465 IAR/ATMega323/portmacro.s90>
467 $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR_AVRDX>:
469 IAR/AVR_AVRDx/portmacro.s90>
471 $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR_MEGA0>:
473 IAR/AVR_Mega0/portmacro.s90>
475 # Microchip (formerly Atmel) AVR32 port for IAR Embedded Workbench for AVR32
476 $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR32_UC3>:
477 IAR/AVR32_UC3/exception.s82
480 IAR/AVR32_UC3/write.c>
482 # Texas Instruments MSP430 ports for IAR Embedded Workbench for MSP430
483 $<$<STREQUAL:${FREERTOS_PORT},IAR_MSP430>:
485 IAR/MSP430/portext.s43>
487 $<$<STREQUAL:${FREERTOS_PORT},IAR_MSP430X>:
489 IAR/MSP430X/portext.s43>
491 # RISC-V architecture port for IAR Embedded Workbench for RISC-V
492 $<$<STREQUAL:${FREERTOS_PORT},IAR_RISC_V>:
494 IAR/RISC-V/portASM.s>
496 # Renesas RL78 port for IAR EWRL78
497 $<$<STREQUAL:${FREERTOS_PORT},IAR_RL78>:
499 IAR/RL78/portasm.s87>
501 # Renesas RX architecture ports for IAR EWRX
502 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX100>:
504 IAR/RX100/port_asm.s>
506 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX600>:
508 IAR/RX600/port_asm.s>
510 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX700_V3_DPFPU>:
511 IAR/RX700v3_DPFPU/port.c>
513 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX_V2>:
517 # Renesas (formerly NEC) V850ES port for IAR EWV850
518 $<$<STREQUAL:${FREERTOS_PORT},IAR_V850ES_FX3>:
520 IAR/V850ES/portasm_Fx3.s85>
522 $<$<STREQUAL:${FREERTOS_PORT},IAR_V850ES_HX3>:
524 IAR/V850ES/portasm_Hx2.s85>
526 # ARMv4T ARM7TDMI ports for IAR Embedded Workbench for ARM
527 $<$<STREQUAL:${FREERTOS_PORT},IAR_STR71X>:
529 IAR/STR71x/portasm.s79>
531 $<$<STREQUAL:${FREERTOS_PORT},IAR_STR75X>:
533 IAR/STR75x/portasm.s79>
535 $<$<STREQUAL:${FREERTOS_PORT},IAR_LPC2000>:
537 IAR/LPC2000/portasm.s79>
539 $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEL_SAM7S64>:
540 IAR/AtmelSAM7S64/port.c
541 IAR/AtmelSAM7S64/portasm.s79>
543 # ARMv5TE ARM926 ports for IAR Embedded Workbench for ARM
544 $<$<STREQUAL:${FREERTOS_PORT},IAR_STR91X>:
546 IAR/STR91x/portasm.s79>
548 $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEL_SAM9XE>:
549 IAR/AtmelSAM9XE/port.c
550 IAR/AtmelSAM9XE/portasm.s79>
552 # ARM Cortex-M4F port for the MikroElektronika MikroC compiler
553 $<$<STREQUAL:${FREERTOS_PORT},MIKROC_ARM_CM4F>:
554 MikroC/ARM_CM4F/port.c>
556 # Microchip PIC18 8-bit MCU port for MPLAB XC8
557 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC18F>:
560 # Microchip PIC24 16-bit MCU port for MPLAB XC16
561 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC24>:
562 MPLAB/PIC24_dsPIC/port.c
563 MPLAB/PIC24_dsPIC/portasm_PIC24.S> # TODO: What to do with portasm_dsPIC.S ?
565 # Microchip MIPS 32-Bit MCU ports for MPLAB XC32
566 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MEC14XX>:
567 MPLAB/PIC32MEC14xx/port.c
568 MPLAB/PIC32MEC14xx/port_asm.S>
570 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MX>:
572 MPLAB/PIC32MX/port_asm.S>
574 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MZ>:
576 MPLAB/PIC32MZ/port_asm.S>
578 # Windows Simulator for Microsoft Visual C Compiler and MinGW GCC
579 $<$<STREQUAL:${FREERTOS_PORT},MSVC_MINGW>:
582 # 16 bit DOS ports for Open Watcom
583 $<$<STREQUAL:${FREERTOS_PORT},OWATCOM_16BIT_DOS_FLSH186>:
584 oWatcom/16BitDOS/common/portcomn.c
585 oWatcom/16BitDOS/Flsh186/port.c>
587 $<$<STREQUAL:${FREERTOS_PORT},OWATCOM_16BIT_DOS_PC>:
588 oWatcom/16BitDOS/common/portcomn.c
589 oWatcom/16BitDOS/PC/port.c>
591 $<$<STREQUAL:${FREERTOS_PORT},PARADIGM_TERN_EE_LARGE>:
592 Paradigm/Tern_EE/large_untested/port.c>
594 $<$<STREQUAL:${FREERTOS_PORT},PARADIGM_TERN_EE_SMALL>:
595 Paradigm/Tern_EE/small/port.c>
597 # Renesas RX mcu ports for Renesas CC-RX
598 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX100>:
600 Renesas/RX100/port_asm.src>
602 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX200>:
604 Renesas/RX200/port_asm.src>
606 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX600>:
608 Renesas/RX600/port_asm.src>
610 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX600_V2>:
611 Renesas/RX600v2/port.c
612 Renesas/RX600v2/port_asm.src>
614 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX700_V3_DPFPU>:
615 Renesas/RX700v3_DPFPU/port.c
616 Renesas/RX700v3_DPFPU/port_asm.src>
618 # Renesas (formerly Hitach) SHA2 SuperH port for the Renesas SH C Compiler
619 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_SH2A_FPU>:
620 Renesas/SH2A_FPU/port.c
621 Renesas/SH2A_FPU/portasm.src>
623 # Texas Instruments MSP430 port for Rowley CrossWorks
624 $<$<STREQUAL:${FREERTOS_PORT},ROWLEY_MSP430F449>:
625 Rowley/MSP430F449/port.c
626 Rowley/MSP430F449/portext.asm>
628 # ARMv7-A Cortex-A9 port for ARM RVDS / armcc
629 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CA9>:
631 RVDS/ARM_CA9/portASM.s>
633 # ARMv6-M port for ARM RVDS / armcc
634 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM0>:
637 # ARMv7-M port for ARM RVDS / armcc
638 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM3>:
641 # ARMv7E-M ports for ARM RVDS / armcc
642 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM4_MPU>:
643 RVDS/ARM_CM4_MPU/port.c>
645 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM4F>:
646 RVDS/ARM_CM4F/port.c>
648 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM7>:
649 RVDS/ARM_CM7/r0p1/port.c>
651 # ARMv4T / ARM7TDMI LPC21XX port for ARM RVDS / armcc
652 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM7_LPC21XX>:
653 RVDS/ARM7_LPC21xx/port.c
654 RVDS/ARM7_LPC21xx/portASM.s>
656 # Cygnal c8051 port for SDCC (Small Device C Compiler)
657 $<$<STREQUAL:${FREERTOS_PORT},SDCC_CYGNAL>:
660 # Infineon (formerly Fujitsu, Spansion, Cypress) MB9x ports for Softune C Compiler
661 $<$<STREQUAL:${FREERTOS_PORT},SOFTUNE_MB91460>:
662 Softune/MB91460/__STD_LIB_sbrk.c
663 Softune/MB91460/port.c>
665 $<$<STREQUAL:${FREERTOS_PORT},SOFTUNE_MB96340>:
666 Softune/MB96340/__STD_LIB_sbrk.c
667 Softune/MB96340/port.c>
669 # ARMv7E-M (Cortex-M4F) port for TASKING VX-toolset for ARM
670 $<$<STREQUAL:${FREERTOS_PORT},TASKING_ARM_CM4F>:
671 Tasking/ARM_CM4F/port.c
672 Tasking/ARM_CM4F/port_asm.asm>
674 # Port for C-SKY T-HEAD CK802
675 $<$<STREQUAL:${FREERTOS_PORT},CDK_THEAD_CK802>:
676 ThirdParty/CDK/T-HEAD_CK802/port.c
677 ThirdParty/CDK/T-HEAD_CK802/portasm.S>
679 # Tensilica Xtensa port for XCC
680 $<$<STREQUAL:${FREERTOS_PORT},XCC_XTENSA>:
681 ThirdParty/XCC/Xtensa/port.c
682 ThirdParty/XCC/Xtensa/portasm.S
683 ThirdParty/XCC/Xtensa/portclib.c
684 ThirdParty/XCC/Xtensa/xtensa_context.S
685 ThirdParty/XCC/Xtensa/xtensa_init.c
686 ThirdParty/XCC/Xtensa/xtensa_intr_asm.S
687 ThirdParty/XCC/Xtensa/xtensa_intr.c
688 ThirdParty/XCC/Xtensa/xtensa_overlay_os_hook.c
689 ThirdParty/XCC/Xtensa/xtensa_vectors.S>
691 # Microchip PIC18 port for WIZ-C
692 $<$<STREQUAL:${FREERTOS_PORT},WIZC_PIC18>:
694 WizC/PIC18/Drivers/Tick/isrTick.c
695 WizC/PIC18/Drivers/Tick/Tick.c>
698 if( FREERTOS_PORT MATCHES "GCC_ARM_CM(3|4)_MPU" OR
699 FREERTOS_PORT STREQUAL "IAR_ARM_CM4F_MPU" OR
700 FREERTOS_PORT STREQUAL "RVDS_ARM_CM4_MPU" OR
701 FREERTOS_PORT MATCHES "GCC_ARM_CM(23|33|55|85)_NTZ_NONSECURE" OR
702 FREERTOS_PORT MATCHES "GCC_ARM_CM(23|33|55|85)_NONSECURE" OR
703 FREERTOS_PORT MATCHES "GCC_ARM_CM(33|55|85)_TFM" OR
704 FREERTOS_PORT MATCHES "IAR_ARM_CM(23|33|55|85)_NTZ_NONSECURE" OR
705 FREERTOS_PORT MATCHES "IAR_ARM_CM(23|33|55|85)_NONSECURE"
707 target_sources(freertos_kernel_port PRIVATE Common/mpu_wrappers.c)
710 target_include_directories(freertos_kernel_port PUBLIC
711 # 16-Bit DOS ports for BCC
712 $<$<STREQUAL:${FREERTOS_PORT},BCC_16BIT_DOS_FLSH186>:
713 ${CMAKE_CURRENT_LIST_DIR}/BCC/16BitDOS/common
714 ${CMAKE_CURRENT_LIST_DIR}/BCC/16BitDOS/Flsh186>
716 $<$<STREQUAL:${FREERTOS_PORT},BCC_16BIT_DOS_PC>:
717 ${CMAKE_CURRENT_LIST_DIR}/BCC/16BitDOS/common
718 ${CMAKE_CURRENT_LIST_DIR}/BCC/16BitDOS/PC>
720 # ARMv7-M port for Texas Instruments Code Composer Studio
721 $<$<STREQUAL:${FREERTOS_PORT},CCS_ARM_CM3>:${CMAKE_CURRENT_LIST_DIR}/CCS/ARM_CM3>
723 # ARMv7E-M port for Texas Instruments Code Composer Studio
724 $<$<STREQUAL:${FREERTOS_PORT},CCS_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/CCS/ARM_CM4F>
726 # ARMv7-R port for Texas Instruments Code Composer Studio
727 $<$<STREQUAL:${FREERTOS_PORT},CCS_ARM_CR4>:${CMAKE_CURRENT_LIST_DIR}/CCS/ARM_Cortex-R4>
729 # Texas Instruments MSP430 port for Texas Instruments Code Composer Studio
730 $<$<STREQUAL:${FREERTOS_PORT},CCS_MSP430X>:${CMAKE_CURRENT_LIST_DIR}/CCS/MSP430X>
732 # NXP (formerly Motorola, Freescale) Cold Fire and 68HCS12 ports for Code Warrior
733 $<$<STREQUAL:${FREERTOS_PORT},CODEWARRIOR_COLDFIRE_V1>:${CMAKE_CURRENT_LIST_DIR}/CodeWarrior/ColdFire_V1>
734 $<$<STREQUAL:${FREERTOS_PORT},CODEWARRIOR_COLDFIRE_V2>:${CMAKE_CURRENT_LIST_DIR}/CodeWarrior/ColdFire_V2>
735 $<$<STREQUAL:${FREERTOS_PORT},CODEWARRIOR_HCS12>:${CMAKE_CURRENT_LIST_DIR}/CodeWarrior/HCS12>
737 # ARMv7-A port for GCC
738 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CA9>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CA9>
740 # ARMv8-A ports for GCC
741 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CA53_64_BIT>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CA53_64_BIT>
742 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CA53_64_BIT_SRE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CA53_64_BIT_SRE>
744 # ARMv6-M port for GCC
745 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM0>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM0>
747 # ARMv6-M / Cortex-M0 Raspberry PI RP2040 port for GCC
748 $<$<STREQUAL:${FREERTOS_PORT},GCC_RP2040>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/RP2040/include>
750 # ARMv7-M ports for GCC
751 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM3>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM3>
752 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM3_MPU>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM3_MPU>
754 # ARMv7E-M ports for GCC
755 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM4_MPU>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM4_MPU>
756 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM4F>
757 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM7>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM7/r0p1>
759 # ARMv8-M ports for GCC
760 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM23_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM23/non_secure>
761 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM23_SECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM23/secure>
762 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM23_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM23_NTZ/non_secure>
764 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM33/non_secure>
765 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_SECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM33/secure>
766 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM33_NTZ/non_secure>
767 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_TFM>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM33_NTZ/non_secure>
769 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM35P_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM35P/non_secure>
770 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM35P_SECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM35P/secure>
771 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM35P_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM35P_NTZ/non_secure>
773 # ARMv8.1-M ports for GCC
774 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM55/non_secure>
775 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_SECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM55/secure>
776 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM55_NTZ/non_secure>
777 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_TFM>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM85_NTZ/non_secure>
779 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM85/non_secure>
780 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_SECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM85/secure>
781 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM85_NTZ/non_secure>
782 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_TFM>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM85_NTZ/non_secure>
784 # ARMv7-R ports for GCC
785 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CR5>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CR5>
786 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CRX_NOGIC>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CRx_No_GIC>
788 # ARMv4T ARM7TDMI ports for GCC
789 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_AT91FR40008>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM7_AT91FR40008>
790 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_AT91SAM7S>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM7_AT91SAM7S>
791 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_LPC2000>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM7_LPC2000>
792 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_LPC23XX>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM7_LPC23xx>
793 $<$<STREQUAL:${FREERTOS_PORT},GCC_STR75X>:${CMAKE_CURRENT_LIST_DIR}/GCC/STR75x>
795 # Microchip (formerly Ateml) AVR8 ports for GCC
796 $<$<STREQUAL:${FREERTOS_PORT},GCC_ATMEGA323>:${CMAKE_CURRENT_LIST_DIR}/GCC/ATMega323>
797 $<$<STREQUAL:${FREERTOS_PORT},GCC_ATMEGA>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/ATmega>
798 $<$<STREQUAL:${FREERTOS_PORT},GCC_AVRDX>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/Partner-Supported-Ports/GCC/AVR_AVRDx>
799 $<$<STREQUAL:${FREERTOS_PORT},GCC_AVR_MEGA0>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/Partner-Supported-Ports/GCC/AVR_Mega0>
801 # Microchip (formerly Ateml) AVR32 port for GCC
802 $<$<STREQUAL:${FREERTOS_PORT},GCC_AVR32_UC3>:${CMAKE_CURRENT_LIST_DIR}/GCC/AVR32_UC3>
804 # NXP (formerly Motorola, Freescale) Cold Fire and 68HCS12 ports for GCC
805 $<$<STREQUAL:${FREERTOS_PORT},GCC_COLDFIRE_V2>:${CMAKE_CURRENT_LIST_DIR}/GCC/ColdFire_V2>
806 $<$<STREQUAL:${FREERTOS_PORT},GCC_HCS12>:${CMAKE_CURRENT_LIST_DIR}/GCC/HCS12>
808 # Cortus APS3 soft core port for GCC
809 $<$<STREQUAL:${FREERTOS_PORT},GCC_CORTUS_APS3>:${CMAKE_CURRENT_LIST_DIR}/GCC/CORTUS_APS3>
811 # Renesas (formerly Hitach) H8S port for GCC
812 $<$<STREQUAL:${FREERTOS_PORT},GCC_H8S2329>:${CMAKE_CURRENT_LIST_DIR}/GCC/H8S2329>
814 # x86 / IA32 flat memory model port for GCC
815 $<$<STREQUAL:${FREERTOS_PORT},GCC_IA32_FLAT>:${CMAKE_CURRENT_LIST_DIR}/GCC/IA32_flat>
817 # Intel (formerly Altera) NIOS II soft core port for GCC
818 $<$<STREQUAL:${FREERTOS_PORT},GCC_NIOSII>:${CMAKE_CURRENT_LIST_DIR}/GCC/NiosII>
820 # Texas Instruments MSP430 port for GCC
821 $<$<STREQUAL:${FREERTOS_PORT},GCC_MSP430F449>:${CMAKE_CURRENT_LIST_DIR}/GCC/MSP430F449>
823 # Xilinx MicroBlaze soft core ports for GCC
824 $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE>:${CMAKE_CURRENT_LIST_DIR}/GCC/MicroBlaze>
825 $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE_V8>:${CMAKE_CURRENT_LIST_DIR}/GCC/MicroBlazeV8>
826 $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE_V9>:${CMAKE_CURRENT_LIST_DIR}/GCC/MicroBlazeV9>
828 # Xilinx PCC4XX soft core ports for GCC
829 $<$<STREQUAL:${FREERTOS_PORT},GCC_PPC405_XILINX>:${CMAKE_CURRENT_LIST_DIR}/GCC/PPC405_Xilinx>
830 $<$<STREQUAL:${FREERTOS_PORT},GCC_PPC440_XILINX>:${CMAKE_CURRENT_LIST_DIR}/GCC/PPC440_Xilinx>
832 # RISC-V architecture ports for GCC
833 $<$<STREQUAL:${FREERTOS_PORT},GCC_RISC_V>:
834 ${CMAKE_CURRENT_LIST_DIR}/GCC/RISC-V
835 ${CMAKE_CURRENT_LIST_DIR}/GCC/RISC-V/chip_specific_extensions/RISCV_MTIME_CLINT_no_extensions>
837 $<$<STREQUAL:${FREERTOS_PORT},GCC_RISC_V_PULPINO_VEGA_RV32M1RM>:
838 ${CMAKE_CURRENT_LIST_DIR}/GCC/RISC-V
839 ${CMAKE_CURRENT_LIST_DIR}/GCC/RISC-V/chip_specific_extensions/Pulpino_Vega_RV32M1RM>
841 # Renesas RL78 port for GCC
842 $<$<STREQUAL:${FREERTOS_PORT},GCC_RL78>:${CMAKE_CURRENT_LIST_DIR}/GCC/RL78>
844 # Renesas RX architecture ports for GCC
845 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX100>:${CMAKE_CURRENT_LIST_DIR}/GCC/RX100>
846 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX200>:${CMAKE_CURRENT_LIST_DIR}/GCC/RX200>
847 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX600>:${CMAKE_CURRENT_LIST_DIR}/GCC/RX600>
848 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX600_V2>:${CMAKE_CURRENT_LIST_DIR}/GCC/RX600v2>
849 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX700_V3_DPFPU>:${CMAKE_CURRENT_LIST_DIR}/GCC/RX700v3_DPFPU>
851 # Infineon TriCore 1782 port for GCC
852 $<$<STREQUAL:${FREERTOS_PORT},GCC_TRICORE_1782>:${CMAKE_CURRENT_LIST_DIR}/GCC/TriCore_1782>
854 # Synopsys ARC architecture ports for GCC
855 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARC_EM_HS>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/ARC_EM_HS>
856 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARC_V1>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/ARC_v1>
858 # Posix Simulator port for GCC
859 $<$<STREQUAL:${FREERTOS_PORT},GCC_POSIX>:
860 ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/Posix
861 ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/Posix/utils>
863 # Xtensa LX / Espressif ESP32 port for GCC
864 $<$<STREQUAL:${FREERTOS_PORT},GCC_XTENSA_ESP32>:
865 ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/Xtensa_ESP32
866 ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/Xtensa_ESP32/include>
868 # Renesas (formerly NEC) 78K port for IAR EW78K
869 $<$<STREQUAL:${FREERTOS_PORT},IAR_78K0K>:${CMAKE_CURRENT_LIST_DIR}/IAR/78K0R>
871 # ARMv7-A ports for IAR EWARM
872 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CA5_NOGIC>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CA5_No_GIC>
873 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CA9>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CA9>
875 # ARMv6-M port for IAR EWARM
876 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM0>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM0>
878 # ARMv7-M port for IAR EWARM
879 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM3>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM3>
881 # ARMv7E-M ports for IAR EWARM
882 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM4F>
883 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM4F_MPU>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM4F_MPU>
884 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM7>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM7/r0p1>
886 # ARMv8-M Ports for IAR EWARM
887 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM23_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM23/non_secure>
888 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM23_SECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM23/secure>
889 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM23_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM23_NTZ/non_secure>
891 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM33/non_secure>
892 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_SECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM33/secure>
893 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM33_NTZ/non_secure>
895 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM35P_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM35P/non_secure>
896 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM35P_SECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM35P/secure>
897 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM35P_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM35P_NTZ/non_secure>
899 # ARMv8.1-M ports for IAR EWARM
900 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM55/non_secure>
901 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_SECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM55/secure>
902 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM55_NTZ/non_secure>
904 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM85/non_secure>
905 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_SECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM85/secure>
906 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM85_NTZ/non_secure>
908 # ARMv7-R Ports for IAR EWARM
909 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CRX_NOGIC>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CRx_No_GIC>
911 # ARMv4T ARM7TDMI ports for IAR Embedded Workbench for ARM
912 $<$<STREQUAL:${FREERTOS_PORT},IAR_STR71X>:${CMAKE_CURRENT_LIST_DIR}/IAR/STR71x>
913 $<$<STREQUAL:${FREERTOS_PORT},IAR_STR75X>:${CMAKE_CURRENT_LIST_DIR}/IAR/STR75x>
914 $<$<STREQUAL:${FREERTOS_PORT},IAR_LPC2000>:${CMAKE_CURRENT_LIST_DIR}/IAR/LPC2000>
915 $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEL_SAM7S64>:${CMAKE_CURRENT_LIST_DIR}/IAR/AtmelSAM7S64>
917 # ARMv5TE ARM926 ports for IAR Embedded Workbench for ARM
918 $<$<STREQUAL:${FREERTOS_PORT},IAR_STR91X>:${CMAKE_CURRENT_LIST_DIR}/IAR/STR91x>
919 $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEL_SAM9XE>:${CMAKE_CURRENT_LIST_DIR}/IAR/AtmelSAM9XE>
921 # Microchip (formerly Atmel) AVR8 ports for IAR EWAVR
922 $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEGA323>:${CMAKE_CURRENT_LIST_DIR}/IAR/ATMega323>
923 $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR_AVRDX>:${CMAKE_CURRENT_LIST_DIR}/IAR/AVR_AVRDx>
924 $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR_MEGA0>:${CMAKE_CURRENT_LIST_DIR}/IAR/AVR_Mega0>
926 # Microchip (formerly Atmel) AVR32 port for IAR Embedded Workbench for AVR32
927 $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR32_UC3>:${CMAKE_CURRENT_LIST_DIR}/IAR/AVR32_UC3>
929 # Texas Instruments MSP430 ports for IAR Embedded Workbench for MSP430
930 $<$<STREQUAL:${FREERTOS_PORT},IAR_MSP430>:${CMAKE_CURRENT_LIST_DIR}/IAR/MSP430>
931 $<$<STREQUAL:${FREERTOS_PORT},IAR_MSP430X>:${CMAKE_CURRENT_LIST_DIR}/IAR/MSP430X>
933 # RISC-V architecture port for IAR Embedded Workbench for RISC-V
934 $<$<STREQUAL:${FREERTOS_PORT},IAR_RISC_V>:
935 ${CMAKE_CURRENT_LIST_DIR}/IAR/RISC-V
936 ${CMAKE_CURRENT_LIST_DIR}/IAR/RISC-V/chip_specific_extensions/RV32I_CLINT_no_extensions>
938 # Renesas RL78 port for IAR EWRL78
939 $<$<STREQUAL:${FREERTOS_PORT},IAR_RL78>:${CMAKE_CURRENT_LIST_DIR}/IAR/RL78>
941 # Renesas RX architecture ports for IAR EWRX
942 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX100>:${CMAKE_CURRENT_LIST_DIR}/IAR/RX100>
943 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX600>:${CMAKE_CURRENT_LIST_DIR}/IAR/RX600>
944 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX700_V3_DPFPU>:${CMAKE_CURRENT_LIST_DIR}/IAR/RX700v3_DPFPU>
945 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX_V2>:${CMAKE_CURRENT_LIST_DIR}/IAR/RXv2>
947 # Renesas (formerly NEC) V850ES port for IAR EWV850
948 $<$<STREQUAL:${FREERTOS_PORT},IAR_V850ES_FX3>:${CMAKE_CURRENT_LIST_DIR}/IAR/V850ES>
949 $<$<STREQUAL:${FREERTOS_PORT},IAR_V850ES_HX3>:${CMAKE_CURRENT_LIST_DIR}/IAR/V850ES>
951 # ARM Cortex-M4F port for the MikroElektronika MikroC compiler
952 $<$<STREQUAL:${FREERTOS_PORT},MIKROC_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/MikroC/ARM_CM4F>
954 # Microchip PIC18 8-bit MCU port for MPLAB XC8
955 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC18F>:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC18F>
957 # Microchip PIC24 16-bit MCU port for MPLAB XC16
958 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC24>:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC24_dsPIC>
960 # Microchip MIPS 32-Bit MCU ports for MPLAB XC32
961 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MEC14XX>:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC32MEC14xx>
962 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MX>:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC32MX>
963 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MZ>:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC32MZ>
965 # Windows Simulator for Microsoft Visual C Compiler and MinGW GCC
966 $<$<STREQUAL:${FREERTOS_PORT},MSVC_MINGW>:${CMAKE_CURRENT_LIST_DIR}/MSVC-MingW>
968 # 16 bit DOS ports for Open Watcom
969 $<$<STREQUAL:${FREERTOS_PORT},OWATCOM_16BIT_DOS_FLSH186>:
970 ${CMAKE_CURRENT_LIST_DIR}/oWatcom/16BitDOS/common
971 ${CMAKE_CURRENT_LIST_DIR}/oWatcom/16BitDOS/Flsh186>
972 $<$<STREQUAL:${FREERTOS_PORT},OWATCOM_16BIT_DOS_PC>:
973 ${CMAKE_CURRENT_LIST_DIR}/oWatcom/16BitDOS/common
974 ${CMAKE_CURRENT_LIST_DIR}/oWatcom/16BitDOS/PC>
976 $<$<STREQUAL:${FREERTOS_PORT},PARADIGM_TERN_EE_LARGE>:${CMAKE_CURRENT_LIST_DIR}/Paradigm/Tern_EE/large_untested>
977 $<$<STREQUAL:${FREERTOS_PORT},PARADIGM_TERN_EE_SMALL>:${CMAKE_CURRENT_LIST_DIR}/Paradigm/Tern_EE/small>
979 # Renesas RX mcu ports for Renesas CC-RX
980 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX100>:${CMAKE_CURRENT_LIST_DIR}/Renesas/RX100>
981 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX200>:${CMAKE_CURRENT_LIST_DIR}/Renesas/RX200>
982 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX600>:${CMAKE_CURRENT_LIST_DIR}/Renesas/RX600>
983 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX600_V2>:${CMAKE_CURRENT_LIST_DIR}/Renesas/RX600v2>
984 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX700_V3_DPFPU>:${CMAKE_CURRENT_LIST_DIR}/Renesas/RX700v3_DPFPU>
986 # Renesas (formerly Hitach) SHA2 SuperH port for the Renesas SH C Compiler
987 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_SH2A_FPU>:${CMAKE_CURRENT_LIST_DIR}/Renesas/SH2A_FPU>
989 # Texas Instruments MSP430 port for Rowley CrossWorks
990 $<$<STREQUAL:${FREERTOS_PORT},ROWLEY_MSP430F449>:${CMAKE_CURRENT_LIST_DIR}/Rowley/MSP430F449>
992 # ARMv7-A Cortex-A9 port for ARM RVDS / armcc
993 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CA9>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CA9>
995 # ARMv6-M port for ARM RVDS / armcc
996 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM0>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM0>
998 # ARMv7-M port for ARM RVDS / armcc
999 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM3>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM3>
1001 # ARMv7E-M ports for ARM RVDS / armcc
1002 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM4_MPU>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM4_MPU>
1003 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM4F>
1004 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM7>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM7/r0p1>
1006 # ARMv4T / ARM7TDMI LPC21XX port for ARM RVDS / armcc
1007 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM7_LPC21XX>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM7_LPC21xx>
1009 # Cygnal c8051 port for SDCC (Small Device C Compiler)
1010 $<$<STREQUAL:${FREERTOS_PORT},SDCC_CYGNAL>:${CMAKE_CURRENT_LIST_DIR}/SDCC/Cygnal>
1012 # Infineon (formerly Fujitsu, Spansion, Cypress) MB9x ports for Softune C Compiler
1013 $<$<STREQUAL:${FREERTOS_PORT},SOFTUNE_MB91460>:${CMAKE_CURRENT_LIST_DIR}/Softune/MB91460>
1014 $<$<STREQUAL:${FREERTOS_PORT},SOFTUNE_MB96340>:${CMAKE_CURRENT_LIST_DIR}/Softune/MB96340>
1016 # ARMv7E-M (Cortex-M4F) port for TASKING VX-toolset for ARM
1017 $<$<STREQUAL:${FREERTOS_PORT},TASKING_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/Tasking/ARM_CM4F>
1019 # Port for C-SKY T-HEAD CK802
1020 $<$<STREQUAL:${FREERTOS_PORT},CDK_THEAD_CK802>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/CDK/T-HEAD_CK802>
1022 # Tensilica Xtensa port for XCC
1023 $<$<STREQUAL:${FREERTOS_PORT},XCC_XTENSA>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/XCC/Xtensa>
1025 # Microchip PIC18 port for WIZ-C
1026 $<$<STREQUAL:${FREERTOS_PORT},WIZC_PIC18>:${CMAKE_CURRENT_LIST_DIR}/WizC/PIC18>
1029 if(FREERTOS_PORT STREQUAL GCC_POSIX)
1030 find_package(Threads REQUIRED)
1033 target_link_libraries(freertos_kernel_port
1035 $<$<STREQUAL:${FREERTOS_PORT},GCC_RP2040>:pico_base_headers>
1036 $<$<STREQUAL:${FREERTOS_PORT},GCC_XTENSA_ESP32>:idf::esp32>
1038 freertos_kernel_include
1039 $<$<STREQUAL:${FREERTOS_PORT},GCC_POSIX>:Threads::Threads>
1040 "$<$<STREQUAL:${FREERTOS_PORT},GCC_RP2040>:hardware_clocks;hardware_exception>"
1041 $<$<STREQUAL:${FREERTOS_PORT},MSVC_MINGW>:winmm> # Windows library which implements timers