Julian Hall | 07679f2 | 2020-11-23 17:45:16 +0100 | [diff] [blame] | 1 | #------------------------------------------------------------------------------- |
Gyorgy Szing | 748838e | 2022-03-05 04:17:34 +0000 | [diff] [blame] | 2 | # Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved. |
Julian Hall | 07679f2 | 2020-11-23 17:45:16 +0100 | [diff] [blame] | 3 | # |
| 4 | # SPDX-License-Identifier: BSD-3-Clause |
| 5 | # |
| 6 | #------------------------------------------------------------------------------- |
Gyorgy Szing | 34aaf21 | 2022-10-20 07:26:23 +0200 | [diff] [blame] | 7 | |
| 8 | # Since we append to default compilation flags stop multiple inclusion to avoid |
| 9 | # flags being added multiple times. |
| 10 | include_guard(GLOBAL) |
| 11 | |
Gyorgy Szing | d80f856 | 2021-02-11 19:31:43 +0100 | [diff] [blame] | 12 | if(NOT CROSS_COMPILE AND NOT DEFINED ENV{CROSS_COMPILE}) |
Gyorgy Szing | 748838e | 2022-03-05 04:17:34 +0000 | [diff] [blame] | 13 | set(CROSS_COMPILE "aarch64-linux-gnu-;aarch64-none-linux-gnu-" CACHE STRING "List of GCC prefix triplets to use.") |
Gyorgy Szing | d80f856 | 2021-02-11 19:31:43 +0100 | [diff] [blame] | 14 | endif() |
Julian Hall | 07679f2 | 2020-11-23 17:45:16 +0100 | [diff] [blame] | 15 | |
| 16 | set(CMAKE_CROSSCOMPILING True) |
| 17 | set(CMAKE_SYSTEM_NAME Linux) |
| 18 | set(CMAKE_SYSTEM_PROCESSOR arm) |
| 19 | |
Gyorgy Szing | 34aaf21 | 2022-10-20 07:26:23 +0200 | [diff] [blame] | 20 | set(TS_DEBUG_INFO_FLAGS "-fdiagnostics-show-option -gdwarf-2" CACHE STRING "Compiler flags to add debug information.") |
Balint Dobszay | 550ce87 | 2022-12-15 15:28:40 +0100 | [diff] [blame^] | 21 | set(TS_MANDATORY_AARCH_FLAGS "-mstrict-align -march=armv8-a+crc -DARM64=1" CACHE STRING "Compiler flags configuring architecture specific ") |
Gyorgy Szing | 34aaf21 | 2022-10-20 07:26:23 +0200 | [diff] [blame] | 22 | set(TS_WARNING_FLAGS "-Wall" CACHE STRING "Compiler flags affecting generating warning messages.") |
| 23 | set(TS_MANDATORY_LINKER_FLAGS "" CACHE STRING "Linker flags needed for correct builds.") |
Julian Hall | 07679f2 | 2020-11-23 17:45:16 +0100 | [diff] [blame] | 24 | |
Gyorgy Szing | 34aaf21 | 2022-10-20 07:26:23 +0200 | [diff] [blame] | 25 | # Set flags affecting all build types |
| 26 | foreach(_b_type IN ITEMS DEBUG MINSIZEREL MINSIZWITHDEBINFO RELEASE RELWITHDEBINFO) |
| 27 | string(APPEND CMAKE_C_FLAGS_${_b_type}_INIT " ${TS_MANDATORY_AARCH_FLAGS}") |
| 28 | string(APPEND CMAKE_CXX_FLAGS_${_b_type}_INIT " ${TS_MANDATORY_AARCH_FLAGS}") |
| 29 | string(APPEND CMAKE_EXE_LINKER_FLAGS_${_b_type}_INIT " ${TS_MANDATORY_LINKER_FLAGS}") |
| 30 | if(DEFINED TS_ROOT) |
| 31 | # Flags not to be used with external components. |
| 32 | string(APPEND CMAKE_C_FLAGS_${_b_type}_INIT " ${TS_WARNING_FLAGS}") |
| 33 | string(APPEND CMAKE_CXX_FLAGS_${_b_type}_INIT " ${TS_WARNING_FLAGS}") |
| 34 | endif() |
| 35 | endforeach() |
| 36 | |
| 37 | # Set flags affecting all build types supporting debugging. |
| 38 | foreach(_b_type IN ITEMS DEBUG RELWITHDEBINFO MINSIZWITHDEBINFO) |
| 39 | string(APPEND CMAKE_C_FLAGS_${_b_type}_INIT " ${TS_DEBUG_INFO_FLAGS}") |
| 40 | string(APPEND CMAKE_CXX_FLAGS_${_b_type}_INIT " ${TS_DEBUG_INFO_FLAGS}") |
| 41 | endforeach() |
| 42 | |
| 43 | # Build type specific flags |
| 44 | string(APPEND CMAKE_C_FLAGS_DEBUG_INIT " -O0") |
| 45 | string(APPEND CMAKE_C_FLAGS_MINSIZEREL_INIT " -Os") |
| 46 | string(APPEND CMAKE_C_FLAGS_MINSIZWITHDEBINFO_INIT " -Os") |
| 47 | string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " -O2") |
| 48 | string(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO_INIT " -O2") |
| 49 | string(APPEND CMAKE_CXX_FLAGS_DEBUG_INIT " -O0") |
| 50 | string(APPEND CMAKE_CXX_FLAGS_MINSIZEREL_INIT " -Os") |
| 51 | string(APPEND CMAKE_CXX_FLAGS_MINSIZWITHDEBINFO_INIT " -Os") |
| 52 | string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " -O2") |
| 53 | string(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT " -O2") |
Julian Hall | 6e02acf | 2022-02-22 16:25:03 +0000 | [diff] [blame] | 54 | |
Julian Hall | 07679f2 | 2020-11-23 17:45:16 +0100 | [diff] [blame] | 55 | include($ENV{TS_ROOT}/tools/cmake/compiler/GCC.cmake REQUIRED) |
Julian Hall | 0051ed1 | 2021-07-22 13:59:24 +0100 | [diff] [blame] | 56 | include($ENV{TS_ROOT}/tools/cmake/compiler/config_iface.cmake REQUIRED) |