From 2e655823e4fe8ea33156ab8099af240b82c73e55 Mon Sep 17 00:00:00 2001 From: Dennis Klein Date: Fri, 28 May 2021 14:07:30 +0200 Subject: [PATCH] CMake: Do not unconditionally override settings without good reason fixes #342 --- CMakeLists.txt | 2 +- cmake/FairMQProjectSettings.cmake | 24 +++++++++++++++--------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a558da27..747a8b7c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,7 +11,7 @@ cmake_minimum_required(VERSION 3.15 FATAL_ERROR) cmake_policy(VERSION 3.15...3.20) -set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) +list(PREPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) include(GitHelper) get_git_version() diff --git a/cmake/FairMQProjectSettings.cmake b/cmake/FairMQProjectSettings.cmake index bab92741..52ace6b2 100644 --- a/cmake/FairMQProjectSettings.cmake +++ b/cmake/FairMQProjectSettings.cmake @@ -25,7 +25,9 @@ set(PROJECT_MIN_CXX_STANDARD 17) if(CMAKE_CXX_STANDARD AND CMAKE_CXX_STANDARD VERSION_LESS PROJECT_MIN_CXX_STANDARD) message(FATAL_ERROR "A minimum CMAKE_CXX_STANDARD of ${PROJECT_MIN_CXX_STANDARD} is required.") endif() -set(CMAKE_CXX_EXTENSIONS OFF) +if(NOT DEFINED CMAKE_CXX_EXTENSIONS) + set(CMAKE_CXX_EXTENSIONS OFF) +endif() if(NOT BUILD_SHARED_LIBS) set(BUILD_SHARED_LIBS ON CACHE BOOL "Whether to build shared libraries or static archives") @@ -37,7 +39,9 @@ if(NOT CMAKE_POSITION_INDEPENDENT_CODE) endif() # Generate compile_commands.json file (https://clang.llvm.org/docs/JSONCompilationDatabase.html) -set(CMAKE_EXPORT_COMPILE_COMMANDS ON) +if(NOT DEFINED CMAKE_EXPORT_COMPILE_COMMANDS) + set(CMAKE_EXPORT_COMPILE_COMMANDS ON) +endif() # Define install dirs set(PROJECT_INSTALL_BINDIR ${CMAKE_INSTALL_BINDIR}) @@ -47,17 +51,19 @@ set(PROJECT_INSTALL_DATADIR ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME_LOWER}) set(PROJECT_INSTALL_CMAKEMODDIR ${PROJECT_INSTALL_DATADIR}/cmake) # https://cmake.org/Wiki/CMake_RPATH_handling -set(CMAKE_INSTALL_RPATH_USE_LINK_PATH ON) +if(NOT DEFINED CMAKE_INSTALL_RPATH_USE_LINK_PATH) + set(CMAKE_INSTALL_RPATH_USE_LINK_PATH ON) +endif() list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/${PROJECT_INSTALL_LIBDIR}" isSystemDir) if("${isSystemDir}" STREQUAL "-1") if(CMAKE_SYSTEM_NAME STREQUAL "Linux") - set(CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS} "-Wl,--enable-new-dtags") - set(CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS} "-Wl,--enable-new-dtags") - set(CMAKE_INSTALL_RPATH "$ORIGIN/../${PROJECT_INSTALL_LIBDIR}") + list(APPEND CMAKE_EXE_LINKER_FLAGS "-Wl,--enable-new-dtags") + list(APPEND CMAKE_SHARED_LINKER_FLAGS "-Wl,--enable-new-dtags") + list(PREPEND CMAKE_INSTALL_RPATH "$ORIGIN/../${PROJECT_INSTALL_LIBDIR}") elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin") - set(CMAKE_INSTALL_RPATH "@loader_path/../${PROJECT_INSTALL_LIBDIR}") + list(PREPEND CMAKE_INSTALL_RPATH "@loader_path/../${PROJECT_INSTALL_LIBDIR}") else() - set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${PROJECT_INSTALL_LIBDIR}") + list(PREPEND CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${PROJECT_INSTALL_LIBDIR}") endif() endif() @@ -85,7 +91,7 @@ if(CMAKE_GENERATOR STREQUAL "Ninja" AND list(APPEND CMAKE_CXX_FLAGS "-fdiagnostics-color=always") endif() -if(NOT PROJECT_VERSION_TWEAK) +if(NOT DEFINED PROJECT_VERSION_TWEAK) set(PROJECT_VERSION_HOTFIX 0) else() set(PROJECT_VERSION_HOTFIX ${PROJECT_VERSION_TWEAK})