xref: /aosp_15_r20/external/executorch/examples/arm/ethos-u-setup/arm-none-eabi-gcc.cmake (revision 523fa7a60841cd1ecfb9cc4201f1ca8b03ed023a)
1*523fa7a6SAndroid Build Coastguard Worker#
2*523fa7a6SAndroid Build Coastguard Worker# Copyright (c) 2020-2022 Arm Limited. All rights reserved.
3*523fa7a6SAndroid Build Coastguard Worker#
4*523fa7a6SAndroid Build Coastguard Worker# SPDX-License-Identifier: Apache-2.0
5*523fa7a6SAndroid Build Coastguard Worker#
6*523fa7a6SAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the License); you may
7*523fa7a6SAndroid Build Coastguard Worker# not use this file except in compliance with the License.
8*523fa7a6SAndroid Build Coastguard Worker# You may obtain a copy of the License at
9*523fa7a6SAndroid Build Coastguard Worker#
10*523fa7a6SAndroid Build Coastguard Worker# www.apache.org/licenses/LICENSE-2.0
11*523fa7a6SAndroid Build Coastguard Worker#
12*523fa7a6SAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
13*523fa7a6SAndroid Build Coastguard Worker# distributed under the License is distributed on an AS IS BASIS, WITHOUT
14*523fa7a6SAndroid Build Coastguard Worker# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15*523fa7a6SAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
16*523fa7a6SAndroid Build Coastguard Worker# limitations under the License.
17*523fa7a6SAndroid Build Coastguard Worker#
18*523fa7a6SAndroid Build Coastguard Worker
19*523fa7a6SAndroid Build Coastguard Worker# Copied this file from core_platform/cmake/toolchain/arm-non-eabi-gcc.cmake And
20*523fa7a6SAndroid Build Coastguard Worker# modified to align better with cs300 platform
21*523fa7a6SAndroid Build Coastguard Worker
22*523fa7a6SAndroid Build Coastguard Workerset(TARGET_CPU
23*523fa7a6SAndroid Build Coastguard Worker    "cortex-m55"
24*523fa7a6SAndroid Build Coastguard Worker    CACHE STRING "Target CPU"
25*523fa7a6SAndroid Build Coastguard Worker)
26*523fa7a6SAndroid Build Coastguard Workerstring(TOLOWER ${TARGET_CPU} CMAKE_SYSTEM_PROCESSOR)
27*523fa7a6SAndroid Build Coastguard Worker
28*523fa7a6SAndroid Build Coastguard Workerset(CMAKE_SYSTEM_NAME Generic)
29*523fa7a6SAndroid Build Coastguard Workerset(CMAKE_C_COMPILER "arm-none-eabi-gcc")
30*523fa7a6SAndroid Build Coastguard Workerset(CMAKE_CXX_COMPILER "arm-none-eabi-g++")
31*523fa7a6SAndroid Build Coastguard Workerset(CMAKE_ASM_COMPILER "arm-none-eabi-gcc")
32*523fa7a6SAndroid Build Coastguard Workerset(CMAKE_LINKER "arm-none-eabi-ld")
33*523fa7a6SAndroid Build Coastguard Worker
34*523fa7a6SAndroid Build Coastguard Workerset(CMAKE_EXECUTABLE_SUFFIX ".elf")
35*523fa7a6SAndroid Build Coastguard Workerset(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
36*523fa7a6SAndroid Build Coastguard Workerset(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
37*523fa7a6SAndroid Build Coastguard Workerset(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
38*523fa7a6SAndroid Build Coastguard Workerset(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
39*523fa7a6SAndroid Build Coastguard Worker
40*523fa7a6SAndroid Build Coastguard Worker# Select C/C++ version
41*523fa7a6SAndroid Build Coastguard Workerset(CMAKE_C_STANDARD 11)
42*523fa7a6SAndroid Build Coastguard Workerset(CMAKE_CXX_STANDARD 17)
43*523fa7a6SAndroid Build Coastguard Worker
44*523fa7a6SAndroid Build Coastguard Workerset(GCC_CPU ${CMAKE_SYSTEM_PROCESSOR})
45*523fa7a6SAndroid Build Coastguard Workerstring(REPLACE "cortex-m85" "cortex-m55" GCC_CPU ${GCC_CPU})
46*523fa7a6SAndroid Build Coastguard Worker
47*523fa7a6SAndroid Build Coastguard Worker# Compile options
48*523fa7a6SAndroid Build Coastguard Workeradd_compile_options(
49*523fa7a6SAndroid Build Coastguard Worker  -mcpu=${GCC_CPU} -mthumb "$<$<CONFIG:DEBUG>:-gdwarf-3>"
50*523fa7a6SAndroid Build Coastguard Worker  "$<$<COMPILE_LANGUAGE:CXX>:-fno-unwind-tables;-fno-rtti;-fno-exceptions>"
51*523fa7a6SAndroid Build Coastguard Worker  -fdata-sections -ffunction-sections
52*523fa7a6SAndroid Build Coastguard Worker)
53*523fa7a6SAndroid Build Coastguard Worker
54*523fa7a6SAndroid Build Coastguard Worker# Compile defines
55*523fa7a6SAndroid Build Coastguard Workeradd_compile_definitions("$<$<NOT:$<CONFIG:DEBUG>>:NDEBUG>")
56*523fa7a6SAndroid Build Coastguard Worker
57*523fa7a6SAndroid Build Coastguard Worker# Link options
58*523fa7a6SAndroid Build Coastguard Workeradd_link_options(-mcpu=${GCC_CPU} -mthumb)
59*523fa7a6SAndroid Build Coastguard Worker
60*523fa7a6SAndroid Build Coastguard Workerif(SEMIHOSTING)
61*523fa7a6SAndroid Build Coastguard Worker  add_link_options(--specs=rdimon.specs)
62*523fa7a6SAndroid Build Coastguard Workerelse()
63*523fa7a6SAndroid Build Coastguard Worker  add_link_options(--specs=nosys.specs)
64*523fa7a6SAndroid Build Coastguard Workerendif()
65*523fa7a6SAndroid Build Coastguard Worker
66*523fa7a6SAndroid Build Coastguard Worker# Set floating point unit
67*523fa7a6SAndroid Build Coastguard Workerif(CMAKE_SYSTEM_PROCESSOR MATCHES "\\+fp")
68*523fa7a6SAndroid Build Coastguard Worker  set(FLOAT hard)
69*523fa7a6SAndroid Build Coastguard Workerelseif(CMAKE_SYSTEM_PROCESSOR MATCHES "\\+nofp")
70*523fa7a6SAndroid Build Coastguard Worker  set(FLOAT soft)
71*523fa7a6SAndroid Build Coastguard Workerelseif(
72*523fa7a6SAndroid Build Coastguard Worker  CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m33(\\+|$)"
73*523fa7a6SAndroid Build Coastguard Worker  OR CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m55(\\+|$)"
74*523fa7a6SAndroid Build Coastguard Worker  OR CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m85(\\+|$)"
75*523fa7a6SAndroid Build Coastguard Worker)
76*523fa7a6SAndroid Build Coastguard Worker  set(FLOAT hard)
77*523fa7a6SAndroid Build Coastguard Workerelseif(CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m4(\\+|$)"
78*523fa7a6SAndroid Build Coastguard Worker       OR CMAKE_SYSTEM_PROCESSOR MATCHES "cortex-m7(\\+|$)"
79*523fa7a6SAndroid Build Coastguard Worker)
80*523fa7a6SAndroid Build Coastguard Worker  set(FLOAT hard)
81*523fa7a6SAndroid Build Coastguard Worker  set(FPU_CONFIG "fpv4-sp-d16")
82*523fa7a6SAndroid Build Coastguard Worker  add_compile_options(-mfpu=${FPU_CONFIG})
83*523fa7a6SAndroid Build Coastguard Worker  add_link_options(-mfpu=${FPU_CONFIG})
84*523fa7a6SAndroid Build Coastguard Workerelse()
85*523fa7a6SAndroid Build Coastguard Worker  set(FLOAT soft)
86*523fa7a6SAndroid Build Coastguard Workerendif()
87*523fa7a6SAndroid Build Coastguard Worker
88*523fa7a6SAndroid Build Coastguard Workerif(FLOAT)
89*523fa7a6SAndroid Build Coastguard Worker  add_compile_options(-mfloat-abi=${FLOAT})
90*523fa7a6SAndroid Build Coastguard Worker  add_link_options(-mfloat-abi=${FLOAT})
91*523fa7a6SAndroid Build Coastguard Workerendif()
92*523fa7a6SAndroid Build Coastguard Worker
93*523fa7a6SAndroid Build Coastguard Workeradd_link_options(LINKER:--nmagic,--gc-sections)
94*523fa7a6SAndroid Build Coastguard Worker
95*523fa7a6SAndroid Build Coastguard Worker# Compilation warnings
96*523fa7a6SAndroid Build Coastguard Workeradd_compile_options(
97*523fa7a6SAndroid Build Coastguard Worker  # -Wall -Wextra -Wcast-align -Wdouble-promotion -Wformat
98*523fa7a6SAndroid Build Coastguard Worker  # -Wmissing-field-initializers -Wnull-dereference -Wredundant-decls -Wshadow
99*523fa7a6SAndroid Build Coastguard Worker  # -Wswitch -Wswitch-default -Wunused -Wno-redundant-decls
100*523fa7a6SAndroid Build Coastguard Worker  -Wno-psabi
101*523fa7a6SAndroid Build Coastguard Worker)
102