parent
70c5390bb2
commit
d8bb5ae4fe
@ -0,0 +1,4 @@
|
|||||||
|
set(CMAKE_Fortran_MODULE_DIRECTORY "${PROJECT_BINARY_DIR}/include")
|
||||||
|
add_library(objmod OBJECT objmod.f90)
|
||||||
|
add_executable(objmain objmain.f90)
|
||||||
|
target_link_libraries(objmain PRIVATE objmod)
|
@ -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)
|
@ -0,0 +1,11 @@
|
|||||||
|
module m1
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
contains
|
||||||
|
|
||||||
|
pure real function pi()
|
||||||
|
pi = 4*atan(1.)
|
||||||
|
end function
|
||||||
|
|
||||||
|
end module m1
|
@ -0,0 +1,13 @@
|
|||||||
|
module m2
|
||||||
|
|
||||||
|
use m1, only : pi
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
contains
|
||||||
|
|
||||||
|
pure real function twopi()
|
||||||
|
twopi = 2*pi()
|
||||||
|
end function
|
||||||
|
|
||||||
|
end module
|
@ -0,0 +1,13 @@
|
|||||||
|
module m3
|
||||||
|
|
||||||
|
use m2, only : twopi
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
contains
|
||||||
|
|
||||||
|
pure real function fourpi()
|
||||||
|
fourpi = 2*twopi()
|
||||||
|
end function
|
||||||
|
|
||||||
|
end module
|
@ -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
|
@ -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
|
@ -0,0 +1,9 @@
|
|||||||
|
enable_language(C)
|
||||||
|
|
||||||
|
add_library(fortran_source_iface_sources STATIC lib.c)
|
||||||
|
target_sources(fortran_source_iface_sources
|
||||||
|
INTERFACE
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/iface.f90")
|
||||||
|
|
||||||
|
add_library(lib25252-iface-sources lib.f90)
|
||||||
|
target_link_libraries(lib25252-iface-sources PRIVATE fortran_source_iface_sources)
|
@ -0,0 +1,11 @@
|
|||||||
|
module m1
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
contains
|
||||||
|
|
||||||
|
pure real function pi()
|
||||||
|
pi = 4*atan(1.)
|
||||||
|
end function
|
||||||
|
|
||||||
|
end module m1
|
@ -0,0 +1,4 @@
|
|||||||
|
int f()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
module lib
|
||||||
|
|
||||||
|
use m1, only : pi
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
contains
|
||||||
|
|
||||||
|
pure real function func()
|
||||||
|
func = pi()
|
||||||
|
end function
|
||||||
|
|
||||||
|
end module
|
@ -0,0 +1,5 @@
|
|||||||
|
add_library(fortran_source_iface INTERFACE
|
||||||
|
iface.f90)
|
||||||
|
|
||||||
|
add_library(lib25252-iface-target lib.f90)
|
||||||
|
add_dependencies(lib25252-iface-target fortran_source_iface)
|
@ -0,0 +1,5 @@
|
|||||||
|
program main
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
end program
|
@ -0,0 +1,11 @@
|
|||||||
|
module lib
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
contains
|
||||||
|
|
||||||
|
pure real function func()
|
||||||
|
func = 1.0
|
||||||
|
end function
|
||||||
|
|
||||||
|
end module
|
@ -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)
|
@ -0,0 +1,5 @@
|
|||||||
|
program main
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
end program
|
@ -0,0 +1,11 @@
|
|||||||
|
module lib
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
contains
|
||||||
|
|
||||||
|
pure real function func()
|
||||||
|
func = 1.0
|
||||||
|
end function
|
||||||
|
|
||||||
|
end module
|
Loading…
Reference in new issue