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
This commit is contained in:
Brad King
2020-11-09 14:05:43 -05:00
parent caed98d771
commit 15e77fbd40
2 changed files with 18 additions and 0 deletions
+8
View File
@@ -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}")