New upstream version 3.27.9

ci/unstable
Timo Röhling 1 year ago
parent f52e828661
commit f622ac3441

@ -1093,8 +1093,10 @@ with members:
``PRIVATE``, or ``INTERFACE``. ``PRIVATE``, or ``INTERFACE``.
``baseDirectories`` ``baseDirectories``
A JSON array of strings specifying the base directories containing sources A JSON array of strings, each specifying a base directory containing
in the file set. sources in the file set. If the directory is inside the top-level source
directory then the path is specified relative to that directory.
Otherwise the path is absolute.
This field was added in codemodel version 2.5. This field was added in codemodel version 2.5.

@ -652,6 +652,8 @@ a `CDash`_ server. The command-line signature used to submit to `CDash`_ is::
ctest -S <script> [-- <dashboard-options>...] ctest -S <script> [-- <dashboard-options>...]
ctest -SP <script> [-- <dashboard-options>...] ctest -SP <script> [-- <dashboard-options>...]
.. _`CDash`: https://www.cdash.org
Options for Dashboard Client include: Options for Dashboard Client include:
.. option:: -D <dashboard>, --dashboard <dashboard> .. option:: -D <dashboard>, --dashboard <dashboard>
@ -1822,5 +1824,3 @@ See Also
======== ========
.. include:: LINKS.txt .. include:: LINKS.txt
_`CDash`: https://cdash.org

@ -35,6 +35,13 @@ This policy provides compatibility for projects, toolchain files, and
build scripts that have not been ported away from using build scripts that have not been ported away from using
:variable:`CMAKE_SYSTEM_VERSION` to specify an exact SDK version. :variable:`CMAKE_SYSTEM_VERSION` to specify an exact SDK version.
.. note::
This policy must be set before the first :command:`project` or
:command:`enable_language` command invocation at the top of the
project. That is when :ref:`Visual Studio Generators` select a
Windows SDK.
The ``OLD`` behavior for this policy is to use the exact value of The ``OLD`` behavior for this policy is to use the exact value of
:variable:`CMAKE_SYSTEM_VERSION` if possible. The ``NEW`` behavior :variable:`CMAKE_SYSTEM_VERSION` if possible. The ``NEW`` behavior
for this policy is to ignore it. for this policy is to ignore it.

@ -181,3 +181,13 @@ Changes made since CMake 3.26.0 include the following.
* These versions made no changes to documented features or interfaces. * These versions made no changes to documented features or interfaces.
Some implementation updates were made to support ecosystem changes Some implementation updates were made to support ecosystem changes
and/or fix regressions. and/or fix regressions.
3.26.6
------
* The :manual:`cmake-file-api(7)` "codemodel" version 2 "target" object
``fileSets`` field was introduced by CMake 3.26.0 with entries of its
``baseDirectories`` member incorrectly expressed as absolute paths
even if they are inside the top-level source directory. This has
been fixed. Clients must be updated to expect relative paths under
the top-level source directory.

@ -291,3 +291,23 @@ Changes made since CMake 3.27.0 include the following.
* These versions made no changes to documented features or interfaces. * These versions made no changes to documented features or interfaces.
Some implementation updates were made to support ecosystem changes Some implementation updates were made to support ecosystem changes
and/or fix regressions. and/or fix regressions.
3.27.9
------
* The :manual:`cmake-file-api(7)` "codemodel" version 2 "target" object
``fileSets`` field was introduced by CMake 3.26.0 with entries of its
``baseDirectories`` member incorrectly expressed as absolute paths
even if they are inside the top-level source directory. This was
fixed in CMake 3.26.6 and has now been fixed in 3.27.9. Clients must
be updated to expect relative paths under the top-level source directory.
* Fortran module dependency scanning in :ref:`Ninja Generators` was updated
by CMake 3.27.0 to use exact collation dependencies. This was supposed
to fix subtle rebuild failures when moving module sources among targets.
Since then, several cases have been found in which exact collation
dependencies were incorrectly computed when using :ref:`Object Libraries`.
Some of these cases were incrementally fixed through the 3.27.x patch
series, but additional more subtle cases have since been found. In order
to avoid further churn in the 3.27 release series, the original change has
been reverted and deferred to a future version of CMake.

@ -1,7 +1,7 @@
# CMake version number components. # CMake version number components.
set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MAJOR 3)
set(CMake_VERSION_MINOR 27) set(CMake_VERSION_MINOR 27)
set(CMake_VERSION_PATCH 8) set(CMake_VERSION_PATCH 9)
#set(CMake_VERSION_RC 0) #set(CMake_VERSION_RC 0)
set(CMake_VERSION_IS_DIRTY 0) set(CMake_VERSION_IS_DIRTY 0)
@ -21,7 +21,7 @@ endif()
if(NOT CMake_VERSION_NO_GIT) if(NOT CMake_VERSION_NO_GIT)
# If this source was exported by 'git archive', use its commit info. # If this source was exported by 'git archive', use its commit info.
set(git_info [==[9cfff766eb CMake 3.27.8]==]) set(git_info [==[c4f7eb3f0b CMake 3.27.9]==])
# Otherwise, try to identify the current development source version. # Otherwise, try to identify the current development source version.
if(NOT git_info MATCHES "^([0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]?[0-9a-f]?)[0-9a-f]* " if(NOT git_info MATCHES "^([0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]?[0-9a-f]?)[0-9a-f]* "

@ -1636,7 +1636,7 @@ Json::Value Target::DumpFileSet(cmFileSet const* fs,
Json::Value baseDirs = Json::arrayValue; Json::Value baseDirs = Json::arrayValue;
for (auto const& directory : directories) { for (auto const& directory : directories) {
baseDirs.append(directory); baseDirs.append(RelativeIfUnder(this->TopSource, directory));
} }
fileSet["baseDirectories"] = baseDirs; fileSet["baseDirectories"] = baseDirs;

@ -145,8 +145,8 @@ void cmGccDepfileLexerHelper::sanitizeContent()
++rit; ++rit;
} }
} }
// Remove the entry if rules are empty or do not have any paths // Remove the entry if rules are empty
if (it->rules.empty() || it->paths.empty()) { if (it->rules.empty()) {
it = this->Content.erase(it); it = this->Content.erase(it);
} else { } else {
++it; ++it;

@ -1034,11 +1034,6 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatements(
cmNinjaBuild build(this->LanguageDyndepRule(language, config)); cmNinjaBuild build(this->LanguageDyndepRule(language, config));
build.Outputs.push_back(this->GetDyndepFilePath(language, config)); build.Outputs.push_back(this->GetDyndepFilePath(language, config));
build.ImplicitOuts.push_back(
cmStrCat(this->Makefile->GetCurrentBinaryDirectory(), '/',
this->LocalGenerator->GetTargetDirectory(this->GeneratorTarget),
this->GetGlobalGenerator()->ConfigDirectory(config), '/',
language, "Modules.json"));
for (auto const& scanFiles : scanningFiles) { for (auto const& scanFiles : scanningFiles) {
if (!scanFiles.ScanningOutput.empty()) { if (!scanFiles.ScanningOutput.empty()) {
build.ExplicitDeps.push_back(scanFiles.ScanningOutput); build.ExplicitDeps.push_back(scanFiles.ScanningOutput);
@ -1050,10 +1045,17 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatements(
this->WriteTargetDependInfo(language, config); this->WriteTargetDependInfo(language, config);
for (std::string const& l : // Make sure dyndep files for all our dependencies have already
this->GetLinkedTargetDirectories(language, config)) { // been generated so that the '<LANG>Modules.json' files they
build.ImplicitDeps.push_back(cmStrCat(l, '/', language, "Modules.json")); // produced as side-effects are available for us to read.
} // Ideally we should depend on the '<LANG>Modules.json' files
// from our dependencies directly, but we don't know which of
// our dependencies produces them. Fixing this will require
// refactoring the Ninja generator to generate targets in
// dependency order so that we can collect the needed information.
this->GetLocalGenerator()->AppendTargetDepends(
this->GeneratorTarget, build.OrderOnlyDeps, config, fileConfig,
DependOnTargetArtifact);
this->GetGlobalGenerator()->WriteBuild(this->GetImplFileStream(fileConfig), this->GetGlobalGenerator()->WriteBuild(this->GetImplFileStream(fileConfig),
build); build);

@ -137,3 +137,9 @@ add_subdirectory(Issue25252-iface-sources)
add_subdirectory(Issue25365-target-objects) add_subdirectory(Issue25365-target-objects)
add_subdirectory(Issue25365-target-objects-iface) add_subdirectory(Issue25365-target-objects-iface)
# Issue#25425
add_subdirectory(ModulesViaTargetObjectsSource)
add_subdirectory(ModulesViaSubdirTargetObjectsSource)
add_subdirectory(ModulesViaTargetObjectsLink)
add_subdirectory(ModulesViaSubdirTargetObjectsLink)

@ -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)

@ -0,0 +1,3 @@
pure real function dummy()
dummy = 4*atan(1.)
end function

@ -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 lib
use m1, only : pi
implicit none
contains
pure real function func()
func = pi()
end function
end module

@ -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)

@ -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 lib
use m1, only : pi
implicit none
contains
pure real function func()
func = pi()
end function
end module

@ -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)

@ -0,0 +1,3 @@
pure real function dummy()
dummy = 4*atan(1.)
end function

@ -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 lib
use m1, only : pi
implicit none
contains
pure real function func()
func = pi()
end function
end module

@ -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)

@ -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 lib
use m1, only : pi
implicit none
contains
pure real function func()
func = pi()
end function
end module

@ -10,25 +10,25 @@
"name": "HEADERS", "name": "HEADERS",
"type": "HEADERS", "type": "HEADERS",
"visibility": "PUBLIC", "visibility": "PUBLIC",
"baseDirectories": [".*/Tests/RunCMake/FileAPI/fileset$"] "baseDirectories": ["^fileset$"]
}, },
{ {
"name": "a", "name": "a",
"type": "HEADERS", "type": "HEADERS",
"visibility": "PRIVATE", "visibility": "PRIVATE",
"baseDirectories": [".*/Tests/RunCMake/FileAPI/fileset$"] "baseDirectories": ["^fileset$"]
}, },
{ {
"name": "b", "name": "b",
"type": "HEADERS", "type": "HEADERS",
"visibility": "PUBLIC", "visibility": "PUBLIC",
"baseDirectories": [".*/Tests/RunCMake/FileAPI/fileset/dir$"] "baseDirectories": ["^fileset/dir$"]
}, },
{ {
"name": "c", "name": "c",
"type": "HEADERS", "type": "HEADERS",
"visibility": "INTERFACE", "visibility": "INTERFACE",
"baseDirectories": [".*/Tests/RunCMake/FileAPI/fileset$"] "baseDirectories": ["^fileset$"]
} }
], ],
"sources": [ "sources": [

@ -10,7 +10,7 @@
"name": "HEADERS", "name": "HEADERS",
"type": "HEADERS", "type": "HEADERS",
"visibility": "INTERFACE", "visibility": "INTERFACE",
"baseDirectories": [".*/Tests/RunCMake/FileAPI/fileset$"] "baseDirectories": ["^fileset$"]
} }
], ],
"sources": [ "sources": [

Loading…
Cancel
Save