summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Boeckel <ben.boeckel@kitware.com>2023-11-21 14:42:27 (GMT)
committerBen Boeckel <ben.boeckel@kitware.com>2023-11-21 14:42:27 (GMT)
commit6fe8b84894e356501a09eab93e42581fa126a833 (patch)
tree31b3ad74bf9eb37129feed140a7f51cc0f68f5c1
parent11a2fd6ccaf7225017f6b52b81699b7fd3aa3062 (diff)
parent9d2769ecbd497dd51405ae2586ae62b828712a07 (diff)
downloadCMake-6fe8b84894e356501a09eab93e42581fa126a833.zip
CMake-6fe8b84894e356501a09eab93e42581fa126a833.tar.gz
CMake-6fe8b84894e356501a09eab93e42581fa126a833.tar.bz2
Merge branch 'revert-exact-collation-depends-3.27' (early part) into fortran-objects-as-sources-fix
* 'revert-exact-collation-depends-3.27' (early part): Tests/FortranModules: add test for TARGET_OBJECTS-as-linked-items module usage Tests/FortranModules: add test for TARGET_OBJECTS-as-sources module usage
-rw-r--r--Tests/FortranModules/CMakeLists.txt6
-rw-r--r--Tests/FortranModules/ModulesViaSubdirTargetObjectsLink/CMakeLists.txt7
-rw-r--r--Tests/FortranModules/ModulesViaSubdirTargetObjectsLink/dummy.f903
-rw-r--r--Tests/FortranModules/ModulesViaSubdirTargetObjectsLink/subdir/CMakeLists.txt1
-rw-r--r--Tests/FortranModules/ModulesViaSubdirTargetObjectsLink/subdir/obj.f9011
-rw-r--r--Tests/FortranModules/ModulesViaSubdirTargetObjectsLink/use.f9013
-rw-r--r--Tests/FortranModules/ModulesViaSubdirTargetObjectsSource/CMakeLists.txt6
-rw-r--r--Tests/FortranModules/ModulesViaSubdirTargetObjectsSource/subdir/CMakeLists.txt1
-rw-r--r--Tests/FortranModules/ModulesViaSubdirTargetObjectsSource/subdir/obj.f9011
-rw-r--r--Tests/FortranModules/ModulesViaSubdirTargetObjectsSource/use.f9013
-rw-r--r--Tests/FortranModules/ModulesViaTargetObjectsLink/CMakeLists.txt5
-rw-r--r--Tests/FortranModules/ModulesViaTargetObjectsLink/dummy.f903
-rw-r--r--Tests/FortranModules/ModulesViaTargetObjectsLink/obj.f9011
-rw-r--r--Tests/FortranModules/ModulesViaTargetObjectsLink/use.f9013
-rw-r--r--Tests/FortranModules/ModulesViaTargetObjectsSource/CMakeLists.txt4
-rw-r--r--Tests/FortranModules/ModulesViaTargetObjectsSource/obj.f9011
-rw-r--r--Tests/FortranModules/ModulesViaTargetObjectsSource/use.f9013
17 files changed, 132 insertions, 0 deletions
diff --git a/Tests/FortranModules/CMakeLists.txt b/Tests/FortranModules/CMakeLists.txt
index 16ea0d4..1e5ff89 100644
--- a/Tests/FortranModules/CMakeLists.txt
+++ b/Tests/FortranModules/CMakeLists.txt
@@ -137,3 +137,9 @@ add_subdirectory(Issue25252-iface-sources)
add_subdirectory(Issue25365-target-objects)
add_subdirectory(Issue25365-target-objects-iface)
+
+# Issue#25425
+add_subdirectory(ModulesViaTargetObjectsSource)
+add_subdirectory(ModulesViaSubdirTargetObjectsSource)
+add_subdirectory(ModulesViaTargetObjectsLink)
+add_subdirectory(ModulesViaSubdirTargetObjectsLink)
diff --git a/Tests/FortranModules/ModulesViaSubdirTargetObjectsLink/CMakeLists.txt b/Tests/FortranModules/ModulesViaSubdirTargetObjectsLink/CMakeLists.txt
new file mode 100644
index 0000000..b52b423
--- /dev/null
+++ b/Tests/FortranModules/ModulesViaSubdirTargetObjectsLink/CMakeLists.txt
@@ -0,0 +1,7 @@
+add_subdirectory(subdir)
+
+add_library(mvstol_lib dummy.f90)
+target_link_libraries(mvstol_lib PRIVATE "$<TARGET_OBJECTS:mvstol_obj>")
+target_include_directories(mvstol_lib PUBLIC "${CMAKE_CURRENT_BINARY_DIR}/subdir")
+add_library(mvstol_use use.f90)
+target_link_libraries(mvstol_use PRIVATE mvstol_lib)
diff --git a/Tests/FortranModules/ModulesViaSubdirTargetObjectsLink/dummy.f90 b/Tests/FortranModules/ModulesViaSubdirTargetObjectsLink/dummy.f90
new file mode 100644
index 0000000..96a8138
--- /dev/null
+++ b/Tests/FortranModules/ModulesViaSubdirTargetObjectsLink/dummy.f90
@@ -0,0 +1,3 @@
+pure real function dummy()
+dummy = 4*atan(1.)
+end function
diff --git a/Tests/FortranModules/ModulesViaSubdirTargetObjectsLink/subdir/CMakeLists.txt b/Tests/FortranModules/ModulesViaSubdirTargetObjectsLink/subdir/CMakeLists.txt
new file mode 100644
index 0000000..b2a250d
--- /dev/null
+++ b/Tests/FortranModules/ModulesViaSubdirTargetObjectsLink/subdir/CMakeLists.txt
@@ -0,0 +1 @@
+add_library(mvstol_obj STATIC obj.f90)
diff --git a/Tests/FortranModules/ModulesViaSubdirTargetObjectsLink/subdir/obj.f90 b/Tests/FortranModules/ModulesViaSubdirTargetObjectsLink/subdir/obj.f90
new file mode 100644
index 0000000..6b5ddd5
--- /dev/null
+++ b/Tests/FortranModules/ModulesViaSubdirTargetObjectsLink/subdir/obj.f90
@@ -0,0 +1,11 @@
+module m1
+
+implicit none
+
+contains
+
+pure real function pi()
+pi = 4*atan(1.)
+end function
+
+end module m1
diff --git a/Tests/FortranModules/ModulesViaSubdirTargetObjectsLink/use.f90 b/Tests/FortranModules/ModulesViaSubdirTargetObjectsLink/use.f90
new file mode 100644
index 0000000..f971909
--- /dev/null
+++ b/Tests/FortranModules/ModulesViaSubdirTargetObjectsLink/use.f90
@@ -0,0 +1,13 @@
+module lib
+
+use m1, only : pi
+
+implicit none
+
+contains
+
+pure real function func()
+func = pi()
+end function
+
+end module
diff --git a/Tests/FortranModules/ModulesViaSubdirTargetObjectsSource/CMakeLists.txt b/Tests/FortranModules/ModulesViaSubdirTargetObjectsSource/CMakeLists.txt
new file mode 100644
index 0000000..255e8a7
--- /dev/null
+++ b/Tests/FortranModules/ModulesViaSubdirTargetObjectsSource/CMakeLists.txt
@@ -0,0 +1,6 @@
+add_subdirectory(subdir)
+
+add_library(mvstos_lib "$<TARGET_OBJECTS:mvstos_obj>")
+target_include_directories(mvstos_lib PUBLIC "${CMAKE_CURRENT_BINARY_DIR}/subdir")
+add_library(mvstos_use use.f90)
+target_link_libraries(mvstos_use PRIVATE mvstos_lib)
diff --git a/Tests/FortranModules/ModulesViaSubdirTargetObjectsSource/subdir/CMakeLists.txt b/Tests/FortranModules/ModulesViaSubdirTargetObjectsSource/subdir/CMakeLists.txt
new file mode 100644
index 0000000..acc0da9
--- /dev/null
+++ b/Tests/FortranModules/ModulesViaSubdirTargetObjectsSource/subdir/CMakeLists.txt
@@ -0,0 +1 @@
+add_library(mvstos_obj OBJECT obj.f90)
diff --git a/Tests/FortranModules/ModulesViaSubdirTargetObjectsSource/subdir/obj.f90 b/Tests/FortranModules/ModulesViaSubdirTargetObjectsSource/subdir/obj.f90
new file mode 100644
index 0000000..6b5ddd5
--- /dev/null
+++ b/Tests/FortranModules/ModulesViaSubdirTargetObjectsSource/subdir/obj.f90
@@ -0,0 +1,11 @@
+module m1
+
+implicit none
+
+contains
+
+pure real function pi()
+pi = 4*atan(1.)
+end function
+
+end module m1
diff --git a/Tests/FortranModules/ModulesViaSubdirTargetObjectsSource/use.f90 b/Tests/FortranModules/ModulesViaSubdirTargetObjectsSource/use.f90
new file mode 100644
index 0000000..f971909
--- /dev/null
+++ b/Tests/FortranModules/ModulesViaSubdirTargetObjectsSource/use.f90
@@ -0,0 +1,13 @@
+module lib
+
+use m1, only : pi
+
+implicit none
+
+contains
+
+pure real function func()
+func = pi()
+end function
+
+end module
diff --git a/Tests/FortranModules/ModulesViaTargetObjectsLink/CMakeLists.txt b/Tests/FortranModules/ModulesViaTargetObjectsLink/CMakeLists.txt
new file mode 100644
index 0000000..202e59e
--- /dev/null
+++ b/Tests/FortranModules/ModulesViaTargetObjectsLink/CMakeLists.txt
@@ -0,0 +1,5 @@
+add_library(mvtol_obj STATIC obj.f90)
+add_library(mvtol_lib dummy.f90)
+target_link_libraries(mvtol_lib PRIVATE "$<TARGET_OBJECTS:mvtol_obj>")
+add_library(mvtol_use use.f90)
+target_link_libraries(mvtol_use PRIVATE mvtol_lib)
diff --git a/Tests/FortranModules/ModulesViaTargetObjectsLink/dummy.f90 b/Tests/FortranModules/ModulesViaTargetObjectsLink/dummy.f90
new file mode 100644
index 0000000..96a8138
--- /dev/null
+++ b/Tests/FortranModules/ModulesViaTargetObjectsLink/dummy.f90
@@ -0,0 +1,3 @@
+pure real function dummy()
+dummy = 4*atan(1.)
+end function
diff --git a/Tests/FortranModules/ModulesViaTargetObjectsLink/obj.f90 b/Tests/FortranModules/ModulesViaTargetObjectsLink/obj.f90
new file mode 100644
index 0000000..6b5ddd5
--- /dev/null
+++ b/Tests/FortranModules/ModulesViaTargetObjectsLink/obj.f90
@@ -0,0 +1,11 @@
+module m1
+
+implicit none
+
+contains
+
+pure real function pi()
+pi = 4*atan(1.)
+end function
+
+end module m1
diff --git a/Tests/FortranModules/ModulesViaTargetObjectsLink/use.f90 b/Tests/FortranModules/ModulesViaTargetObjectsLink/use.f90
new file mode 100644
index 0000000..f971909
--- /dev/null
+++ b/Tests/FortranModules/ModulesViaTargetObjectsLink/use.f90
@@ -0,0 +1,13 @@
+module lib
+
+use m1, only : pi
+
+implicit none
+
+contains
+
+pure real function func()
+func = pi()
+end function
+
+end module
diff --git a/Tests/FortranModules/ModulesViaTargetObjectsSource/CMakeLists.txt b/Tests/FortranModules/ModulesViaTargetObjectsSource/CMakeLists.txt
new file mode 100644
index 0000000..9113a11
--- /dev/null
+++ b/Tests/FortranModules/ModulesViaTargetObjectsSource/CMakeLists.txt
@@ -0,0 +1,4 @@
+add_library(mvtos_obj OBJECT obj.f90)
+add_library(mvtos_lib "$<TARGET_OBJECTS:mvtos_obj>")
+add_library(mvtos_use use.f90)
+target_link_libraries(mvtos_use PRIVATE mvtos_lib)
diff --git a/Tests/FortranModules/ModulesViaTargetObjectsSource/obj.f90 b/Tests/FortranModules/ModulesViaTargetObjectsSource/obj.f90
new file mode 100644
index 0000000..6b5ddd5
--- /dev/null
+++ b/Tests/FortranModules/ModulesViaTargetObjectsSource/obj.f90
@@ -0,0 +1,11 @@
+module m1
+
+implicit none
+
+contains
+
+pure real function pi()
+pi = 4*atan(1.)
+end function
+
+end module m1
diff --git a/Tests/FortranModules/ModulesViaTargetObjectsSource/use.f90 b/Tests/FortranModules/ModulesViaTargetObjectsSource/use.f90
new file mode 100644
index 0000000..f971909
--- /dev/null
+++ b/Tests/FortranModules/ModulesViaTargetObjectsSource/use.f90
@@ -0,0 +1,13 @@
+module lib
+
+use m1, only : pi
+
+implicit none
+
+contains
+
+pure real function func()
+func = pi()
+end function
+
+end module