mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-06 05:40:54 -06:00
Tests/FortranModules: add a test case for #25223
This commit is contained in:
@@ -127,3 +127,4 @@ if(CMake_TEST_Fortran_SUBMODULES)
|
||||
endif()
|
||||
|
||||
add_subdirectory(Issue25112)
|
||||
add_subdirectory(Issue25223)
|
||||
|
||||
15
Tests/FortranModules/Issue25223/CMakeLists.txt
Normal file
15
Tests/FortranModules/Issue25223/CMakeLists.txt
Normal file
@@ -0,0 +1,15 @@
|
||||
# See https://gist.github.com/scivision/8e3070319f0577f7d3efcba863638cae
|
||||
set(CMAKE_Fortran_MODULE_DIRECTORY "${PROJECT_BINARY_DIR}/include")
|
||||
add_library(m1 OBJECT m1.f90)
|
||||
|
||||
add_library(m2 OBJECT m2.f90)
|
||||
target_link_libraries(m2 PRIVATE m1)
|
||||
|
||||
add_library(m3 OBJECT m3.f90)
|
||||
target_link_libraries(m3 PRIVATE m2)
|
||||
|
||||
add_library(m4 OBJECT m4.f90)
|
||||
target_link_libraries(m4 PRIVATE m3)
|
||||
|
||||
add_executable(main25223 main.f90)
|
||||
target_link_libraries(main25223 PRIVATE m4 m3 m2 m1)
|
||||
11
Tests/FortranModules/Issue25223/m1.f90
Normal file
11
Tests/FortranModules/Issue25223/m1.f90
Normal file
@@ -0,0 +1,11 @@
|
||||
module m1
|
||||
|
||||
implicit none
|
||||
|
||||
contains
|
||||
|
||||
pure real function pi()
|
||||
pi = 4*atan(1.)
|
||||
end function
|
||||
|
||||
end module m1
|
||||
13
Tests/FortranModules/Issue25223/m2.f90
Normal file
13
Tests/FortranModules/Issue25223/m2.f90
Normal file
@@ -0,0 +1,13 @@
|
||||
module m2
|
||||
|
||||
use m1, only : pi
|
||||
|
||||
implicit none
|
||||
|
||||
contains
|
||||
|
||||
pure real function twopi()
|
||||
twopi = 2*pi()
|
||||
end function
|
||||
|
||||
end module
|
||||
13
Tests/FortranModules/Issue25223/m3.f90
Normal file
13
Tests/FortranModules/Issue25223/m3.f90
Normal file
@@ -0,0 +1,13 @@
|
||||
module m3
|
||||
|
||||
use m2, only : twopi
|
||||
|
||||
implicit none
|
||||
|
||||
contains
|
||||
|
||||
pure real function fourpi()
|
||||
fourpi = 2*twopi()
|
||||
end function
|
||||
|
||||
end module
|
||||
13
Tests/FortranModules/Issue25223/m4.f90
Normal file
13
Tests/FortranModules/Issue25223/m4.f90
Normal file
@@ -0,0 +1,13 @@
|
||||
module m4
|
||||
|
||||
use m3, only : fourpi
|
||||
|
||||
implicit none
|
||||
|
||||
contains
|
||||
|
||||
pure real function halfpi()
|
||||
halfpi = fourpi() / 8.0
|
||||
end function
|
||||
|
||||
end module
|
||||
15
Tests/FortranModules/Issue25223/main.f90
Normal file
15
Tests/FortranModules/Issue25223/main.f90
Normal file
@@ -0,0 +1,15 @@
|
||||
program main
|
||||
|
||||
use m1, only : pi
|
||||
use m4, only : halfpi
|
||||
|
||||
implicit none
|
||||
|
||||
real :: rpi, rhalfpi
|
||||
|
||||
rpi = pi() / 2
|
||||
rhalfpi = halfpi()
|
||||
|
||||
print '(a,ES15.8)', 'floating point precision loss: ', rpi - rhalfpi
|
||||
|
||||
end program
|
||||
Reference in New Issue
Block a user