# # Copyright (c) 2020-2021 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. # set(TARGET_CPU "cortex-m4" CACHE STRING "Target CPU") set(CMAKE_SYSTEM_NAME Generic) set(CMAKE_C_COMPILER "arm-none-eabi-gcc") set(CMAKE_ASM_COMPILER "arm-none-eabi-gcc") set(CMAKE_CXX_COMPILER "arm-none-eabi-g++") # Convert TARGET_CPU=Cortex-M33+nofp+nodsp into # - CMAKE_SYSTEM_PROCESSOR=cortex-m33 # - TARGET_CPU_FEATURES=no-fp;no-dsp string(REPLACE "+" ";" TARGET_CPU_FEATURES ${TARGET_CPU}) list(POP_FRONT TARGET_CPU_FEATURES CMAKE_SYSTEM_PROCESSOR) string(TOLOWER ${CMAKE_SYSTEM_PROCESSOR} CMAKE_SYSTEM_PROCESSOR) set(CMAKE_EXECUTABLE_SUFFIX ".elf") set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) # Select C/C++ version 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>") # Compile defines add_compile_definitions( "$<$>:NDEBUG>") # Link options add_link_options( -mcpu=${TARGET_CPU} -mthumb --specs=nosys.specs) # Set floating point unit if("${TARGET_CPU}" MATCHES "\\+fp") set(FLOAT hard) elseif("${TARGET_CPU}" MATCHES "\\+nofp") set(FLOAT soft) elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "cortex-m33" OR "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "cortex-m55") set(FLOAT hard) else() set(FLOAT soft) endif() if (FLOAT) add_compile_options(-mfloat-abi=${FLOAT}) add_link_options(-mfloat-abi=${FLOAT}) endif() # 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-parameter -Wno-unused-label -Wno-missing-field-initializers -Wno-return-type)