Gyorgy Szing | 4909180 | 2020-11-24 00:33:09 +0100 | [diff] [blame] | 1 | #------------------------------------------------------------------------------- |
Julian Hall | 6e02acf | 2022-02-22 16:25:03 +0000 | [diff] [blame] | 2 | # Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved. |
Gyorgy Szing | 4909180 | 2020-11-24 00:33:09 +0100 | [diff] [blame] | 3 | # |
| 4 | # SPDX-License-Identifier: BSD-3-Clause |
| 5 | # |
| 6 | #------------------------------------------------------------------------------- |
| 7 | |
Gyorgy Szing | 34aaf21 | 2022-10-20 07:26:23 +0200 | [diff] [blame] | 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 | 4909180 | 2020-11-24 00:33:09 +0100 | [diff] [blame] | 12 | #GNUARM v8 and v9 compilers use a different triplet. |
Gyorgy Szing | d80f856 | 2021-02-11 19:31:43 +0100 | [diff] [blame] | 13 | if(NOT CROSS_COMPILE AND NOT DEFINED ENV{CROSS_COMPILE}) |
Gyorgy Szing | daf2efd | 2021-03-09 07:30:34 +0100 | [diff] [blame] | 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.") |
Gyorgy Szing | 4909180 | 2020-11-24 00:33:09 +0100 | [diff] [blame] | 15 | endif() |
| 16 | |
| 17 | set(CMAKE_CROSSCOMPILING True) |
| 18 | set(CMAKE_SYSTEM_NAME Generic) |
| 19 | set(CMAKE_SYSTEM_PROCESSOR arm) |
| 20 | set(CMAKE_POSITION_INDEPENDENT_CODE True) |
| 21 | |
Gyorgy Szing | 34aaf21 | 2022-10-20 07:26:23 +0200 | [diff] [blame] | 22 | 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^] | 23 | set(TS_MANDATORY_AARCH_FLAGS "-fpic -mstrict-align -march=armv8-a+crc" CACHE STRING "Compiler flags configuring architecture specific ") |
Gyorgy Szing | 34aaf21 | 2022-10-20 07:26:23 +0200 | [diff] [blame] | 24 | set(TS_WARNING_FLAGS "-Wall" CACHE STRING "Compiler flags affecting generating warning messages.") |
| 25 | set(TS_MANDATORY_LINKER_FLAGS "-pie -Wl,--as-needed -Wl,--sort-section=alignment -zmax-page-size=4096" |
| 26 | CACHE STRING "Linker flags needed for correct builds.") |
| 27 | |
| 28 | # Set flags affecting all build types |
| 29 | foreach(_b_type IN ITEMS DEBUG MINSIZEREL MINSIZWITHDEBINFO RELEASE RELWITHDEBINFO) |
| 30 | string(APPEND CMAKE_C_FLAGS_${_b_type}_INIT " ${TS_MANDATORY_AARCH_FLAGS}") |
| 31 | string(APPEND CMAKE_CXX_FLAGS_${_b_type}_INIT " ${TS_MANDATORY_AARCH_FLAGS}") |
| 32 | string(APPEND CMAKE_EXE_LINKER_FLAGS_${_b_type}_INIT " ${TS_MANDATORY_LINKER_FLAGS}") |
| 33 | if(DEFINED TS_ROOT) |
| 34 | # Flags not to be used with external components. |
| 35 | string(APPEND CMAKE_C_FLAGS_${_b_type}_INIT " ${TS_WARNING_FLAGS}") |
| 36 | string(APPEND CMAKE_CXX_FLAGS_${_b_type}_INIT " ${TS_WARNING_FLAGS}") |
| 37 | endif() |
| 38 | endforeach() |
| 39 | |
| 40 | # Set flags affecting all build types supporting debugging. |
| 41 | foreach(_b_type IN ITEMS DEBUG RELWITHDEBINFO MINSIZWITHDEBINFO) |
| 42 | string(APPEND CMAKE_C_FLAGS_${_b_type}_INIT " ${TS_DEBUG_INFO_FLAGS}") |
| 43 | string(APPEND CMAKE_CXX_FLAGS_${_b_type}_INIT " ${TS_DEBUG_INFO_FLAGS}") |
| 44 | endforeach() |
| 45 | |
| 46 | # Build type specific flags |
| 47 | string(APPEND CMAKE_C_FLAGS_DEBUG_INIT " -O0") |
| 48 | string(APPEND CMAKE_C_FLAGS_MINSIZEREL_INIT " -Os") |
| 49 | string(APPEND CMAKE_C_FLAGS_MINSIZWITHDEBINFO_INIT " -Os") |
| 50 | string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " -O2") |
| 51 | string(APPEND CMAKE_C_FLAGS_RELWITHDEBINFO_INIT " -O2") |
| 52 | string(APPEND CMAKE_CXX_FLAGS_DEBUG_INIT " -O0") |
| 53 | string(APPEND CMAKE_CXX_FLAGS_MINSIZEREL_INIT " -Os") |
| 54 | string(APPEND CMAKE_CXX_FLAGS_MINSIZWITHDEBINFO_INIT " -Os") |
| 55 | string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " -O2") |
| 56 | string(APPEND CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT " -O2") |
| 57 | |
Gyorgy Szing | 4909180 | 2020-11-24 00:33:09 +0100 | [diff] [blame] | 58 | include($ENV{TS_ROOT}/tools/cmake/compiler/GCC.cmake REQUIRED) |
Julian Hall | 0051ed1 | 2021-07-22 13:59:24 +0100 | [diff] [blame] | 59 | include($ENV{TS_ROOT}/tools/cmake/compiler/config_iface.cmake REQUIRED) |