From 978b68d3bbb44e3bc6adbe5109eb8295f8232ce6 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Mon, 18 Sep 2023 19:59:56 -0400 Subject: add_custom_target: Fix regression with Fortran sources Since commit 74b1d6caf3 (cmComputeLinkInformation: compute link info for module-using targets, 2023-09-05, v3.27.5~7^2) we accidentally try to compute link information for custom targets if they have Fortran sources. For module dependencies, we only need to consider target types that can compile. Fixes: #25252 --- Source/cmComputeLinkInformation.cxx | 5 +++-- Tests/FortranModules/CMakeLists.txt | 4 ++++ Tests/FortranModules/Issue25252/CMakeLists.txt | 6 ++++++ Tests/FortranModules/Issue25252/custom_target.f90 | 5 +++++ Tests/FortranModules/Issue25252/lib.f90 | 11 +++++++++++ 5 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 Tests/FortranModules/Issue25252/CMakeLists.txt create mode 100644 Tests/FortranModules/Issue25252/custom_target.f90 create mode 100644 Tests/FortranModules/Issue25252/lib.f90 diff --git a/Source/cmComputeLinkInformation.cxx b/Source/cmComputeLinkInformation.cxx index 4804565..7d3675e 100644 --- a/Source/cmComputeLinkInformation.cxx +++ b/Source/cmComputeLinkInformation.cxx @@ -539,8 +539,9 @@ bool cmComputeLinkInformation::Compute() this->Target->GetType() == cmStateEnums::SHARED_LIBRARY || this->Target->GetType() == cmStateEnums::MODULE_LIBRARY || this->Target->GetType() == cmStateEnums::STATIC_LIBRARY || - this->Target->HaveCxx20ModuleSources() || - this->Target->HaveFortranSources())) { + (this->Target->CanCompileSources() && + (this->Target->HaveCxx20ModuleSources() || + this->Target->HaveFortranSources())))) { return false; } diff --git a/Tests/FortranModules/CMakeLists.txt b/Tests/FortranModules/CMakeLists.txt index f5b2822..8ebd9b2 100644 --- a/Tests/FortranModules/CMakeLists.txt +++ b/Tests/FortranModules/CMakeLists.txt @@ -128,3 +128,7 @@ endif() add_subdirectory(Issue25112) add_subdirectory(Issue25223) +if( # Intel Fortran VS Integration breaks on custom targets with Fortran sources + NOT CMAKE_GENERATOR MATCHES "Visual Studio") + add_subdirectory(Issue25252) +endif() diff --git a/Tests/FortranModules/Issue25252/CMakeLists.txt b/Tests/FortranModules/Issue25252/CMakeLists.txt new file mode 100644 index 0000000..8111c42 --- /dev/null +++ b/Tests/FortranModules/Issue25252/CMakeLists.txt @@ -0,0 +1,6 @@ +add_custom_target(custom_target_with_fortran + COMMAND "${CMAKE_COMMAND}" -E echo "custom target with fortran sources" + SOURCES custom_target.f90) + +add_library(lib25252 lib.f90) +add_dependencies(lib25252 custom_target_with_fortran) diff --git a/Tests/FortranModules/Issue25252/custom_target.f90 b/Tests/FortranModules/Issue25252/custom_target.f90 new file mode 100644 index 0000000..0528d41 --- /dev/null +++ b/Tests/FortranModules/Issue25252/custom_target.f90 @@ -0,0 +1,5 @@ +program main + +implicit none + +end program diff --git a/Tests/FortranModules/Issue25252/lib.f90 b/Tests/FortranModules/Issue25252/lib.f90 new file mode 100644 index 0000000..a6d7fa6 --- /dev/null +++ b/Tests/FortranModules/Issue25252/lib.f90 @@ -0,0 +1,11 @@ +module lib + +implicit none + +contains + +pure real function func() +func = 1.0 +end function + +end module -- cgit v0.12