From 4ae24f4fea185fda760b779694c5d8a83afa26bf Mon Sep 17 00:00:00 2001 From: Ronald Cron Date: Tue, 8 Oct 2024 17:53:13 +0200 Subject: [PATCH] cmake: GNU GCC: Add base link options target_compile_options() does not set link options as setting CMAKE_C_FLAGS does. Thus set link options with set_target_properties(). target_link_options() is not available in CMake 3.5 used in the CI. Signed-off-by: Ronald Cron --- CMakeLists.txt | 5 +++++ tf-psa-crypto/TF-PSA-Crypto.cmake | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1c6e8ab07..9cee8ceef 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -248,6 +248,7 @@ function(set_gnu_base_compile_options target) target_compile_options(${target} PRIVATE $<$:-O2>) target_compile_options(${target} PRIVATE $<$:-O0 -g3>) target_compile_options(${target} PRIVATE $<$:-O0 -g3 --coverage>) + set_target_properties(${target} PROPERTIES LINK_FLAGS_COVERAGE "--coverage") # Old GCC versions hit a performance problem with test_suite_pkwrite # "Private keey write check EC" tests when building with Asan+UBSan # and -O3: those tests take more than 100x time than normal, with @@ -262,9 +263,13 @@ function(set_gnu_base_compile_options target) else() target_compile_options(${target} PRIVATE $<$:-O3>) endif() + set_target_properties(${target} PROPERTIES LINK_FLAGS_ASAN "-fsanitize=address -fsanitize=undefined") target_compile_options(${target} PRIVATE $<$:-fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recover=all -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls>) + set_target_properties(${target} PROPERTIES LINK_FLAGS_ASANDBG "-fsanitize=address -fsanitize=undefined") target_compile_options(${target} PRIVATE $<$:-fsanitize=thread -O3>) + set_target_properties(${target} PROPERTIES LINK_FLAGS_TSAN "-fsanitize=thread") target_compile_options(${target} PRIVATE $<$:-fsanitize=thread -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls>) + set_target_properties(${target} PROPERTIES LINK_FLAGS_TSANDBG "-fsanitize=thread") target_compile_options(${target} PRIVATE $<$:-Os>) target_compile_options(${target} PRIVATE $<$:-Os -Wcast-qual>) diff --git a/tf-psa-crypto/TF-PSA-Crypto.cmake b/tf-psa-crypto/TF-PSA-Crypto.cmake index d8e13c884..6fcbdcfdb 100644 --- a/tf-psa-crypto/TF-PSA-Crypto.cmake +++ b/tf-psa-crypto/TF-PSA-Crypto.cmake @@ -213,6 +213,7 @@ function(set_gnu_base_compile_options target) target_compile_options(${target} PRIVATE $<$:-O2>) target_compile_options(${target} PRIVATE $<$:-O0 -g3>) target_compile_options(${target} PRIVATE $<$:-O0 -g3 --coverage>) + set_target_properties(${target} PROPERTIES LINK_FLAGS_COVERAGE "--coverage") # Old GCC versions hit a performance problem with test_suite_pkwrite # "Private keey write check EC" tests when building with Asan+UBSan # and -O3: those tests take more than 100x time than normal, with @@ -227,9 +228,13 @@ function(set_gnu_base_compile_options target) else() target_compile_options(${target} PRIVATE $<$:-O3>) endif() + set_target_properties(${target} PROPERTIES LINK_FLAGS_ASAN "-fsanitize=address -fsanitize=undefined") target_compile_options(${target} PRIVATE $<$:-fsanitize=address -fno-common -fsanitize=undefined -fno-sanitize-recover=all -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls>) + set_target_properties(${target} PROPERTIES LINK_FLAGS_ASANDBG "-fsanitize=address -fsanitize=undefined") target_compile_options(${target} PRIVATE $<$:-fsanitize=thread -O3>) + set_target_properties(${target} PROPERTIES LINK_FLAGS_TSAN "-fsanitize=thread") target_compile_options(${target} PRIVATE $<$:-fsanitize=thread -O1 -g3 -fno-omit-frame-pointer -fno-optimize-sibling-calls>) + set_target_properties(${target} PROPERTIES LINK_FLAGS_TSANDBG "-fsanitize=thread") target_compile_options(${target} PRIVATE $<$:-Os>) target_compile_options(${target} PRIVATE $<$:-Os -Wcast-qual>)