From bed285af07607a9da93892f8b08d36c3fd6af98d Mon Sep 17 00:00:00 2001 From: Mathieu Mirmont Date: Tue, 29 Dec 2020 21:00:09 +0100 Subject: [PATCH] Make the build reproducible with g++-8 and clang-10 Make the build reproducible by removing references to the source directory from the Catch2WithMain static library. --- CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4d57dd1a..05acead3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -108,6 +108,11 @@ add_library(Catch2WithMain ${CMAKE_CURRENT_LIST_DIR}/src/catch_with_main.cpp) target_link_libraries(Catch2WithMain PUBLIC Catch2) add_library(Catch2::Catch2WithMain ALIAS Catch2WithMain) +# Make the build reproducible on versions of g++ and clang that supports -ffile-prefix-map +if(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND NOT ${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 8) OR + ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" AND NOT ${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 10)) + target_compile_options(Catch2WithMain PRIVATE "-ffile-prefix-map=${CMAKE_SOURCE_DIR}=.") +endif() # Only perform the installation steps when Catch is not being used as # a subproject via `add_subdirectory`, or the destinations will break,