Commit Graph

60669 Commits

Author SHA1 Message Date
Brad King
e4cdd4206c Merge topic 'test-try_compile-matching'
7db4df2e8c Tests: Match configure log try_compile directories more precisely

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !8114
2023-01-25 11:16:39 -05:00
Brad King
1d6d10cbf6 Merge topic 'isdir_empty'
a1dc38a567 Help: Document behavior of if(EXISTS,IS_DIRECTORY) for empty paths

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8109
2023-01-25 11:15:46 -05:00
Brad King
058f7189e1 Merge topic 'doc-rpath-features'
434be1256e Help: improve docs for INSTALL_NAME_DIR
f784c21567 Help: mention CMAKE_SKIP_RPATH in the RPATH docs
66ad61ba79 Help: improve documentation for BUILD_RPATH
25e7791dc1 Help: improve docs for INSTALL_RPATH
099292f123 Help: improve docs for rpath-related variables

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8073
2023-01-25 11:14:42 -05:00
Brad King
ef0b05e497 Merge topic 'watcom-refactor-std-includes'
10623a51a0 OpenWatcom: Refactor population of standard include directories

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8113
2023-01-25 11:13:45 -05:00
Brad King
3c8a65d3aa Merge topic 'swiftmodule-dependency-tracking'
1730d208b5 Add incremental Swift static lib build test
bf3a8ef6d5 Ninja: Swift: Add dependency edge to swiftmodule file
d0b469b7e0 Ninja: NFC: refactor swift module name computations

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8084
2023-01-25 11:11:37 -05:00
Kitware Robot
7a989a581c CMake Nightly Date Stamp 2023-01-25 00:01:15 -05:00
Brad King
7db4df2e8c Tests: Match configure log try_compile directories more precisely
Do not accept a double-quote in the `try_compile` work directory to
ensure we do not match more than the field value.
2023-01-24 15:25:10 -05:00
Jiri Malak
10623a51a0 OpenWatcom: Refactor population of standard include directories
Add setup of system include directories to language related macro to remove extra lines for C and CXX.
System include directories are always same for both languages (they are defined per platform).
2023-01-24 20:44:11 +01:00
scivision
a1dc38a567 Help: Document behavior of if(EXISTS,IS_DIRECTORY) for empty paths
Document and add explicit tests for empty string input:
`if(EXISTS "")` and `if(IS_DIRECTORY "")` are always false.
This avoids need for users to do extra checks due to
CMake non-short-circuit logic as below:

    if("${p}")
      if(EXISTS "${p}")
2023-01-24 14:13:52 -05:00
Brad King
62483b9b99 Merge topic 'gen-pkg-example'
bfa61ccf64 Help: Modernize PackageConfigHelpers example

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8111
2023-01-24 09:20:49 -05:00
Brad King
7c241bccc3 Merge topic 'wrap-ninja-multi'
d59ab71779 Help: Wrap long examples in Ninja Multi-Config doc

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8103
2023-01-24 09:20:14 -05:00
Brad King
8540fe31d1 Merge branch 'release-3.25' 2023-01-24 09:19:16 -05:00
Brad King
caf5aea63f Merge topic 'FindPython-CMP0007-NEW'
486b3c0850 FindPython: Policy CMP0007 must be set to NEW

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8104
2023-01-24 09:19:16 -05:00
Brad King
4db877ce9a Merge topic 'FindPython-CMP0007-NEW' into release-3.25
486b3c0850 FindPython: Policy CMP0007 must be set to NEW

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8104
2023-01-24 09:19:14 -05:00
Brad King
ba5d255b1c Merge branch 'release-3.25' 2023-01-24 09:18:20 -05:00
Brad King
07206384ec Merge topic 'cxxmodules-ninja-1.11'
8d4e510a44 Merge branch 'backport-cxxmodules-ninja-1.11' into cxxmodules-ninja-1.11
7abddcab08 Ninja: require Ninja 1.11 for C++ module support
0512428ad9 Ninja: require Ninja 1.11 for C++ module support

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8099
2023-01-24 09:18:20 -05:00
Brad King
3563d461dd Merge topic 'cxxmodules-ninja-1.11' into release-3.25
0512428ad9 Ninja: require Ninja 1.11 for C++ module support

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8099
2023-01-24 09:18:19 -05:00
Kitware Robot
ec381070fa CMake Nightly Date Stamp 2023-01-24 00:01:13 -05:00
FeRD (Frank Dana)
bfa61ccf64 Help: Modernize PackageConfigHelpers example
The example shown in the module documentation for
CMakePackageConfigHelpers was showing its age, by:

1. Hardcoding directory prefixes (`etc/`, `lib/`, etc.) instead of
   using GNUInstallDirs
2. Handwaving `set()` commands (incorrectly!) as:
     `set(VAR dir/ ... CACHE )`
   which should, at the very least, be:
     `set(VAR dir/ CACHE ... )`
3. Installing CMake configuration files to `lib/Foo/cmake/`, when
   current practice favors `${CMAKE_INSTALL_LIBDIR}/cmake/Foo/`

This updated example addresses all of those issues.
2023-01-23 18:02:31 -05:00
Brad King
8d4e510a44 Merge branch 'backport-cxxmodules-ninja-1.11' into cxxmodules-ninja-1.11 2023-01-23 12:23:18 -05:00
Ben Boeckel
7abddcab08 Ninja: require Ninja 1.11 for C++ module support
See: https://gitlab.kitware.com/cmake/cmake/-/issues/18355#note_1296721
See: https://github.com/ninja-build/ninja/pull/1937
2023-01-23 12:21:05 -05:00
Ben Boeckel
0512428ad9 Ninja: require Ninja 1.11 for C++ module support
See: https://gitlab.kitware.com/cmake/cmake/-/issues/18355#note_1296721
See: https://github.com/ninja-build/ninja/pull/1937
2023-01-23 10:54:53 -05:00
Brad King
f9f34eb111 Merge topic 'improve_supported_language_docs'
b787be2714 Help: Update supported languages in project and enable_language

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8101
2023-01-23 10:41:41 -05:00
Brad King
709bc0368f Merge topic 'genex-CONFIG-validate-all'
910ada1a88 Genex: $<CONFIG:> syntax of all entries checked
42e417ad12 GeneratorExpression Tests: Remove duplicate test entry

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8082
2023-01-23 10:40:53 -05:00
Brad King
c9fc146a93 Merge topic 'find_cudatoolkit_add_nvrtc_static'
2a94c762ed FindCUDAToolkit: Add support for CUDA::nvrtc_static

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8100
2023-01-23 10:40:05 -05:00
Brad King
99bd5eb062 Merge topic 'vs-BuildInParallel'
33c15ae2b9 VS: Build custom commands concurrently when possible

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8093
2023-01-23 10:39:09 -05:00
Ivan Zinkevich
33c15ae2b9 VS: Build custom commands concurrently when possible
Enable the `BuildInParallel` setting in VS project files when supported.

Fixes: #18405
2023-01-23 10:38:07 -05:00
Brad King
f45ef98a7e Merge branch 'release-3.25' 2023-01-23 10:35:52 -05:00
Brad King
f07fdb250c Merge topic 'FindOpenSP-pkg-config-hints'
3b1c19f00a FindOpenSP: Use pkg-config only as hints for main code path

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8097
2023-01-23 10:35:52 -05:00
Brad King
b179982001 Merge topic 'FindOpenSP-pkg-config-hints' into release-3.25
3b1c19f00a FindOpenSP: Use pkg-config only as hints for main code path

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8097
2023-01-23 10:35:50 -05:00
Brad King
f4d604f77f Merge topic 'try_compile-verbose'
faa950a155 try_compile: Run native build tool with verbose output

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8095
2023-01-23 10:34:37 -05:00
Kitware Robot
adac7f3ca4 CMake Nightly Date Stamp 2023-01-23 00:01:17 -05:00
Kitware Robot
6d57bbdc7b CMake Nightly Date Stamp 2023-01-22 00:01:08 -05:00
Evan Wilde
1730d208b5 Add incremental Swift static lib build test
Ensure that we're actually trying to rebuild libB when the public
interface for libA changes. Without handling the swiftmodule dependency
edge correctly, we would only get a linker error because libA didn't
have the symbol that libB depended on. With the fix, we get a proper
compiler error because ninja knows to rebuild the intermediate libB
when the public interface of libA changes. This is more actionable.
2023-01-21 10:37:09 -08:00
Evan Wilde
bf3a8ef6d5 Ninja: Swift: Add dependency edge to swiftmodule file
Swiftmodules act like headers for Swift, but are generated by the
compiler while building the module. Unlike headerfiles in a pure C/C++
world, where the compiler generates the appropriate depfile. We don't
have We're
already adding the swiftmodule as an output from swift-linked targets,
but aren't using that on inputs.

This dependency edge is most important for static libraries in
incremental builds. Suppose we have two static libraries, A, and B, and
an executable E. B "links" against A, and E links against B. In a C/C++
environment, the library link dependency edge will run from E to both A
and B, but there won't be an edge from B to A. If A is changed, the only
way this should affect B is if the public interface changes, in which
case, the headers will also change. The dep file contains the header
link, so Ninja will rebuild B when appropriate. With Swift in an
incremental build, B sees the order-dependency on A, but A already
exists. If A is changed in a way that changes the public interface, the
swiftmodule will change, but since we don't track it, we don't rebuild
B, resulting in the final executable to fail to link.
2023-01-21 10:37:09 -08:00
Evan Wilde
d0b469b7e0 Ninja: NFC: refactor swift module name computations
In order to handle determining the swiftmodule name to add to the ninja
dependency graph, we'll need to be able to compute the swiftmodule name
for the dependency target, not just the current target. This patch
refactors the computation of the module name out of inaccessible lambdas
and into static functions that can compute the swiftmodule name from the
generator and the target.
2023-01-21 10:37:09 -08:00
Marc Chevrier
486b3c0850 FindPython: Policy CMP0007 must be set to NEW
Fixes: #24306
2023-01-21 15:08:21 +01:00
Kitware Robot
09ce97c40d CMake Nightly Date Stamp 2023-01-21 00:01:11 -05:00
FeRD (Frank Dana)
d59ab71779 Help: Wrap long examples in Ninja Multi-Config doc 2023-01-20 16:33:05 -05:00
Brad King
35c220e653 Merge topic 'ci-docker-nvidia'
ebd81d0e12 ci: rebase nvidia-derived docker images on tags we control

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robertjmaynard@gmail.com>
Merge-request: !8102
2023-01-20 15:05:34 -05:00
Robert Maynard
b787be2714 Help: Update supported languages in project and enable_language 2023-01-20 13:55:38 -05:00
Robert Maynard
910ada1a88 Genex: $<CONFIG:> syntax of all entries checked
Fixes #24327
2023-01-20 13:30:25 -05:00
Brad King
ebd81d0e12 ci: rebase nvidia-derived docker images on tags we control
According to NVIDIA's container image support policy [1], they will
remove tags for older images over time.  In order to preserve our
ability to rebuild CI images based on them in the future, base them on
tags we control.

[1] https://gitlab.com/nvidia/container-images/cuda/blob/85fbd45b92/doc/support-policy.md
2023-01-20 13:00:19 -05:00
Robert Maynard
2a94c762ed FindCUDAToolkit: Add support for CUDA::nvrtc_static 2023-01-20 12:05:43 -05:00
Alexander Neundorf
434be1256e Help: improve docs for INSTALL_NAME_DIR
INSTALL_NAME_DIR now mentions BUILD_WITH_INSTALL_NAME_DIR.
The INSTALL_NAME_DIR, INSTALL_RPATH and $<TARGET_RUNTIME_DLLS:tgt>
documentation now mention the other two platforms respectively, to
make it easier for developers who are not familiar with all three platforms,
2023-01-20 11:28:55 -05:00
Alexander Neundorf
f784c21567 Help: mention CMAKE_SKIP_RPATH in the RPATH docs
CMAKE_SKIP_RPATH is now mentioned in the docs for the BUILD_RPATH
and INSTALL_RPATH target properties.
2023-01-20 11:28:53 -05:00
Alexander Neundorf
66ad61ba79 Help: improve documentation for BUILD_RPATH
Now all properties related to BUILD_RPATH are linked from the
documentation for BUILD_RPATH.
SKIP_BUILD_RPATH now also refers to BUILD_RPATH.
2023-01-20 11:28:06 -05:00
Kefu Chai
3b1c19f00a FindOpenSP: Use pkg-config only as hints for main code path
before this change, pkg_check_modules(.. IMPORTED_TARGET GLOBAL)
is used for creating an imported target from which another imported
interface library named OpenSP::OpenSP is created. but pkg-config
does not account for all of CMake's other search behavior controls,
such as CMAKE_FIND_ROOT_PATH. neither does it export the full path
with OpenSP_LIBRARY.

after this change, the paths found by pkg-config are only used
as hints for the find_*() commands. and some cleanup are included:

* be QUIET when calling find_package(PkgConfig ..) and
  pkg_check_modules(..) as they are distracting from user's point of
  view. what matters is the output of find_package_handle_standard_args()
* parse the version and check for the existance of symbol as long as
  header path is found. because they only use header files.
* define OpenSP_LIBRARY as long as it exists. this just follows
  the convention. as OpenSP_FOUND implies a valid OpenSP_LIBRARY.
* wrap and intent multi-line command calls for better readability
* check OpenSP_FOUND before adding OpenSP::OpenSP, it's more
  idiomatic.

Fixes: #24313
Signed-off-by: Kefu Chai <tchaikov@gmail.com>
2023-01-20 10:14:39 -05:00
Brad King
06c7e88b91 Merge topic 'configure-log'
317aac14ef cmake: Stop pointing users at logs on configure errors
eae1398d09 cmake --system-information: Stop dumping CMake{Output,Error}.log

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8094
2023-01-20 09:37:08 -05:00
Brad King
1d52007564 Merge topic 'ninja-swift-exported-executables'
4165eb3d0b Ninja: Emit swiftmodule from executable with exports

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8048
2023-01-20 09:36:00 -05:00