New upstream version 3.27.9
This commit is contained in:
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 @@
|
|||||||
|
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",
|
"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…
x
Reference in New Issue
Block a user