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