mirror of
https://github.com/catchorg/Catch2.git
synced 2024-11-22 21:36:11 +01:00
improve -ffile-prefix-map
detection (#2517)
the current implementation has two problems: * `clang-cl` does not know `-ffile-prefix-map`, but in CMake it is reported as "Clang", so the compiler will warn about an unknown compiler option. * XCode's clang in CMake is reported as "AppleClang", so it is not picked up as "Clang", so it is not passed `-ffile-prefix-map`, even though it supports it. Also changed the map so that the normalized `__FILE__` paths are the same as what the approval tests normalize paths into. Co-authored-by: Martin Hořeňovský <martin.horenovsky@gmail.com>
This commit is contained in:
parent
0e139b73e4
commit
728de353be
@ -8,9 +8,10 @@
|
|||||||
|
|
||||||
include(CheckCXXCompilerFlag)
|
include(CheckCXXCompilerFlag)
|
||||||
function(add_cxx_flag_if_supported_to_targets flagname targets)
|
function(add_cxx_flag_if_supported_to_targets flagname targets)
|
||||||
check_cxx_compiler_flag("${flagname}" HAVE_FLAG_${flagname})
|
string(MAKE_C_IDENTIFIER ${flagname} flag_identifier )
|
||||||
|
check_cxx_compiler_flag("${flagname}" HAVE_FLAG_${flag_identifier})
|
||||||
|
|
||||||
if (HAVE_FLAG_${flagname})
|
if (HAVE_FLAG_${flag_identifier})
|
||||||
foreach(target ${targets})
|
foreach(target ${targets})
|
||||||
target_compile_options(${target} PUBLIC ${flagname})
|
target_compile_options(${target} PUBLIC ${flagname})
|
||||||
endforeach()
|
endforeach()
|
||||||
@ -112,9 +113,8 @@ endfunction()
|
|||||||
# Adds flags required for reproducible build to the target
|
# Adds flags required for reproducible build to the target
|
||||||
# Currently only supports GCC and Clang
|
# Currently only supports GCC and Clang
|
||||||
function(add_build_reproducibility_settings target)
|
function(add_build_reproducibility_settings target)
|
||||||
# Make the build reproducible on versions of g++ and clang that supports -ffile-prefix-map
|
# 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
|
if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang"))
|
||||||
("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" AND NOT ${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 10))
|
add_cxx_flag_if_supported_to_targets("-ffile-prefix-map=${CATCH_DIR}/=" "${target}")
|
||||||
target_compile_options(${target} PRIVATE "-ffile-prefix-map=${CATCH_DIR}=.")
|
|
||||||
endif()
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
Loading…
Reference in New Issue
Block a user