Commit Graph

31880 Commits

Author SHA1 Message Date
Kitware Robot 0294570d06 CMake Nightly Date Stamp 2022-02-01 00:01:17 -05:00
Brad King 5305d5aa1a Merge topic 'link-interface-direct'
f3ad061858 Add usage requirements to update direct link dependencies
193a999cd5 cmTarget: Add INTERFACE_LINK_LIBRARIES_DIRECT{,_EXCLUDE} backtrace storage
22d5427aa6 cmGeneratorTarget: Add LookupLinkItem option to consider own target name
f3d2eab36a cmGeneratorTarget: Fix link interface caching of partial results
d75ab9d066 cmGeneratorTarget: Clarify CMP0022 logic in ComputeLinkInterfaceLibraries
f3e9e03fe0 cmGeneratorTarget: Simplify CMP0022 warning check
216aa14997 cmGeneratorTarget: Return early from ExpandLinkItems with no items
1bc98371d1 Tests: Remove unnecessary policy setting from ObjectLibrary test
...

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6886
2022-01-31 10:36:55 -05:00
Brad King d3006c0ca7 Merge topic 'shorter-obj'
5f8c5657a9 Shorten object name even if still longer than CMAKE_OBJECT_PATH_MAX

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !6915
2022-01-31 10:30:30 -05:00
Brad King 3de6155ca0 Merge topic 'update-kwsys'
e83bb75160 Merge branch 'upstream-KWSys' into update-kwsys
d01d634bc7 KWSys 2022-01-29 (389a74dc)

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6919
2022-01-31 10:29:38 -05:00
Kitware Robot cacfadd84a CMake Nightly Date Stamp 2022-01-31 00:01:31 -05:00
Kitware Robot 4b033ca0eb CMake Nightly Date Stamp 2022-01-30 00:01:13 -05:00
Brad King e83bb75160 Merge branch 'upstream-KWSys' into update-kwsys
# By KWSys Upstream
* upstream-KWSys:
  KWSys 2022-01-29 (389a74dc)
2022-01-29 07:06:10 -05:00
Brad King f3ad061858 Add usage requirements to update direct link dependencies
Link line construction starts with `LINK_LIBRARIES` and appends
dependencies from the transitive closure of `INTERFACE_LINK_LIBRARIES`.
Only the entries of `LINK_LIBRARIES` are considered direct link
dependencies.  In some advanced use cases, particularly involving static
libraries and static plugins, usage requirements need to update the list
of direct link dependencies.  This may mean adding new items, removing
existing items, or both.

Add target properties to encode these usage requirements:

* INTERFACE_LINK_LIBRARIES_DIRECT
* INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE

Fixes: #22496
2022-01-29 06:48:13 -05:00
Brad King 193a999cd5 cmTarget: Add INTERFACE_LINK_LIBRARIES_DIRECT{,_EXCLUDE} backtrace storage
These properties will be given meaning by later commits.
2022-01-29 06:48:12 -05:00
Brad King 22d5427aa6 cmGeneratorTarget: Add LookupLinkItem option to consider own target name 2022-01-29 06:48:12 -05:00
Brad King f3d2eab36a cmGeneratorTarget: Fix link interface caching of partial results
`GetLinkInterface` and `GetLinkInterfaceLibraries` cache their results
to avoid repeating work.  In the case that the result does not depend on
the "head" target, they re-use results computed from the first call with
any "head" target.  However, if `GetLinkInterfaceLibraries` is called
first, then not all of the link interface is populated.  If
`GetLinkInterface` is later called, it needs to finish populating the
link interface even if a partially completed interface was cached.
2022-01-29 06:48:12 -05:00
Brad King d75ab9d066 cmGeneratorTarget: Clarify CMP0022 logic in ComputeLinkInterfaceLibraries
Follow up commit 1d709ea2f5 (cmGeneratorTarget: Propagate backtraces
from INTERFACE_LINK_LIBRARIES, 2021-12-15), which made the logic a bit
more complicated due to having backtraces for CMP0022 NEW behavior.
2022-01-29 06:48:12 -05:00
Brad King f3e9e03fe0 cmGeneratorTarget: Simplify CMP0022 warning check
Since commit 1d709ea2f5 (cmGeneratorTarget: Propagate backtraces from
INTERFACE_LINK_LIBRARIES, 2021-12-15) we can use the special storage of
the property directly.
2022-01-29 06:48:12 -05:00
Brad King 216aa14997 cmGeneratorTarget: Return early from ExpandLinkItems with no items 2022-01-29 06:48:12 -05:00
Brad King 4e8f24e977 PCH: Clear link interface cache when adding PCH object to it
On platforms using `CMAKE_LINK_PCH`, the implementation of
`PRECOMPILE_HEADERS_REUSE_FROM`, when re-using the PCH from one object
library in another, adds a PCH object file to the link interface.
Clear any cached link interface to ensure it is used.
2022-01-29 06:48:11 -05:00
Brad King 854e67985e cmLinkItem: Clarify name of CMP0027 check member
The only purpose of `cmLinkImplItem`'s `FromGenex` member is to decide
whether to check CMP0027.  That won't be needed for link items added by
new interfaces in the future.  Clarify the name to indicate that we do
not always need to know if the item came from a generator expression.
2022-01-29 06:48:11 -05:00
Brad King f6170c1322 cmGeneratorExpressionDAGChecker: Re-order EvaluatingLinkLibraries condition
Place the modern properties first.
2022-01-29 06:46:35 -05:00
Brad King 16fbf6ccb6 Merge topic 'gcc12-warning'
ae101921e8 Source: Avoid gcc 12 compilation warning

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6916
2022-01-29 06:30:19 -05:00
Kitware Robot 4b2ab96c51 CMake Nightly Date Stamp 2022-01-29 00:01:17 -05:00
Nick Little 5f8c5657a9 Shorten object name even if still longer than CMAKE_OBJECT_PATH_MAX
In some cases the shortened path may end up working in practice, even if
it is over CMAKE_OBJECT_PATH_MAX, where the original path does not.
If the original path is too long, do the MD5 substitution whenever it
makes the path shorter.  Retain the warning if it is still too long.
2022-01-28 11:12:59 -05:00
Brad King 6108352f0a Merge topic 'ibmclang-compiler'
8c1731546c Help: Add release note for IBM Open XL C/C++ compiler support
24da80b70a Utilities: Suppress warnings in third-party code with IBMClang
6da99e671c IBMClang: Add support for IBM Open XL C/C++

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6785
2022-01-28 09:50:15 -05:00
Brad King ba069c10dd Merge topic 'cuda_vs_arch_all'
daf372c4d6 CUDA: Fix issuing error if default architecture detection fails
7a0d098352 CUDA: Error on empty/invalid CMAKE_CUDA_ARCHITECTURES set by user
d19273bc7b CUDA: Support all and all-major on Visual Studio
5f667d783a CUDA: Actually use reverse architecture deprecation order for Clang

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Brad King <brad.king@kitware.com>
Merge-request: !6912
2022-01-28 09:40:50 -05:00
Brad King 4ff6ea0f2f Merge topic 'timestamp-microseconds'
c050d6a01e string(TIMESTAMP): add %f specifier for microseconds

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6910
2022-01-28 09:39:03 -05:00
Brad King 5126b3b8d1 Merge topic 'message-flush'
634587e322 message: Restore explicit flushing of messages on stderr

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6913
2022-01-28 09:36:02 -05:00
Brad King ae101921e8 Source: Avoid gcc 12 compilation warning
GCC 12 warns:

    warning: '%04d' directive output may be truncated writing between
    4 and 11 bytes into a region of size 5 [-Wformat-truncation=]

The surrounding logic guarantees the formatted integer will never
be more than 4 bytes, but it doesn't hurt to use a larger buffer.
This GCC behavior is documented:

    https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104012#c5
2022-01-28 08:06:13 -05:00
Peter Würth c050d6a01e string(TIMESTAMP): add %f specifier for microseconds
The %f specified extends the string(TIMESTAMP) and file(TIMESTAMP)
commands to output the timestamp with a microsecond resolution.
This convention is offered by python's datetime module.
Before, the precision was limited to seconds.

The implementation is done by extending existing cmTimestamp methods
with a `microseconds` parameter. This parameter is optional in order to
be backwards compatible. The timestamps are now received in a
cross-platform manner using libuv, since the standard C functions like
time() don't allow for sub-second precision.

This requires libuv 1.28 or higher.  We already require higher than
that on Windows, so update the required version for other platforms.

Implements: #19335
2022-01-28 06:23:57 -05:00
Kitware Robot ee1bed5058 CMake Nightly Date Stamp 2022-01-28 00:01:22 -05:00
Brad King 634587e322 message: Restore explicit flushing of messages on stderr
In the `cmake` command-line tool, the `message()` command with no
message mode argument prints the message stderr using the C++ `cerr`
stream.  Since commit 0a0a0f8a74 (cmMessenger: Color messages to
terminal by type, 2021-05-18, v3.21.0-rc1~146^2) and an update by
commit c7a8c9c811 (cmMessenger: Revert to non-color messages on
Windows, 2021-07-20, v3.21.1~15^2), we print the newline at the end of
the message using just `\n`.  We've now observed some cases of output
on stdout and stderr getting jumbled when the two go to the same file
descriptor.  Previously the newline was printed with `endl`, which
implicitly flushes.  Flush explicitly to restore that behavior.

Fixes: #23155
2022-01-27 16:06:35 -05:00
Raul Tambre d19273bc7b CUDA: Support all and all-major on Visual Studio
The Visual Studio integration's CodeGeneration option only knows how to
generate a -gencode flag, which doesn't recognize all. Add a special case to
pass these two as regular additional flags.
2022-01-27 21:43:52 +02:00
Brad King f4893ac0b1 Merge topic 'enlarge-build-file-stream-buffer'
bbdb000c55 GlobalNinjaGenerator: enlarge file stream buffer

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6903
2022-01-27 11:11:59 -05:00
Brad King b41b841cc6 Merge topic 'encode-literal-inplace'
5c3f188bef GlobalNinjaGenerator: Add EncodeLiteralInplace which doesn't copy

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6904
2022-01-27 11:11:11 -05:00
Brad King 6a9a0d98e2 Merge topic 'vs-version-enum-class'
a88f98b3be Make cmGlobalVisualStudioGenerator::VSVersion enum class

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6902
2022-01-27 11:10:21 -05:00
Brad King 1acf9aec75 Merge topic 'lcc-lexer-warnings'
a8fbe9a2fa LexerParser: Suppress LCC warnings in generated code

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6896
2022-01-27 11:08:26 -05:00
Brad King 67d604a792 Merge topic 'nmake-rsp-encoding'
d5ee6d50ee NMake: Use UTF-8 BOM in response files only with MSVC tooling
cab631c2e2 NMake: Document response file encoding heuristic in a comment

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !6905
2022-01-27 11:05:04 -05:00
Aaron Liu 24da80b70a Utilities: Suppress warnings in third-party code with IBMClang 2022-01-27 09:38:01 -05:00
Kitware Robot 44939f01e7 CMake Nightly Date Stamp 2022-01-27 00:01:14 -05:00
Clemens Wasser bbdb000c55 GlobalNinjaGenerator: enlarge file stream buffer 2022-01-26 17:09:21 +01:00
Brad King a8fbe9a2fa LexerParser: Suppress LCC warnings in generated code 2022-01-26 08:58:03 -05:00
Brad King dbfa449f08 Merge topic 'parser-cleanup'
4959276c02 cmListFileCache: Remove cmCommandContext
0386641142 cmListFileCache: Rename FromCommandContext to FromListFileFunction
3c4fa4c892 cmListFileCache: Move cmListFileFunction earlier

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !6899
2022-01-26 08:05:01 -05:00
Brad King a600b9207e Merge topic 'cache-short-paths'
6f835c3699 cmOutputConverter: Cache Short Paths

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6887
2022-01-26 08:02:23 -05:00
Brad King d5ee6d50ee NMake: Use UTF-8 BOM in response files only with MSVC tooling
Since commit f3f57cc4ed (NMake: Use UTF-8 with BOM if supported by
nmake, 2021-04-22, v3.21.0-rc1~217^2), we add a BOM to response files
to tell MSVC tooling that they are encoded as UTF-8.  However, the
"NMake Makefiles" generator may also be used with non-MSVC toolchains
that do not understand the BOM.  Update the response file encoding
selection heuristic to add the BOM only with MSVC tooling.

Fixes: #23143
2022-01-26 07:57:43 -05:00
Brad King cab631c2e2 NMake: Document response file encoding heuristic in a comment
Since commit f3f57cc4ed (NMake: Use UTF-8 with BOM if supported by
nmake, 2021-04-22, v3.21.0-rc1~217^2) the encoding of response files is
selected based on the makefile encoding.  In principle these may be
orthogonal, but in practice it is a useful heuristic.  Call out this
heuristic in a comment, and leave a FIXME to do something better.
2022-01-26 07:40:36 -05:00
Kitware Robot c4acdcbc1c CMake Nightly Date Stamp 2022-01-26 00:01:16 -05:00
Clemens Wasser 5c3f188bef GlobalNinjaGenerator: Add EncodeLiteralInplace which doesn't copy 2022-01-25 21:39:49 +01:00
Sumit Bhardwaj a88f98b3be Make cmGlobalVisualStudioGenerator::VSVersion enum class 2022-01-25 11:25:18 -08:00
Brad King 4959276c02 cmListFileCache: Remove cmCommandContext
Subsume it inside `cmListFileFunction`.
2022-01-25 08:40:41 -05:00
Brad King 0386641142 cmListFileCache: Rename FromCommandContext to FromListFileFunction
Accept a `cmListFileFunction` instead of a `cmCommandContext`.
2022-01-25 08:39:52 -05:00
Brad King 3c4fa4c892 cmListFileCache: Move cmListFileFunction earlier 2022-01-25 08:36:06 -05:00
Brad King 80eac95172 Merge topic 'fileapi-defer-static-init'
bfacb49154 fileapi: Make internal "toolchains" field tables more local

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !6894
2022-01-25 08:24:03 -05:00
Clemens Wasser 6f835c3699 cmOutputConverter: Cache Short Paths
Cache the Short Paths since we only convert the same few paths anyway
and calling `GetShortPathNameW` is really expensive.

Also, compile the code path only on Windows hosts since it only runs
when using a Windows Shell anyway.
2022-01-25 04:27:15 -05:00