mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-14 02:08:27 +08:00
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:
@@ -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}")
|
||||
|
||||
|
@@ -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)
|
||||
|
Reference in New Issue
Block a user