Brad King
ff1693cb3c
cmGeneratorTarget: Clarify enum for specifying purpose of usage requirements
...
Since commit 1e49880472 (cmGeneratorTarget: Avoid boolean trap in usage
requirement lookup, 2021-12-08, v3.23.0-rc1~245^2) we have clarified
the distinction between compile-only and link-only usage requirements.
Rename the `LinkInterfaceFor` enum to `UseTo` to clarify that its role
is to specify the purpose of usage requirements.
2024-05-03 13:04:10 -04:00
Brad King
662d4c5315
cmGeneratorTarget: Clarify name for evaluating compile-only usage requirements
2024-05-03 13:04:09 -04:00
Brad King
1027c0e213
Merge topic 'cxxmodules-no-import-std-reason'
...
e89e819398 Tests/CXXModules: add tests for C++26 `import std` support
6dad18f060 cxxmodules: give a reason for unavailability of `import std`
Acked-by: Kitware Robot <kwrobot@kitware.com >
Tested-by: buildbot <buildbot@kitware.com >
Merge-request: !9486
2024-05-03 09:26:39 -04:00
Ben Boeckel
6dad18f060
cxxmodules: give a reason for unavailability of import std
...
If the `CMAKE_CXX<STANDARD>_COMPILER_IMPORT_STD_NOT_FOUND_MESSAGE`
variable is set, include its value in the error message.
2024-05-02 14:46:51 -04:00
Brad King
721b86c02b
Merge topic 'pch-single-arch'
...
ef006ebd9b PCH: Use per-arch .pch files only when building multiple Apple architectures
99bfb430ee cmNinjaTargetGenerator: Remove unused Apple architecture list
Acked-by: Kitware Robot <kwrobot@kitware.com >
Tested-by: buildbot <buildbot@kitware.com >
Merge-request: !9483
2024-05-02 09:44:48 -04:00
Brad King
718f43e7ee
Merge topic 'vs-scan-module-deps-settings'
...
3022f0363f VS: set ScanSourceForModuleDependencies at vcxproj level
dff511ad28 cmGeneratorTarget: add a target-level query for "needs dyndep"
Acked-by: Kitware Robot <kwrobot@kitware.com >
Acked-by: AaronRuizMoraUK <aaronruizmora@gmail.com >
Merge-request: !9471
2024-05-02 09:40:04 -04:00
Brad King
ef006ebd9b
PCH: Use per-arch .pch files only when building multiple Apple architectures
...
Since commit f593b354da (PCH: Add support for multi architecture iOS
projects, 2020-04-02, v3.18.0-rc1~414^2) we use per-arch .pch files
even when compiling for just the host architecture on macOS arm64.
This breaks with compilers that do not support `-Xarch_` flags, such
as GCC. Avoid using per-arch .pch files in single-architecture builds.
Fixes : #25514
Issue: #20497
2024-05-01 12:43:39 -04:00
Brad King
de9faaf0a3
Merge topic 'genex-link-properties'
...
ddb9442f48 GenEx: Fix TARGET_PROPERTY evaluation of transitive link properties
862b8e28ad GenEx: Teach TARGET_PROPERTY evaluation to optionally pierce LINK_ONLY
8d1d6a1437 Tests: Cover TARGET_PROPERTY genex evaluation of transitive link properties
abf607c2ec Tests: Cover TARGET_PROPERTY genex evaluation of transitive build properties
7d3d728a72 Help: Clarify CMP0099 documentation and summary text
79a3ae9a0d cmGeneratorExpressionDAGChecker: Simplify transitive property table
e8010b67c7 cmGeneratorExpressionDAGChecker: Make local generator available in constructor
b36fb3f6f1 cmGeneratorExpressionNode: Remove outdated lint suppression
Acked-by: Kitware Robot <kwrobot@kitware.com >
Tested-by: buildbot <buildbot@kitware.com >
Merge-request: !9473
2024-05-01 10:06:11 -04:00
Ben Boeckel
dff511ad28
cmGeneratorTarget: add a target-level query for "needs dyndep"
...
This can still be overridden per-source, but it indicates the state of
the target's default behavior.
2024-05-01 09:41:07 -04:00
Brad King
be111897b3
Merge topic 'export-name-safe-name'
...
142a85f9c1 cxxmodules: use filesystem-safe export names in filenames
4452d41488 cmGeneratorTarget: add method to get a filesystem-safe export name
Acked-by: Kitware Robot <kwrobot@kitware.com >
Tested-by: buildbot <buildbot@kitware.com >
Merge-request: !9474
2024-05-01 09:29:57 -04:00
Brad King
f909fc2f92
Merge topic 'export-name-safe-name' into release-3.28
...
142a85f9c1 cxxmodules: use filesystem-safe export names in filenames
4452d41488 cmGeneratorTarget: add method to get a filesystem-safe export name
Acked-by: Kitware Robot <kwrobot@kitware.com >
Merge-request: !9474
2024-05-01 09:28:59 -04:00
Brad King
2549f5a66e
Merge topic 'exported-modules-with-headers'
...
2041f7c9bf cmGeneratorTarget: add the original target as a COMPILE_ONLY link
051c2110c8 Tests/CXXModules: test exporting modules which include headers
Acked-by: Kitware Robot <kwrobot@kitware.com >
Tested-by: buildbot <buildbot@kitware.com >
Merge-request: !9469
2024-04-30 10:10:36 -04:00
Brad King
ddb9442f48
GenEx: Fix TARGET_PROPERTY evaluation of transitive link properties
...
In commit bbba701899 (Link properties: must be transitive over private
dependency on static library, 2019-12-06, v3.17.0-rc1~323^2) and
commit af9d4f24ae (Link properties: must be transitive over private
dependency on static library, 2019-12-11, v3.17.0-rc1~305^2) we
neglected to implement CMP0099 NEW behavior for `TARGET_PROPERTY`
evaluation. Add policy CMP0166 to fix this.
2024-04-29 17:40:03 -04:00
Brad King
862b8e28ad
GenEx: Teach TARGET_PROPERTY evaluation to optionally pierce LINK_ONLY
2024-04-29 17:40:03 -04:00
Brad King
79a3ae9a0d
cmGeneratorExpressionDAGChecker: Simplify transitive property table
...
Refactor the table of builtin transitive properties to avoid
preprocessor-generated cascading-if blocks with duplicate code.
2024-04-29 17:39:12 -04:00
Brad King
e8010b67c7
cmGeneratorExpressionDAGChecker: Make local generator available in constructor
...
This is the local generator in the evaluation context, not that of
the current target/property pair.
2024-04-29 17:27:35 -04:00
Ben Boeckel
4452d41488
cmGeneratorTarget: add method to get a filesystem-safe export name
...
C++ module support puts the export name in a filename. Export names with
`:` in them are not valid filenames on Windows. Add a method to escape
names as necessary.
See: #25828
2024-04-29 17:23:08 -04:00
Ben Boeckel
2041f7c9bf
cmGeneratorTarget: add the original target as a COMPILE_ONLY link
...
Fixes : #25909
2024-04-26 20:15:05 -04:00
Brad King
e449417f94
Merge topic 'genex-cleanup'
...
895efd4e7a cmGeneratorExpression: Consolidate recognition of transitive properties
5f7d8192da cmGeneratorExpression: Inline evaluation helper at only call site
91a25de520 cmGeneratorExpression: Add comments on implementation details
0a61116f52 cmGeneratorTarget: Remove EvaluateInterfaceProperty argument default
Acked-by: Kitware Robot <kwrobot@kitware.com >
Acked-by: buildbot <buildbot@kitware.com >
Merge-request: !9425
2024-04-15 10:16:35 -04:00
Brad King
91a25de520
cmGeneratorExpression: Add comments on implementation details
...
Clarify the purpose of some genex code that collects properties over the
transitive link closure.
2024-04-12 11:50:55 -04:00
Ben Boeckel
15bbd1d9b8
Experimental: add an experimental feature gate for import std
2024-04-12 11:46:39 -04:00
Ben Boeckel
2c8361f923
cxxmodules: link to std-providing targets when available
2024-04-11 10:19:44 -04:00
Ben Boeckel
15cd73d6c2
cmGlobalGenerator: compute target features before synthetic targets
...
For `import std;` support, CMake needs to know the standard library
involved in order to ensure that the right target is linked. Afterwards,
the created synthetic targets need their target compile features
computed.
2024-04-11 10:19:44 -04:00
ClausKlein
eb66549c7c
VERIFY_INTERFACE_HEADER_SETS: Suppress clang-tidy include checks
...
`clang-tidy-17` adds include checks similar to IWYU. Suppress them in
generated code.
2024-04-08 19:15:21 -04:00
ClausKlein
b0773aa4f6
VERIFY_INTERFACE_HEADER_SETS: Add IWYU pragma as C-style comment
...
In commit 6942234bf5 (VERIFY_INTERFACE_HEADER_SETS: Add IWYU pragma:
associated to verification file, 2022-10-07, v3.25.0-rc1~22^2) the
comment was added as a C++-style comment. The feature works in C too,
so use a C-style comment.
2024-04-08 19:10:10 -04:00
Vitaly Stakhovsky
1a49b439a5
Source: Use cmValue::IsOn and IsOff
...
Speed up a bit by calling members directly.
2024-03-17 19:05:37 -04:00
Marc Chevrier
801ae06952
LINKER_TYPE: Support MOLD only on GCC versions that support it
...
Fixes : #25748
2024-03-13 11:13:21 -04:00
Marc Chevrier
939ac5287e
LINKER_TYPE: fix spelling error in message
2024-03-12 18:18:25 +01:00
Brad King
4ff4417b54
Merge topic 'cxxmodules-fileset-cache-fullpath' into release-3.29
...
0a18f9baad cmGeneratorTarget: collapse paths before querying the fileset cache
Acked-by: Kitware Robot <kwrobot@kitware.com >
Acked-by: buildbot <buildbot@kitware.com >
Merge-request: !9286
2024-02-27 09:06:24 -05:00
Ben Boeckel
0a18f9baad
cmGeneratorTarget: collapse paths before querying the fileset cache
...
Observed with paths with `../` when outside of the source tree. I
attempted to reproduce a test suite case for it but could not make it
happen.
2024-02-24 17:17:39 -05:00
Brad King
c66396699b
Merge topic 'cxxmodules-transitive-modules-usage' into release-3.29
...
ec348ee4b9 cmGeneratorTarget: discover synthetic targets recursively
67466ddf65 cmExportFileGenerator: export link libraries as-is
a2e3e61a31 Tests/CXXModules: test transitive modules usage
Acked-by: Kitware Robot <kwrobot@kitware.com >
Acked-by: buildbot <buildbot@kitware.com >
Merge-request: !9273
2024-02-21 13:34:34 -05:00
Ben Boeckel
ec348ee4b9
cmGeneratorTarget: discover synthetic targets recursively
...
Fixes : #25288
2024-02-20 10:53:31 -05:00
Brad King
f18ba02d7e
Merge topic 'cxxmodules-nmc-duplicate-synthetic-targets' into release-3.29
...
5261af9424 cmGeneratorTarget: store synthetic targets in its cache
e0633a9517 Tests/CXXModules: add a test importing from a `Ninja` install
150d7dbd68 Tests/CXXModules: support building a project with `Ninja`
e48e5e5506 Tests/CXXModules: document `CMake_TEST_MODULE_COMPILATION` items
Acked-by: Kitware Robot <kwrobot@kitware.com >
Tested-by: buildbot <buildbot@kitware.com >
Merge-request: !9263
2024-02-19 09:23:21 -05:00
Ben Boeckel
5261af9424
cmGeneratorTarget: store synthetic targets in its cache
...
The synthetic target cache was never actually updated, so record them in
the cache so that reuses can actually be discovered.
Fixes : #25568
2024-02-16 11:09:56 -05:00
Brad King
af076796c3
Merge topic 'cuda-clang-no-link-arch'
...
45d53bdb70 CUDA/Clang: Do not pass explicit architecture flags when linking
Acked-by: Kitware Robot <kwrobot@kitware.com >
Reviewed-by: Raul Tambre <raul@tambre.ee >
Merge-request: !9165
2024-01-19 11:40:38 -05:00
Brad King
4cd153afe3
Merge branch 'backport-cxxmodules-export-file-collisions'
2024-01-18 17:45:07 -05:00
Brad King
2352dcc830
Source: Simplify hasher object construction
2024-01-18 17:40:32 -05:00
Brad King
45d53bdb70
CUDA/Clang: Do not pass explicit architecture flags when linking
...
Clang does not use architecture flags while driving the linker:
warning: argument unused during compilation: '--cuda-gpu-arch=...'
2024-01-18 13:23:42 -05:00
Brad King
2c6ec6de15
Link to transitive dependencies on stub libraries only on some linkers
...
Only linkers that enforce `--no-allow-shlib-undefined` recursively need
to link private transitive dependencies on stub libraries explicitly.
2024-01-04 11:59:26 -05:00
Brad King
49dc6a44e0
Merge topic 'Xcode-Check-Imported-Framework'
...
defbfd6f55 Xcode: Restore support for standalone IMPORTED_LOCATION_<CONFIG>
Acked-by: Kitware Robot <kwrobot@kitware.com >
Acked-by: buildbot <buildbot@kitware.com >
Merge-request: !9082
2023-12-19 08:04:01 -05:00
Marc Chevrier
defbfd6f55
Xcode: Restore support for standalone IMPORTED_LOCATION_<CONFIG>
...
In commit 878ae03832 (macOS: IMPORTED framework: Honor SYSTEM target
property in all cases, 2023-08-27, v3.28.0-rc1~162^2) we broke support
for `IMPORTED_LOCATION_<CONFIG>` without `IMPORTED_CONFIGURATIONS`.
Previously it worked if the importing project's configurations match the
set of `IMPORTED_LOCATION_<CONFIG>` properties set. Fix that case.
Fixes : #25506
Issue: #25515
2023-12-18 10:18:25 -05:00
Brad King
dbede7be7e
Merge topic 'cmake-sources-no-scan'
...
91b7bf59a7 cmGlobalXCodeGenerator: disable C++ module scanning for force-lang files
9e19a61ddb cmLocalGenerator: disable C++ module scanning for unity sources
fa9a72a788 cmLocalGenerator: disable C++ module scanning for copied PCH sources
e5dce1a37e cmQtAutoGenInitializer: disable C++ module scanning for autogen sources
4fd596c34c cmGeneratorTarget: disable C++ module scanning for verify targets
Acked-by: Kitware Robot <kwrobot@kitware.com >
Tested-by: buildbot <buildbot@kitware.com >
Merge-request: !9064
2023-12-12 08:33:38 -05:00
Ben Boeckel
4fd596c34c
cmGeneratorTarget: disable C++ module scanning for verify targets
2023-12-11 07:52:31 -05:00
Brad King
fb54e957d6
Merge topic 'imported-implib-only'
...
fc6508921c cmComputeLinkInformation: Restore soname lookup for non-imported targets
03d86f9d9c cmGeneratorTarget: Add helper to check for known runtime artifact
Acked-by: Kitware Robot <kwrobot@kitware.com >
Acked-by: buildbot <buildbot@kitware.com >
Acked-by: Robert Maynard <robertjmaynard@gmail.com >
Merge-request: !9041
2023-12-06 08:49:04 -05:00
Brad King
03d86f9d9c
cmGeneratorTarget: Add helper to check for known runtime artifact
2023-12-05 15:48:36 -05:00
Brad King
8d6dcaa4b0
Merge topic 'LINK_LIBRARY-genex-with-INTERFACE_LINK_LIBRARIES_DIRECT'
...
9798482a8c LINK_LIBRARY-genex: correct behavior for INTERFACE_LINK_LIBRARIES_DIRECT
Acked-by: Kitware Robot <kwrobot@kitware.com >
Tested-by: buildbot <buildbot@kitware.com >
Merge-request: !8992
2023-11-30 09:08:53 -05:00
Marc Chevrier
9798482a8c
LINK_LIBRARY-genex: correct behavior for INTERFACE_LINK_LIBRARIES_DIRECT
...
Fixes : #25416
2023-11-29 11:26:52 -05:00
Brad King
baafd7a874
Merge topic 'cxxmodules-diagnostics'
...
cbd549b09e cxxmodules: Add more suggestions to no-modules-support diagnostics
Acked-by: Kitware Robot <kwrobot@kitware.com >
Tested-by: buildbot <buildbot@kitware.com >
Merge-request: !9011
2023-11-29 07:51:42 -05:00
Brad King
cbd549b09e
cxxmodules: Add more suggestions to no-modules-support diagnostics
...
Tell users what generators *do* support C++ modules. Report the current
generator to make clear it is not one of those supporting modules.
Also clarify the purpose of the existing documentation references.
2023-11-28 14:36:16 -05:00
Brad King
c2bd158712
Merge topic 'fortran-objects-as-sources-fix'
...
beb1393f8f Merge branch 'revert-exact-collation-depends-3.27' into fortran-objects-as-sources-fix
a033dce326 Makefiles: provide, but do not consume, "forward linked" target dirs
7cd0adab1b cmCommonTargetGenerator: use modules from linked object-referenced targets
1175f1c874 LinkItem: track `cmSourceFile` instances for external objects
d2fa56772f Ninja: support "forwarding" modules from other targets
ec1e589bec Ninja: Revert exact collation dependencies for 3.27
06df59b930 cmCommonTargetGenerator: return forward linked target dirs too
f8729ab366 cmLocalUnixMakefileGenerator3: handle object-referencing Fortran modules
...
Acked-by: Kitware Robot <kwrobot@kitware.com >
Acked-by: buildbot <buildbot@kitware.com >
Merge-request: !8989
2023-11-27 08:36:45 -05:00