From e934f7bac3714386fbc8e76c3b25ccea928684f3 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 19 Jun 2020 00:20:20 -0400 Subject: [PATCH] try to work around linker issues with older CMake versions and using coverage or sanitizers --- cmake/CMakeLists.txt | 24 ++++++++++++++++++++---- unittest/force-styles/CMakeLists.txt | 6 ++++-- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index e3569b1188..f75a5ea914 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -243,8 +243,16 @@ if(${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU") option(ENABLE_COVERAGE "Enable collecting code coverage data" OFF) mark_as_advanced(ENABLE_COVERAGE) if(ENABLE_COVERAGE) - target_compile_options(lammps PUBLIC --coverage) - target_link_options(lammps PUBLIC --coverage) + if(CMAKE_VERSION VERSION_LESS 3.13) + if(CMAKE_CXX_FLAGS) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage") + else() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_${CMAKE_BUILD_TYPE}_FLAGS} --coverage") + endif() + else() + target_compile_options(lammps PUBLIC --coverage) + target_link_options(lammps PUBLIC --coverage) + endif() endif() endif() if((${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU") OR (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")) @@ -255,8 +263,16 @@ if((${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU") OR (${CMAKE_CXX_COMPILER_ID} STREQU validate_option(ENABLE_SANITIZER ENABLE_SANITIZER_VALUES) string(TOLOWER ${ENABLE_SANITIZER} ENABLE_SANITIZER) if (NOT ENABLE_SANITIZER STREQUAL "none") - target_compile_options(lammps PUBLIC -fsanitize=${ENABLE_SANITIZER}) - target_link_options(lammps PUBLIC -fsanitize=${ENABLE_SANITIZER}) + if(CMAKE_VERSION VERSION_LESS 3.13) + if(CMAKE_CXX_FLAGS) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=${ENABLE_SANITIZER}") + else() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_${CMAKE_BUILD_TYPE}_FLAGS} -fsanitize=${ENABLE_SANITIZER}") + endif() + else() + target_compile_options(lammps PUBLIC -fsanitize=${ENABLE_SANITIZER}) + target_link_options(lammps PUBLIC -fsanitize=${ENABLE_SANITIZER}) + endif() endif() endif() diff --git a/unittest/force-styles/CMakeLists.txt b/unittest/force-styles/CMakeLists.txt index 535e1fb2f1..aed715ee65 100644 --- a/unittest/force-styles/CMakeLists.txt +++ b/unittest/force-styles/CMakeLists.txt @@ -17,8 +17,10 @@ else() endif() # propagate sanitizer options to test tools if (NOT ENABLE_SANITIZER STREQUAL "none") - target_compile_options(style_tests PUBLIC -fsanitize=${ENABLE_SANITIZER}) - target_link_options(style_tests PUBLIC -fsanitize=${ENABLE_SANITIZER}) + if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.13) + target_compile_options(style_tests PUBLIC -fsanitize=${ENABLE_SANITIZER}) + target_link_options(style_tests PUBLIC -fsanitize=${ENABLE_SANITIZER}) + endif() endif() # unit test for error stats class