blob: e43a00eaf70e9ba1f220b2c7044bb198d6506776 [file] [log] [blame]
Imre Kis2cfb2b42021-12-15 19:15:42 +01001#-------------------------------------------------------------------------------
2# Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
3#
4# SPDX-License-Identifier: BSD-3-Clause
5#
6#-------------------------------------------------------------------------------
7
Gyorgy Szing34aaf212022-10-20 07:26:23 +02008# Since we append to default compilation flags stop multiple inclusion to avoid
9# flags being added multiple times.
10include_guard(GLOBAL)
11
Imre Kis2cfb2b42021-12-15 19:15:42 +010012#GNUARM v8 and v9 compilers use a different triplet.
13if(NOT CROSS_COMPILE AND NOT DEFINED ENV{CROSS_COMPILE})
14 set(CROSS_COMPILE "aarch64-elf-;aarch64-none-elf-;aarch64-linux-gnu-;aarch64-none-linux-gnu-" CACHE STRING "List of GCC prefix triplets to use.")
15endif()
16
17set(CMAKE_CROSSCOMPILING True)
18set(CMAKE_SYSTEM_NAME Generic)
19set(CMAKE_SYSTEM_PROCESSOR arm)
20set(CMAKE_POSITION_INDEPENDENT_CODE True)
21
Gyorgy Szing34aaf212022-10-20 07:26:23 +020022set(TS_DEBUG_INFO_FLAGS "-fdiagnostics-show-option -gdwarf-2" CACHE STRING "Compiler flags to add debug information.")
23set(TS_MANDATORY_AARCH_FLAGS "-fpie -mstrict-align" CACHE STRING "Compiler flags configuring architecture specific ")
24set(TS_WARNING_FLAGS "-Wall" CACHE STRING "Compiler flags affecting generating warning messages.")
25set(TS_MANDATORY_LINKER_FLAGS "-Wl,-pie -Wl,--no-dynamic-linker -Wl,--sort-section=alignment -zmax-page-size=4096" CACHE STRING "Linker flags needed for correct builds.")
26
27# Set flags affecting all build types
28foreach(_b_type IN ITEMS DEBUG MINSIZEREL MINSIZWITHDEBINFO RELEASE RELWITHDEBINFO)
29 string(APPEND CMAKE_C_FLAGS_${_b_type}_INIT " ${TS_MANDATORY_AARCH_FLAGS}")
30 string(APPEND CMAKE_CXX_FLAGS_${_b_type}_INIT " ${TS_MANDATORY_AARCH_FLAGS}")
31 string(APPEND CMAKE_EXE_LINKER_FLAGS_${_b_type}_INIT " ${TS_MANDATORY_LINKER_FLAGS}")
32 if(DEFINED TS_ROOT)
33 # Flags not to be used with external components.
34 string(APPEND CMAKE_C_FLAGS_${_b_type}_INIT " ${TS_WARNING_FLAGS}")
35 string(APPEND CMAKE_CXX_FLAGS_${_b_type}_INIT " ${TS_WARNING_FLAGS}")
36 endif()
37endforeach()
38
39# Set flags affecting all build types supporting debugging.
40foreach(_b_type IN ITEMS DEBUG RELWITHDEBINFO MINSIZWITHDEBINFO)
41 string(APPEND CMAKE_C_FLAGS_${_b_type}_INIT " ${TS_DEBUG_INFO_FLAGS}")
42 string(APPEND CMAKE_CXX_FLAGS_${_b_type}_INIT " ${TS_DEBUG_INFO_FLAGS}")
43endforeach()
44
45# Build type specific flags
46string(APPEND CMAKE_C_FLAGS_DEBUG_INIT " -O0")
47string(APPEND CMAKE_C_FLAGS_MINSIZEREL_INIT " -Os")
48string(APPEND CMAKE_C_FLAGS_MINSIZWITHDEBINFO_INIT " -Os")
49string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " -O2")
50string(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO_INIT " -O2")
51string(APPEND CMAKE_CXX_FLAGS_DEBUG_INIT " -O0")
52string(APPEND CMAKE_CXX_FLAGS_MINSIZEREL_INIT " -Os")
53string(APPEND CMAKE_CXX_FLAGS_MINSIZWITHDEBINFO_INIT " -Os")
54string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " -O2")
55string(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT " -O2")
56
Imre Kis2cfb2b42021-12-15 19:15:42 +010057include($ENV{TS_ROOT}/tools/cmake/compiler/GCC.cmake REQUIRED)
58include($ENV{TS_ROOT}/tools/cmake/compiler/config_iface.cmake REQUIRED)