# # Copyright (c) 2020 Arm Limited. All rights reserved. # # SPDX-License-Identifier: Apache-2.0 # # Licensed under the Apache License, Version 2.0 (the License); you may # not use this file except in compliance with the License. # You may obtain a copy of the License at # # www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an AS IS BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # if (NOT TARGET_CPU) set(TARGET_CPU "cortex-m4") endif() set(CMAKE_SYSTEM_NAME Generic) set(CMAKE_C_COMPILER "armclang") set(CMAKE_CXX_COMPILER "armclang") set(CMAKE_LINKER "armlink") # Convert TARGET_CPU=Cortex-M33+nofp+nodsp into # - CMAKE_SYSTEM_PROCESSOR=cortex-m33 # - __CPU_FEATURES=no-fp;no-dsp string(REPLACE "+" ";" __CPU_FEATURES ${TARGET_CPU}) list(POP_FRONT __CPU_FEATURES CMAKE_SYSTEM_PROCESSOR) string(TOLOWER ${CMAKE_SYSTEM_PROCESSOR} CMAKE_SYSTEM_PROCESSOR) # Link target set(__LINK_TARGET ${CMAKE_SYSTEM_PROCESSOR}) if ("nodsp" IN_LIST __CPU_FEATURES) string(APPEND __LINK_TARGET ".no_dsp") endif() if ("nofp" IN_LIST __CPU_FEATURES) string(APPEND __LINK_TARGET ".no_fp") endif() if (CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m55") set(__LINK_TARGET 8.1-M.Main.dsp) endif() # Define C/C++ standards set(CMAKE_C_STANDARD 99) set(CMAKE_CXX_STANDARD 14) # Compile options add_compile_options( -mcpu=${TARGET_CPU} -mthumb "$<$:-gdwarf-3>" "$<$:-fno-unwind-tables;-fno-rtti;-fno-exceptions>") # Link options add_link_options( --cpu=${__LINK_TARGET} --lto --info common,debug,sizes,totals,veneers,unused --symbols --diag_suppress=L6439W) # Compilation warnings add_compile_options( -Wall -Wextra -Wsign-compare -Wunused -Wswitch-default -Wformat -Wdouble-promotion -Wredundant-decls -Wshadow -Wcast-align -Wnull-dereference -Wno-format-extra-args -Wno-unused-function -Wno-unused-label -Wno-missing-field-initializers -Wno-return-type)