1# Copyright (c) 2025 IAR Systems AB
2#
3# SPDX-License-Identifier: Apache-2.0
4
5# Determines what argument to give to --cpu= based on the
6# KConfig'uration and sets this to ICCARM_CPU
7
8if("${ARCH}" STREQUAL "arm")
9  if(CONFIG_CPU_CORTEX_M0)
10    set(ICCARM_CPU Cortex-M0)
11  elseif(CONFIG_CPU_CORTEX_M0PLUS)
12    set(ICCARM_CPU Cortex-M0+)
13  elseif(CONFIG_CPU_CORTEX_M1)
14    set(ICCARM_CPU Cortex-M1)
15  elseif(CONFIG_CPU_CORTEX_M3)
16    set(ICCARM_CPU Cortex-M3)
17  elseif(CONFIG_CPU_CORTEX_M4)
18    set(ICCARM_CPU Cortex-M4)
19  elseif(CONFIG_CPU_CORTEX_M7)
20    set(ICCARM_CPU Cortex-M7)
21  elseif(CONFIG_CPU_CORTEX_M23)
22    set(ICCARM_CPU Cortex-M23)
23  elseif(CONFIG_CPU_CORTEX_M33)
24    if(CONFIG_ARMV8_M_DSP)
25      set(ICCARM_CPU Cortex-M33)
26    else()
27      set(ICCARM_CPU Cortex-M33.no_dsp)
28    endif()
29  elseif(CONFIG_CPU_CORTEX_M55)
30    if(CONFIG_ARMV8_1_M_MVEF)
31      set(ICCARM_CPU Cortex-M55)
32    elseif(CONFIG_ARMV8_1_M_MVEI)
33      set(ICCARM_CPU Cortex-M55.no_mve)
34    elseif(CONFIG_ARMV8_M_DSP)
35      set(ICCARM_CPU Cortex-M55.no_mve)
36    else()
37      set(ICCARM_CPU Cortex-M55.no_dsp)
38    endif()
39  elseif(CONFIG_CPU_CORTEX_R4)
40    if(CONFIG_FPU AND CONFIG_CPU_HAS_VFP)
41      set(ICCARM_CPU Cortex-R4F)
42    else()
43      set(ICCARM_CPU Cortex-R4)
44    endif()
45  elseif(CONFIG_CPU_CORTEX_R5)
46    set(ICCARM_CPU Cortex-R5)
47    if(CONFIG_FPU AND CONFIG_CPU_HAS_VFP)
48      if(NOT CONFIG_VFP_FEATURE_DOUBLE_PRECISION)
49        set(ICCARM_CPU ${ICCARM_CPU}+fp.sp)
50      endif()
51    else()
52      set(ICCARM_CPU ${ICCARM_CPU}+fp.dp)
53    endif()
54  elseif(CONFIG_CPU_CORTEX_R7)
55    set(ICCARM_CPU Cortex-R7)
56    if(CONFIG_FPU AND CONFIG_CPU_HAS_VFP)
57      if(NOT CONFIG_VFP_FEATURE_DOUBLE_PRECISION)
58        set(ICCARM_CPU ${ICCARM_CPU}+fp.sp)
59      endif()
60    else()
61      set(ICCARM_CPU ${ICCARM_CPU}+fp.dp)
62    endif()
63  elseif(CONFIG_CPU_CORTEX_R52)
64    set(ICCARM_CPU Cortex-R52)
65    if(CONFIG_FPU AND CONFIG_CPU_HAS_VFP)
66      if(NOT CONFIG_VFP_FEATURE_DOUBLE_PRECISION)
67        set(ICCARM_CPU ${ICCARM_CPU}+fp.sp)
68      endif()
69    endif()
70  elseif(CONFIG_CPU_CORTEX_A7)
71    set(ICCARM_CPU Cortex-A7)
72  elseif(CONFIG_CPU_CORTEX_A9)
73    set(ICCARM_CPU Cortex-A9)
74  else()
75    message(FATAL_ERROR "Expected CONFIG_CPU_CORTEX_x to be defined")
76  endif()
77elseif("${ARCH}" STREQUAL "arm64")
78  if(CONFIG_CPU_CORTEX_A53)
79    set(ICCARM_CPU Cortex-A53)
80  elseif(CONFIG_CPU_CORTEX_A55)
81    set(ICCARM_CPU Cortex-A55)
82  elseif(CONFIG_CPU_CORTEX_A76)
83    set(ICCARM_CPU cortex-a76)
84  elseif(CONFIG_CPU_CORTEX_A76_A55)
85    set(ICCARM_CPU cortex-a76)
86  elseif(CONFIG_CPU_CORTEX_A72)
87    set(ICCARM_CPU Cortex-A72)
88  elseif(CONFIG_CPU_CORTEX_R82)
89    set(ICCARM_CPU Cortex-R82)
90  endif()
91endif()
92