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