1if( FREERTOS_PORT STREQUAL "GCC_RISC_V_GENERIC" )
2    include( GCC/RISC-V/chip_extensions.cmake )
3endif()
4
5if( FREERTOS_PORT STREQUAL "IAR_RISC_V_GENERIC" )
6    include( IAR/RISC-V/chip_extensions.cmake )
7endif()
8
9# FreeRTOS internal cmake file. Do not use it in user top-level project
10
11if (FREERTOS_PORT STREQUAL "A_CUSTOM_PORT")
12    message(STATUS "Using a custom FREERTOS_PORT.")
13    return()
14endif()
15
16# FreeRTOS internal cmake file. Do not use it in user top-level project
17
18add_library(freertos_kernel_port OBJECT
19    # TEMPLATE Port
20    $<$<STREQUAL:${FREERTOS_PORT},TEMPLATE>:
21        template/port.c>
22
23        # 16-Bit DOS ports for BCC
24    $<$<STREQUAL:${FREERTOS_PORT},BCC_16BIT_DOS_FLSH186>:
25        BCC/16BitDOS/common/portcomn.c
26        BCC/16BitDOS/Flsh186/port.c>
27
28    $<$<STREQUAL:${FREERTOS_PORT},BCC_16BIT_DOS_PC>:
29        BCC/16BitDOS/common/portcomn.c
30        BCC/16BitDOS/PC/port.c>
31
32    # ARMv7-M port for Texas Instruments Code Composer Studio
33    $<$<STREQUAL:${FREERTOS_PORT},CCS_ARM_CM3>:
34        CCS/ARM_CM3/port.c
35        CCS/ARM_CM3/portasm.asm>
36
37    # ARMv7E-M port for Texas Instruments Code Composer Studio
38    $<$<STREQUAL:${FREERTOS_PORT},CCS_ARM_CM4F>:
39        CCS/ARM_CM4F/port.c
40        CCS/ARM_CM4F/portasm.asm>
41
42    # ARMv7-R port for Texas Instruments Code Composer Studio
43    $<$<STREQUAL:${FREERTOS_PORT},CCS_ARM_CR4>:
44        CCS/ARM_Cortex-R4/port.c
45        CCS/ARM_Cortex-R4/portASM.asm>
46
47    # Texas Instruments MSP430 port for Texas Instruments Code Composer Studio
48    $<$<STREQUAL:${FREERTOS_PORT},CCS_MSP430X>:
49        CCS/MSP430X/port.c
50        CCS/MSP430X/portext.asm>
51
52    # NXP (formerly Motorola, Freescale) Cold Fire and 68HCS12 ports for Code Warrior
53    $<$<STREQUAL:${FREERTOS_PORT},CODEWARRIOR_COLDFIRE_V1>:
54        CodeWarrior/ColdFire_V1/port.c
55        CodeWarrior/ColdFire_V1/portasm.S>
56
57    $<$<STREQUAL:${FREERTOS_PORT},CODEWARRIOR_COLDFIRE_V2>:
58        CodeWarrior/ColdFire_V2/port.c
59        CodeWarrior/ColdFire_V2/portasm.S>
60
61    $<$<STREQUAL:${FREERTOS_PORT},CODEWARRIOR_HCS12>:
62        CodeWarrior/HCS12/port.c>
63
64    # ARMv7-A port for GCC
65    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CA9>:
66        GCC/ARM_CA9/port.c
67        GCC/ARM_CA9/portASM.S>
68
69    # ARMv8-A ports for GCC
70    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_AARCH64>:
71        GCC/ARM_AARCH64/port.c
72        GCC/ARM_AARCH64/portASM.S>
73
74    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_AARCH64_SRE>:
75        GCC/ARM_AARCH64_SRE/port.c
76        GCC/ARM_AARCH64_SRE/portASM.S>
77
78    # ARMv6-M port for GCC
79    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM0>:
80        GCC/ARM_CM0/port.c>
81
82    # ARMv6-M / Cortex-M0 Raspberry PI RP2040 port for GCC
83    $<$<STREQUAL:${FREERTOS_PORT},GCC_RP2040>:
84        ThirdParty/GCC/RP2040/port.c>
85
86    # ARMv7-M ports for GCC
87    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM3>:
88        GCC/ARM_CM3/port.c>
89
90    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM3_MPU>:
91        GCC/ARM_CM3_MPU/port.c
92        GCC/ARM_CM3_MPU/mpu_wrappers_v2_asm.c>
93
94    # ARMv7E-M ports for GCC
95    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM4_MPU>:
96        GCC/ARM_CM4_MPU/port.c
97        GCC/ARM_CM4_MPU/mpu_wrappers_v2_asm.c>
98
99    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM4F>:
100        GCC/ARM_CM4F/port.c>
101
102    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM7>:
103        GCC/ARM_CM7/r0p1/port.c>
104
105    # ARMv8-M ports for GCC
106    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM23_NONSECURE>:
107        GCC/ARM_CM23/non_secure/port.c
108        GCC/ARM_CM23/non_secure/portasm.c
109        GCC/ARM_CM23/non_secure/mpu_wrappers_v2_asm.c>
110
111    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM23_SECURE>:
112        GCC/ARM_CM23/secure/secure_context_port.c
113        GCC/ARM_CM23/secure/secure_context.c
114        GCC/ARM_CM23/secure/secure_heap.c
115        GCC/ARM_CM23/secure/secure_init.c>
116
117    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM23_NTZ_NONSECURE>:
118        GCC/ARM_CM23_NTZ/non_secure/port.c
119        GCC/ARM_CM23_NTZ/non_secure/portasm.c
120        GCC/ARM_CM23_NTZ/non_secure/mpu_wrappers_v2_asm.c>
121
122    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_NONSECURE>:
123        GCC/ARM_CM33/non_secure/port.c
124        GCC/ARM_CM33/non_secure/portasm.c
125        GCC/ARM_CM33/non_secure/mpu_wrappers_v2_asm.c>
126
127    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_SECURE>:
128        GCC/ARM_CM33/secure/secure_context_port.c
129        GCC/ARM_CM33/secure/secure_context.c
130        GCC/ARM_CM33/secure/secure_heap.c
131        GCC/ARM_CM33/secure/secure_init.c>
132
133    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_NTZ_NONSECURE>:
134        GCC/ARM_CM33_NTZ/non_secure/port.c
135        GCC/ARM_CM33_NTZ/non_secure/portasm.c
136        GCC/ARM_CM33_NTZ/non_secure/mpu_wrappers_v2_asm.c>
137
138    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_TFM>:
139        GCC/ARM_CM33_NTZ/non_secure/port.c
140        GCC/ARM_CM33_NTZ/non_secure/portasm.c
141        GCC/ARM_CM33_NTZ/non_secure/mpu_wrappers_v2_asm.c
142        ThirdParty/GCC/ARM_TFM/os_wrapper_freertos.c>
143
144    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM35P_NONSECURE>:
145        GCC/ARM_CM35P/non_secure/port.c
146        GCC/ARM_CM35P/non_secure/portasm.c
147        GCC/ARM_CM35P/non_secure/mpu_wrappers_v2_asm.c>
148
149    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM35P_SECURE>:
150        GCC/ARM_CM35P/secure/secure_context_port.c
151        GCC/ARM_CM35P/secure/secure_context.c
152        GCC/ARM_CM35P/secure/secure_heap.c
153        GCC/ARM_CM35P/secure/secure_init.c>
154
155    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM35P_NTZ_NONSECURE>:
156        GCC/ARM_CM35P_NTZ/non_secure/port.c
157        GCC/ARM_CM35P_NTZ/non_secure/portasm.c
158        GCC/ARM_CM35P_NTZ/non_secure/mpu_wrappers_v2_asm.c>
159
160    # ARMv8.1-M ports for GCC
161    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_NONSECURE>:
162        GCC/ARM_CM55/non_secure/port.c
163        GCC/ARM_CM55/non_secure/portasm.c
164        GCC/ARM_CM55/non_secure/mpu_wrappers_v2_asm.c>
165
166    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_SECURE>:
167        GCC/ARM_CM55/secure/secure_context_port.c
168        GCC/ARM_CM55/secure/secure_context.c
169        GCC/ARM_CM55/secure/secure_heap.c
170        GCC/ARM_CM55/secure/secure_init.c>
171
172    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_NTZ_NONSECURE>:
173        GCC/ARM_CM55_NTZ/non_secure/port.c
174        GCC/ARM_CM55_NTZ/non_secure/portasm.c
175        GCC/ARM_CM55_NTZ/non_secure/mpu_wrappers_v2_asm.c>
176
177    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_TFM>:
178        GCC/ARM_CM55_NTZ/non_secure/port.c
179        GCC/ARM_CM55_NTZ/non_secure/portasm.c
180        GCC/ARM_CM55_NTZ/non_secure/mpu_wrappers_v2_asm.c
181        ThirdParty/GCC/ARM_TFM/os_wrapper_freertos.c>
182
183    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_NONSECURE>:
184        GCC/ARM_CM85/non_secure/port.c
185        GCC/ARM_CM85/non_secure/portasm.c
186        GCC/ARM_CM85/non_secure/mpu_wrappers_v2_asm.c>
187
188    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_SECURE>:
189        GCC/ARM_CM85/secure/secure_context_port.c
190        GCC/ARM_CM85/secure/secure_context.c
191        GCC/ARM_CM85/secure/secure_heap.c
192        GCC/ARM_CM85/secure/secure_init.c>
193
194    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_NTZ_NONSECURE>:
195        GCC/ARM_CM85_NTZ/non_secure/port.c
196        GCC/ARM_CM85_NTZ/non_secure/portasm.c
197        GCC/ARM_CM85_NTZ/non_secure/mpu_wrappers_v2_asm.c>
198
199    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_TFM>:
200        GCC/ARM_CM85_NTZ/non_secure/port.c
201        GCC/ARM_CM85_NTZ/non_secure/portasm.c
202        GCC/ARM_CM85_NTZ/non_secure/mpu_wrappers_v2_asm.c
203        ThirdParty/GCC/ARM_TFM/os_wrapper_freertos.c>
204
205    # ARMv7-R ports for GCC
206    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CR5>:
207        GCC/ARM_CR5/port.c
208        GCC/ARM_CR5/portASM.S>
209
210    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CRX_MPU>:
211        GCC/ARM_CRx_MPU/port.c
212        GCC/ARM_CRx_MPU/portASM.S
213        GCC/ARM_CRx_MPU/mpu_wrappers_v2_asm.S>
214
215    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CRX_NOGIC>:
216        GCC/ARM_CRx_No_GIC/port.c
217        GCC/ARM_CRx_No_GIC/portASM.S>
218
219    # ARMv4T ARM7TDMI ports for GCC
220    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_AT91FR40008>:
221        GCC/ARM7_AT91FR40008/port.c
222        GCC/ARM7_AT91FR40008/portISR.c>
223
224    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_AT91SAM7S>:
225        GCC/ARM7_AT91SAM7S/lib_AT91SAM7X256.c
226        GCC/ARM7_AT91SAM7S/port.c
227        GCC/ARM7_AT91SAM7S/portISR.c>
228
229    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_LPC2000>:
230        GCC/ARM7_LPC2000/port.c
231        GCC/ARM7_LPC2000/portISR.c>
232
233    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_LPC23XX>:
234        GCC/ARM7_LPC23xx/port.c
235        GCC/ARM7_LPC23xx/portISR.c>
236
237    $<$<STREQUAL:${FREERTOS_PORT},GCC_STR75X>:
238        GCC/STR75x/port.c
239        GCC/STR75x/portISR.c>
240
241    # Microchip (formerly Ateml) AVR8 ports for GCC
242    $<$<STREQUAL:${FREERTOS_PORT},GCC_ATMEGA323>:
243        GCC/ATMega323/port.c>
244
245    $<$<STREQUAL:${FREERTOS_PORT},GCC_ATMEGA>:
246        ThirdParty/GCC/ATmega/port.c>
247
248    $<$<STREQUAL:${FREERTOS_PORT},GCC_AVRDX>:
249        ThirdParty/Partner-Supported-Ports/GCC/AVR_AVRDx/port.c>
250
251    $<$<STREQUAL:${FREERTOS_PORT},GCC_AVR_MEGA0>:
252        ThirdParty/Partner-Supported-Ports/GCC/AVR_Mega0/port.c>
253
254    # Microchip (formerly Ateml) AVR32 port for GCC
255    $<$<STREQUAL:${FREERTOS_PORT},GCC_AVR32_UC3>:
256        GCC/AVR32_UC3/exception.S
257        GCC/AVR32_UC3/port.c>
258
259    # NXP (formerly Motorola, Freescale) Cold Fire and 68HCS12 ports for GCC
260    $<$<STREQUAL:${FREERTOS_PORT},GCC_COLDFIRE_V2>:
261        GCC/ColdFire_V2/port.c
262        GCC/ColdFire_V2/portasm.S>
263
264    $<$<STREQUAL:${FREERTOS_PORT},GCC_HCS12>:
265        GCC/HCS12/port.c>
266
267    # Cortus APS3 soft core port for GCC
268    $<$<STREQUAL:${FREERTOS_PORT},GCC_CORTUS_APS3>:
269        GCC/CORTUS_APS3/port.c>
270
271    # Renesas (formerly Hitach) H8S port for GCC
272    $<$<STREQUAL:${FREERTOS_PORT},GCC_H8S2329>:
273        GCC/H8S2329/port.c>
274
275    # x86 / IA32 flat memory model port for GCC
276    $<$<STREQUAL:${FREERTOS_PORT},GCC_IA32_FLAT>:
277        GCC/IA32_flat/port.c
278        GCC/IA32_flat/portASM.S>
279
280    # Xilinx MicroBlaze soft core ports for GCC
281    $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE>:
282        GCC/MicroBlaze/port.c
283        GCC/MicroBlaze/portasm.s>
284
285    $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE_V8>:
286        GCC/MicroBlazeV8/port.c
287        GCC/MicroBlazeV8/port_exceptions.c
288        GCC/MicroBlazeV8/portasm.S>
289
290    $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE_V9>:
291        GCC/MicroBlazeV9/port.c
292        GCC/MicroBlazeV9/port_exceptions.c
293        GCC/MicroBlazeV9/portasm.S>
294
295    # Xilinx PCC4XX soft core ports for GCC
296    $<$<STREQUAL:${FREERTOS_PORT},GCC_PPC405_XILINX>:
297        GCC/PPC405_Xilinx/port.c
298        GCC/PPC405_Xilinx/portasm.S>
299
300    $<$<STREQUAL:${FREERTOS_PORT},GCC_PPC440_XILINX>:
301        GCC/PPC440_Xilinx/port.c
302        GCC/PPC440_Xilinx/portasm.S>
303
304     # Texas Instruments MSP430 port for GCC
305    $<$<STREQUAL:${FREERTOS_PORT},GCC_MSP430F449>:
306        GCC/MSP430F449/port.c>
307
308    # Intel (formerly Altera) NIOS II soft core port for GCC
309    $<$<STREQUAL:${FREERTOS_PORT},GCC_NIOSII>:
310        GCC/NiosII/port.c
311        GCC/NiosII/port_asm.S>
312
313    # RISC-V architecture ports for GCC
314    $<$<STREQUAL:${FREERTOS_PORT},GCC_RISC_V>:
315        GCC/RISC-V/port.c
316        GCC/RISC-V/portASM.S>
317
318    $<$<STREQUAL:${FREERTOS_PORT},GCC_RISC_V_PULPINO_VEGA_RV32M1RM>:
319        GCC/RISC-V/port.c
320        GCC/RISC-V/portASM.S>
321
322    $<$<STREQUAL:${FREERTOS_PORT},GCC_RISC_V_GENERIC>:
323        GCC/RISC-V/port.c
324        GCC/RISC-V/portASM.S>
325
326    # Renesas RL78 port for GCC
327    $<$<STREQUAL:${FREERTOS_PORT},GCC_RL78>:
328        GCC/RL78/port.c
329        GCC/RL78/portasm.S>
330
331    # Renesas RX architecture ports for GCC
332    $<$<STREQUAL:${FREERTOS_PORT},GCC_RX100>:
333        GCC/RX100/port.c>
334
335    $<$<STREQUAL:${FREERTOS_PORT},GCC_RX200>:
336        GCC/RX200/port.c>
337
338    $<$<STREQUAL:${FREERTOS_PORT},GCC_RX600>:
339        GCC/RX600/port.c>
340
341    $<$<STREQUAL:${FREERTOS_PORT},GCC_RX600_V2>:
342        GCC/RX600v2/port.c>
343
344    $<$<STREQUAL:${FREERTOS_PORT},GCC_RX700_V3_DPFPU>:
345        GCC/RX700v3_DPFPU/port.c>
346
347    # Infineon TriCore 1782 port for GCC
348    $<$<STREQUAL:${FREERTOS_PORT},GCC_TRICORE_1782>:
349        GCC/TriCore_1782/port.c
350        GCC/TriCore_1782/porttrap.c>
351
352    # Synopsys ARC architecture ports for GCC
353    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARC_EM_HS>:
354        ThirdParty/GCC/ARC_EM_HS/arc_freertos_exceptions.c
355        ThirdParty/GCC/ARC_EM_HS/arc_support.s
356        ThirdParty/GCC/ARC_EM_HS/freertos_tls.c
357        ThirdParty/GCC/ARC_EM_HS/port.c>
358
359    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARC_V1>:
360        ThirdParty/GCC/ARC_v1/arc_freertos_exceptions.c
361        ThirdParty/GCC/ARC_v1/arc_support.s
362        ThirdParty/GCC/ARC_v1/port.c>
363
364    # Posix Simulator port for GCC
365    $<$<STREQUAL:${FREERTOS_PORT},GCC_POSIX>:
366        ThirdParty/GCC/Posix/port.c
367        ThirdParty/GCC/Posix/utils/wait_for_event.c>
368
369    # Xtensa LX / Espressif ESP32 port for GCC
370    $<$<STREQUAL:${FREERTOS_PORT},GCC_XTENSA_ESP32>:
371        ThirdParty/GCC/Xtensa_ESP32/FreeRTOS-openocd.c
372        ThirdParty/GCC/Xtensa_ESP32/port.c
373        ThirdParty/GCC/Xtensa_ESP32/portasm.S
374        ThirdParty/GCC/Xtensa_ESP32/xtensa_context.S
375        ThirdParty/GCC/Xtensa_ESP32/xtensa_init.c
376        ThirdParty/GCC/Xtensa_ESP32/xtensa_intr_asm.S
377        ThirdParty/GCC/Xtensa_ESP32/xtensa_intr.c
378        ThirdParty/GCC/Xtensa_ESP32/xtensa_loadstore_handler.S
379        ThirdParty/GCC/Xtensa_ESP32/xtensa_overlay_os_hook.c
380        ThirdParty/GCC/Xtensa_ESP32/xtensa_vector_defaults.S
381        ThirdParty/GCC/Xtensa_ESP32/xtensa_vectors.S>
382
383    # Renesas (formerly NEC) 78K port for IAR EW78K
384    $<$<STREQUAL:${FREERTOS_PORT},IAR_78K0K>:
385        IAR/78K0R/port.c
386        IAR/78K0R/portasm.s26>
387
388    # ARMv7-A ports for IAR EWARM
389    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CA5_NOGIC>:
390        IAR/ARM_CA5_No_GIC/port.c
391        IAR/ARM_CA5_No_GIC/portASM.s>
392
393    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CA9>:
394        IAR/ARM_CA9/port.c
395        IAR/ARM_CA9/portASM.s>
396
397    # ARMv6-M port for IAR EWARM
398    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM0>:
399        IAR/ARM_CM0/port.c
400        IAR/ARM_CM0/portasm.s>
401
402    # ARMv7-M port for IAR EWARM
403    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM3>:
404        IAR/ARM_CM3/port.c
405        IAR/ARM_CM3/portasm.s>
406
407    # ARMv7E-M ports for IAR EWARM
408    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM4F>:
409        IAR/ARM_CM4F/port.c
410        IAR/ARM_CM4F/portasm.s>
411
412    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM4F_MPU>:
413        IAR/ARM_CM4F_MPU/port.c
414        IAR/ARM_CM4F_MPU/portasm.s
415        IAR/ARM_CM4F_MPU/mpu_wrappers_v2_asm.S>
416
417    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM7>:
418        IAR/ARM_CM7/r0p1/port.c
419        IAR/ARM_CM7/r0p1/portasm.s>
420
421    # ARMv8-M Ports for IAR EWARM
422    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM23_NONSECURE>:
423        IAR/ARM_CM23/non_secure/port.c
424        IAR/ARM_CM23/non_secure/portasm.s
425        IAR/ARM_CM23/non_secure/mpu_wrappers_v2_asm.S>
426
427    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM23_SECURE>:
428        IAR/ARM_CM23/secure/secure_context_port_asm.s
429        IAR/ARM_CM23/secure/secure_context.c
430        IAR/ARM_CM23/secure/secure_heap.c
431        IAR/ARM_CM23/secure/secure_init.c>
432
433    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM23_NTZ_NONSECURE>:
434        IAR/ARM_CM23_NTZ/non_secure/port.c
435        IAR/ARM_CM23_NTZ/non_secure/portasm.s
436        IAR/ARM_CM23_NTZ/non_secure/mpu_wrappers_v2_asm.S>
437
438    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_NONSECURE>:
439        IAR/ARM_CM33/non_secure/port.c
440        IAR/ARM_CM33/non_secure/portasm.s
441        IAR/ARM_CM33/non_secure/mpu_wrappers_v2_asm.S>
442
443    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_SECURE>:
444        IAR/ARM_CM33/secure/secure_context_port_asm.s
445        IAR/ARM_CM33/secure/secure_context.c
446        IAR/ARM_CM33/secure/secure_heap.c
447        IAR/ARM_CM33/secure/secure_init.c>
448
449    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_NTZ_NONSECURE>:
450        IAR/ARM_CM33_NTZ/non_secure/port.c
451        IAR/ARM_CM33_NTZ/non_secure/portasm.s
452        IAR/ARM_CM33_NTZ/non_secure/mpu_wrappers_v2_asm.S>
453
454    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM35P_NONSECURE>:
455        IAR/ARM_CM35P/non_secure/port.c
456        IAR/ARM_CM35P/non_secure/portasm.s
457        IAR/ARM_CM35P/non_secure/mpu_wrappers_v2_asm.S>
458
459    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM35P_SECURE>:
460        IAR/ARM_CM35P/secure/secure_context_port_asm.s
461        IAR/ARM_CM35P/secure/secure_context.c
462        IAR/ARM_CM35P/secure/secure_heap.c
463        IAR/ARM_CM35P/secure/secure_init.c>
464
465    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM35P_NTZ_NONSECURE>:
466        IAR/ARM_CM35P_NTZ/non_secure/port.c
467        IAR/ARM_CM35P_NTZ/non_secure/portasm.s
468        IAR/ARM_CM35P_NTZ/non_secure/mpu_wrappers_v2_asm.S>
469
470    # ARMv8.1-M ports for IAR EWARM
471    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_NONSECURE>:
472        IAR/ARM_CM55/non_secure/port.c
473        IAR/ARM_CM55/non_secure/portasm.s
474        IAR/ARM_CM55/non_secure/mpu_wrappers_v2_asm.S>
475
476    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_SECURE>:
477        IAR/ARM_CM55/secure/secure_context_port_asm.s
478        IAR/ARM_CM55/secure/secure_context.c
479        IAR/ARM_CM55/secure/secure_heap.c
480        IAR/ARM_CM55/secure/secure_init.c>
481
482    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_NTZ_NONSECURE>:
483        IAR/ARM_CM55_NTZ/non_secure/port.c
484        IAR/ARM_CM55_NTZ/non_secure/portasm.s
485        IAR/ARM_CM55_NTZ/non_secure/mpu_wrappers_v2_asm.S>
486
487    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_NONSECURE>:
488        IAR/ARM_CM85/non_secure/port.c
489        IAR/ARM_CM85/non_secure/portasm.s
490        IAR/ARM_CM85/non_secure/mpu_wrappers_v2_asm.S>
491
492    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_SECURE>:
493        IAR/ARM_CM85/secure/secure_context_port_asm.s
494        IAR/ARM_CM85/secure/secure_context.c
495        IAR/ARM_CM85/secure/secure_heap.c
496        IAR/ARM_CM85/secure/secure_init.c>
497
498    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_NTZ_NONSECURE>:
499        IAR/ARM_CM85_NTZ/non_secure/port.c
500        IAR/ARM_CM85_NTZ/non_secure/portasm.s
501        IAR/ARM_CM85_NTZ/non_secure/mpu_wrappers_v2_asm.S>
502
503    # ARMv7-R Ports for IAR EWARM
504    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CRX_NOGIC>:
505        IAR/ARM_CRx_No_GIC/port.c
506        IAR/ARM_CRx_No_GIC/portASM.s>
507
508    # Microchip (formerly Atmel) AVR8 ports for IAR EWAVR
509    $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEGA323>:
510        IAR/ATMega323/port.c
511        IAR/ATMega323/portmacro.s90>
512
513    $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR_AVRDX>:
514        IAR/AVR_AVRDx/port.c
515        IAR/AVR_AVRDx/portmacro.s90>
516
517    $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR_MEGA0>:
518        IAR/AVR_Mega0/port.c
519        IAR/AVR_Mega0/portmacro.s90>
520
521    # Microchip (formerly Atmel) AVR32 port for IAR Embedded Workbench for AVR32
522    $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR32_UC3>:
523        IAR/AVR32_UC3/exception.s82
524        IAR/AVR32_UC3/port.c
525        IAR/AVR32_UC3/read.c
526        IAR/AVR32_UC3/write.c>
527
528    # Texas Instruments MSP430 ports for IAR Embedded Workbench for MSP430
529    $<$<STREQUAL:${FREERTOS_PORT},IAR_MSP430>:
530        IAR/MSP430/port.c
531        IAR/MSP430/portext.s43>
532
533    $<$<STREQUAL:${FREERTOS_PORT},IAR_MSP430X>:
534        IAR/MSP430X/port.c
535        IAR/MSP430X/portext.s43>
536
537    # RISC-V architecture port for IAR Embedded Workbench for RISC-V
538    $<$<STREQUAL:${FREERTOS_PORT},IAR_RISC_V>:
539        IAR/RISC-V/port.c
540        IAR/RISC-V/portASM.s>
541
542    $<$<STREQUAL:${FREERTOS_PORT},IAR_RISC_V_GENERIC>:
543        IAR/RISC-V/port.c
544        IAR/RISC-V/portASM.s>
545
546    # Renesas RL78 port for IAR EWRL78
547    $<$<STREQUAL:${FREERTOS_PORT},IAR_RL78>:
548        IAR/RL78/port.c
549        IAR/RL78/portasm.s87>
550
551    # Renesas RX architecture ports for IAR EWRX
552    $<$<STREQUAL:${FREERTOS_PORT},IAR_RX100>:
553        IAR/RX100/port.c
554        IAR/RX100/port_asm.s>
555
556    $<$<STREQUAL:${FREERTOS_PORT},IAR_RX600>:
557        IAR/RX600/port.c
558        IAR/RX600/port_asm.s>
559
560    $<$<STREQUAL:${FREERTOS_PORT},IAR_RX700_V3_DPFPU>:
561        IAR/RX700v3_DPFPU/port.c>
562
563    $<$<STREQUAL:${FREERTOS_PORT},IAR_RX_V2>:
564        IAR/RXv2/port.c
565        IAR/RXv2/port_asm.s>
566
567    # Renesas (formerly NEC) V850ES port for IAR EWV850
568    $<$<STREQUAL:${FREERTOS_PORT},IAR_V850ES_FX3>:
569        IAR/V850ES/port.c
570        IAR/V850ES/portasm_Fx3.s85>
571
572    $<$<STREQUAL:${FREERTOS_PORT},IAR_V850ES_HX3>:
573        IAR/V850ES/port.c
574        IAR/V850ES/portasm_Hx2.s85>
575
576    # ARMv4T ARM7TDMI ports for IAR Embedded Workbench for ARM
577    $<$<STREQUAL:${FREERTOS_PORT},IAR_STR71X>:
578        IAR/STR71x/port.c
579        IAR/STR71x/portasm.s79>
580
581    $<$<STREQUAL:${FREERTOS_PORT},IAR_STR75X>:
582        IAR/STR75x/port.c
583        IAR/STR75x/portasm.s79>
584
585    $<$<STREQUAL:${FREERTOS_PORT},IAR_LPC2000>:
586        IAR/LPC2000/port.c
587        IAR/LPC2000/portasm.s79>
588
589    $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEL_SAM7S64>:
590        IAR/AtmelSAM7S64/port.c
591        IAR/AtmelSAM7S64/portasm.s79>
592
593    # ARMv5TE ARM926 ports for IAR Embedded Workbench for ARM
594    $<$<STREQUAL:${FREERTOS_PORT},IAR_STR91X>:
595        IAR/STR91x/port.c
596        IAR/STR91x/portasm.s79>
597
598    $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEL_SAM9XE>:
599        IAR/AtmelSAM9XE/port.c
600        IAR/AtmelSAM9XE/portasm.s79>
601
602    # ARM Cortex-M4F port for the MikroElektronika MikroC compiler
603    $<$<STREQUAL:${FREERTOS_PORT},MIKROC_ARM_CM4F>:
604        MikroC/ARM_CM4F/port.c>
605
606    # Microchip PIC18 8-bit MCU port for MPLAB XC8
607    $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC18F>:
608        MPLAB/PIC18F/port.c>
609
610    # Microchip PIC24 16-bit MCU port for MPLAB XC16
611    $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC24>:
612        MPLAB/PIC24_dsPIC/port.c
613        MPLAB/PIC24_dsPIC/portasm_PIC24.S> # TODO: What to do with portasm_dsPIC.S ?
614
615    # Microchip MIPS 32-Bit MCU ports for MPLAB XC32
616    $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MEC14XX>:
617        MPLAB/PIC32MEC14xx/port.c
618        MPLAB/PIC32MEC14xx/port_asm.S>
619
620    $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MX>:
621        MPLAB/PIC32MX/port.c
622        MPLAB/PIC32MX/port_asm.S>
623
624    $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MZ>:
625        MPLAB/PIC32MZ/port.c
626        MPLAB/PIC32MZ/port_asm.S>
627
628    # Windows Simulator for Microsoft Visual C Compiler and MinGW GCC
629    $<$<STREQUAL:${FREERTOS_PORT},MSVC_MINGW>:
630        MSVC-MingW/port.c>
631
632    # 16 bit DOS ports for Open Watcom
633    $<$<STREQUAL:${FREERTOS_PORT},OWATCOM_16BIT_DOS_FLSH186>:
634        oWatcom/16BitDOS/common/portcomn.c
635        oWatcom/16BitDOS/Flsh186/port.c>
636
637    $<$<STREQUAL:${FREERTOS_PORT},OWATCOM_16BIT_DOS_PC>:
638        oWatcom/16BitDOS/common/portcomn.c
639        oWatcom/16BitDOS/PC/port.c>
640
641    $<$<STREQUAL:${FREERTOS_PORT},PARADIGM_TERN_EE_LARGE>:
642        Paradigm/Tern_EE/large_untested/port.c>
643
644    $<$<STREQUAL:${FREERTOS_PORT},PARADIGM_TERN_EE_SMALL>:
645        Paradigm/Tern_EE/small/port.c>
646
647    # Renesas RX mcu ports for Renesas CC-RX
648    $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX100>:
649        Renesas/RX100/port.c
650        Renesas/RX100/port_asm.src>
651
652    $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX200>:
653        Renesas/RX200/port.c
654        Renesas/RX200/port_asm.src>
655
656    $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX600>:
657        Renesas/RX600/port.c
658        Renesas/RX600/port_asm.src>
659
660    $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX600_V2>:
661        Renesas/RX600v2/port.c
662        Renesas/RX600v2/port_asm.src>
663
664    $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX700_V3_DPFPU>:
665        Renesas/RX700v3_DPFPU/port.c
666        Renesas/RX700v3_DPFPU/port_asm.src>
667
668    # Renesas (formerly  Hitach) SHA2 SuperH port for the Renesas SH C Compiler
669    $<$<STREQUAL:${FREERTOS_PORT},RENESAS_SH2A_FPU>:
670        Renesas/SH2A_FPU/port.c
671        Renesas/SH2A_FPU/portasm.src>
672
673    # Texas Instruments MSP430 port for Rowley CrossWorks
674    $<$<STREQUAL:${FREERTOS_PORT},ROWLEY_MSP430F449>:
675        Rowley/MSP430F449/port.c
676        Rowley/MSP430F449/portext.asm>
677
678    # ARMv7-A Cortex-A9 port for ARM RVDS / armcc
679    $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CA9>:
680        RVDS/ARM_CA9/port.c
681        RVDS/ARM_CA9/portASM.s>
682
683    # ARMv6-M port for ARM RVDS / armcc
684    $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM0>:
685        RVDS/ARM_CM0/port.c>
686
687    # ARMv7-M port for ARM RVDS / armcc
688    $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM3>:
689        RVDS/ARM_CM3/port.c>
690
691    # ARMv7E-M ports for ARM RVDS / armcc
692    $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM4_MPU>:
693        RVDS/ARM_CM4_MPU/port.c
694        RVDS/ARM_CM4_MPU/mpu_wrappers_v2_asm.c>
695
696    $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM4F>:
697        RVDS/ARM_CM4F/port.c>
698
699    $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM7>:
700        RVDS/ARM_CM7/r0p1/port.c>
701
702    # ARMv4T / ARM7TDMI LPC21XX port for ARM RVDS / armcc
703    $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM7_LPC21XX>:
704        RVDS/ARM7_LPC21xx/port.c
705        RVDS/ARM7_LPC21xx/portASM.s>
706
707    # Cygnal c8051 port for SDCC (Small Device C Compiler)
708    $<$<STREQUAL:${FREERTOS_PORT},SDCC_CYGNAL>:
709        SDCC/Cygnal/port.c>
710
711    # Infineon (formerly Fujitsu, Spansion, Cypress) MB9x ports for Softune C Compiler
712    $<$<STREQUAL:${FREERTOS_PORT},SOFTUNE_MB91460>:
713        Softune/MB91460/__STD_LIB_sbrk.c
714        Softune/MB91460/port.c>
715
716    $<$<STREQUAL:${FREERTOS_PORT},SOFTUNE_MB96340>:
717        Softune/MB96340/__STD_LIB_sbrk.c
718        Softune/MB96340/port.c>
719
720    # ARMv7E-M (Cortex-M4F) port for TASKING VX-toolset for ARM
721    $<$<STREQUAL:${FREERTOS_PORT},TASKING_ARM_CM4F>:
722        Tasking/ARM_CM4F/port.c
723        Tasking/ARM_CM4F/port_asm.asm>
724
725    # Port for C-SKY T-HEAD CK802
726    $<$<STREQUAL:${FREERTOS_PORT},CDK_THEAD_CK802>:
727        ThirdParty/CDK/T-HEAD_CK802/port.c
728        ThirdParty/CDK/T-HEAD_CK802/portasm.S>
729
730    # Tensilica Xtensa port for XCC
731    $<$<STREQUAL:${FREERTOS_PORT},XCC_XTENSA>:
732        ThirdParty/XCC/Xtensa/port.c
733        ThirdParty/XCC/Xtensa/portasm.S
734        ThirdParty/XCC/Xtensa/portclib.c
735        ThirdParty/XCC/Xtensa/xtensa_context.S
736        ThirdParty/XCC/Xtensa/xtensa_init.c
737        ThirdParty/XCC/Xtensa/xtensa_intr_asm.S
738        ThirdParty/XCC/Xtensa/xtensa_intr.c
739        ThirdParty/XCC/Xtensa/xtensa_overlay_os_hook.c
740        ThirdParty/XCC/Xtensa/xtensa_vectors.S>
741
742    # Microchip PIC18 port for WIZ-C
743    $<$<STREQUAL:${FREERTOS_PORT},WIZC_PIC18>:
744        WizC/PIC18/port.c
745        WizC/PIC18/Drivers/Tick/isrTick.c
746        WizC/PIC18/Drivers/Tick/Tick.c>
747)
748
749if( FREERTOS_PORT MATCHES "GCC_ARM_CM(3|4)_MPU" OR
750    FREERTOS_PORT STREQUAL "IAR_ARM_CM4F_MPU" OR
751    FREERTOS_PORT STREQUAL "RVDS_ARM_CM4_MPU" OR
752    FREERTOS_PORT MATCHES "GCC_ARM_CM(23|33|55|85)_NTZ_NONSECURE" OR
753    FREERTOS_PORT MATCHES "GCC_ARM_CM(23|33|55|85)_NONSECURE" OR
754    FREERTOS_PORT MATCHES "GCC_ARM_CM(33|55|85)_TFM" OR
755    FREERTOS_PORT MATCHES "IAR_ARM_CM(23|33|55|85)_NTZ_NONSECURE" OR
756    FREERTOS_PORT MATCHES "IAR_ARM_CM(23|33|55|85)_NONSECURE"
757)
758    target_sources(freertos_kernel_port PRIVATE
759        Common/mpu_wrappers.c
760        Common/mpu_wrappers_v2.c
761    )
762endif()
763add_library(freertos_kernel_port_headers INTERFACE)
764
765target_include_directories(freertos_kernel_port_headers INTERFACE
766    # TEMPLATE Port
767    $<$<STREQUAL:${FREERTOS_PORT},TEMPLATE>:${CMAKE_CURRENT_LIST_DIR}/template>
768
769        # 16-Bit DOS ports for BCC
770    $<$<STREQUAL:${FREERTOS_PORT},BCC_16BIT_DOS_FLSH186>:
771        ${CMAKE_CURRENT_LIST_DIR}/BCC/16BitDOS/common
772        ${CMAKE_CURRENT_LIST_DIR}/BCC/16BitDOS/Flsh186>
773
774    $<$<STREQUAL:${FREERTOS_PORT},BCC_16BIT_DOS_PC>:
775        ${CMAKE_CURRENT_LIST_DIR}/BCC/16BitDOS/common
776        ${CMAKE_CURRENT_LIST_DIR}/BCC/16BitDOS/PC>
777
778    # ARMv7-M port for Texas Instruments Code Composer Studio
779    $<$<STREQUAL:${FREERTOS_PORT},CCS_ARM_CM3>:${CMAKE_CURRENT_LIST_DIR}/CCS/ARM_CM3>
780
781    # ARMv7E-M port for Texas Instruments Code Composer Studio
782    $<$<STREQUAL:${FREERTOS_PORT},CCS_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/CCS/ARM_CM4F>
783
784    # ARMv7-R port for Texas Instruments Code Composer Studio
785    $<$<STREQUAL:${FREERTOS_PORT},CCS_ARM_CR4>:${CMAKE_CURRENT_LIST_DIR}/CCS/ARM_Cortex-R4>
786
787    # Texas Instruments MSP430 port for Texas Instruments Code Composer Studio
788    $<$<STREQUAL:${FREERTOS_PORT},CCS_MSP430X>:${CMAKE_CURRENT_LIST_DIR}/CCS/MSP430X>
789
790    # NXP (formerly Motorola, Freescale) Cold Fire and 68HCS12 ports for Code Warrior
791    $<$<STREQUAL:${FREERTOS_PORT},CODEWARRIOR_COLDFIRE_V1>:${CMAKE_CURRENT_LIST_DIR}/CodeWarrior/ColdFire_V1>
792    $<$<STREQUAL:${FREERTOS_PORT},CODEWARRIOR_COLDFIRE_V2>:${CMAKE_CURRENT_LIST_DIR}/CodeWarrior/ColdFire_V2>
793    $<$<STREQUAL:${FREERTOS_PORT},CODEWARRIOR_HCS12>:${CMAKE_CURRENT_LIST_DIR}/CodeWarrior/HCS12>
794
795    # ARMv7-A port for GCC
796    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CA9>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CA9>
797
798    # ARMv8-A ports for GCC
799    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_AARCH64>:${CMAKE_CURRENT_LIST_DIR}/GCC/Arm_AARCH64>
800    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_AARCH64_SRE>:${CMAKE_CURRENT_LIST_DIR}/GCC/Arm_AARCH64_SRE>
801
802    # ARMv6-M port for GCC
803    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM0>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM0>
804
805    # ARMv6-M / Cortex-M0 Raspberry PI RP2040 port for GCC
806    $<$<STREQUAL:${FREERTOS_PORT},GCC_RP2040>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/RP2040/include>
807
808    # ARMv7-M ports for GCC
809    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM3>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM3>
810    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM3_MPU>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM3_MPU>
811
812    # ARMv7E-M ports for GCC
813    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM4_MPU>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM4_MPU>
814    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM4F>
815    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM7>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM7/r0p1>
816
817    # ARMv8-M ports for GCC
818    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM23_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM23/non_secure>
819    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM23_SECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM23/secure>
820    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM23_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM23_NTZ/non_secure>
821
822    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM33/non_secure>
823    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_SECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM33/secure>
824    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM33_NTZ/non_secure>
825    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_TFM>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM33_NTZ/non_secure>
826
827    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM35P_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM35P/non_secure>
828    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM35P_SECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM35P/secure>
829    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM35P_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM35P_NTZ/non_secure>
830
831    # ARMv8.1-M ports for GCC
832    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM55/non_secure>
833    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_SECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM55/secure>
834    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM55_NTZ/non_secure>
835    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM55_TFM>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM55_NTZ/non_secure>
836
837    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM85/non_secure>
838    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_SECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM85/secure>
839    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM85_NTZ/non_secure>
840    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_TFM>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM85_NTZ/non_secure>
841
842    # ARMv7-R ports for GCC
843    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CR5>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CR5>
844    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CRX_MPU>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CRx_MPU>
845    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CRX_NOGIC>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CRx_No_GIC>
846
847    # ARMv4T ARM7TDMI ports for GCC
848    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_AT91FR40008>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM7_AT91FR40008>
849    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_AT91SAM7S>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM7_AT91SAM7S>
850    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_LPC2000>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM7_LPC2000>
851    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_LPC23XX>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM7_LPC23xx>
852    $<$<STREQUAL:${FREERTOS_PORT},GCC_STR75X>:${CMAKE_CURRENT_LIST_DIR}/GCC/STR75x>
853
854    # Microchip (formerly Ateml) AVR8 ports for GCC
855    $<$<STREQUAL:${FREERTOS_PORT},GCC_ATMEGA323>:${CMAKE_CURRENT_LIST_DIR}/GCC/ATMega323>
856    $<$<STREQUAL:${FREERTOS_PORT},GCC_ATMEGA>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/ATmega>
857    $<$<STREQUAL:${FREERTOS_PORT},GCC_AVRDX>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/Partner-Supported-Ports/GCC/AVR_AVRDx>
858    $<$<STREQUAL:${FREERTOS_PORT},GCC_AVR_MEGA0>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/Partner-Supported-Ports/GCC/AVR_Mega0>
859
860    # Microchip (formerly Ateml) AVR32 port for GCC
861    $<$<STREQUAL:${FREERTOS_PORT},GCC_AVR32_UC3>:${CMAKE_CURRENT_LIST_DIR}/GCC/AVR32_UC3>
862
863    # NXP (formerly Motorola, Freescale) Cold Fire and 68HCS12 ports for GCC
864    $<$<STREQUAL:${FREERTOS_PORT},GCC_COLDFIRE_V2>:${CMAKE_CURRENT_LIST_DIR}/GCC/ColdFire_V2>
865    $<$<STREQUAL:${FREERTOS_PORT},GCC_HCS12>:${CMAKE_CURRENT_LIST_DIR}/GCC/HCS12>
866
867    # Cortus APS3 soft core port for GCC
868    $<$<STREQUAL:${FREERTOS_PORT},GCC_CORTUS_APS3>:${CMAKE_CURRENT_LIST_DIR}/GCC/CORTUS_APS3>
869
870    # Renesas (formerly Hitach) H8S port for GCC
871    $<$<STREQUAL:${FREERTOS_PORT},GCC_H8S2329>:${CMAKE_CURRENT_LIST_DIR}/GCC/H8S2329>
872
873    # x86 / IA32 flat memory model port for GCC
874    $<$<STREQUAL:${FREERTOS_PORT},GCC_IA32_FLAT>:${CMAKE_CURRENT_LIST_DIR}/GCC/IA32_flat>
875
876    # Intel (formerly Altera) NIOS II soft core port for GCC
877    $<$<STREQUAL:${FREERTOS_PORT},GCC_NIOSII>:${CMAKE_CURRENT_LIST_DIR}/GCC/NiosII>
878
879    # Texas Instruments MSP430 port for GCC
880    $<$<STREQUAL:${FREERTOS_PORT},GCC_MSP430F449>:${CMAKE_CURRENT_LIST_DIR}/GCC/MSP430F449>
881
882    # Xilinx MicroBlaze soft core ports for GCC
883    $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE>:${CMAKE_CURRENT_LIST_DIR}/GCC/MicroBlaze>
884    $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE_V8>:${CMAKE_CURRENT_LIST_DIR}/GCC/MicroBlazeV8>
885    $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE_V9>:${CMAKE_CURRENT_LIST_DIR}/GCC/MicroBlazeV9>
886
887    # Xilinx PCC4XX soft core ports for GCC
888    $<$<STREQUAL:${FREERTOS_PORT},GCC_PPC405_XILINX>:${CMAKE_CURRENT_LIST_DIR}/GCC/PPC405_Xilinx>
889    $<$<STREQUAL:${FREERTOS_PORT},GCC_PPC440_XILINX>:${CMAKE_CURRENT_LIST_DIR}/GCC/PPC440_Xilinx>
890
891    # RISC-V architecture ports for GCC
892    $<$<STREQUAL:${FREERTOS_PORT},GCC_RISC_V>:
893        ${CMAKE_CURRENT_LIST_DIR}/GCC/RISC-V
894        ${CMAKE_CURRENT_LIST_DIR}/GCC/RISC-V/chip_specific_extensions/RISCV_MTIME_CLINT_no_extensions>
895
896    $<$<STREQUAL:${FREERTOS_PORT},GCC_RISC_V_PULPINO_VEGA_RV32M1RM>:
897        ${CMAKE_CURRENT_LIST_DIR}/GCC/RISC-V
898        ${CMAKE_CURRENT_LIST_DIR}/GCC/RISC-V/chip_specific_extensions/Pulpino_Vega_RV32M1RM>
899
900    $<$<STREQUAL:${FREERTOS_PORT},GCC_RISC_V_GENERIC>:
901        ${CMAKE_CURRENT_LIST_DIR}/GCC/RISC-V
902        ${CMAKE_CURRENT_LIST_DIR}/GCC/RISC-V/chip_specific_extensions/${FREERTOS_RISCV_EXTENSION}>
903
904    # Renesas RL78 port for GCC
905    $<$<STREQUAL:${FREERTOS_PORT},GCC_RL78>:${CMAKE_CURRENT_LIST_DIR}/GCC/RL78>
906
907    # Renesas RX architecture ports for GCC
908    $<$<STREQUAL:${FREERTOS_PORT},GCC_RX100>:${CMAKE_CURRENT_LIST_DIR}/GCC/RX100>
909    $<$<STREQUAL:${FREERTOS_PORT},GCC_RX200>:${CMAKE_CURRENT_LIST_DIR}/GCC/RX200>
910    $<$<STREQUAL:${FREERTOS_PORT},GCC_RX600>:${CMAKE_CURRENT_LIST_DIR}/GCC/RX600>
911    $<$<STREQUAL:${FREERTOS_PORT},GCC_RX600_V2>:${CMAKE_CURRENT_LIST_DIR}/GCC/RX600v2>
912    $<$<STREQUAL:${FREERTOS_PORT},GCC_RX700_V3_DPFPU>:${CMAKE_CURRENT_LIST_DIR}/GCC/RX700v3_DPFPU>
913
914    # Infineon TriCore 1782 port for GCC
915    $<$<STREQUAL:${FREERTOS_PORT},GCC_TRICORE_1782>:${CMAKE_CURRENT_LIST_DIR}/GCC/TriCore_1782>
916
917    # Synopsys ARC architecture ports for GCC
918    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARC_EM_HS>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/ARC_EM_HS>
919    $<$<STREQUAL:${FREERTOS_PORT},GCC_ARC_V1>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/ARC_v1>
920
921    # Posix Simulator port for GCC
922    $<$<STREQUAL:${FREERTOS_PORT},GCC_POSIX>:
923        ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/Posix
924        ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/Posix/utils>
925
926    # Xtensa LX / Espressif ESP32 port for GCC
927    $<$<STREQUAL:${FREERTOS_PORT},GCC_XTENSA_ESP32>:
928        ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/Xtensa_ESP32
929        ${CMAKE_CURRENT_LIST_DIR}/ThirdParty/GCC/Xtensa_ESP32/include>
930
931    # Renesas (formerly NEC) 78K port for IAR EW78K
932    $<$<STREQUAL:${FREERTOS_PORT},IAR_78K0K>:${CMAKE_CURRENT_LIST_DIR}/IAR/78K0R>
933
934    # ARMv7-A ports for IAR EWARM
935    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CA5_NOGIC>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CA5_No_GIC>
936    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CA9>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CA9>
937
938    # ARMv6-M port for IAR EWARM
939    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM0>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM0>
940
941    # ARMv7-M port for IAR EWARM
942    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM3>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM3>
943
944    # ARMv7E-M ports for IAR EWARM
945    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM4F>
946    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM4F_MPU>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM4F_MPU>
947    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM7>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM7/r0p1>
948
949    # ARMv8-M Ports for IAR EWARM
950    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM23_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM23/non_secure>
951    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM23_SECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM23/secure>
952    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM23_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM23_NTZ/non_secure>
953
954    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM33/non_secure>
955    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_SECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM33/secure>
956    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM33_NTZ/non_secure>
957
958    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM35P_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM35P/non_secure>
959    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM35P_SECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM35P/secure>
960    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM35P_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM35P_NTZ/non_secure>
961
962    # ARMv8.1-M ports for IAR EWARM
963    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM55/non_secure>
964    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_SECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM55/secure>
965    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM55_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM55_NTZ/non_secure>
966
967    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM85/non_secure>
968    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_SECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM85/secure>
969    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_NTZ_NONSECURE>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM85_NTZ/non_secure>
970
971    # ARMv7-R Ports for IAR EWARM
972    $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CRX_NOGIC>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CRx_No_GIC>
973
974    # ARMv4T ARM7TDMI ports for IAR Embedded Workbench for ARM
975    $<$<STREQUAL:${FREERTOS_PORT},IAR_STR71X>:${CMAKE_CURRENT_LIST_DIR}/IAR/STR71x>
976    $<$<STREQUAL:${FREERTOS_PORT},IAR_STR75X>:${CMAKE_CURRENT_LIST_DIR}/IAR/STR75x>
977    $<$<STREQUAL:${FREERTOS_PORT},IAR_LPC2000>:${CMAKE_CURRENT_LIST_DIR}/IAR/LPC2000>
978    $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEL_SAM7S64>:${CMAKE_CURRENT_LIST_DIR}/IAR/AtmelSAM7S64>
979
980    # ARMv5TE ARM926 ports for IAR Embedded Workbench for ARM
981    $<$<STREQUAL:${FREERTOS_PORT},IAR_STR91X>:${CMAKE_CURRENT_LIST_DIR}/IAR/STR91x>
982    $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEL_SAM9XE>:${CMAKE_CURRENT_LIST_DIR}/IAR/AtmelSAM9XE>
983
984    # Microchip (formerly Atmel) AVR8 ports for IAR EWAVR
985    $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEGA323>:${CMAKE_CURRENT_LIST_DIR}/IAR/ATMega323>
986    $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR_AVRDX>:${CMAKE_CURRENT_LIST_DIR}/IAR/AVR_AVRDx>
987    $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR_MEGA0>:${CMAKE_CURRENT_LIST_DIR}/IAR/AVR_Mega0>
988
989    # Microchip (formerly Atmel) AVR32 port for IAR Embedded Workbench for AVR32
990    $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR32_UC3>:${CMAKE_CURRENT_LIST_DIR}/IAR/AVR32_UC3>
991
992    # Texas Instruments MSP430 ports for IAR Embedded Workbench for MSP430
993    $<$<STREQUAL:${FREERTOS_PORT},IAR_MSP430>:${CMAKE_CURRENT_LIST_DIR}/IAR/MSP430>
994    $<$<STREQUAL:${FREERTOS_PORT},IAR_MSP430X>:${CMAKE_CURRENT_LIST_DIR}/IAR/MSP430X>
995
996    # RISC-V architecture port for IAR Embedded Workbench for RISC-V
997    $<$<STREQUAL:${FREERTOS_PORT},IAR_RISC_V>:
998        ${CMAKE_CURRENT_LIST_DIR}/IAR/RISC-V
999        ${CMAKE_CURRENT_LIST_DIR}/IAR/RISC-V/chip_specific_extensions/RV32I_CLINT_no_extensions>
1000
1001    $<$<STREQUAL:${FREERTOS_PORT},IAR_RISC_V_GENERIC>:
1002        ${CMAKE_CURRENT_LIST_DIR}/IAR/RISC-V
1003        ${CMAKE_CURRENT_LIST_DIR}/IAR/RISC-V/chip_specific_extensions/${FREERTOS_RISCV_EXTENSION}>
1004
1005    # Renesas RL78 port for IAR EWRL78
1006    $<$<STREQUAL:${FREERTOS_PORT},IAR_RL78>:${CMAKE_CURRENT_LIST_DIR}/IAR/RL78>
1007
1008    # Renesas RX architecture ports for IAR EWRX
1009    $<$<STREQUAL:${FREERTOS_PORT},IAR_RX100>:${CMAKE_CURRENT_LIST_DIR}/IAR/RX100>
1010    $<$<STREQUAL:${FREERTOS_PORT},IAR_RX600>:${CMAKE_CURRENT_LIST_DIR}/IAR/RX600>
1011    $<$<STREQUAL:${FREERTOS_PORT},IAR_RX700_V3_DPFPU>:${CMAKE_CURRENT_LIST_DIR}/IAR/RX700v3_DPFPU>
1012    $<$<STREQUAL:${FREERTOS_PORT},IAR_RX_V2>:${CMAKE_CURRENT_LIST_DIR}/IAR/RXv2>
1013
1014    # Renesas (formerly NEC) V850ES port for IAR EWV850
1015    $<$<STREQUAL:${FREERTOS_PORT},IAR_V850ES_FX3>:${CMAKE_CURRENT_LIST_DIR}/IAR/V850ES>
1016    $<$<STREQUAL:${FREERTOS_PORT},IAR_V850ES_HX3>:${CMAKE_CURRENT_LIST_DIR}/IAR/V850ES>
1017
1018    # ARM Cortex-M4F port for the MikroElektronika MikroC compiler
1019    $<$<STREQUAL:${FREERTOS_PORT},MIKROC_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/MikroC/ARM_CM4F>
1020
1021    # Microchip PIC18 8-bit MCU port for MPLAB XC8
1022    $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC18F>:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC18F>
1023
1024    # Microchip PIC24 16-bit MCU port for MPLAB XC16
1025    $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC24>:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC24_dsPIC>
1026
1027    # Microchip MIPS 32-Bit MCU ports for MPLAB XC32
1028    $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MEC14XX>:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC32MEC14xx>
1029    $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MX>:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC32MX>
1030    $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MZ>:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC32MZ>
1031
1032    # Windows Simulator for Microsoft Visual C Compiler and MinGW GCC
1033    $<$<STREQUAL:${FREERTOS_PORT},MSVC_MINGW>:${CMAKE_CURRENT_LIST_DIR}/MSVC-MingW>
1034
1035    # 16 bit DOS ports for Open Watcom
1036    $<$<STREQUAL:${FREERTOS_PORT},OWATCOM_16BIT_DOS_FLSH186>:
1037        ${CMAKE_CURRENT_LIST_DIR}/oWatcom/16BitDOS/common
1038        ${CMAKE_CURRENT_LIST_DIR}/oWatcom/16BitDOS/Flsh186>
1039    $<$<STREQUAL:${FREERTOS_PORT},OWATCOM_16BIT_DOS_PC>:
1040        ${CMAKE_CURRENT_LIST_DIR}/oWatcom/16BitDOS/common
1041        ${CMAKE_CURRENT_LIST_DIR}/oWatcom/16BitDOS/PC>
1042
1043    $<$<STREQUAL:${FREERTOS_PORT},PARADIGM_TERN_EE_LARGE>:${CMAKE_CURRENT_LIST_DIR}/Paradigm/Tern_EE/large_untested>
1044    $<$<STREQUAL:${FREERTOS_PORT},PARADIGM_TERN_EE_SMALL>:${CMAKE_CURRENT_LIST_DIR}/Paradigm/Tern_EE/small>
1045
1046    # Renesas RX mcu ports for Renesas CC-RX
1047    $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX100>:${CMAKE_CURRENT_LIST_DIR}/Renesas/RX100>
1048    $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX200>:${CMAKE_CURRENT_LIST_DIR}/Renesas/RX200>
1049    $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX600>:${CMAKE_CURRENT_LIST_DIR}/Renesas/RX600>
1050    $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX600_V2>:${CMAKE_CURRENT_LIST_DIR}/Renesas/RX600v2>
1051    $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX700_V3_DPFPU>:${CMAKE_CURRENT_LIST_DIR}/Renesas/RX700v3_DPFPU>
1052
1053    # Renesas (formerly  Hitach) SHA2 SuperH port for the Renesas SH C Compiler
1054    $<$<STREQUAL:${FREERTOS_PORT},RENESAS_SH2A_FPU>:${CMAKE_CURRENT_LIST_DIR}/Renesas/SH2A_FPU>
1055
1056    # Texas Instruments MSP430 port for Rowley CrossWorks
1057    $<$<STREQUAL:${FREERTOS_PORT},ROWLEY_MSP430F449>:${CMAKE_CURRENT_LIST_DIR}/Rowley/MSP430F449>
1058
1059    # ARMv7-A Cortex-A9 port for ARM RVDS / armcc
1060    $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CA9>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CA9>
1061
1062    # ARMv6-M port for ARM RVDS / armcc
1063    $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM0>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM0>
1064
1065    # ARMv7-M port for ARM RVDS / armcc
1066    $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM3>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM3>
1067
1068    # ARMv7E-M ports for ARM RVDS / armcc
1069    $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM4_MPU>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM4_MPU>
1070    $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM4F>
1071    $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM7>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM7/r0p1>
1072
1073    # ARMv4T / ARM7TDMI LPC21XX port for ARM RVDS / armcc
1074    $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM7_LPC21XX>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM7_LPC21xx>
1075
1076    # Cygnal c8051 port for SDCC (Small Device C Compiler)
1077    $<$<STREQUAL:${FREERTOS_PORT},SDCC_CYGNAL>:${CMAKE_CURRENT_LIST_DIR}/SDCC/Cygnal>
1078
1079    # Infineon (formerly Fujitsu, Spansion, Cypress) MB9x ports for Softune C Compiler
1080    $<$<STREQUAL:${FREERTOS_PORT},SOFTUNE_MB91460>:${CMAKE_CURRENT_LIST_DIR}/Softune/MB91460>
1081    $<$<STREQUAL:${FREERTOS_PORT},SOFTUNE_MB96340>:${CMAKE_CURRENT_LIST_DIR}/Softune/MB96340>
1082
1083    # ARMv7E-M (Cortex-M4F) port for TASKING VX-toolset for ARM
1084    $<$<STREQUAL:${FREERTOS_PORT},TASKING_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/Tasking/ARM_CM4F>
1085
1086    # Port for C-SKY T-HEAD CK802
1087    $<$<STREQUAL:${FREERTOS_PORT},CDK_THEAD_CK802>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/CDK/T-HEAD_CK802>
1088
1089    # Tensilica Xtensa port for XCC
1090    $<$<STREQUAL:${FREERTOS_PORT},XCC_XTENSA>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/XCC/Xtensa>
1091
1092    # Microchip PIC18 port for WIZ-C
1093    $<$<STREQUAL:${FREERTOS_PORT},WIZC_PIC18>:${CMAKE_CURRENT_LIST_DIR}/WizC/PIC18>
1094)
1095
1096if(FREERTOS_PORT STREQUAL GCC_POSIX)
1097    find_package(Threads REQUIRED)
1098endif()
1099
1100target_link_libraries(freertos_kernel_port
1101    PUBLIC
1102        $<$<STREQUAL:${FREERTOS_PORT},GCC_RP2040>:pico_base_headers>
1103        $<$<STREQUAL:${FREERTOS_PORT},GCC_XTENSA_ESP32>:idf::esp32>
1104        freertos_kernel_port_headers
1105    PRIVATE
1106        freertos_kernel_include
1107        $<$<STREQUAL:${FREERTOS_PORT},GCC_POSIX>:Threads::Threads>
1108        "$<$<STREQUAL:${FREERTOS_PORT},GCC_RP2040>:hardware_clocks;hardware_exception>"
1109        $<$<STREQUAL:${FREERTOS_PORT},MSVC_MINGW>:winmm> # Windows library which implements timers
1110)
1111