]> begriffs open source - freertos/blob - portable/CMakeLists.txt
Adding in ability to support a library for freertos_config and a custom freertos_kern...
[freertos] / portable / CMakeLists.txt
1 # FreeRTOS internal cmake file. Do not use it in user top-level project
2
3 if (FREERTOS_PORT STREQUAL "A_CUSTOM_PORT")
4     message(STATUS "Using a custom FREERTOS_PORT.")
5     return()
6 endif()
7
8 # FreeRTOS internal cmake file. Do not use it in user top-level project
9
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>
15
16     $<$<STREQUAL:${FREERTOS_PORT},BCC_16BIT_DOS_PC>:
17         BCC/16BitDOS/common/portcomn.c
18         BCC/16BitDOS/PC/port.c>
19
20     # ARMv7-M port for Texas Instruments Code Composer Studio
21     $<$<STREQUAL:${FREERTOS_PORT},CCS_ARM_CM3>:
22         CCS/ARM_CM3/port.c
23         CCS/ARM_CM3/portasm.asm>
24
25     # ARMv7E-M port for Texas Instruments Code Composer Studio
26     $<$<STREQUAL:${FREERTOS_PORT},CCS_ARM_CM4F>:
27         CCS/ARM_CM4F/port.c
28         CCS/ARM_CM4F/portasm.asm>
29
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>
34
35     # Texas Instruments MSP430 port for Texas Instruments Code Composer Studio
36     $<$<STREQUAL:${FREERTOS_PORT},CCS_MSP430X>:
37         CCS/MSP430X/port.c
38         CCS/MSP430X/portext.asm>
39
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>
44
45     $<$<STREQUAL:${FREERTOS_PORT},CODEWARRIOR_COLDFIRE_V2>:
46         CodeWarrior/ColdFire_V2/port.c
47         CodeWarrior/ColdFire_V2/portasm.S>
48
49     $<$<STREQUAL:${FREERTOS_PORT},CODEWARRIOR_HCS12>:
50         CodeWarrior/HCS12/port.c>
51
52     # ARMv7-A port for GCC
53     $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CA9>:
54         GCC/ARM_CA9/port.c
55         GCC/ARM_CA9/portASM.S>
56
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>
61
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>
65
66     # ARMv6-M port for GCC
67     $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM0>:
68         GCC/ARM_CM0/port.c>
69
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>
74
75     # ARMv7-M ports for GCC
76     $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM3>:
77         GCC/ARM_CM3/port.c>
78
79     $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM3_MPU>:
80         GCC/ARM_CM3_MPU/port.c>
81
82     # ARMv7E-M ports for GCC
83     $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM4_MPU>:
84         GCC/ARM_CM4_MPU/port.c>
85
86     $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM4F>:
87         GCC/ARM_CM4F/port.c>
88
89     $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM7>:
90         GCC/ARM_CM7/r0p1/port.c>
91
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>
96
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>
102
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>
106
107     $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM33_NONSECURE>:
108         GCC/ARM_CM33/non_secure/port.c
109         GCC/ARM_CM33/non_secure/portasm.c>
110
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>
116
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>
120
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>
125
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>
130
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>
136
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>
140
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>
145
146     $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM85_NONSECURE>:
147         GCC/ARM_CM85/non_secure/port.c
148         GCC/ARM_CM85/non_secure/portasm.c>
149
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>
155
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>
159
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>
164
165     # ARMv7-R ports for GCC
166     $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CR5>:
167         GCC/ARM_CR5/port.c
168         GCC/ARM_CR5/portASM.S>
169
170     $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CRX_NOGIC>:
171         GCC/ARM_CRx_No_GIC/port.c
172         GCC/ARM_CRx_No_GIC/portASM.S>
173
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>
178
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>
183
184     $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_LPC2000>:
185         GCC/ARM7_LPC2000/port.c
186         GCC/ARM7_LPC2000/portISR.c>
187
188     $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM7_LPC23XX>:
189         GCC/ARM7_LPC23xx/port.c
190         GCC/ARM7_LPC23xx/portISR.c>
191
192     $<$<STREQUAL:${FREERTOS_PORT},GCC_STR75X>:
193         GCC/STR75x/port.c
194         GCC/STR75x/portISR.c>
195
196     # Microchip (formerly Ateml) AVR8 ports for GCC
197     $<$<STREQUAL:${FREERTOS_PORT},GCC_ATMEGA323>:
198         GCC/ATMega323/port.c>
199
200     $<$<STREQUAL:${FREERTOS_PORT},GCC_ATMEGA>:
201         ThirdParty/GCC/ATmega/port.c>
202
203     $<$<STREQUAL:${FREERTOS_PORT},GCC_AVRDX>:
204         ThirdParty/Partner-Supported-Ports/GCC/AVR_AVRDx/port.c>
205
206     $<$<STREQUAL:${FREERTOS_PORT},GCC_AVR_MEGA0>:
207         ThirdParty/Partner-Supported-Ports/GCC/AVR_Mega0/port.c>
208
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>
213
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>
218
219     $<$<STREQUAL:${FREERTOS_PORT},GCC_HCS12>:
220         GCC/HCS12/port.c>
221
222     # Cortus APS3 soft core port for GCC
223     $<$<STREQUAL:${FREERTOS_PORT},GCC_CORTUS_APS3>:
224         GCC/CORTUS_APS3/port.c>
225
226     # Renesas (formerly Hitach) H8S port for GCC
227     $<$<STREQUAL:${FREERTOS_PORT},GCC_H8S2329>:
228         GCC/H8S2329/port.c>
229
230     # x86 / IA32 flat memory model port for GCC
231     $<$<STREQUAL:${FREERTOS_PORT},GCC_IA32_FLAT>:
232         GCC/IA32_flat/port.c
233         GCC/IA32_flat/portASM.S>
234
235     # Xilinx MicroBlaze soft core ports for GCC
236     $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE>:
237         GCC/MicroBlaze/port.c
238         GCC/MicroBlaze/portasm.s>
239
240     $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE_V8>:
241         GCC/MicroBlazeV8/port.c
242         GCC/MicroBlazeV8/port_exceptions.c
243         GCC/MicroBlazeV8/portasm.S>
244
245     $<$<STREQUAL:${FREERTOS_PORT},GCC_MICROBLAZE_V9>:
246         GCC/MicroBlazeV9/port.c
247         GCC/MicroBlazeV9/port_exceptions.c
248         GCC/MicroBlazeV9/portasm.S>
249
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>
254
255     $<$<STREQUAL:${FREERTOS_PORT},GCC_PPC440_XILINX>:
256         GCC/PPC440_Xilinx/port.c
257         GCC/PPC440_Xilinx/portasm.S>
258
259      # Texas Instruments MSP430 port for GCC
260     $<$<STREQUAL:${FREERTOS_PORT},GCC_MSP430F449>:
261         GCC/MSP430F449/port.c>
262
263     # Intel (formerly Altera) NIOS II soft core port for GCC
264     $<$<STREQUAL:${FREERTOS_PORT},GCC_NIOSII>:
265         GCC/NiosII/port.c
266         GCC/NiosII/port_asm.S>
267
268     # RISC-V architecture ports for GCC
269     $<$<STREQUAL:${FREERTOS_PORT},GCC_RISC_V>:
270         GCC/RISC-V/port.c
271         GCC/RISC-V/portASM.S>
272
273     $<$<STREQUAL:${FREERTOS_PORT},GCC_RISC_V_PULPINO_VEGA_RV32M1RM>:
274         GCC/RISC-V/port.c
275         GCC/RISC-V/portASM.S>
276
277     # Renesas RL78 port for GCC
278     $<$<STREQUAL:${FREERTOS_PORT},GCC_RL78>:
279         GCC/RL78/port.c
280         GCC/RL78/portasm.S>
281
282     # Renesas RX architecture ports for GCC
283     $<$<STREQUAL:${FREERTOS_PORT},GCC_RX100>:
284         GCC/RX100/port.c>
285
286     $<$<STREQUAL:${FREERTOS_PORT},GCC_RX200>:
287         GCC/RX200/port.c>
288
289     $<$<STREQUAL:${FREERTOS_PORT},GCC_RX600>:
290         GCC/RX600/port.c>
291
292     $<$<STREQUAL:${FREERTOS_PORT},GCC_RX600_V2>:
293         GCC/RX600v2/port.c>
294
295     $<$<STREQUAL:${FREERTOS_PORT},GCC_RX700_V3_DPFPU>:
296         GCC/RX700v3_DPFPU/port.c>
297
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>
302
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>
309
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>
314
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>
319
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>
333
334     # Renesas (formerly NEC) 78K port for IAR EW78K
335     $<$<STREQUAL:${FREERTOS_PORT},IAR_78K0K>:
336         IAR/78K0R/port.c
337         IAR/78K0R/portasm.s26>
338
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>
343
344     $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CA9>:
345         IAR/ARM_CA9/port.c
346         IAR/ARM_CA9/portASM.s>
347
348     # ARMv6-M port for IAR EWARM
349     $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM0>:
350         IAR/ARM_CM0/port.c
351         IAR/ARM_CM0/portasm.s>
352
353     # ARMv7-M port for IAR EWARM
354     $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM3>:
355         IAR/ARM_CM3/port.c
356         IAR/ARM_CM3/portasm.s>
357
358     # ARMv7E-M ports for IAR EWARM
359     $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM4F>:
360         IAR/ARM_CM4F/port.c
361         IAR/ARM_CM4F/portasm.s>
362
363     $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM4F_MPU>:
364         IAR/ARM_CM4F_MPU/port.c
365         IAR/ARM_CM4F_MPU/portasm.s>
366
367     $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM7>:
368         IAR/ARM_CM7/r0p1/port.c
369         IAR/ARM_CM7/r0p1/portasm.s>
370
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>
375
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>
381
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>
385
386     $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM33_NONSECURE>:
387         IAR/ARM_CM33/non_secure/port.c
388         IAR/ARM_CM33/non_secure/portasm.s>
389
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>
395
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>
399
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>
404
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>
410
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>
414
415     $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM85_NONSECURE>:
416         IAR/ARM_CM85/non_secure/port.c
417         IAR/ARM_CM85/non_secure/portasm.s>
418
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>
424
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>
428
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>
433
434     # Microchip (formerly Atmel) AVR8 ports for IAR EWAVR
435     $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEGA323>:
436         IAR/ATMega323/port.c
437         IAR/ATMega323/portmacro.s90>
438
439     $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR_AVRDX>:
440         IAR/AVR_AVRDx/port.c
441         IAR/AVR_AVRDx/portmacro.s90>
442
443     $<$<STREQUAL:${FREERTOS_PORT},IAR_AVR_MEGA0>:
444         IAR/AVR_Mega0/port.c
445         IAR/AVR_Mega0/portmacro.s90>
446
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
450         IAR/AVR32_UC3/port.c
451         IAR/AVR32_UC3/read.c
452         IAR/AVR32_UC3/write.c>
453
454     # Texas Instruments MSP430 ports for IAR Embedded Workbench for MSP430
455     $<$<STREQUAL:${FREERTOS_PORT},IAR_MSP430>:
456         IAR/MSP430/port.c
457         IAR/MSP430/portext.s43>
458
459     $<$<STREQUAL:${FREERTOS_PORT},IAR_MSP430X>:
460         IAR/MSP430X/port.c
461         IAR/MSP430X/portext.s43>
462
463     # RISC-V architecture port for IAR Embedded Workbench for RISC-V
464     $<$<STREQUAL:${FREERTOS_PORT},IAR_RISC_V>:
465         IAR/RISC-V/port.c
466         IAR/RISC-V/portASM.s>
467
468     # Renesas RL78 port for IAR EWRL78
469     $<$<STREQUAL:${FREERTOS_PORT},IAR_RL78>:
470         IAR/RL78/port.c
471         IAR/RL78/portasm.s87>
472
473     # Renesas RX architecture ports for IAR EWRX
474     $<$<STREQUAL:${FREERTOS_PORT},IAR_RX100>:
475         IAR/RX100/port.c
476         IAR/RX100/port_asm.s>
477
478     $<$<STREQUAL:${FREERTOS_PORT},IAR_RX600>:
479         IAR/RX600/port.c
480         IAR/RX600/port_asm.s>
481
482     $<$<STREQUAL:${FREERTOS_PORT},IAR_RX700_V3_DPFPU>:
483         IAR/RX700v3_DPFPU/port.c>
484
485     $<$<STREQUAL:${FREERTOS_PORT},IAR_RX_V2>:
486         IAR/RXv2/port.c
487         IAR/RXv2/port_asm.s>
488
489     # Renesas (formerly NEC) V850ES port for IAR EWV850
490     $<$<STREQUAL:${FREERTOS_PORT},IAR_V850ES_FX3>:
491         IAR/V850ES/port.c
492         IAR/V850ES/portasm_Fx3.s85>
493
494     $<$<STREQUAL:${FREERTOS_PORT},IAR_V850ES_HX3>:
495         IAR/V850ES/port.c
496         IAR/V850ES/portasm_Hx2.s85>
497
498     # ARMv4T ARM7TDMI ports for IAR Embedded Workbench for ARM
499     $<$<STREQUAL:${FREERTOS_PORT},IAR_STR71X>:
500         IAR/STR71x/port.c
501         IAR/STR71x/portasm.s79>
502
503     $<$<STREQUAL:${FREERTOS_PORT},IAR_STR75X>:
504         IAR/STR75x/port.c
505         IAR/STR75x/portasm.s79>
506
507     $<$<STREQUAL:${FREERTOS_PORT},IAR_LPC2000>:
508         IAR/LPC2000/port.c
509         IAR/LPC2000/portasm.s79>
510
511     $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEL_SAM7S64>:
512         IAR/AtmelSAM7S64/port.c
513         IAR/AtmelSAM7S64/portasm.s79>
514
515     # ARMv5TE ARM926 ports for IAR Embedded Workbench for ARM
516     $<$<STREQUAL:${FREERTOS_PORT},IAR_STR91X>:
517         IAR/STR91x/port.c
518         IAR/STR91x/portasm.s79>
519
520     $<$<STREQUAL:${FREERTOS_PORT},IAR_ATMEL_SAM9XE>:
521         IAR/AtmelSAM9XE/port.c
522         IAR/AtmelSAM9XE/portasm.s79>
523
524     # ARM Cortex-M4F port for the MikroElektronika MikroC compiler
525     $<$<STREQUAL:${FREERTOS_PORT},MIKROC_ARM_CM4F>:
526         MikroC/ARM_CM4F/port.c>
527
528     # Microchip PIC18 8-bit MCU port for MPLAB XC8
529     $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC18F>:
530         MPLAB/PIC18F/port.c>
531
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 ?
536
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>
541
542     $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MX>:
543         MPLAB/PIC32MX/port.c
544         MPLAB/PIC32MX/port_asm.S>
545
546     $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC32MZ>:
547         MPLAB/PIC32MZ/port.c
548         MPLAB/PIC32MZ/port_asm.S>
549
550     # Windows Simulator for Microsoft Visual C Compiler and MinGW GCC
551     $<$<STREQUAL:${FREERTOS_PORT},MSVC_MINGW>:
552         MSVC-MingW/port.c>
553
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>
558
559     $<$<STREQUAL:${FREERTOS_PORT},OWATCOM_16BIT_DOS_PC>:
560         oWatcom/16BitDOS/common/portcomn.c
561         oWatcom/16BitDOS/PC/port.c>
562
563     $<$<STREQUAL:${FREERTOS_PORT},PARADIGM_TERN_EE_LARGE>:
564         Paradigm/Tern_EE/large_untested/port.c>
565
566     $<$<STREQUAL:${FREERTOS_PORT},PARADIGM_TERN_EE_SMALL>:
567         Paradigm/Tern_EE/small/port.c>
568
569     # Renesas RX mcu ports for Renesas CC-RX
570     $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX100>:
571         Renesas/RX100/port.c
572         Renesas/RX100/port_asm.src>
573
574     $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX200>:
575         Renesas/RX200/port.c
576         Renesas/RX200/port_asm.src>
577
578     $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX600>:
579         Renesas/RX600/port.c
580         Renesas/RX600/port_asm.src>
581
582     $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX600_V2>:
583         Renesas/RX600v2/port.c
584         Renesas/RX600v2/port_asm.src>
585
586     $<$<STREQUAL:${FREERTOS_PORT},RENESAS_RX700_V3_DPFPU>:
587         Renesas/RX700v3_DPFPU/port.c
588         Renesas/RX700v3_DPFPU/port_asm.src>
589
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>
594
595     # Texas Instruments MSP430 port for Rowley CrossWorks
596     $<$<STREQUAL:${FREERTOS_PORT},ROWLEY_MSP430F449>:
597         Rowley/MSP430F449/port.c
598         Rowley/MSP430F449/portext.asm>
599
600     # ARMv7-A Cortex-A9 port for ARM RVDS / armcc
601     $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CA9>:
602         RVDS/ARM_CA9/port.c
603         RVDS/ARM_CA9/portASM.s>
604
605     # ARMv6-M port for ARM RVDS / armcc
606     $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM0>:
607         RVDS/ARM_CM0/port.c>
608
609     # ARMv7-M port for ARM RVDS / armcc
610     $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM3>:
611         RVDS/ARM_CM3/port.c>
612
613     # ARMv7E-M ports for ARM RVDS / armcc
614     $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM4_MPU>:
615         RVDS/ARM_CM4_MPU/port.c>
616
617     $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM4F>:
618         RVDS/ARM_CM4F/port.c>
619
620     $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM7>:
621         RVDS/ARM_CM7/r0p1/port.c>
622
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>
627
628     # Cygnal c8051 port for SDCC (Small Device C Compiler)
629     $<$<STREQUAL:${FREERTOS_PORT},SDCC_CYGNAL>:
630         SDCC/Cygnal/port.c>
631
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>
636
637     $<$<STREQUAL:${FREERTOS_PORT},SOFTUNE_MB96340>:
638         Softune/MB96340/__STD_LIB_sbrk.c
639         Softune/MB96340/port.c>
640
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>
645
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>
650
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>
662
663     # Microchip PIC18 port for WIZ-C
664     $<$<STREQUAL:${FREERTOS_PORT},WIZC_PIC18>:
665         WizC/PIC18/port.c
666         WizC/PIC18/Drivers/Tick/isrTick.c
667         WizC/PIC18/Drivers/Tick/Tick.c>
668 )
669
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"
678 )
679     target_sources(freertos_kernel_port PRIVATE Common/mpu_wrappers.c)
680 endif()
681
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>
687
688     $<$<STREQUAL:${FREERTOS_PORT},BCC_16BIT_DOS_PC>:
689         ${CMAKE_CURRENT_LIST_DIR}/BCC/16BitDOS/common
690         ${CMAKE_CURRENT_LIST_DIR}/BCC/16BitDOS/PC>
691
692     # ARMv7-M port for Texas Instruments Code Composer Studio
693     $<$<STREQUAL:${FREERTOS_PORT},CCS_ARM_CM3>:${CMAKE_CURRENT_LIST_DIR}/CCS/ARM_CM3>
694
695     # ARMv7E-M port for Texas Instruments Code Composer Studio
696     $<$<STREQUAL:${FREERTOS_PORT},CCS_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/CCS/ARM_CM4F>
697
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>
700
701     # Texas Instruments MSP430 port for Texas Instruments Code Composer Studio
702     $<$<STREQUAL:${FREERTOS_PORT},CCS_MSP430X>:${CMAKE_CURRENT_LIST_DIR}/CCS/MSP430X>
703
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>
708
709     # ARMv7-A port for GCC
710     $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CA9>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CA9>
711
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>
715
716     # ARMv6-M port for GCC
717     $<$<STREQUAL:${FREERTOS_PORT},GCC_ARM_CM0>:${CMAKE_CURRENT_LIST_DIR}/GCC/ARM_CM0>
718
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>
721
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>
725
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>
730
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>
735
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>
740
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>
746
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>
751
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>
755
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>
762
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>
768
769     # Microchip (formerly Ateml) AVR32 port for GCC
770     $<$<STREQUAL:${FREERTOS_PORT},GCC_AVR32_UC3>:${CMAKE_CURRENT_LIST_DIR}/GCC/AVR32_UC3>
771
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>
775
776     # Cortus APS3 soft core port for GCC
777     $<$<STREQUAL:${FREERTOS_PORT},GCC_CORTUS_APS3>:${CMAKE_CURRENT_LIST_DIR}/GCC/CORTUS_APS3>
778
779     # Renesas (formerly Hitach) H8S port for GCC
780     $<$<STREQUAL:${FREERTOS_PORT},GCC_H8S2329>:${CMAKE_CURRENT_LIST_DIR}/GCC/H8S2329>
781
782     # x86 / IA32 flat memory model port for GCC
783     $<$<STREQUAL:${FREERTOS_PORT},GCC_IA32_FLAT>:${CMAKE_CURRENT_LIST_DIR}/GCC/IA32_flat>
784
785     # Intel (formerly Altera) NIOS II soft core port for GCC
786     $<$<STREQUAL:${FREERTOS_PORT},GCC_NIOSII>:${CMAKE_CURRENT_LIST_DIR}/GCC/NiosII>
787
788     # Texas Instruments MSP430 port for GCC
789     $<$<STREQUAL:${FREERTOS_PORT},GCC_MSP430F449>:${CMAKE_CURRENT_LIST_DIR}/GCC/MSP430F449>
790
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>
795
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>
799
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>
804
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>
808
809     # Renesas RL78 port for GCC
810     $<$<STREQUAL:${FREERTOS_PORT},GCC_RL78>:${CMAKE_CURRENT_LIST_DIR}/GCC/RL78>
811
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>
818
819     # Infineon TriCore 1782 port for GCC
820     $<$<STREQUAL:${FREERTOS_PORT},GCC_TRICORE_1782>:${CMAKE_CURRENT_LIST_DIR}/GCC/TriCore_1782>
821
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>
825
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>
830
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>
835
836     # Renesas (formerly NEC) 78K port for IAR EW78K
837     $<$<STREQUAL:${FREERTOS_PORT},IAR_78K0K>:${CMAKE_CURRENT_LIST_DIR}/IAR/78K0R>
838
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>
842
843     # ARMv6-M port for IAR EWARM
844     $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM0>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM0>
845
846     # ARMv7-M port for IAR EWARM
847     $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CM3>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CM3>
848
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>
853
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>
858
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>
862
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>
867
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>
871
872     # ARMv7-R Ports for IAR EWARM
873     $<$<STREQUAL:${FREERTOS_PORT},IAR_ARM_CRX_NOGIC>:${CMAKE_CURRENT_LIST_DIR}/IAR/ARM_CRx_No_GIC>
874
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>
880
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>
884
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>
889
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>
892
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>
896
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>
901
902     # Renesas RL78 port for IAR EWRL78
903     $<$<STREQUAL:${FREERTOS_PORT},IAR_RL78>:${CMAKE_CURRENT_LIST_DIR}/IAR/RL78>
904
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>
910
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>
914
915     # ARM Cortex-M4F port for the MikroElektronika MikroC compiler
916     $<$<STREQUAL:${FREERTOS_PORT},MIKROC_ARM_CM4F>:${CMAKE_CURRENT_LIST_DIR}/MikroC/ARM_CM4F>
917
918     # Microchip PIC18 8-bit MCU port for MPLAB XC8
919     $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC18F>:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC18F>
920
921     # Microchip PIC24 16-bit MCU port for MPLAB XC16
922     $<$<STREQUAL:${FREERTOS_PORT},MPLAB_PIC24>:${CMAKE_CURRENT_LIST_DIR}/MPLAB/PIC24_dsPIC>
923
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>
928
929     # Windows Simulator for Microsoft Visual C Compiler and MinGW GCC
930     $<$<STREQUAL:${FREERTOS_PORT},MSVC_MINGW>:${CMAKE_CURRENT_LIST_DIR}/MSVC-MingW>
931
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>
939
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>
942
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>
949
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>
952
953     # Texas Instruments MSP430 port for Rowley CrossWorks
954     $<$<STREQUAL:${FREERTOS_PORT},ROWLEY_MSP430F449>:${CMAKE_CURRENT_LIST_DIR}/Rowley/MSP430F449>
955
956     # ARMv7-A Cortex-A9 port for ARM RVDS / armcc
957     $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CA9>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CA9>
958
959     # ARMv6-M port for ARM RVDS / armcc
960     $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM0>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM0>
961
962     # ARMv7-M port for ARM RVDS / armcc
963     $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM_CM3>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM_CM3>
964
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>
969
970     # ARMv4T / ARM7TDMI LPC21XX port for ARM RVDS / armcc
971     $<$<STREQUAL:${FREERTOS_PORT},RVDS_ARM7_LPC21XX>:${CMAKE_CURRENT_LIST_DIR}/RVDS/ARM7_LPC21xx>
972
973     # Cygnal c8051 port for SDCC (Small Device C Compiler)
974     $<$<STREQUAL:${FREERTOS_PORT},SDCC_CYGNAL>:${CMAKE_CURRENT_LIST_DIR}/SDCC/Cygnal>
975
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>
979
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>
982
983     # Port for C-SKY T-HEAD CK802
984     $<$<STREQUAL:${FREERTOS_PORT},CDK_THEAD_CK802>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/CDK/T-HEAD_CK802>
985
986     # Tensilica Xtensa port for XCC
987     $<$<STREQUAL:${FREERTOS_PORT},XCC_XTENSA>:${CMAKE_CURRENT_LIST_DIR}/ThirdParty/XCC/Xtensa>
988
989     # Microchip PIC18 port for WIZ-C
990     $<$<STREQUAL:${FREERTOS_PORT},WIZC_PIC18>:${CMAKE_CURRENT_LIST_DIR}/WizC/PIC18>
991 )
992
993 if(FREERTOS_PORT STREQUAL GCC_POSIX)
994     find_package(Threads REQUIRED)
995 endif()
996
997 target_link_libraries(freertos_kernel_port
998     PUBLIC
999         $<$<STREQUAL:${FREERTOS_PORT},GCC_RP2040>:pico_base_headers>
1000         $<$<STREQUAL:${FREERTOS_PORT},GCC_XTENSA_ESP32>:idf::esp32>
1001     PRIVATE
1002         freertos_kernel
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
1006 )
1007
1008 # Note these are primarily for the POSIX port.
1009 target_compile_options( freertos_kernel_port
1010   PRIVATE
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>
1022 )