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 # ARMv8.1-M ports for GCC
127 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_NONSECURE>:
128 GCC/ARM_CM55/non_secure/port.c
129 GCC/ARM_CM55/non_secure/portasm.c>
131 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_SECURE>:
132 GCC/ARM_CM55/secure/secure_context_port.c
133 GCC/ARM_CM55/secure/secure_context.c
134 GCC/ARM_CM55/secure/secure_heap.c
135 GCC/ARM_CM55/secure/secure_init.c>
137 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_NTZ_NONSECURE>:
138 GCC/ARM_CM55_NTZ/non_secure/port.c
139 GCC/ARM_CM55_NTZ/non_secure/portasm.c>
141 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_TFM>:
142 GCC/ARM_CM55_NTZ/non_secure/port.c
143 GCC/ARM_CM55_NTZ/non_secure/portasm.c
144 ThirdParty/GCC/ARM_TFM/os_wrapper_freertos.c>
146 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_NONSECURE>:
147 GCC/ARM_CM85/non_secure/port.c
148 GCC/ARM_CM85/non_secure/portasm.c>
150 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_SECURE>:
151 GCC/ARM_CM85/secure/secure_context_port.c
152 GCC/ARM_CM85/secure/secure_context.c
153 GCC/ARM_CM85/secure/secure_heap.c
154 GCC/ARM_CM85/secure/secure_init.c>
156 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_NTZ_NONSECURE>:
157 GCC/ARM_CM85_NTZ/non_secure/port.c
158 GCC/ARM_CM85_NTZ/non_secure/portasm.c>
160 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_TFM>:
161 GCC/ARM_CM85_NTZ/non_secure/port.c
162 GCC/ARM_CM85_NTZ/non_secure/portasm.c
163 ThirdParty/GCC/ARM_TFM/os_wrapper_freertos.c>
165 # ARMv7-R ports for GCC
166 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CR5>:
168 GCC/ARM_CR5/portASM.S>
170 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CRX_NOGIC>:
171 GCC/ARM_CRx_No_GIC/port.c
172 GCC/ARM_CRx_No_GIC/portASM.S>
174 # ARMv4T ARM7TDMI ports for GCC
175 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_AT91FR40008>:
176 GCC/ARM7_AT91FR40008/port.c
177 GCC/ARM7_AT91FR40008/portISR.c>
179 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_AT91SAM7S>:
180 GCC/ARM7_AT91SAM7S/lib_AT91SAM7X256.c
181 GCC/ARM7_AT91SAM7S/port.c
182 GCC/ARM7_AT91SAM7S/portISR.c>
184 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_LPC2000>:
185 GCC/ARM7_LPC2000/port.c
186 GCC/ARM7_LPC2000/portISR.c>
188 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_LPC23XX>:
189 GCC/ARM7_LPC23xx/port.c
190 GCC/ARM7_LPC23xx/portISR.c>
192 $<$<STREQUAL:${FREERTOS_PORT},GCC_STR75X>:
194 GCC/STR75x/portISR.c>
196 # Microchip (formerly Ateml) AVR8 ports for GCC
197 $<$<STREQUAL:${FREERTOS_PORT},GCC_ATMEGA323>:
198 GCC/ATMega323/port.c>
200 $<$<STREQUAL:${FREERTOS_PORT},GCC_ATMEGA>:
201 ThirdParty/GCC/ATmega/port.c>
203 $<$<STREQUAL:${FREERTOS_PORT},GCC_AVRDX>:
204 ThirdParty/Partner-Supported-Ports/GCC/AVR_AVRDx/port.c>
206 $<$<STREQUAL:${FREERTOS_PORT},GCC_AVR_MEGA0>:
207 ThirdParty/Partner-Supported-Ports/GCC/AVR_Mega0/port.c>
209 # Microchip (formerly Ateml) AVR32 port for GCC
210 $<$<STREQUAL:${FREERTOS_PORT},GCC_AVR32_UC3>:
211 GCC/AVR32_UC3/exception.S
212 GCC/AVR32_UC3/port.c>
214 # NXP (formerly Motorola, Freescale) Cold Fire and 68HCS12 ports for GCC
215 $<$<STREQUAL:${FREERTOS_PORT},GCC_COLDFIRE_V2>:
216 GCC/ColdFire_V2/port.c
217 GCC/ColdFire_V2/portasm.S>
219 $<$<STREQUAL:${FREERTOS_PORT},GCC_HCS12>:
222 # Cortus APS3 soft core port for GCC
223 $<$<STREQUAL:${FREERTOS_PORT},GCC_CORTUS_APS3>:
224 GCC/CORTUS_APS3/port.c>
226 # Renesas (formerly Hitach) H8S port for GCC
227 $<$<STREQUAL:${FREERTOS_PORT},GCC_H8S2329>:
230 # x86 / IA32 flat memory model port for GCC
231 $<$<STREQUAL:${FREERTOS_PORT},GCC_IA32_FLAT>:
233 GCC/IA32_flat/portASM.S>
235 # Xilinx MicroBlaze soft core ports for GCC
236 $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE>:
237 GCC/MicroBlaze/port.c
238 GCC/MicroBlaze/portasm.s>
240 $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE_V8>:
241 GCC/MicroBlazeV8/port.c
242 GCC/MicroBlazeV8/port_exceptions.c
243 GCC/MicroBlazeV8/portasm.S>
245 $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE_V9>:
246 GCC/MicroBlazeV9/port.c
247 GCC/MicroBlazeV9/port_exceptions.c
248 GCC/MicroBlazeV9/portasm.S>
250 # Xilinx PCC4XX soft core ports for GCC
251 $<$<STREQUAL:${FREERTOS_PORT},GCC_PPC405_XILINX>:
252 GCC/PPC405_Xilinx/port.c
253 GCC/PPC405_Xilinx/portasm.S>
255 $<$<STREQUAL:${FREERTOS_PORT},GCC_PPC440_XILINX>:
256 GCC/PPC440_Xilinx/port.c
257 GCC/PPC440_Xilinx/portasm.S>
259 # Texas Instruments MSP430 port for GCC
260 $<$<STREQUAL:${FREERTOS_PORT},GCC_MSP430F449>:
261 GCC/MSP430F449/port.c>
263 # Intel (formerly Altera) NIOS II soft core port for GCC
264 $<$<STREQUAL:${FREERTOS_PORT},GCC_NIOSII>:
266 GCC/NiosII/port_asm.S>
268 # RISC-V architecture ports for GCC
269 $<$<STREQUAL:${FREERTOS_PORT},GCC_RISC_V>:
271 GCC/RISC-V/portASM.S>
273 $<$<STREQUAL:${FREERTOS_PORT},GCC_RISC_V_PULPINO_VEGA_RV32M1RM>:
275 GCC/RISC-V/portASM.S>
277 # Renesas RL78 port for GCC
278 $<$<STREQUAL:${FREERTOS_PORT},GCC_RL78>:
282 # Renesas RX architecture ports for GCC
283 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX100>:
286 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX200>:
289 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX600>:
292 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX600_V2>:
295 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX700_V3_DPFPU>:
296 GCC/RX700v3_DPFPU/port.c>
298 # Infineon TriCore 1782 port for GCC
299 $<$<STREQUAL:${FREERTOS_PORT},GCC_TRICORE_1782>:
300 GCC/TriCore_1782/port.c
301 GCC/TriCore_1782/porttrap.c>
303 # Synopsys ARC architecture ports for GCC
304 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARC_EM_HS>:
305 ThirdParty/GCC/ARC_EM_HS/arc_freertos_exceptions.c
306 ThirdParty/GCC/ARC_EM_HS/arc_support.s
307 ThirdParty/GCC/ARC_EM_HS/freertos_tls.c
308 ThirdParty/GCC/ARC_EM_HS/port.c>
310 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARC_V1>:
311 ThirdParty/GCC/ARC_v1/arc_freertos_exceptions.c
312 ThirdParty/GCC/ARC_v1/arc_support.s
313 ThirdParty/GCC/ARC_v1/port.c>
315 # Posix Simulator port for GCC
316 $<$<STREQUAL:${FREERTOS_PORT},GCC_POSIX>:
317 ThirdParty/GCC/Posix/port.c
318 ThirdParty/GCC/Posix/utils/wait_for_event.c>
320 # Xtensa LX / Espressif ESP32 port for GCC
321 $<$<STREQUAL:${FREERTOS_PORT},GCC_XTENSA_ESP32>:
322 ThirdParty/GCC/Xtensa_ESP32/FreeRTOS-openocd.c
323 ThirdParty/GCC/Xtensa_ESP32/port.c
324 ThirdParty/GCC/Xtensa_ESP32/portasm.S
325 ThirdParty/GCC/Xtensa_ESP32/xtensa_context.S
326 ThirdParty/GCC/Xtensa_ESP32/xtensa_init.c
327 ThirdParty/GCC/Xtensa_ESP32/xtensa_intr_asm.S
328 ThirdParty/GCC/Xtensa_ESP32/xtensa_intr.c
329 ThirdParty/GCC/Xtensa_ESP32/xtensa_loadstore_handler.S
330 ThirdParty/GCC/Xtensa_ESP32/xtensa_overlay_os_hook.c
331 ThirdParty/GCC/Xtensa_ESP32/xtensa_vector_defaults.S
332 ThirdParty/GCC/Xtensa_ESP32/xtensa_vectors.S>
334 # Renesas (formerly NEC) 78K port for IAR EW78K
335 $<$<STREQUAL:${FREERTOS_PORT},IAR_78K0K>:
337 IAR/78K0R/portasm.s26>
339 # ARMv7-A ports for IAR EWARM
340 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CA5_NOGIC>:
341 IAR/ARM_CA5_No_GIC/port.c
342 IAR/ARM_CA5_No_GIC/portASM.s>
344 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CA9>:
346 IAR/ARM_CA9/portASM.s>
348 # ARMv6-M port for IAR EWARM
349 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM0>:
351 IAR/ARM_CM0/portasm.s>
353 # ARMv7-M port for IAR EWARM
354 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM3>:
356 IAR/ARM_CM3/portasm.s>
358 # ARMv7E-M ports for IAR EWARM
359 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM4F>:
361 IAR/ARM_CM4F/portasm.s>
363 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM4F_MPU>:
364 IAR/ARM_CM4F_MPU/port.c
365 IAR/ARM_CM4F_MPU/portasm.s>
367 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM7>:
368 IAR/ARM_CM7/r0p1/port.c
369 IAR/ARM_CM7/r0p1/portasm.s>
371 # ARMv8-M Ports for IAR EWARM
372 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM23_NONSECURE>:
373 IAR/ARM_CM23/non_secure/port.c
374 IAR/ARM_CM23/non_secure/portasm.s>
376 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM23_SECURE>:
377 IAR/ARM_CM23/secure/secure_context_port_asm.s
378 IAR/ARM_CM23/secure/secure_context.c
379 IAR/ARM_CM23/secure/secure_heap.c
380 IAR/ARM_CM23/secure/secure_init.c>
382 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM23_NTZ_NONSECURE>:
383 IAR/ARM_CM23_NTZ/non_secure/port.c
384 IAR/ARM_CM23_NTZ/non_secure/portasm.s>
386 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_NONSECURE>:
387 IAR/ARM_CM33/non_secure/port.c
388 IAR/ARM_CM33/non_secure/portasm.s>
390 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_SECURE>:
391 IAR/ARM_CM33/secure/secure_context_port_asm.s
392 IAR/ARM_CM33/secure/secure_context.c
393 IAR/ARM_CM33/secure/secure_heap.c
394 IAR/ARM_CM33/secure/secure_init.c>
396 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_NTZ_NONSECURE>:
397 IAR/ARM_CM33_NTZ/non_secure/port.c
398 IAR/ARM_CM33_NTZ/non_secure/portasm.s>
400 # ARMv8.1-M ports for IAR EWARM
401 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_NONSECURE>:
402 IAR/ARM_CM55/non_secure/port.c
403 IAR/ARM_CM55/non_secure/portasm.s>
405 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_SECURE>:
406 IAR/ARM_CM55/secure/secure_context_port_asm.s
407 IAR/ARM_CM55/secure/secure_context.c
408 IAR/ARM_CM55/secure/secure_heap.c
409 IAR/ARM_CM55/secure/secure_init.c>
411 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_NTZ_NONSECURE>:
412 IAR/ARM_CM55_NTZ/non_secure/port.c
413 IAR/ARM_CM55_NTZ/non_secure/portasm.s>
415 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_NONSECURE>:
416 IAR/ARM_CM85/non_secure/port.c
417 IAR/ARM_CM85/non_secure/portasm.s>
419 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_SECURE>:
420 IAR/ARM_CM85/secure/secure_context_port_asm.s
421 IAR/ARM_CM85/secure/secure_context.c
422 IAR/ARM_CM85/secure/secure_heap.c
423 IAR/ARM_CM85/secure/secure_init.c>
425 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_NTZ_NONSECURE>:
426 IAR/ARM_CM85_NTZ/non_secure/port.c
427 IAR/ARM_CM85_NTZ/non_secure/portasm.s>
429 # ARMv7-R Ports for IAR EWARM
430 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CRX_NOGIC>:
431 IAR/ARM_CRx_No_GIC/port.c
432 IAR/ARM_CRx_No_GIC/portASM.s>
434 # Microchip (formerly Atmel) AVR8 ports for IAR EWAVR
435 $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEGA323>:
437 IAR/ATMega323/portmacro.s90>
439 $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR_AVRDX>:
441 IAR/AVR_AVRDx/portmacro.s90>
443 $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR_MEGA0>:
445 IAR/AVR_Mega0/portmacro.s90>
447 # Microchip (formerly Atmel) AVR32 port for IAR Embedded Workbench for AVR32
448 $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR32_UC3>:
449 IAR/AVR32_UC3/exception.s82
452 IAR/AVR32_UC3/write.c>
454 # Texas Instruments MSP430 ports for IAR Embedded Workbench for MSP430
455 $<$<STREQUAL:${FREERTOS_PORT},IAR_MSP430>:
457 IAR/MSP430/portext.s43>
459 $<$<STREQUAL:${FREERTOS_PORT},IAR_MSP430X>:
461 IAR/MSP430X/portext.s43>
463 # RISC-V architecture port for IAR Embedded Workbench for RISC-V
464 $<$<STREQUAL:${FREERTOS_PORT},IAR_RISC_V>:
466 IAR/RISC-V/portASM.s>
468 # Renesas RL78 port for IAR EWRL78
469 $<$<STREQUAL:${FREERTOS_PORT},IAR_RL78>:
471 IAR/RL78/portasm.s87>
473 # Renesas RX architecture ports for IAR EWRX
474 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX100>:
476 IAR/RX100/port_asm.s>
478 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX600>:
480 IAR/RX600/port_asm.s>
482 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX700_V3_DPFPU>:
483 IAR/RX700v3_DPFPU/port.c>
485 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX_V2>:
489 # Renesas (formerly NEC) V850ES port for IAR EWV850
490 $<$<STREQUAL:${FREERTOS_PORT},IAR_V850ES_FX3>:
492 IAR/V850ES/portasm_Fx3.s85>
494 $<$<STREQUAL:${FREERTOS_PORT},IAR_V850ES_HX3>:
496 IAR/V850ES/portasm_Hx2.s85>
498 # ARMv4T ARM7TDMI ports for IAR Embedded Workbench for ARM
499 $<$<STREQUAL:${FREERTOS_PORT},IAR_STR71X>:
501 IAR/STR71x/portasm.s79>
503 $<$<STREQUAL:${FREERTOS_PORT},IAR_STR75X>:
505 IAR/STR75x/portasm.s79>
507 $<$<STREQUAL:${FREERTOS_PORT},IAR_LPC2000>:
509 IAR/LPC2000/portasm.s79>
511 $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEL_SAM7S64>:
512 IAR/AtmelSAM7S64/port.c
513 IAR/AtmelSAM7S64/portasm.s79>
515 # ARMv5TE ARM926 ports for IAR Embedded Workbench for ARM
516 $<$<STREQUAL:${FREERTOS_PORT},IAR_STR91X>:
518 IAR/STR91x/portasm.s79>
520 $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEL_SAM9XE>:
521 IAR/AtmelSAM9XE/port.c
522 IAR/AtmelSAM9XE/portasm.s79>
524 # ARM Cortex-M4F port for the MikroElektronika MikroC compiler
525 $<$<STREQUAL:${FREERTOS_PORT},MIKROC_ARM_CM4F>:
526 MikroC/ARM_CM4F/port.c>
528 # Microchip PIC18 8-bit MCU port for MPLAB XC8
529 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC18F>:
532 # Microchip PIC24 16-bit MCU port for MPLAB XC16
533 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC24>:
534 MPLAB/PIC24_dsPIC/port.c
535 MPLAB/PIC24_dsPIC/portasm_PIC24.S> # TODO: What to do with portasm_dsPIC.S ?
537 # Microchip MIPS 32-Bit MCU ports for MPLAB XC32
538 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MEC14XX>:
539 MPLAB/PIC32MEC14xx/port.c
540 MPLAB/PIC32MEC14xx/port_asm.S>
542 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MX>:
544 MPLAB/PIC32MX/port_asm.S>
546 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MZ>:
548 MPLAB/PIC32MZ/port_asm.S>
550 # Windows Simulator for Microsoft Visual C Compiler and MinGW GCC
551 $<$<STREQUAL:${FREERTOS_PORT},MSVC_MINGW>:
554 # 16 bit DOS ports for Open Watcom
555 $<$<STREQUAL:${FREERTOS_PORT},OWATCOM_16BIT_DOS_FLSH186>:
556 oWatcom/16BitDOS/common/portcomn.c
557 oWatcom/16BitDOS/Flsh186/port.c>
559 $<$<STREQUAL:${FREERTOS_PORT},OWATCOM_16BIT_DOS_PC>:
560 oWatcom/16BitDOS/common/portcomn.c
561 oWatcom/16BitDOS/PC/port.c>
563 $<$<STREQUAL:${FREERTOS_PORT},PARADIGM_TERN_EE_LARGE>:
564 Paradigm/Tern_EE/large_untested/port.c>
566 $<$<STREQUAL:${FREERTOS_PORT},PARADIGM_TERN_EE_SMALL>:
567 Paradigm/Tern_EE/small/port.c>
569 # Renesas RX mcu ports for Renesas CC-RX
570 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX100>:
572 Renesas/RX100/port_asm.src>
574 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX200>:
576 Renesas/RX200/port_asm.src>
578 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX600>:
580 Renesas/RX600/port_asm.src>
582 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX600_V2>:
583 Renesas/RX600v2/port.c
584 Renesas/RX600v2/port_asm.src>
586 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX700_V3_DPFPU>:
587 Renesas/RX700v3_DPFPU/port.c
588 Renesas/RX700v3_DPFPU/port_asm.src>
590 # Renesas (formerly Hitach) SHA2 SuperH port for the Renesas SH C Compiler
591 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_SH2A_FPU>:
592 Renesas/SH2A_FPU/port.c
593 Renesas/SH2A_FPU/portasm.src>
595 # Texas Instruments MSP430 port for Rowley CrossWorks
596 $<$<STREQUAL:${FREERTOS_PORT},ROWLEY_MSP430F449>:
597 Rowley/MSP430F449/port.c
598 Rowley/MSP430F449/portext.asm>
600 # ARMv7-A Cortex-A9 port for ARM RVDS / armcc
601 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CA9>:
603 RVDS/ARM_CA9/portASM.s>
605 # ARMv6-M port for ARM RVDS / armcc
606 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM0>:
609 # ARMv7-M port for ARM RVDS / armcc
610 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM3>:
613 # ARMv7E-M ports for ARM RVDS / armcc
614 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM4_MPU>:
615 RVDS/ARM_CM4_MPU/port.c>
617 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM4F>:
618 RVDS/ARM_CM4F/port.c>
620 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM7>:
621 RVDS/ARM_CM7/r0p1/port.c>
623 # ARMv4T / ARM7TDMI LPC21XX port for ARM RVDS / armcc
624 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM7_LPC21XX>:
625 RVDS/ARM7_LPC21xx/port.c
626 RVDS/ARM7_LPC21xx/portASM.s>
628 # Cygnal c8051 port for SDCC (Small Device C Compiler)
629 $<$<STREQUAL:${FREERTOS_PORT},SDCC_CYGNAL>:
632 # Infineon (formerly Fujitsu, Spansion, Cypress) MB9x ports for Softune C Compiler
633 $<$<STREQUAL:${FREERTOS_PORT},SOFTUNE_MB91460>:
634 Softune/MB91460/__STD_LIB_sbrk.c
635 Softune/MB91460/port.c>
637 $<$<STREQUAL:${FREERTOS_PORT},SOFTUNE_MB96340>:
638 Softune/MB96340/__STD_LIB_sbrk.c
639 Softune/MB96340/port.c>
641 # ARMv7E-M (Cortex-M4F) port for TASKING VX-toolset for ARM
642 $<$<STREQUAL:${FREERTOS_PORT},TASKING_ARM_CM4F>:
643 Tasking/ARM_CM4F/port.c
644 Tasking/ARM_CM4F/port_asm.asm>
646 # Port for C-SKY T-HEAD CK802
647 $<$<STREQUAL:${FREERTOS_PORT},CDK_THEAD_CK802>:
648 ThirdParty/CDK/T-HEAD_CK802/port.c
649 ThirdParty/CDK/T-HEAD_CK802/portasm.S>
651 # Tensilica Xtensa port for XCC
652 $<$<STREQUAL:${FREERTOS_PORT},XCC_XTENSA>:
653 ThirdParty/XCC/Xtensa/port.c
654 ThirdParty/XCC/Xtensa/portasm.S
655 ThirdParty/XCC/Xtensa/portclib.c
656 ThirdParty/XCC/Xtensa/xtensa_context.S
657 ThirdParty/XCC/Xtensa/xtensa_init.c
658 ThirdParty/XCC/Xtensa/xtensa_intr_asm.S
659 ThirdParty/XCC/Xtensa/xtensa_intr.c
660 ThirdParty/XCC/Xtensa/xtensa_overlay_os_hook.c
661 ThirdParty/XCC/Xtensa/xtensa_vectors.S>
663 # Microchip PIC18 port for WIZ-C
664 $<$<STREQUAL:${FREERTOS_PORT},WIZC_PIC18>:
666 WizC/PIC18/Drivers/Tick/isrTick.c
667 WizC/PIC18/Drivers/Tick/Tick.c>
670 if( FREERTOS_PORT MATCHES "GCC_ARM_CM(3|4)_MPU" OR
671 FREERTOS_PORT STREQUAL "IAR_ARM_CM4F_MPU" OR
672 FREERTOS_PORT STREQUAL "RVDS_ARM_CM4_MPU" OR
673 FREERTOS_PORT MATCHES "GCC_ARM_CM(23|33|55|85)_NTZ_NONSECURE" OR
674 FREERTOS_PORT MATCHES "GCC_ARM_CM(23|33|55|85)_NONSECURE" OR
675 FREERTOS_PORT MATCHES "GCC_ARM_CM(33|55|85)_TFM" OR
676 FREERTOS_PORT MATCHES "IAR_ARM_CM(23|33|55|85)_NTZ_NONSECURE" OR
677 FREERTOS_PORT MATCHES "IAR_ARM_CM(23|33|55|85)_NONSECURE"
679 target_sources(freertos_kernel_port PRIVATE Common/mpu_wrappers.c)
682 target_include_directories(freertos_kernel_port PUBLIC
683 # 16-Bit DOS ports for BCC
684 $<$<STREQUAL:${FREERTOS_PORT},BCC_16BIT_DOS_FLSH186>:
685 ${CMAKE_CURRENT_LIST_DIR}/BCC/16BitDOS/common
686 ${CMAKE_CURRENT_LIST_DIR}/BCC/16BitDOS/Flsh186>
688 $<$<STREQUAL:${FREERTOS_PORT},BCC_16BIT_DOS_PC>:
689 ${CMAKE_CURRENT_LIST_DIR}/BCC/16BitDOS/common
690 ${CMAKE_CURRENT_LIST_DIR}/BCC/16BitDOS/PC>
692 # ARMv7-M port for Texas Instruments Code Composer Studio
693 $<$<STREQUAL:${FREERTOS_PORT},CCS_ARM_CM3>:${CMAKE_CURRENT_LIST_DIR}/CCS/ARM_CM3>
695 # ARMv7E-M port for Texas Instruments Code Composer Studio
696 $<$<STREQUAL:${FREERTOS_PORT},CCS_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/CCS/ARM_CM4F>
698 # ARMv7-R port for Texas Instruments Code Composer Studio
699 $<$<STREQUAL:${FREERTOS_PORT},CCS_ARM_CR4>:${CMAKE_CURRENT_LIST_DIR}/CCS/ARM_Cortex-R4>
701 # Texas Instruments MSP430 port for Texas Instruments Code Composer Studio
702 $<$<STREQUAL:${FREERTOS_PORT},CCS_MSP430X>:${CMAKE_CURRENT_LIST_DIR}/CCS/MSP430X>
704 # NXP (formerly Motorola, Freescale) Cold Fire and 68HCS12 ports for Code Warrior
705 $<$<STREQUAL:${FREERTOS_PORT},CODEWARRIOR_COLDFIRE_V1>:${CMAKE_CURRENT_LIST_DIR}/CodeWarrior/ColdFire_V1>
706 $<$<STREQUAL:${FREERTOS_PORT},CODEWARRIOR_COLDFIRE_V2>:${CMAKE_CURRENT_LIST_DIR}/CodeWarrior/ColdFire_V2>
707 $<$<STREQUAL:${FREERTOS_PORT},CODEWARRIOR_HCS12>:${CMAKE_CURRENT_LIST_DIR}/CodeWarrior/HCS12>
709 # ARMv7-A port for GCC
710 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CA9>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CA9>
712 # ARMv8-A ports for GCC
713 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CA53_64_BIT>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CA53_64_BIT>
714 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CA53_64_BIT_SRE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CA53_64_BIT_SRE>
716 # ARMv6-M port for GCC
717 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM0>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM0>
719 # ARMv6-M / Cortex-M0 Raspberry PI RP2040 port for GCC
720 $<$<STREQUAL:${FREERTOS_PORT},GCC_RP2040>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/RP2040/include>
722 # ARMv7-M ports for GCC
723 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM3>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM3>
724 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM3_MPU>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM3_MPU>
726 # ARMv7E-M ports for GCC
727 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM4_MPU>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM4_MPU>
728 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM4F>
729 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM7>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM7/r0p1>
731 # ARMv8-M ports for GCC
732 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM23_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM23/non_secure>
733 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM23_SECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM23/secure>
734 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM23_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM23_NTZ/non_secure>
736 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM33/non_secure>
737 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_SECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM33/secure>
738 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM33_NTZ/non_secure>
739 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_TFM>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM33_NTZ/non_secure>
741 # ARMv8.1-M ports for GCC
742 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM55/non_secure>
743 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_SECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM55/secure>
744 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM55_NTZ/non_secure>
745 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_TFM>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM85_NTZ/non_secure>
747 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM85/non_secure>
748 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_SECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM85/secure>
749 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM85_NTZ/non_secure>
750 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_TFM>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM85_NTZ/non_secure>
752 # ARMv7-R ports for GCC
753 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CR5>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CR5>
754 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CRX_NOGIC>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CRx_No_GIC>
756 # ARMv4T ARM7TDMI ports for GCC
757 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_AT91FR40008>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM7_AT91FR40008>
758 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_AT91SAM7S>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM7_AT91SAM7S>
759 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_LPC2000>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM7_LPC2000>
760 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_LPC23XX>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM7_LPC23xx>
761 $<$<STREQUAL:${FREERTOS_PORT},GCC_STR75X>:${CMAKE_CURRENT_LIST_DIR}/GCC/STR75x>
763 # Microchip (formerly Ateml) AVR8 ports for GCC
764 $<$<STREQUAL:${FREERTOS_PORT},GCC_ATMEGA323>:${CMAKE_CURRENT_LIST_DIR}/GCC/ATMega323>
765 $<$<STREQUAL:${FREERTOS_PORT},GCC_ATMEGA>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/ATmega>
766 $<$<STREQUAL:${FREERTOS_PORT},GCC_AVRDX>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/Partner-Supported-Ports/GCC/AVR_AVRDx>
767 $<$<STREQUAL:${FREERTOS_PORT},GCC_AVR_MEGA0>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/Partner-Supported-Ports/GCC/AVR_Mega0>
769 # Microchip (formerly Ateml) AVR32 port for GCC
770 $<$<STREQUAL:${FREERTOS_PORT},GCC_AVR32_UC3>:${CMAKE_CURRENT_LIST_DIR}/GCC/AVR32_UC3>
772 # NXP (formerly Motorola, Freescale) Cold Fire and 68HCS12 ports for GCC
773 $<$<STREQUAL:${FREERTOS_PORT},GCC_COLDFIRE_V2>:${CMAKE_CURRENT_LIST_DIR}/GCC/ColdFire_V2>
774 $<$<STREQUAL:${FREERTOS_PORT},GCC_HCS12>:${CMAKE_CURRENT_LIST_DIR}/GCC/HCS12>
776 # Cortus APS3 soft core port for GCC
777 $<$<STREQUAL:${FREERTOS_PORT},GCC_CORTUS_APS3>:${CMAKE_CURRENT_LIST_DIR}/GCC/CORTUS_APS3>
779 # Renesas (formerly Hitach) H8S port for GCC
780 $<$<STREQUAL:${FREERTOS_PORT},GCC_H8S2329>:${CMAKE_CURRENT_LIST_DIR}/GCC/H8S2329>
782 # x86 / IA32 flat memory model port for GCC
783 $<$<STREQUAL:${FREERTOS_PORT},GCC_IA32_FLAT>:${CMAKE_CURRENT_LIST_DIR}/GCC/IA32_flat>
785 # Intel (formerly Altera) NIOS II soft core port for GCC
786 $<$<STREQUAL:${FREERTOS_PORT},GCC_NIOSII>:${CMAKE_CURRENT_LIST_DIR}/GCC/NiosII>
788 # Texas Instruments MSP430 port for GCC
789 $<$<STREQUAL:${FREERTOS_PORT},GCC_MSP430F449>:${CMAKE_CURRENT_LIST_DIR}/GCC/MSP430F449>
791 # Xilinx MicroBlaze soft core ports for GCC
792 $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE>:${CMAKE_CURRENT_LIST_DIR}/GCC/MicroBlaze>
793 $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE_V8>:${CMAKE_CURRENT_LIST_DIR}/GCC/MicroBlazeV8>
794 $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE_V9>:${CMAKE_CURRENT_LIST_DIR}/GCC/MicroBlazeV9>
796 # Xilinx PCC4XX soft core ports for GCC
797 $<$<STREQUAL:${FREERTOS_PORT},GCC_PPC405_XILINX>:${CMAKE_CURRENT_LIST_DIR}/GCC/PPC405_Xilinx>
798 $<$<STREQUAL:${FREERTOS_PORT},GCC_PPC440_XILINX>:${CMAKE_CURRENT_LIST_DIR}/GCC/PPC440_Xilinx>
800 # RISC-V architecture ports for GCC
801 $<$<STREQUAL:${FREERTOS_PORT},GCC_RISC_V>:
802 ${CMAKE_CURRENT_LIST_DIR}/GCC/RISC-V
803 ${CMAKE_CURRENT_LIST_DIR}/GCC/RISC-V/chip_specific_extensions/RISCV_MTIME_CLINT_no_extensions>
805 $<$<STREQUAL:${FREERTOS_PORT},GCC_RISC_V_PULPINO_VEGA_RV32M1RM>:
806 ${CMAKE_CURRENT_LIST_DIR}/GCC/RISC-V
807 ${CMAKE_CURRENT_LIST_DIR}/GCC/RISC-V/chip_specific_extensions/Pulpino_Vega_RV32M1RM>
809 # Renesas RL78 port for GCC
810 $<$<STREQUAL:${FREERTOS_PORT},GCC_RL78>:${CMAKE_CURRENT_LIST_DIR}/GCC/RL78>
812 # Renesas RX architecture ports for GCC
813 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX100>:${CMAKE_CURRENT_LIST_DIR}/GCC/RX100>
814 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX200>:${CMAKE_CURRENT_LIST_DIR}/GCC/RX200>
815 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX600>:${CMAKE_CURRENT_LIST_DIR}/GCC/RX600>
816 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX600_V2>:${CMAKE_CURRENT_LIST_DIR}/GCC/RX600v2>
817 $<$<STREQUAL:${FREERTOS_PORT},GCC_RX700_V3_DPFPU>:${CMAKE_CURRENT_LIST_DIR}/GCC/RX700v3_DPFPU>
819 # Infineon TriCore 1782 port for GCC
820 $<$<STREQUAL:${FREERTOS_PORT},GCC_TRICORE_1782>:${CMAKE_CURRENT_LIST_DIR}/GCC/TriCore_1782>
822 # Synopsys ARC architecture ports for GCC
823 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARC_EM_HS>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/ARC_EM_HS>
824 $<$<STREQUAL:${FREERTOS_PORT},GCC_ARC_V1>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/ARC_v1>
826 # Posix Simulator port for GCC
827 $<$<STREQUAL:${FREERTOS_PORT},GCC_POSIX>:
828 ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/Posix
829 ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/Posix/utils>
831 # Xtensa LX / Espressif ESP32 port for GCC
832 $<$<STREQUAL:${FREERTOS_PORT},GCC_XTENSA_ESP32>:
833 ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/Xtensa_ESP32
834 ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/Xtensa_ESP32/include>
836 # Renesas (formerly NEC) 78K port for IAR EW78K
837 $<$<STREQUAL:${FREERTOS_PORT},IAR_78K0K>:${CMAKE_CURRENT_LIST_DIR}/IAR/78K0R>
839 # ARMv7-A ports for IAR EWARM
840 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CA5_NOGIC>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CA5_No_GIC>
841 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CA9>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CA9>
843 # ARMv6-M port for IAR EWARM
844 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM0>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM0>
846 # ARMv7-M port for IAR EWARM
847 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM3>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM3>
849 # ARMv7E-M ports for IAR EWARM
850 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM4F>
851 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM4F_MPU>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM4F_MPU>
852 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM7>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM7/r0p1>
854 # ARMv8-M Ports for IAR EWARM
855 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM23_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM23/non_secure>
856 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM23_SECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM23/secure>
857 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM23_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM23_NTZ/non_secure>
859 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM33/non_secure>
860 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_SECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM33/secure>
861 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM33_NTZ/non_secure>
863 # ARMv8.1-M ports for IAR EWARM
864 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM55/non_secure>
865 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_SECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM55/secure>
866 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM55_NTZ/non_secure>
868 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM85/non_secure>
869 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_SECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM85/secure>
870 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM85_NTZ/non_secure>
872 # ARMv7-R Ports for IAR EWARM
873 $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CRX_NOGIC>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CRx_No_GIC>
875 # ARMv4T ARM7TDMI ports for IAR Embedded Workbench for ARM
876 $<$<STREQUAL:${FREERTOS_PORT},IAR_STR71X>:${CMAKE_CURRENT_LIST_DIR}/IAR/STR71x>
877 $<$<STREQUAL:${FREERTOS_PORT},IAR_STR75X>:${CMAKE_CURRENT_LIST_DIR}/IAR/STR75x>
878 $<$<STREQUAL:${FREERTOS_PORT},IAR_LPC2000>:${CMAKE_CURRENT_LIST_DIR}/IAR/LPC2000>
879 $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEL_SAM7S64>:${CMAKE_CURRENT_LIST_DIR}/IAR/AtmelSAM7S64>
881 # ARMv5TE ARM926 ports for IAR Embedded Workbench for ARM
882 $<$<STREQUAL:${FREERTOS_PORT},IAR_STR91X>:${CMAKE_CURRENT_LIST_DIR}/IAR/STR91x>
883 $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEL_SAM9XE>:${CMAKE_CURRENT_LIST_DIR}/IAR/AtmelSAM9XE>
885 # Microchip (formerly Atmel) AVR8 ports for IAR EWAVR
886 $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEGA323>:${CMAKE_CURRENT_LIST_DIR}/IAR/ATMega323>
887 $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR_AVRDX>:${CMAKE_CURRENT_LIST_DIR}/IAR/AVR_AVRDx>
888 $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR_MEGA0>:${CMAKE_CURRENT_LIST_DIR}/IAR/AVR_Mega0>
890 # Microchip (formerly Atmel) AVR32 port for IAR Embedded Workbench for AVR32
891 $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR32_UC3>:${CMAKE_CURRENT_LIST_DIR}/IAR/AVR32_UC3>
893 # Texas Instruments MSP430 ports for IAR Embedded Workbench for MSP430
894 $<$<STREQUAL:${FREERTOS_PORT},IAR_MSP430>:${CMAKE_CURRENT_LIST_DIR}/IAR/MSP430>
895 $<$<STREQUAL:${FREERTOS_PORT},IAR_MSP430X>:${CMAKE_CURRENT_LIST_DIR}/IAR/MSP430X>
897 # RISC-V architecture port for IAR Embedded Workbench for RISC-V
898 $<$<STREQUAL:${FREERTOS_PORT},IAR_RISC_V>:
899 ${CMAKE_CURRENT_LIST_DIR}/IAR/RISC-V
900 ${CMAKE_CURRENT_LIST_DIR}/IAR/RISC-V/chip_specific_extensions/RV32I_CLINT_no_extensions>
902 # Renesas RL78 port for IAR EWRL78
903 $<$<STREQUAL:${FREERTOS_PORT},IAR_RL78>:${CMAKE_CURRENT_LIST_DIR}/IAR/RL78>
905 # Renesas RX architecture ports for IAR EWRX
906 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX100>:${CMAKE_CURRENT_LIST_DIR}/IAR/RX100>
907 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX600>:${CMAKE_CURRENT_LIST_DIR}/IAR/RX600>
908 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX700_V3_DPFPU>:${CMAKE_CURRENT_LIST_DIR}/IAR/RX700v3_DPFPU>
909 $<$<STREQUAL:${FREERTOS_PORT},IAR_RX_V2>:${CMAKE_CURRENT_LIST_DIR}/IAR/RXv2>
911 # Renesas (formerly NEC) V850ES port for IAR EWV850
912 $<$<STREQUAL:${FREERTOS_PORT},IAR_V850ES_FX3>:${CMAKE_CURRENT_LIST_DIR}/IAR/V850ES>
913 $<$<STREQUAL:${FREERTOS_PORT},IAR_V850ES_HX3>:${CMAKE_CURRENT_LIST_DIR}/IAR/V850ES>
915 # ARM Cortex-M4F port for the MikroElektronika MikroC compiler
916 $<$<STREQUAL:${FREERTOS_PORT},MIKROC_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/MikroC/ARM_CM4F>
918 # Microchip PIC18 8-bit MCU port for MPLAB XC8
919 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC18F>:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC18F>
921 # Microchip PIC24 16-bit MCU port for MPLAB XC16
922 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC24>:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC24_dsPIC>
924 # Microchip MIPS 32-Bit MCU ports for MPLAB XC32
925 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MEC14XX>:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC32MEC14xx>
926 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MX>:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC32MX>
927 $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MZ>:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC32MZ>
929 # Windows Simulator for Microsoft Visual C Compiler and MinGW GCC
930 $<$<STREQUAL:${FREERTOS_PORT},MSVC_MINGW>:${CMAKE_CURRENT_LIST_DIR}/MSVC-MingW>
932 # 16 bit DOS ports for Open Watcom
933 $<$<STREQUAL:${FREERTOS_PORT},OWATCOM_16BIT_DOS_FLSH186>:
934 ${CMAKE_CURRENT_LIST_DIR}/oWatcom/16BitDOS/common
935 ${CMAKE_CURRENT_LIST_DIR}/oWatcom/16BitDOS/Flsh186>
936 $<$<STREQUAL:${FREERTOS_PORT},OWATCOM_16BIT_DOS_PC>:
937 ${CMAKE_CURRENT_LIST_DIR}/oWatcom/16BitDOS/common
938 ${CMAKE_CURRENT_LIST_DIR}/oWatcom/16BitDOS/PC>
940 $<$<STREQUAL:${FREERTOS_PORT},PARADIGM_TERN_EE_LARGE>:${CMAKE_CURRENT_LIST_DIR}/Paradigm/Tern_EE/large_untested>
941 $<$<STREQUAL:${FREERTOS_PORT},PARADIGM_TERN_EE_SMALL>:${CMAKE_CURRENT_LIST_DIR}/Paradigm/Tern_EE/small>
943 # Renesas RX mcu ports for Renesas CC-RX
944 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX100>:${CMAKE_CURRENT_LIST_DIR}/Renesas/RX100>
945 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX200>:${CMAKE_CURRENT_LIST_DIR}/Renesas/RX200>
946 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX600>:${CMAKE_CURRENT_LIST_DIR}/Renesas/RX600>
947 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX600_V2>:${CMAKE_CURRENT_LIST_DIR}/Renesas/RX600v2>
948 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX700_V3_DPFPU>:${CMAKE_CURRENT_LIST_DIR}/Renesas/RX700v3_DPFPU>
950 # Renesas (formerly Hitach) SHA2 SuperH port for the Renesas SH C Compiler
951 $<$<STREQUAL:${FREERTOS_PORT},RENESAS_SH2A_FPU>:${CMAKE_CURRENT_LIST_DIR}/Renesas/SH2A_FPU>
953 # Texas Instruments MSP430 port for Rowley CrossWorks
954 $<$<STREQUAL:${FREERTOS_PORT},ROWLEY_MSP430F449>:${CMAKE_CURRENT_LIST_DIR}/Rowley/MSP430F449>
956 # ARMv7-A Cortex-A9 port for ARM RVDS / armcc
957 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CA9>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CA9>
959 # ARMv6-M port for ARM RVDS / armcc
960 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM0>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM0>
962 # ARMv7-M port for ARM RVDS / armcc
963 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM3>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM3>
965 # ARMv7E-M ports for ARM RVDS / armcc
966 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM4_MPU>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM4_MPU>
967 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM4F>
968 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM7>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM7/r0p1>
970 # ARMv4T / ARM7TDMI LPC21XX port for ARM RVDS / armcc
971 $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM7_LPC21XX>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM7_LPC21xx>
973 # Cygnal c8051 port for SDCC (Small Device C Compiler)
974 $<$<STREQUAL:${FREERTOS_PORT},SDCC_CYGNAL>:${CMAKE_CURRENT_LIST_DIR}/SDCC/Cygnal>
976 # Infineon (formerly Fujitsu, Spansion, Cypress) MB9x ports for Softune C Compiler
977 $<$<STREQUAL:${FREERTOS_PORT},SOFTUNE_MB91460>:${CMAKE_CURRENT_LIST_DIR}/Softune/MB91460>
978 $<$<STREQUAL:${FREERTOS_PORT},SOFTUNE_MB96340>:${CMAKE_CURRENT_LIST_DIR}/Softune/MB96340>
980 # ARMv7E-M (Cortex-M4F) port for TASKING VX-toolset for ARM
981 $<$<STREQUAL:${FREERTOS_PORT},TASKING_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/Tasking/ARM_CM4F>
983 # Port for C-SKY T-HEAD CK802
984 $<$<STREQUAL:${FREERTOS_PORT},CDK_THEAD_CK802>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/CDK/T-HEAD_CK802>
986 # Tensilica Xtensa port for XCC
987 $<$<STREQUAL:${FREERTOS_PORT},XCC_XTENSA>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/XCC/Xtensa>
989 # Microchip PIC18 port for WIZ-C
990 $<$<STREQUAL:${FREERTOS_PORT},WIZC_PIC18>:${CMAKE_CURRENT_LIST_DIR}/WizC/PIC18>
993 if(FREERTOS_PORT STREQUAL GCC_POSIX)
994 find_package(Threads REQUIRED)
997 target_link_libraries(freertos_kernel_port
999 $<$<STREQUAL:${FREERTOS_PORT},GCC_RP2040>:pico_base_headers>
1000 $<$<STREQUAL:${FREERTOS_PORT},GCC_XTENSA_ESP32>:idf::esp32>
1003 $<$<STREQUAL:${FREERTOS_PORT},GCC_POSIX>:Threads::Threads>
1004 "$<$<STREQUAL:${FREERTOS_PORT},GCC_RP2040>:hardware_clocks;hardware_exception>"
1005 $<$<STREQUAL:${FREERTOS_PORT},MSVC_MINGW>:winmm> # Windows library which implements timers
1008 # Note these are primarily for the POSIX port.
1009 target_compile_options( freertos_kernel_port
1011 $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-disabled-macro-expansion>
1012 $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-documentation>
1013 $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-extra-semi-stmt>
1014 $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-missing-noreturn>
1015 $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-missing-variable-declarations>
1016 $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-padded>
1017 $<$<COMPILE_LANG_AND_ID:C,GNU>:-Wno-pointer-to-int-cast>
1018 $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-reserved-macro-identifier>
1019 $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-sign-conversion>
1020 $<$<COMPILE_LANG_AND_ID:C,GNU>:-Wno-type-limits>
1021 $<$<COMPILE_LANG_AND_ID:C,Clang>:-Wno-unused-macros>