16 'features': ['thumbv6m'],
17 'header': 'core_cm0.h',
19 '__CM0_REV': '0x0000U',
20 '__NVIC_PRIO_BITS': '2U',
21 '__Vendor_SysTickConfig': '0U'
28 'mcpu': 'cortex-m0plus',
31 'features': ['thumbv6m'],
32 'header': 'core_cm0plus.h',
34 '__CM0PLUS_REV': '0x0000U',
35 '__MPU_PRESENT': '1U',
36 '__VTOR_PRESENT': '1U',
37 '__NVIC_PRIO_BITS': '2U',
38 '__Vendor_SysTickConfig': '0U'
43 'triple': 'thumbv7-m',
48 'features': ['thumbv6m', 'thumbv7m', 'thumb-2', 'sat', 'ldrex', 'clz'],
49 'header': 'core_cm3.h',
51 '__CM3_REV': '0x0000U',
52 '__MPU_PRESENT': '1U',
53 '__VTOR_PRESENT': '1U',
54 '__NVIC_PRIO_BITS': '3U',
55 '__Vendor_SysTickConfig': '0U'
60 'triple': 'thumbv7-em',
65 'features': ['thumbv6m', 'thumbv7m', 'dsp', 'thumb-2', 'sat', 'ldrex', 'clz'],
66 'header': 'core_cm4.h',
68 '__CM4_REV': '0x0000U',
69 '__FPU_PRESENT': '0U',
70 '__MPU_PRESENT': '1U',
71 '__VTOR_PRESENT': '1U',
72 '__NVIC_PRIO_BITS': '3U',
73 '__Vendor_SysTickConfig': '0U'
78 'triple': 'thumbv7-em',
81 'mfpu': 'fpv4-sp-d16',
83 'features': ['thumbv6m', 'thumbv7m', 'dsp', 'thumb-2', 'sat', 'ldrex', 'clz'],
84 'header': 'core_cm4.h',
86 '__CM4_REV': '0x0000U',
87 '__FPU_PRESENT': '1U',
88 '__MPU_PRESENT': '1U',
89 '__VTOR_PRESENT': '1U',
90 '__NVIC_PRIO_BITS': '3U',
91 '__Vendor_SysTickConfig': '0U'
96 'triple': 'thumbv7-em',
101 'features': ['thumbv6m', 'thumbv7m', 'dsp', 'thumb-2', 'sat', 'ldrex', 'clz'],
102 'header': 'core_cm7.h',
104 '__CM7_REV': '0x0000U',
105 '__FPU_PRESENT': '0U',
106 '__MPU_PRESENT': '1U',
107 '__ICACHE_PRESENT': '1U',
108 '__DCACHE_PRESENT': '1U',
109 '__DTCM_PRESENT': '1U',
110 '__VTOR_PRESENT': '1U',
111 '__NVIC_PRIO_BITS': '3U',
112 '__Vendor_SysTickConfig': '0U'
117 'triple': 'thumbv7-em',
120 'mfpu': 'fpv4-sp-d16',
122 'features': ['thumbv6m', 'thumbv7m', 'dsp', 'thumb-2', 'sat', 'ldrex', 'clz'],
123 'header': 'core_cm7.h',
125 '__CM7_REV': '0x0000U',
126 '__FPU_PRESENT': '1U',
127 '__MPU_PRESENT': '1U',
128 '__ICACHE_PRESENT': '1U',
129 '__DCACHE_PRESENT': '1U',
130 '__DTCM_PRESENT': '1U',
131 '__VTOR_PRESENT': '1U',
132 '__NVIC_PRIO_BITS': '3U',
133 '__Vendor_SysTickConfig': '0U'
138 'triple': 'thumbv7-em',
143 'features': ['thumbv6m', 'thumbv7m', 'dsp', 'thumb-2', 'sat', 'ldrex', 'clz'],
144 'header': 'core_cm7.h',
146 '__CM7_REV': '0x0000U',
147 '__FPU_PRESENT': '1U',
148 '__MPU_PRESENT': '1U',
149 '__ICACHE_PRESENT': '1U',
150 '__DCACHE_PRESENT': '1U',
151 '__DTCM_PRESENT': '1U',
152 '__VTOR_PRESENT': '1U',
153 '__NVIC_PRIO_BITS': '3U',
154 '__Vendor_SysTickConfig': '0U'
158 'arch': 'thumbv8m.base',
159 'triple': 'thumbv8m',
161 'mcpu': 'cortex-m23',
164 'features': ['thumbv6m', 'thumbv7m', 'thumbv8m.base', 'ldrex'],
165 'header': 'core_cm23.h',
167 '__CM23_REV': '0x0000U',
168 '__FPU_PRESENT': '0U',
169 '__MPU_PRESENT': '1U',
170 '__SAUREGION_PRESENT': '8U',
171 '__VTOR_PRESENT': '1U',
172 '__NVIC_PRIO_BITS': '3U',
173 '__Vendor_SysTickConfig': '0U'
177 'arch': 'thumbv8m.base',
178 'triple': 'thumbv8m',
180 'mcpu': 'cortex-m23',
183 'features': ['thumbv6m', 'thumbv7m', 'thumbv8m.base', 'ldrex'],
184 'header': 'core_cm23.h',
186 '__CM23_REV': '0x0000U',
187 '__FPU_PRESENT': '0U',
188 '__MPU_PRESENT': '1U',
189 '__SAUREGION_PRESENT': '8U',
190 '__VTOR_PRESENT': '1U',
191 '__NVIC_PRIO_BITS': '3U',
192 '__Vendor_SysTickConfig': '0U'
196 'arch': 'thumbv8m.base',
197 'triple': 'thumbv8m',
199 'mcpu': 'cortex-m23',
202 'features': ['thumbv6m', 'thumbv7m', 'thumbv8m.base', 'ldrex'],
203 'header': 'core_cm23.h',
205 '__CM23_REV': '0x0000U',
206 '__FPU_PRESENT': '0U',
207 '__MPU_PRESENT': '1U',
208 '__SAUREGION_PRESENT': '8U',
209 '__VTOR_PRESENT': '1U',
210 '__NVIC_PRIO_BITS': '3U',
211 '__Vendor_SysTickConfig': '0U'
215 'arch': 'thumbv8m.main',
216 'triple': 'thumbv8m',
218 'mcpu': 'cortex-m33',
221 'features': ['thumbv6m', 'thumbv7m', 'dsp', 'thumbv8m.base', 'thumbv8m.main', 'thumb-2', 'sat', 'ldrex', 'clz'],
222 'header': 'core_cm33.h',
224 '__CM33_REV': '0x0000U',
225 '__FPU_PRESENT': '1U',
226 '__MPU_PRESENT': '1U',
227 '__SAUREGION_PRESENT': '8U',
228 '__VTOR_PRESENT': '1U',
229 '__NVIC_PRIO_BITS': '3U',
230 '__Vendor_SysTickConfig': '0U'
234 'arch': 'thumbv8m.main',
235 'triple': 'thumbv8m',
237 'mcpu': 'cortex-m33',
240 'features': ['thumbv6m', 'thumbv7m', 'dsp', 'thumbv8m.base', 'thumbv8m.main', 'thumb-2', 'sat', 'ldrex', 'clz'],
241 'header': 'core_cm33.h',
243 '__CM33_REV': '0x0000U',
244 '__FPU_PRESENT': '1U',
245 '__MPU_PRESENT': '1U',
246 '__SAUREGION_PRESENT': '8U',
247 '__VTOR_PRESENT': '1U',
248 '__NVIC_PRIO_BITS': '3U',
249 '__Vendor_SysTickConfig': '0U'
253 'arch': 'thumbv8m.main',
254 'triple': 'thumbv8m',
256 'mcpu': 'cortex-m33',
259 'features': ['thumbv6m', 'thumbv7m', 'dsp', 'thumbv8m.base', 'thumbv8m.main', 'thumb-2', 'sat', 'ldrex', 'clz'],
260 'header': 'core_cm33.h',
262 '__CM33_REV': '0x0000U',
263 '__FPU_PRESENT': '1U',
264 '__MPU_PRESENT': '1U',
265 '__SAUREGION_PRESENT': '8U',
266 '__VTOR_PRESENT': '1U',
267 '__NVIC_PRIO_BITS': '3U',
268 '__Vendor_SysTickConfig': '0U'
272 'arch': 'thumbv8m.main',
273 'triple': 'thumbv8m',
275 'mcpu': 'cortex-m35p',
278 'features': ['thumbv6m', 'thumbv7m', 'dsp', 'thumbv8m.base', 'thumbv8m.main', 'thumb-2', 'sat', 'ldrex', 'clz'],
279 'header': 'core_cm35p.h',
281 '__CM35P_REV': '0x0000U',
282 '__FPU_PRESENT': '1U',
283 '__MPU_PRESENT': '1U',
284 '__SAUREGION_PRESENT': '8U',
285 '__VTOR_PRESENT': '1U',
286 '__NVIC_PRIO_BITS': '3U',
287 '__Vendor_SysTickConfig': '0U'
291 'arch': 'thumbv8m.main',
292 'triple': 'thumbv8m',
294 'mcpu': 'cortex-m35p',
297 'features': ['thumbv6m', 'thumbv7m', 'dsp', 'thumbv8m.base', 'thumbv8m.main', 'thumb-2', 'sat', 'ldrex', 'clz'],
298 'header': 'core_cm35p.h',
300 '__CM35P_REV': '0x0000U',
301 '__FPU_PRESENT': '1U',
302 '__MPU_PRESENT': '1U',
303 '__SAUREGION_PRESENT': '8U',
304 '__VTOR_PRESENT': '1U',
305 '__NVIC_PRIO_BITS': '3U',
306 '__Vendor_SysTickConfig': '0U'
310 'arch': 'thumbv8m.main',
311 'triple': 'thumbv8m',
313 'mcpu': 'cortex-m35p',
316 'features': ['thumbv6m', 'thumbv7m', 'dsp', 'thumbv8m.base', 'thumbv8m.main', 'thumb-2', 'sat', 'ldrex', 'clz'],
317 'header': 'core_cm35p.h',
319 '__CM35P_REV': '0x0000U',
320 '__FPU_PRESENT': '1U',
321 '__MPU_PRESENT': '1U',
322 '__SAUREGION_PRESENT': '8U',
323 '__VTOR_PRESENT': '1U',
324 '__NVIC_PRIO_BITS': '3U',
325 '__Vendor_SysTickConfig': '0U'
329 'arch': 'thumbv8.1m.main',
330 'triple': 'thumbv8m',
332 'mcpu': 'cortex-m52',
335 'features': ['thumbv6m', 'thumbv7m', 'dsp', 'thumbv8m.base', 'thumbv8m.main', 'thumbv8.1m.main', 'thumb-2', 'sat', 'ldrex', 'clz'],
336 'header': 'core_cm52.h',
338 '__CM52_REV': '0x0000U',
339 '__FPU_PRESENT': '1U',
341 '__MPU_PRESENT': '1U',
342 '__ICACHE_PRESENT': '1U',
343 '__DCACHE_PRESENT': '1U',
344 '__UCACHE_PRESENT': '1U',
345 '__SAUREGION_PRESENT': '8U',
346 '__DSP_PRESENT': '1U',
347 '__VTOR_PRESENT': '1U',
348 '__PMU_PRESENT': '1U',
349 '__PMU_NUM_EVENTCNT': '8U',
350 '__NVIC_PRIO_BITS': '3U',
351 '__Vendor_SysTickConfig': '0U'
355 'arch': 'thumbv8.1m.main',
356 'triple': 'thumbv8m',
358 'mcpu': 'cortex-m52',
361 'features': ['thumbv6m', 'thumbv7m', 'dsp', 'thumbv8m.base', 'thumbv8m.main', 'thumbv8.1m.main', 'thumb-2', 'sat', 'ldrex', 'clz'],
362 'header': 'core_cm52.h',
364 '__CM52_REV': '0x0000U',
365 '__FPU_PRESENT': '1U',
367 '__MPU_PRESENT': '1U',
368 '__ICACHE_PRESENT': '1U',
369 '__DCACHE_PRESENT': '1U',
370 '__UCACHE_PRESENT': '1U',
371 '__SAUREGION_PRESENT': '8U',
372 '__DSP_PRESENT': '1U',
373 '__VTOR_PRESENT': '1U',
374 '__PMU_PRESENT': '1U',
375 '__PMU_NUM_EVENTCNT': '8U',
376 '__NVIC_PRIO_BITS': '3U',
377 '__Vendor_SysTickConfig': '0U'
381 'arch': 'thumbv8.1m.main',
382 'triple': 'thumbv8m',
384 'mcpu': 'cortex-m52',
387 'features': ['thumbv6m', 'thumbv7m', 'dsp', 'thumbv8m.base', 'thumbv8m.main', 'thumbv8.1m.main', 'thumb-2', 'sat', 'ldrex', 'clz'],
388 'header': 'core_cm52.h',
390 '__CM52_REV': '0x0000U',
391 '__FPU_PRESENT': '1U',
393 '__MPU_PRESENT': '1U',
394 '__ICACHE_PRESENT': '1U',
395 '__DCACHE_PRESENT': '1U',
396 '__UCACHE_PRESENT': '1U',
397 '__SAUREGION_PRESENT': '8U',
398 '__DSP_PRESENT': '1U',
399 '__VTOR_PRESENT': '1U',
400 '__PMU_PRESENT': '1U',
401 '__PMU_NUM_EVENTCNT': '8U',
402 '__NVIC_PRIO_BITS': '3U',
403 '__Vendor_SysTickConfig': '0U'
407 'arch': 'thumbv8.1m.main',
408 'triple': 'thumbv8m',
410 'mcpu': 'cortex-m55',
413 'features': ['thumbv6m', 'thumbv7m', 'dsp', 'thumbv8m.base', 'thumbv8m.main', 'thumbv8.1m.main', 'thumb-2', 'sat', 'ldrex', 'clz'],
414 'header': 'core_cm55.h',
416 '__CM55_REV': '0x0000U',
417 '__FPU_PRESENT': '1U',
419 '__MPU_PRESENT': '1U',
420 '__ICACHE_PRESENT': '1U',
421 '__DCACHE_PRESENT': '1U',
422 '__SAUREGION_PRESENT': '8U',
423 '__DSP_PRESENT': '1U',
424 '__VTOR_PRESENT': '1U',
425 '__PMU_PRESENT': '1U',
426 '__PMU_NUM_EVENTCNT': '8U',
427 '__NVIC_PRIO_BITS': '3U',
428 '__Vendor_SysTickConfig': '0U'
432 'arch': 'thumbv8.1m.main',
433 'triple': 'thumbv8m',
435 'mcpu': 'cortex-m55',
438 'features': ['thumbv6m', 'thumbv7m', 'dsp', 'thumbv8m.base', 'thumbv8m.main', 'thumbv8.1m.main', 'thumb-2', 'sat', 'ldrex', 'clz'],
439 'header': 'core_cm55.h',
441 '__CM55_REV': '0x0000U',
442 '__FPU_PRESENT': '1U',
444 '__MPU_PRESENT': '1U',
445 '__ICACHE_PRESENT': '1U',
446 '__DCACHE_PRESENT': '1U',
447 '__SAUREGION_PRESENT': '8U',
448 '__DSP_PRESENT': '1U',
449 '__VTOR_PRESENT': '1U',
450 '__PMU_PRESENT': '1U',
451 '__PMU_NUM_EVENTCNT': '8U',
452 '__NVIC_PRIO_BITS': '3U',
453 '__Vendor_SysTickConfig': '0U'
457 'arch': 'thumbv8.1m.main',
458 'triple': 'thumbv8m',
460 'mcpu': 'cortex-m55',
463 'features': ['thumbv6m', 'thumbv7m', 'dsp', 'thumbv8m.base', 'thumbv8m.main', 'thumbv8.1m.main', 'thumb-2', 'sat', 'ldrex', 'clz'],
464 'header': 'core_cm55.h',
466 '__CM55_REV': '0x0000U',
467 '__FPU_PRESENT': '1U',
469 '__MPU_PRESENT': '1U',
470 '__ICACHE_PRESENT': '1U',
471 '__DCACHE_PRESENT': '1U',
472 '__SAUREGION_PRESENT': '8U',
473 '__DSP_PRESENT': '1U',
474 '__VTOR_PRESENT': '1U',
475 '__PMU_PRESENT': '1U',
476 '__PMU_NUM_EVENTCNT': '8U',
477 '__NVIC_PRIO_BITS': '3U',
478 '__Vendor_SysTickConfig': '0U'
482 'arch': 'thumbv8.1m.main',
483 'triple': 'thumbv8m',
485 'mcpu': 'cortex-m85',
488 'features': ['thumbv6m', 'thumbv7m', 'dsp', 'thumbv8m.base', 'thumbv8m.main', 'thumbv8.1m.main', 'thumb-2', 'sat', 'ldrex', 'clz'],
489 'header': 'core_cm85.h',
491 '__CM85_REV': '0x0000U',
492 '__FPU_PRESENT': '1U',
494 '__MPU_PRESENT': '1U',
495 '__ICACHE_PRESENT': '1U',
496 '__DCACHE_PRESENT': '1U',
497 '__SAUREGION_PRESENT': '8U',
498 '__DSP_PRESENT': '1U',
499 '__VTOR_PRESENT': '1U',
500 '__PMU_PRESENT': '1U',
501 '__PMU_NUM_EVENTCNT': '8U',
502 '__NVIC_PRIO_BITS': '3U',
503 '__Vendor_SysTickConfig': '0U'
507 'arch': 'thumbv8.1m.main',
508 'triple': 'thumbv8m',
510 'mcpu': 'cortex-m85',
513 'features': ['thumbv6m', 'thumbv7m', 'dsp', 'thumbv8m.base', 'thumbv8m.main', 'thumbv8.1m.main', 'thumb-2', 'sat', 'ldrex', 'clz'],
514 'header': 'core_cm85.h',
516 '__CM85_REV': '0x0000U',
517 '__FPU_PRESENT': '1U',
519 '__MPU_PRESENT': '1U',
520 '__ICACHE_PRESENT': '1U',
521 '__DCACHE_PRESENT': '1U',
522 '__SAUREGION_PRESENT': '8U',
523 '__DSP_PRESENT': '1U',
524 '__VTOR_PRESENT': '1U',
525 '__PMU_PRESENT': '1U',
526 '__PMU_NUM_EVENTCNT': '8U',
527 '__NVIC_PRIO_BITS': '3U',
528 '__Vendor_SysTickConfig': '0U'
532 'arch': 'thumbv8.1m.main',
533 'triple': 'thumbv8m',
535 'mcpu': 'cortex-m85',
538 'features': ['thumbv6m', 'thumbv7m', 'dsp', 'thumbv8m.base', 'thumbv8m.main', 'thumbv8.1m.main', 'thumb-2', 'sat', 'ldrex', 'clz'],
539 'header': 'core_cm85.h',
541 '__CM85_REV': '0x0000U',
542 '__FPU_PRESENT': '1U',
544 '__MPU_PRESENT': '1U',
545 '__ICACHE_PRESENT': '1U',
546 '__DCACHE_PRESENT': '1U',
547 '__SAUREGION_PRESENT': '8U',
548 '__DSP_PRESENT': '1U',
549 '__VTOR_PRESENT': '1U',
550 '__PMU_PRESENT': '1U',
551 '__PMU_NUM_EVENTCNT': '8U',
552 '__NVIC_PRIO_BITS': '3U',
553 '__Vendor_SysTickConfig': '0U'
563 'features': ['armv7a', 'thumb-2', 'sat', 'clz'],
564 'header': 'core_ca.h',
567 '__CA_REV': '0x0000U',
568 '__FPU_PRESENT': '0U',
569 '__GIC_PRESENT': '1U',
570 '__TIM_PRESENT': '1U',
571 '__L2C_PRESENT': '1U',
572 'GIC_DISTRIBUTOR_BASE': '0x2C001000UL',
573 'GIC_INTERFACE_BASE': '0x2C000100UL',
574 'TIMER_BASE': '0x2C000600UL',
575 'L2C_310_BASE': '0x2C0F0000UL',
584 'mfpu': 'neon-vfpv4',
586 'features': ['armv7a', 'thumb-2', 'sat', 'dsp', 'clz'],
587 'header': 'core_ca.h',
590 '__CA_REV': '0x0000U',
591 '__FPU_PRESENT': '1U',
592 '__GIC_PRESENT': '1U',
593 '__TIM_PRESENT': '1U',
594 '__L2C_PRESENT': '1U',
595 'GIC_DISTRIBUTOR_BASE': '0x2C001000UL',
596 'GIC_INTERFACE_BASE': '0x2C000100UL',
597 'TIMER_BASE': '0x2C000600UL',
598 'L2C_310_BASE': '0x2C0F0000UL',
609 'features': ['armv7a', 'thumb-2', 'sat', 'clz'],
610 'header': 'core_ca.h',
613 '__CA_REV': '0x0000U',
614 '__FPU_PRESENT': '0U',
615 '__GIC_PRESENT': '1U',
616 '__TIM_PRESENT': '1U',
617 '__L2C_PRESENT': '1U',
618 'GIC_DISTRIBUTOR_BASE': '0x2C001000UL',
619 'GIC_INTERFACE_BASE': '0x2C000100UL',
620 'TIMER_BASE': '0x2C000600UL',
621 'L2C_310_BASE': '0x2C0F0000UL',
630 'mfpu': 'neon-vfpv4',
632 'features': ['armv7a', 'thumb-2', 'sat', 'dsp', 'clz'],
633 'header': 'core_ca.h',
636 '__CA_REV': '0x0000U',
637 '__FPU_PRESENT': '1U',
638 '__GIC_PRESENT': '1U',
639 '__TIM_PRESENT': '1U',
640 '__L2C_PRESENT': '1U',
641 'GIC_DISTRIBUTOR_BASE': '0x2C001000UL',
642 'GIC_INTERFACE_BASE': '0x2C000100UL',
643 'TIMER_BASE': '0x2C000600UL',
644 'L2C_310_BASE': '0x2C0F0000UL',
655 'features': ['armv7a', 'thumb-2', 'sat', 'clz'],
656 'header': 'core_ca.h',
659 '__CA_REV': '0x0000U',
660 '__FPU_PRESENT': '0U',
661 '__GIC_PRESENT': '1U',
662 '__TIM_PRESENT': '1U',
663 '__L2C_PRESENT': '1U',
664 'GIC_DISTRIBUTOR_BASE': '0x2C001000UL',
665 'GIC_INTERFACE_BASE': '0x2C000100UL',
666 'TIMER_BASE': '0x2C000600UL',
667 'L2C_310_BASE': '0x2C0F0000UL',
676 'mfpu': 'neon-vfpv3',
678 'features': ['armv7a', 'thumb-2', 'sat', 'dsp', 'ldrex', 'clz'],
679 'header': 'core_ca.h',
682 '__CA_REV': '0x0000U',
683 '__FPU_PRESENT': '1U',
684 '__GIC_PRESENT': '1U',
685 '__TIM_PRESENT': '1U',
686 '__L2C_PRESENT': '1U',
687 'GIC_DISTRIBUTOR_BASE': '0x2C001000UL',
688 'GIC_INTERFACE_BASE': '0x2C000100UL',
689 'TIMER_BASE': '0x2C000600UL',
690 'L2C_310_BASE': '0x2C0F0000UL',
696 # Configuration file for the 'lit' test runner.
698 # name: The name of this test suite.
699 config.name = "CMSIS-Core"
701 # testFormat: The test format to use to interpret tests.
703 # For now we require '&&' between commands, until they get globally killed and
704 # the test runner updated.
705 config.test_format = lit.formats.ShTest()
707 # suffixes: A list of file extensions to treat as test files.
712 # test_source_root: The root path where tests are located.
713 config.test_source_root = os.path.dirname(__file__)
716 # clang_path = get_toolchain_from_env('CLANG')
718 toolchain = lit_config.params.get("toolchain", "AC6")
719 device = lit_config.params.get("device", "ARMCM3")
720 optimize = lit_config.params.get("optimize", "none")
723 def __init__(self, toolchain, device, optimize):
724 self._toolchain = toolchain
726 self.optimize = optimize
728 def get_root_from_env(self):
729 keys = sorted((k for k in os.environ.keys() if k.startswith(f'{self._toolchain}_TOOLCHAIN_')), reverse=True)
731 print(f"Toolchain '{self._toolchain}' not registered!")
733 return os.environ.get(keys[0])
736 return self.get_root_from_env()
739 class Toolchain_AC6(Toolchain):
747 def __init__(self, **args):
748 super().__init__('AC6', **args)
751 return os.path.join(self.get_root(), 'armclang')
753 def get_ccflags(self):
755 '--target=arm-arm-none-eabi', f'-mcpu={DEVICES[self.device]["mcpu"]}', f'-mfpu={DEVICES[self.device]["mfpu"]}',
756 self.OPTIMIZE[self.optimize], '-I', os.path.abspath('../Include'), '-c', '-D', f'CORE_HEADER="{DEVICES[device]["header"]}"']
757 if device.endswith('S') and not device.endswith('NS'):
758 ccflags += ["-mcmse"]
759 ccflags += list(sum([('-D', f'{define}={value}') for (define, value) in DEVICES[self.device]['defines'].items()], ()))
763 class Toolchain_GCC(Toolchain):
771 def __init__(self, **args):
772 super().__init__('GCC', **args)
775 return os.path.join(self.get_root(), 'arm-none-eabi-gcc')
777 def get_ccflags(self):
779 if DEVICES[self.device]["mfpu"] != 'none':
782 f'-mcpu={DEVICES[self.device]["mcpu"]}', f'-mfloat-abi={floatabi}',
783 self.OPTIMIZE[self.optimize], '-I', os.path.abspath('../Include'),
784 '-D', f'CORE_HEADER="{DEVICES[device]["header"]}"', '-c']
785 if DEVICES[self.device]["mfpu"] != "none":
786 ccflags += [f'-mfpu={DEVICES[self.device]["mfpu"]}']
787 if device.endswith('S') and not device.endswith('NS'):
788 ccflags += ["-mcmse"]
789 ccflags += list(sum([('-D', f'{define}={value}') for (define, value) in DEVICES[self.device]['defines'].items()], ()))
792 class Toolchain_Clang(Toolchain):
794 'CM0': 'thumbv6m-none-eabi',
795 'CM0plus': 'thumbv6m-none-eabi',
796 'CM3': 'thumbv7m-none-eabi',
797 'CM4': 'thumbv7em-none-eabi',
798 'CM4FP': 'thumbv7em-none-eabihf',
799 'CM7': 'thumbv7em-none-eabi',
800 'CM7SP': 'thumbv7em-none-eabihf',
801 'CM7DP': 'thumbv7em-none-eabihf',
802 'CM23': 'thumbv8m.base-none-eabi',
803 'CM23S': 'thumbv8m.base-none-eabi',
804 'CM23NS': 'thumbv8m.base-none-eabi',
805 'CM33': 'thumbv8m.main-none-eabihf',
806 'CM33S': 'thumbv8m.main-none-eabihf',
807 'CM33NS': 'thumbv8m.main-none-eabihf',
808 'CM35P': 'thumbv8m.main-none-eabihf',
809 'CM35PS': 'thumbv8m.main-none-eabihf',
810 'CM35PNS': 'thumbv8m.main-none-eabihf',
811 'CM52': 'thumbv8.1m.main-none-eabihf',
812 'CM52S': 'thumbv8.1m.main-none-eabihf',
813 'CM52NS': 'thumbv8.1m.main-none-eabihf',
814 'CM55': 'thumbv8.1m.main-none-eabihf',
815 'CM55S': 'thumbv8.1m.main-none-eabihf',
816 'CM55NS': 'thumbv8.1m.main-none-eabihf',
817 'CM85': 'thumbv8.1m.main-none-eabihf',
818 'CM85S': 'thumbv8.1m.main-none-eabihf',
819 'CM85NS': 'thumbv8.1m.main-none-eabihf',
820 'CA5': 'armv7-none-eabi',
821 'CA5neon': 'armv7-none-eabihf',
822 'CA7': 'armv7-none-eabi',
823 'CA7neon': 'armv7-none-eabihf',
824 'CA9': 'armv7-none-eabi',
825 'CA9neon': 'armv7-none-eabihf'
833 def __init__(self, **args):
834 super().__init__('CLANG', **args)
837 return os.path.join(self.get_root(), 'clang')
839 def get_ccflags(self):
841 f'--target={self.TARGET[self.device]}', self.OPTIMIZE[self.optimize],
842 f'-mcpu={DEVICES[self.device]["mcpu"]}', f'-mfpu={DEVICES[self.device]["mfpu"]}',
843 '-I', os.path.abspath('../Include'), '-c', '-D', f'CORE_HEADER="{DEVICES[device]["header"]}"']
844 if device.endswith('S') and not device.endswith('NS'):
845 ccflags += ["-mcmse"]
846 ccflags += list(sum([('-D', f'{define}={value}') for (define, value) in DEVICES[self.device]['defines'].items()], ()))
851 if toolchain == 'AC6':
852 tc = Toolchain_AC6(device=device, optimize=optimize)
853 elif toolchain == 'GCC':
854 tc = Toolchain_GCC(device=device, optimize=optimize)
855 elif toolchain == 'Clang':
856 tc = Toolchain_Clang(device=device, optimize=optimize)
859 if device.endswith('NS'):
860 prefixes += ['CHECK-NS']
861 elif device.endswith('S'):
862 prefixes += ['CHECK-S']
863 if DEVICES[device]['arch'].startswith('thumb'):
864 prefixes += ['CHECK-THUMB']
865 elif DEVICES[device]['arch'].startswith('arm'):
866 prefixes += ['CHECK-ARM']
868 if DEVICES[device]["mfpu"] != 'none':
869 config.available_features.add('fpu')
870 for feature in DEVICES[device]['features']:
871 config.available_features.add(feature)
873 objdump = os.path.join(Toolchain("CLANG", "none", "none").get_root(), 'llvm-objdump')
874 config.substitutions.append(("llvm-objdump", objdump))
876 config.substitutions.append(("%ccout%", "-o"))
877 config.substitutions.append(("%cc%", tc.get_cc()))
878 config.substitutions.append(("%ccflags%", ' '.join(tc.get_ccflags())))
879 config.substitutions.append(("%prefixes%", ','.join(prefixes)))
880 config.substitutions.append(("%triple%", DEVICES[device]['triple']))
881 config.substitutions.append(("%mcpu%", DEVICES[device]['mcpu']))