diff options
author | Brad King <brad.king@kitware.com> | 2020-11-09 19:05:43 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2020-11-10 14:33:27 (GMT) |
commit | 15e77fbd40e324fd0be394a73ed94800bb47ad2e (patch) | |
tree | 88f90e5bdd1bde57cb2e09e91da33b921ad3ba5a /Modules | |
parent | caed98d77137b868fdd7b87a837969667e3e6f51 (diff) | |
download | CMake-15e77fbd40e324fd0be394a73ed94800bb47ad2e.zip CMake-15e77fbd40e324fd0be394a73ed94800bb47ad2e.tar.gz CMake-15e77fbd40e324fd0be394a73ed94800bb47ad2e.tar.bz2 |
FortranCInterface: Honor CMAKE_EXE_LINKER_FLAGS under CMP0056
Policy CMP0056 determines whether `CMAKE_EXE_LINKER_FLAGS` are passed
into the test project used by the source-file signature of `try_compile`.
That affects how implicit link directories are detected, so we need to
also honor the policy for the source-directory signature of `try_compile`
used in FortranCInterface in order to get matching link directories.
Fixes: #21408
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/FortranCInterface.cmake | 8 | ||||
-rw-r--r-- | Modules/FortranCInterface/Detect.cmake | 10 |
2 files changed, 18 insertions, 0 deletions
diff --git a/Modules/FortranCInterface.cmake b/Modules/FortranCInterface.cmake index 547346b..733c723 100644 --- a/Modules/FortranCInterface.cmake +++ b/Modules/FortranCInterface.cmake @@ -343,6 +343,13 @@ function(FortranCInterface_VERIFY) set(_desc "Verifying Fortran/${lang} Compiler Compatibility") message(CHECK_START "${_desc}") + cmake_policy(GET CMP0056 _FortranCInterface_CMP0056) + if(_FortranCInterface_CMP0056 STREQUAL "NEW") + set(_FortranCInterface_EXE_LINKER_FLAGS "-DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_EXE_LINKER_FLAGS}") + else() + set(_FortranCInterface_EXE_LINKER_FLAGS "") + endif() + # Build a sample project which reports symbols. set(CMAKE_TRY_COMPILE_CONFIGURATION Release) try_compile(FortranCInterface_VERIFY_${lang}_COMPILED @@ -358,6 +365,7 @@ function(FortranCInterface_VERIFY) "-DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}" "-DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE}" "-DCMAKE_Fortran_FLAGS_RELEASE:STRING=${CMAKE_Fortran_FLAGS_RELEASE}" + ${_FortranCInterface_EXE_LINKER_FLAGS} OUTPUT_VARIABLE _output) file(WRITE "${FortranCInterface_BINARY_DIR}/Verify${lang}/output.txt" "${_output}") diff --git a/Modules/FortranCInterface/Detect.cmake b/Modules/FortranCInterface/Detect.cmake index c75067b..998faf1 100644 --- a/Modules/FortranCInterface/Detect.cmake +++ b/Modules/FortranCInterface/Detect.cmake @@ -26,6 +26,14 @@ unset(FortranCInterface_VERIFIED_CXX CACHE) set(_result) +cmake_policy(GET CMP0056 _FortranCInterface_CMP0056) +if(_FortranCInterface_CMP0056 STREQUAL "NEW") + set(_FortranCInterface_EXE_LINKER_FLAGS "-DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_EXE_LINKER_FLAGS}") +else() + set(_FortranCInterface_EXE_LINKER_FLAGS "") +endif() +unset(_FortranCInterface_CMP0056) + # Build a sample project which reports symbols. set(CMAKE_TRY_COMPILE_CONFIGURATION Release) try_compile(FortranCInterface_COMPILED @@ -38,9 +46,11 @@ try_compile(FortranCInterface_COMPILED "-DCMAKE_Fortran_FLAGS:STRING=${CMAKE_Fortran_FLAGS}" "-DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}" "-DCMAKE_Fortran_FLAGS_RELEASE:STRING=${CMAKE_Fortran_FLAGS_RELEASE}" + ${_FortranCInterface_EXE_LINKER_FLAGS} OUTPUT_VARIABLE FortranCInterface_OUTPUT) set(FortranCInterface_COMPILED ${FortranCInterface_COMPILED}) unset(FortranCInterface_COMPILED CACHE) +unset(_FortranCInterface_EXE_LINKER_FLAGS) # Locate the sample project executable. set(FortranCInterface_EXE) |