Skip to content

Commit

Permalink
Merge branch 'release-3.27.6' into zh_CN
Browse files Browse the repository at this point in the history
  • Loading branch information
gwankyun committed Sep 21, 2023
2 parents 54e1eef + 51b34a5 commit 05b5c5c
Show file tree
Hide file tree
Showing 24 changed files with 179 additions and 11 deletions.
4 changes: 2 additions & 2 deletions Help/release/3.27.rst
Original file line number Diff line number Diff line change
Expand Up @@ -285,8 +285,8 @@ Changes made since CMake 3.27.0 include the following.
to select the Windows 8.1 SDK. In CMake 3.27.[0-1] the ``version=`` field
was limited to selecting Windows 10 SDKs.

3.27.3, 3.27.4, 3.27.5
----------------------
3.27.3, 3.27.4, 3.27.5, 3.27.6
------------------------------

* These versions made no changes to documented features or interfaces.
Some implementation updates were made to support ecosystem changes
Expand Down
2 changes: 1 addition & 1 deletion Source/CMakeVersion.cmake
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# CMake version number components.
set(CMake_VERSION_MAJOR 3)
set(CMake_VERSION_MINOR 27)
set(CMake_VERSION_PATCH 5)
set(CMake_VERSION_PATCH 6)
#set(CMake_VERSION_RC 0)
set(CMake_VERSION_IS_DIRTY 0)

Expand Down
5 changes: 3 additions & 2 deletions Source/cmComputeLinkInformation.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

Expand Down
9 changes: 9 additions & 0 deletions Tests/FortranModules/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -125,3 +125,12 @@ add_subdirectory(Executable)
if(CMake_TEST_Fortran_SUBMODULES)
add_subdirectory(Submodules)
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)
add_subdirectory(Issue25252-iface-target)
endif()
add_subdirectory(Issue25252-iface-sources)
4 changes: 4 additions & 0 deletions Tests/FortranModules/Issue25112/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -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)
File renamed without changes.
File renamed without changes.
15 changes: 15 additions & 0 deletions Tests/FortranModules/Issue25223/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -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 changes: 11 additions & 0 deletions Tests/FortranModules/Issue25223/m1.f90
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
module m1

implicit none

contains

pure real function pi()
pi = 4*atan(1.)
end function

end module m1
13 changes: 13 additions & 0 deletions Tests/FortranModules/Issue25223/m2.f90
Original file line number Diff line number Diff line change
@@ -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 changes: 13 additions & 0 deletions Tests/FortranModules/Issue25223/m3.f90
Original file line number Diff line number Diff line change
@@ -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 changes: 13 additions & 0 deletions Tests/FortranModules/Issue25223/m4.f90
Original file line number Diff line number Diff line change
@@ -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 changes: 15 additions & 0 deletions Tests/FortranModules/Issue25223/main.f90
Original file line number Diff line number Diff line change
@@ -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
9 changes: 9 additions & 0 deletions Tests/FortranModules/Issue25252-iface-sources/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -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)
11 changes: 11 additions & 0 deletions Tests/FortranModules/Issue25252-iface-sources/iface.f90
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
module m1

implicit none

contains

pure real function pi()
pi = 4*atan(1.)
end function

end module m1
4 changes: 4 additions & 0 deletions Tests/FortranModules/Issue25252-iface-sources/lib.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
int f()
{
return 0;
}
13 changes: 13 additions & 0 deletions Tests/FortranModules/Issue25252-iface-sources/lib.f90
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
module lib

use m1, only : pi

implicit none

contains

pure real function func()
func = pi()
end function

end module
5 changes: 5 additions & 0 deletions Tests/FortranModules/Issue25252-iface-target/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -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)
5 changes: 5 additions & 0 deletions Tests/FortranModules/Issue25252-iface-target/iface.f90
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
program main

implicit none

end program
11 changes: 11 additions & 0 deletions Tests/FortranModules/Issue25252-iface-target/lib.f90
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
module lib

implicit none

contains

pure real function func()
func = 1.0
end function

end module
6 changes: 6 additions & 0 deletions Tests/FortranModules/Issue25252/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -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)
5 changes: 5 additions & 0 deletions Tests/FortranModules/Issue25252/custom_target.f90
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
program main

implicit none

end program
11 changes: 11 additions & 0 deletions Tests/FortranModules/Issue25252/lib.f90
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
module lib

implicit none

contains

pure real function func()
func = 1.0
end function

end module
6 changes: 0 additions & 6 deletions Tests/FortranOnly/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -186,9 +186,3 @@ if(CMAKE_Fortran_COMPILE_OPTIONS_PREPROCESS_OFF AND

set_property(SOURCE no_preprocess_source_upper.F no_preprocess_source_fpp.fpp PROPERTY Fortran_PREPROCESS OFF)
endif()

# Issue 25112
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 comments on commit 05b5c5c

Please sign in to comment.