New upstream version 3.27.9
This commit is contained in:
parent
f52e828661
commit
f622ac3441
@ -1093,8 +1093,10 @@ with members:
|
||||
``PRIVATE``, or ``INTERFACE``.
|
||||
|
||||
``baseDirectories``
|
||||
A JSON array of strings specifying the base directories containing sources
|
||||
in the file set.
|
||||
A JSON array of strings, each specifying a base directory containing
|
||||
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.
|
||||
|
||||
|
@ -652,6 +652,8 @@ a `CDash`_ server. The command-line signature used to submit to `CDash`_ is::
|
||||
ctest -S <script> [-- <dashboard-options>...]
|
||||
ctest -SP <script> [-- <dashboard-options>...]
|
||||
|
||||
.. _`CDash`: https://www.cdash.org
|
||||
|
||||
Options for Dashboard Client include:
|
||||
|
||||
.. option:: -D <dashboard>, --dashboard <dashboard>
|
||||
@ -1822,5 +1824,3 @@ See Also
|
||||
========
|
||||
|
||||
.. 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
|
||||
: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
|
||||
:variable:`CMAKE_SYSTEM_VERSION` if possible. The ``NEW`` behavior
|
||||
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.
|
||||
Some implementation updates were made to support ecosystem changes
|
||||
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.
|
||||
Some implementation updates were made to support ecosystem changes
|
||||
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.
|
||||
set(CMake_VERSION_MAJOR 3)
|
||||
set(CMake_VERSION_MINOR 27)
|
||||
set(CMake_VERSION_PATCH 8)
|
||||
set(CMake_VERSION_PATCH 9)
|
||||
#set(CMake_VERSION_RC 0)
|
||||
set(CMake_VERSION_IS_DIRTY 0)
|
||||
|
||||
@ -21,7 +21,7 @@ endif()
|
||||
|
||||
if(NOT CMake_VERSION_NO_GIT)
|
||||
# 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.
|
||||
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;
|
||||
for (auto const& directory : directories) {
|
||||
baseDirs.append(directory);
|
||||
baseDirs.append(RelativeIfUnder(this->TopSource, directory));
|
||||
}
|
||||
fileSet["baseDirectories"] = baseDirs;
|
||||
|
||||
|
@ -145,8 +145,8 @@ void cmGccDepfileLexerHelper::sanitizeContent()
|
||||
++rit;
|
||||
}
|
||||
}
|
||||
// Remove the entry if rules are empty or do not have any paths
|
||||
if (it->rules.empty() || it->paths.empty()) {
|
||||
// Remove the entry if rules are empty
|
||||
if (it->rules.empty()) {
|
||||
it = this->Content.erase(it);
|
||||
} else {
|
||||
++it;
|
||||
|
@ -1034,11 +1034,6 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatements(
|
||||
|
||||
cmNinjaBuild build(this->LanguageDyndepRule(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) {
|
||||
if (!scanFiles.ScanningOutput.empty()) {
|
||||
build.ExplicitDeps.push_back(scanFiles.ScanningOutput);
|
||||
@ -1050,10 +1045,17 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatements(
|
||||
|
||||
this->WriteTargetDependInfo(language, config);
|
||||
|
||||
for (std::string const& l :
|
||||
this->GetLinkedTargetDirectories(language, config)) {
|
||||
build.ImplicitDeps.push_back(cmStrCat(l, '/', language, "Modules.json"));
|
||||
}
|
||||
// Make sure dyndep files for all our dependencies have already
|
||||
// been generated so that the '<LANG>Modules.json' files they
|
||||
// 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),
|
||||
build);
|
||||
|
@ -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)
|
||||
|
@ -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 @@
|
||||
add_library(mvstol_obj STATIC obj.f90)
|
@ -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 @@
|
||||
add_library(mvstos_obj OBJECT obj.f90)
|
@ -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
|
11
Tests/FortranModules/ModulesViaTargetObjectsLink/obj.f90
Normal file
11
Tests/FortranModules/ModulesViaTargetObjectsLink/obj.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/ModulesViaTargetObjectsLink/use.f90
Normal file
13
Tests/FortranModules/ModulesViaTargetObjectsLink/use.f90
Normal file
@ -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)
|
11
Tests/FortranModules/ModulesViaTargetObjectsSource/obj.f90
Normal file
11
Tests/FortranModules/ModulesViaTargetObjectsSource/obj.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/ModulesViaTargetObjectsSource/use.f90
Normal file
13
Tests/FortranModules/ModulesViaTargetObjectsSource/use.f90
Normal file
@ -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",
|
||||
"type": "HEADERS",
|
||||
"visibility": "PUBLIC",
|
||||
"baseDirectories": [".*/Tests/RunCMake/FileAPI/fileset$"]
|
||||
"baseDirectories": ["^fileset$"]
|
||||
},
|
||||
{
|
||||
"name": "a",
|
||||
"type": "HEADERS",
|
||||
"visibility": "PRIVATE",
|
||||
"baseDirectories": [".*/Tests/RunCMake/FileAPI/fileset$"]
|
||||
"baseDirectories": ["^fileset$"]
|
||||
},
|
||||
{
|
||||
"name": "b",
|
||||
"type": "HEADERS",
|
||||
"visibility": "PUBLIC",
|
||||
"baseDirectories": [".*/Tests/RunCMake/FileAPI/fileset/dir$"]
|
||||
"baseDirectories": ["^fileset/dir$"]
|
||||
},
|
||||
{
|
||||
"name": "c",
|
||||
"type": "HEADERS",
|
||||
"visibility": "INTERFACE",
|
||||
"baseDirectories": [".*/Tests/RunCMake/FileAPI/fileset$"]
|
||||
"baseDirectories": ["^fileset$"]
|
||||
}
|
||||
],
|
||||
"sources": [
|
||||
|
@ -10,7 +10,7 @@
|
||||
"name": "HEADERS",
|
||||
"type": "HEADERS",
|
||||
"visibility": "INTERFACE",
|
||||
"baseDirectories": [".*/Tests/RunCMake/FileAPI/fileset$"]
|
||||
"baseDirectories": ["^fileset$"]
|
||||
}
|
||||
],
|
||||
"sources": [
|
||||
|
Loading…
x
Reference in New Issue
Block a user