2c558cfd1b gitlab-ci: add CI jobs for Clang with C++20 modules
abd42e9cfc ci: add a Docker container for clang support of C++20 modules
51093f3002 Clang-FindBinUtils: also find `clang-scan-deps`
0b333de923 ci: add C++ module rules file for Clang
21b9fb1e8c cmCxxModuleMapper: support the `clang` module map format
9c66224668 cmNinjaTargetGenerator: skip setting `depfile` for `none` scantypes
9123a0991f cmNinjaTargetGenerator: use `.clear()` to empty out some strings
Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Cristian Adam <cristian.adam@gmail.com>
Merge-request: !7978
Remove the output file before invoking moc in case the case of source file has
changed on disk. Recent versions of clang warn when the case of the include
directive (which does change) doesn't match the case of the file on disk.
The flags argument is intended to support multiple flags from the
ArgumentFlags enum. Therefore, flags cannot be of enum type, it
must be an integral type that allows flags to be OR'ed together.
Update the one call site that was erroneously OR'ing multiple values
but then casting that to an ArgumentFlags, which could result in
passing a technically invalid value.
Amends: dd3482f675 (cmTargetPropCommandBase: Restore
ArgumentFlags enum value bool logic, 2022-11-27)
Since commit f69d1872db (cmGeneratorTarget: Add caches to some
functions, 2022-11-23) we cache the computed link options for a target.
Cache the host and device link options separately.
This fixes incorrect runtime dependency resolution when the dependency
is located in rpaths of a transitive parent. Instead of supplying only
the rpaths of the immediate parent, it combines the rpaths of all
transitive parents and passes them down.
Fixes: #24172
The compiler used for a build sometimes disagrees with
the remainder of the toolchain wrt. to the architecture
triple. Specifically, Clang will typically put its
libraries in `<arch>-unknown-<os>-<env>` but it uses
the GCC toolchain on many targets (which often has
its libraries in `<arch>-<os>-<env>`). In such cases
CMake will acquire the triple from Clang and use it
in library search paths for libraries that are provided
by the GCC toolchain. This of course fails due to the
mismatch.
This patch augments the list of search paths with ones
that include the architecture triple with any occurrences
of 'unknown' removed.
Fixes: #24175
f4a17b29d3 cmDyndepCollation: factor out metadata writing for dyndep
2f93a272d0 cmDyndepCollation: factor out parsing dyndep information
3fc2de5c74 cmDyndepCollation: factor out writing C++ module info from Ninja
Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !7971
To facilitate other generators being able to build C++20 modules, start
pulling out collator logic into a generator-agnostic location.
This commit starts by factoring out the information written to the
"target depend info" object consumed during the build to handle writing
out export and installation scripts expected during those steps.
Since commit 219a9b1e14 (Fortran: Fix suprious dependencies with
submodules, 2022-07-30, v3.25.0-rc1~327^2) we accidentally fail to
recognize `end interface X`, causing all subsequent modules to be seen
as an interface.
Fixes: #24203