Commit Graph

34166 Commits

Author SHA1 Message Date
Chris Wright 550f63447d ExternalProject/FetchContent: Support relative remote URLs
Teach `ExternalProject_Add` and `FetchContent_Declare` to resolve
relative remote URLs provided via `GIT_REPOSITORY`.  Add policy
CMP0150 to maintain compatibility.

Fixes: #24211
Co-Authored-By: Craig Scott <craig.scott@crascit.com>
2023-04-26 16:30:36 +08:00
Kitware Robot 941113b063 CMake Nightly Date Stamp 2023-04-26 00:01:14 -04:00
Alexander Neundorf df58dbb0e9 VS: Add CMake input files to ZERO_CHECK
Add all cmake input files to the `ZERO_CHECK` project.  Place files
under `CMAKE_SOURCE_DIR` in a folder structure matching the directory
structure.  This way they are easier to find, and Visual Studio does not
close them when reloading the project.

Fixes: #24557
2023-04-25 17:35:39 -04:00
Alexander Neundorf 659e9ae937 cmGlobalVisualStudio8Generator: Collect CMake input files earlier 2023-04-25 16:48:41 -04:00
Ashish Sadanandan fcacc319d9 IWYU: Return error code if user enables error reporting
Previously CMake ignored the return code from iwyu because old versions
of the tool would exit with an error code even when no header include
violations were detected.  The iwyu project has since changed this
behavior, so the tool no longer returns an error code unless the user
enables error reporting via command line arguments.

Behavior seen with iwyu version 0.19

Source file with missing includes:
 - Case 1: iwyu arguments:
   - return code: 0
   - output: <report of all missing includes>
 - Case 2: iwyu arguments: `-Xiwyu --error`
   - return code: 1
   - output: <report of all missing includes>

Source file with no missing includes:
 - Case 1: iwyu arguments:
   - return code: 0
   - output: `(/path/to/file.cc has correct #includes/fwd-decls)`
 - Case 2: iwyu arguments: `-Xiwyu --error`
   - return code: 0
   - output: `(/path/to/file.cc has correct #includes/fwd-decls)`

Teach CMake to return the iwyu return code if the user has invoked the
tool with any of these command line arguments included:
 - `--error[=N]`
 - `--error_always[=N]`

Fixes: #24066
2023-04-25 11:18:36 -04:00
Brad King ba5ced1be6 libarchive: Set build options the way we need for CMake 2023-04-25 10:35:27 -04:00
Brad King 827d5b75d4 Merge topic 'CMake-uses-cmList-class'
e08ba229ee CMake code rely on cmList class for CMake lists management (part. 1)
51b0d45d91 cmExpandList and cmExpandLists rely on cmList class

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8423
2023-04-25 09:52:40 -04:00
Kitware Robot 26087d558f CMake Nightly Date Stamp 2023-04-25 00:01:06 -04:00
Marc Chevrier e08ba229ee CMake code rely on cmList class for CMake lists management (part. 1) 2023-04-24 10:41:10 +02:00
Kitware Robot 3c952e97e2 CMake Nightly Date Stamp 2023-04-24 00:01:26 -04:00
Marc Chevrier 51b0d45d91 cmExpandList and cmExpandLists rely on cmList class 2023-04-23 14:48:36 +02:00
Kitware Robot ec4331d7b5 CMake Nightly Date Stamp 2023-04-23 00:01:08 -04:00
Marc Chevrier 59c674917b Merge topic 'Link_instruction_in_RSP'
e0364eb20d Add support of CMAKE_<LANG>_USE_RESPONSE_FILE_FOR_LIBRARIES variable.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8409
2023-04-22 04:29:30 -04:00
Kitware Robot 79d0deccc7 CMake Nightly Date Stamp 2023-04-22 00:01:07 -04:00
Kitware Robot 3cf8206412 CMake Nightly Date Stamp 2023-04-21 00:01:07 -04:00
Marc Chevrier c36f03bfec Merge topic 'GenEx-list'
31675964e7 GenEx LIST: list operations

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8410
2023-04-20 11:02:14 -04:00
Kitware Robot 4862d3e90d CMake Nightly Date Stamp 2023-04-20 00:01:06 -04:00
Kitware Robot bd94194334 CMake Nightly Date Stamp 2023-04-19 00:01:11 -04:00
Kitware Robot 79499f9e71 CMake Nightly Date Stamp 2023-04-18 00:01:06 -04:00
Craig Scott b79c444e53 Merge topic 'export-file-set-old-cmake-versions'
42e5be8cef install(EXPORT): Fall back to set_property(APPEND) for FILE_SET

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8408
2023-04-17 05:58:05 -04:00
Kitware Robot 911b285640 CMake Nightly Date Stamp 2023-04-17 00:01:25 -04:00
Marc Chevrier 31675964e7 GenEx LIST: list operations
Fixes: #24550, #24547
2023-04-16 12:00:20 +02:00
Kitware Robot fee5bd296b CMake Nightly Date Stamp 2023-04-16 00:01:06 -04:00
Kitware Robot ef51f3007f CMake Nightly Date Stamp 2023-04-15 00:01:08 -04:00
Kitware Robot 0991023c30 CMake Nightly Date Stamp 2023-04-14 00:01:08 -04:00
Matthieu Ribiere e0364eb20d Add support of CMAKE_<LANG>_USE_RESPONSE_FILE_FOR_LIBRARIES variable.
We add a function in cmNinjaNormalTargetGenerator.cxx to check for the state of the option (as it was done for Makefile). This will be checked to add or not the `$LINK_PATH` and `$LINK_LIBRARIES` to the Ninja file.
The default behavior is adding those libraries.
Fixes: #24681
2023-04-13 11:10:00 +02:00
Kitware Robot cf6a580e89 CMake Nightly Date Stamp 2023-04-13 00:01:07 -04:00
Ben Boeckel 0fb923c460 cmGeneratorExpressionNode: implement COMPILE_ONLY genex
This generator expression is the inverse of `LINK_ONLY` and only coveys
usage requirements for the purposes of compilation. Its intended use is
to avoid needing to export targets that do not have link usage
requirements (e.g., header-only libraries) when used by another target.

It will also be used to represent private usage requirements on exported
C++ module-containing targets in the future.

Eventually there should be logic to collapse nesting of
`$<COMPILE_ONLY>` and `$<LINK_ONLY>` when generating instances of
either. A TODO is left in the code for this case.

See: #15415
2023-04-12 10:43:48 -04:00
Kyle Edwards 42e5be8cef install(EXPORT): Fall back to set_property(APPEND) for FILE_SET
FILE_SET was introduced in CMake 3.23, so install(EXPORT) puts it
behind a version gate. However, this results in the include directories
not being picked up by older versions of CMake. Fall back to
set_property(APPEND) for versions of CMake older than 3.23.

Fixes: #24787
2023-04-12 09:33:24 -04:00
Kitware Robot e256e35daa CMake Nightly Date Stamp 2023-04-12 00:01:08 -04:00
Kitware Robot 6c11f7e4a8 CMake Nightly Date Stamp 2023-04-11 00:01:07 -04:00
Craig Scott e245b4df75 Merge topic 'automoc-macro-names'
c5c3aff1f5 Autogen: Add INTERFACE_AUTOMOC_MACRO_NAMES target property
69cf9700e6 Autogen: Defer setup until Generate step
7cecb6353e cmGeneratorTarget: Factor out EvaluatedTargetProperty infrastructure
2daba01ddf cmGeneratorTarget: Avoid incidental include-what-you-use warning
850b4d990c IWYU: Add mapping for 'std::remove_reference<Defer &>::type'

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8391
2023-04-10 18:06:06 -04:00
Craig Scott 453cf8a196 Merge topic 'ninja-nvhpc-fortran-Werror'
6b58cdd4cf Ninja: Exclude NVHPC -Werror flags during Fortran preprocessing

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8393
2023-04-10 17:34:47 -04:00
Kitware Robot 83525bfd7a CMake Nightly Date Stamp 2023-04-10 00:01:51 -04:00
Orkun Tokdemir c5c3aff1f5 Autogen: Add INTERFACE_AUTOMOC_MACRO_NAMES target property
Add this target property to specify macro names that propagate to
dependents as `AUTOMOC_MACRO_NAMES`.  The dependents will automatically
generate MOC files for source files that contain the inherited macro
names.

Co-Authored-By: Craig Scott <craig.scott@crascit.com>
Fixes: #19679
2023-04-09 20:51:15 +10:00
Marc Chevrier ffd0759c7a Merge topic 'list-command-uses-cmList'
e8c581606d list(): rely on cmList class

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8401
2023-04-09 05:42:59 -04:00
Kitware Robot c271ee5ba9 CMake Nightly Date Stamp 2023-04-09 00:01:06 -04:00
Marc Chevrier e8c581606d list(): rely on cmList class
Fixes: #24549
2023-04-08 12:55:42 +02:00
Kitware Robot 9080ea4e6c CMake Nightly Date Stamp 2023-04-08 00:01:06 -04:00
Kitware Robot 9af53e9bcf CMake Nightly Date Stamp 2023-04-07 00:01:10 -04:00
Brad King 0dcb545602 Merge topic 'cmList-class'
72d116ee68 GenEx: list oriented genexes use cmList class
9f60f19ee9 cmList: CMake list implementation

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8375
2023-04-06 09:16:31 -04:00
Brad King fbdb509efe Merge topic 'vs-sdk-selection'
8ecb645934 VS: Select Windows SDK matching WindowsSDKVersion env var
f90c8ab54e VS: Select latest available Windows SDK version by default
b512c53d43 VS: Add support for setting WindowsTargetPlatformVersion to 10.0
2f3d945f83 VS: Add CMAKE_GENERATOR_PLATFORM field to control Windows SDK selection
f0a67b6291 VS: Parse comma-separated fields from CMAKE_GENERATOR_PLATFORM
e259063b0a VS: Defer Windows SDK selection until CMAKE_GENERATOR_PLATFORM is known
8499374c6a VS: Simplify logic to require SDK for Windows Store
1c8d4b4bf1 Tests: Teach RunCMake_TEST_FILTER to account for test variant description

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8389
2023-04-06 09:13:31 -04:00
Kitware Robot 857dc67d54 CMake Nightly Date Stamp 2023-04-06 00:01:06 -04:00
Orkun Tokdemir 69cf9700e6 Autogen: Defer setup until Generate step
It is better to set variables up once all target dependencies are known.
2023-04-05 16:12:16 -04:00
Orkun Tokdemir 7cecb6353e cmGeneratorTarget: Factor out EvaluatedTargetProperty infrastructure
Make it available outside the `cmGeneratorTarget` implementation.
In particular, we will later use it in `cmQtAutoGenInitializer`.
2023-04-05 16:12:15 -04:00
Brad King 2daba01ddf cmGeneratorTarget: Avoid incidental include-what-you-use warning
Avoid `warning: Extra tokens on pragma line` from IWYU.
2023-04-05 16:12:15 -04:00
Brad King 8ecb645934 VS: Select Windows SDK matching WindowsSDKVersion env var
In an environment established by `vcvarsall.bat` or similar, this
environment variable may be set to select a Windows SDK version.
If the VS generator is used in such an environment, use that SDK.
This is similar to how `CMAKE_GENERATOR_INSTANCE` defaults using
a `VS##0COMNTOOLS` environment variable.

Fixes: #17992
2023-04-05 12:06:22 -04:00
Brad King f90c8ab54e VS: Select latest available Windows SDK version by default
Add policy `CMP0149` to stop preferring SDKs exactly matching
`CMAKE_SYSTEM_VERSION` over the latest SDK.

Fixes: #16202
2023-04-05 12:06:22 -04:00
Brad King b512c53d43 VS: Add support for setting WindowsTargetPlatformVersion to 10.0
VS 2019 and above support this value to select a SDK version
automatically.

Fixes: #21403
2023-04-05 12:06:22 -04:00
Brad King 2f3d945f83 VS: Add CMAKE_GENERATOR_PLATFORM field to control Windows SDK selection
Add a `version=` field to explicitly control the SDK version selection
without relying on `CMAKE_SYSTEM_VERSION`.

Fixes: #16713
2023-04-05 12:06:22 -04:00