blob: 2215d6b5db8eb5f36d401e2ba7e51de201d242b1 [file] [log] [blame]
Julian Hall07679f22020-11-23 17:45:16 +01001#-------------------------------------------------------------------------------
Julian Hall6e02acf2022-02-22 16:25:03 +00002# Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved.
Julian Hall07679f22020-11-23 17:45:16 +01003#
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)
Julian Hall6e02acf2022-02-22 16:25:03 +000011
Gyorgy Szing34aaf212022-10-20 07:26:23 +020012set(TS_DEBUG_INFO_FLAGS "-fdiagnostics-show-option -gdwarf-2" CACHE STRING "Compiler flags to add debug information.")
13set(TS_MANDATORY_AARCH_FLAGS "" CACHE STRING "Compiler flags configuring architecture specific ")
Gabor Toth983264f2024-01-23 09:16:24 +010014set(TS_WARNING_FLAGS "-Wall -Werror" CACHE STRING "Compiler flags affecting generating warning messages.")
Gyorgy Szing34aaf212022-10-20 07:26:23 +020015set(TS_MANDATORY_LINKER_FLAGS "" CACHE STRING "Linker flags needed for correct builds.")
16
17# Set flags affecting all build types
Gabor Toth22d04d62024-06-25 12:42:34 +020018string(APPEND CMAKE_C_FLAGS_INIT " ${TS_MANDATORY_AARCH_FLAGS}")
19string(APPEND CMAKE_CXX_FLAGS_INIT " ${TS_MANDATORY_AARCH_FLAGS}")
20string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " ${TS_MANDATORY_LINKER_FLAGS}")
21if(DEFINED TS_ROOT)
22 # Flags not to be used with external components.
23 string(APPEND CMAKE_C_FLAGS_INIT " ${TS_WARNING_FLAGS}")
24 string(APPEND CMAKE_CXX_FLAGS_INIT " ${TS_WARNING_FLAGS}")
25endif()
Gyorgy Szing34aaf212022-10-20 07:26:23 +020026
27# Set flags affecting all build types supporting debugging.
Gyorgy Szing1ff7d792024-09-18 13:40:05 +020028foreach(_b_type IN ITEMS DEBUG RELWITHDEBINFO MINSIZWITHDEBINFO DEBUGCOVERAGE)
Gyorgy Szing34aaf212022-10-20 07:26:23 +020029 string(APPEND CMAKE_C_FLAGS_${_b_type}_INIT " ${TS_DEBUG_INFO_FLAGS}")
30 string(APPEND CMAKE_CXX_FLAGS_${_b_type}_INIT " ${TS_DEBUG_INFO_FLAGS}")
31endforeach()
32
33# Build type specific flags
34string(APPEND CMAKE_C_FLAGS_DEBUG_INIT " -O0")
35string(APPEND CMAKE_C_FLAGS_MINSIZEREL_INIT " -Os")
36string(APPEND CMAKE_C_FLAGS_MINSIZWITHDEBINFO_INIT " -Os")
37string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " -O2")
38string(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO_INIT " -O2")
Gyorgy Szing1ff7d792024-09-18 13:40:05 +020039string(APPEND CMAKE_C_FLAGS_DEBUGCOVERAGE_INIT " -O0 -coverage")
Gyorgy Szing34aaf212022-10-20 07:26:23 +020040string(APPEND CMAKE_CXX_FLAGS_DEBUG_INIT " -O0")
41string(APPEND CMAKE_CXX_FLAGS_MINSIZEREL_INIT " -Os")
42string(APPEND CMAKE_CXX_FLAGS_MINSIZWITHDEBINFO_INIT " -Os")
43string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " -O2")
44string(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT " -O2")
Gyorgy Szing1ff7d792024-09-18 13:40:05 +020045string(APPEND CMAKE_CXX_FLAGS_DEBUGCOVERAGE_INIT " -O0 -coverage")
Gyorgy Szing34aaf212022-10-20 07:26:23 +020046
Gyorgy Szingf0be7ce2022-10-20 07:39:40 +020047include($ENV{TS_ROOT}/tools/cmake/compiler/GCC.cmake REQUIRED)
Gyorgy Szing34aaf212022-10-20 07:26:23 +020048include($ENV{TS_ROOT}/tools/cmake/compiler/config_iface.cmake REQUIRED)