Commit Graph

10596 Commits

Author SHA1 Message Date
Kyle Edwards 59b0ae6b24 Tests: Update tests to run in symlinked tree 2023-09-22 09:30:52 -04:00
Brad King 122ec98dcf Merge topic 'hip-nvidia'
6546aa2a2a ci: Add HIP job using CUDA on NVIDIA GPUs
18158bf81c HIP: Add support for NVIDIA GPUs
127b6fa06b HIP: Add CMAKE_HIP_PLATFORM variable to specify GPU platform
90e23f40ee Tests/HIP/WithDefs: Clean up test case
9ebdf3281f Tests/HIP/ArchitectureOff: Cover HIP_ARCHITECTURES initialization
cfec29196e ci: Add CUDA 11.8 to HIP 5.5 image
26470eb987 ci: Put HIP GPU platform in CMake_TEST_HIP

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8817
2023-09-22 09:19:52 -04:00
Brad King d2655c59dc Merge topic 'cuda-factor-out-lang'
b32ea7cff0 CUDA: Factor out helper to generate CUDA architecture flags
b3a1f17567 CUDA: Factor out helper to validate CMAKE_CUDA_ARCHITECTURES
8617c28221 CUDA: Factor out helper for detecting native CUDA architectures
0db0fe7958 CUDA: Factor out helper to compute all CUDA architectures
c16f1e2b93 CUDA: Factor out helper to find CUDA Toolkit for compiler
a6841a967b CUDA: Factor out helper to filter implicit link libraries
deff0e638d CUDA: Factor out helper to parse NVCC implicit compiler and linker flags
e1b2a5062f CUDA: Factor out some NVCC compiler information
...

Acked-by: Kitware Robot <kwrobot@kitware.com>
Reviewed-by: Raul Tambre <raul@tambre.ee>
Merge-request: !8816
2023-09-22 09:18:53 -04:00
Brad King 2dafd1f092 Merge topic 'macOS-system-framework-link'
3bdf95f942 macOS: GNU toolchain: ensure framework, marked as SYSTEM, can be linked

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8825
2023-09-22 09:07:11 -04:00
Brad King 18158bf81c HIP: Add support for NVIDIA GPUs
Add support for using the CUDA Toolkit's NVCC to compile HIP code.

Fixes: #25143
2023-09-21 15:34:37 -04:00
Brad King 127b6fa06b HIP: Add CMAKE_HIP_PLATFORM variable to specify GPU platform
For now, require the value to be `amd`, since that is the only
platform we currently support.
2023-09-21 15:34:37 -04:00
Brad King 90e23f40ee Tests/HIP/WithDefs: Clean up test case
Fix code copied from equivalent CUDA test.

Drop `CMAKE_HIP_ARCHITECTURES=OFF`.  That is already covered by
a dedicated `HIP.ArchitectureOff` test.
2023-09-21 15:34:37 -04:00
Brad King 9ebdf3281f Tests/HIP/ArchitectureOff: Cover HIP_ARCHITECTURES initialization
Verify that the property is initialized by `CMAKE_HIP_ARCHITECTURES`.
2023-09-21 15:34:37 -04:00
Brad King b3a1f17567 CUDA: Factor out helper to validate CMAKE_CUDA_ARCHITECTURES
Prepare to use it for other languages.
2023-09-21 15:34:28 -04:00
Marc Chevrier 3bdf95f942 macOS: GNU toolchain: ensure framework, marked as SYSTEM, can be linked
Fixes: #25263
2023-09-21 16:29:40 +02:00
Brad King f83790af0b Merge topic 'fileset-private-dep'
ec2ba29ac5 Ninja: Allow compilation before generation of dependencies' private sources

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8420
2023-09-21 09:39:56 -04:00
Martin Duffy ec2ba29ac5 Ninja: Allow compilation before generation of dependencies' private sources
This requires knowing when a generated header is public, which we can
model using file sets.  Add policy CMP0154 to treat generated sources
as private by default in targets with file sets.  Generated public
headers can be specified in public file sets.

Fixes: #24959
Issue: #15555
2023-09-20 10:25:24 -04:00
Brad King 787dde5569 Merge topic 'fortran-in-custom-targets'
d870a47e23 Tests/FortranModules: add a test for iface Fortran sources
e3d511fb9c Tests/FortranModules: also test INTERFACE targets with Fortran sources
978b68d3bb add_custom_target: Fix regression with Fortran sources
619aca80ae Tests/FortranModules: add a test case for #25223
45513c1a69 Tests/FortranModules: move issue 25112 fix from FortranOnly

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8814
2023-09-20 10:16:18 -04:00
Brad King 59f6892ab7 Merge topic 'FindPkgConfig-override'
e0d00b9218 FindPkgConfig: Allow to override variables when calling pkg_get_variable

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8808
2023-09-20 09:25:56 -04:00
Ben Boeckel d870a47e23 Tests/FortranModules: add a test for iface Fortran sources
This tests that a library that doesn't compile Fortran sources but
provides one via `INTERFACE` sources works as intended.
2023-09-20 09:18:01 -04:00
Ben Boeckel e3d511fb9c Tests/FortranModules: also test INTERFACE targets with Fortran sources 2023-09-20 09:16:59 -04:00
Ben Boeckel 978b68d3bb add_custom_target: Fix regression with Fortran sources
Since commit 74b1d6caf3 (cmComputeLinkInformation: compute link info for
module-using targets, 2023-09-05, v3.27.5~7^2) we accidentally try to
compute link information for custom targets if they have Fortran
sources.  For module dependencies, we only need to consider target types
that can compile.

Fixes: #25252
2023-09-20 09:14:58 -04:00
Brad King 9e641b73c1 Merge topic 'test-ExportImport'
be5603d031 Tests: Fix ExportImport test with read-only source tree

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !8813
2023-09-19 09:10:44 -04:00
Corentin Noël e0d00b9218 FindPkgConfig: Allow to override variables when calling pkg_get_variable
This is specifically useful when building applications within containers as we
sometimes need to redefine the prefix used in a variable.
2023-09-19 09:08:48 +02:00
Ben Boeckel 619aca80ae Tests/FortranModules: add a test case for #25223 2023-09-18 19:58:49 -04:00
Ben Boeckel 45513c1a69 Tests/FortranModules: move issue 25112 fix from FortranOnly
It involves modules, so it belongs in the `FortranModules` test set.
2023-09-18 19:41:47 -04:00
Brad King be5603d031 Tests: Fix ExportImport test with read-only source tree 2023-09-18 18:11:32 -04:00
scivision ca77b745e9 cmake: Clarify error if -P script does not exist 2023-09-18 11:51:31 -04:00
Brad King 0a81110b84 find_(library|file|path): Drop PATH-derived search prefixes
Since commit ffc06c1239 (Teach find_(library|file|path) to get prefixes
from PATH, 2015-02-18, v3.3.0-rc1~430^2) we search in `<prefix>/include`
and `<prefix>/lib` directories for prefixes with `bin` directories in
the `PATH` environment variable.  The motivation was to search the
installation prefixes of MSYS and MinGW development environments
automatically.

This behavior can search undesired prefixes that happen to be in the
`PATH` for unrelated reasons.  It was reverted for non-Windows hosts
within a year by commit b30b32a493 (Drop find_(library|file|path)
prefixes from PATH on non-Windows, 2016-05-09, v3.6.0-rc1~82^2) but was
kept on Windows hosts to support its motivating use case.  However,
similar problems have since been observed on Windows.  For example,
commit 955d6245c1 (MSVC: Revert "Teach find_library to consider the
'libfoo.a' naming convention", 2022-11-28, v3.25.1~6^2) was primarily
due to undesired discovery of libraries in `PATH`-derived prefixes.

Since commit 5e5132e1b1 (MinGW: Search for packages in standard MSYSTEM
environment prefixes, 2023-09-11) we search MSYS and MinGW environments'
prefixes explicitly, so `PATH`-derived prefixes are no longer needed for
the original motivating use case.

Fixes: #24216
2023-09-14 15:13:50 -04:00
Brad King 5b590882fa Merge topic 'cxxmodules-non-compiled-source'
24a9b00f83 Merge branch 'cxxmodules-non-compiled-source-release' into cxxmodules-non-compiled-source
458e3974a8 cxxmodules: detect and message about non-compiled sources

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !8773
2023-09-14 13:01:21 -04:00
Brad King 01f97f93c8 Merge topic 'cxxmodules-non-compiled-source' into release-3.27
458e3974a8 cxxmodules: detect and message about non-compiled sources

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !8773
2023-09-14 13:01:20 -04:00
Brad King c7af11b4d6 Merge topic 'autogen-exe-per-config'
e454314daa NinjaMultiConfig: Update tests for the new dependency change
fddd0f0443 Autogen: AUTO*_EXECUTABLE: add support for per-config values
10b09647f2 RunCMake: Add RunCMake_TEST_EXPECT_RESULT
cac2e029f0 cmQtAutoGenInitializer: Define CrossConfig variable
d4889361f0 cmQtAutoGenInitializer: Reduce string copies
0bf49d5579 cmQtAutoGenInitializer: Remove no-op call
94c4c1cb28 cmQtAutoGenInitializer: Improve Const-Correctness
6d54c36859 Autogen: Fix typo
...

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !8564
2023-09-14 13:00:13 -04:00
Brad King 6576ca15f6 Merge topic 'mingw-search-prefixes'
5e5132e1b1 MinGW: Search for packages in standard MSYSTEM environment prefixes

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8796
2023-09-14 12:50:41 -04:00
Orkun Tokdemir e454314daa NinjaMultiConfig: Update tests for the new dependency change 2023-09-13 18:23:56 +02:00
Orkun Tokdemir fddd0f0443 Autogen: AUTO*_EXECUTABLE: add support for per-config values
* Per-config values were added to `AUTO*_EXECUTABLE`.
* Dependency order was refactored for `cmake_autogen` and `cmake_autorcc` to
  avoid unnecessary rebuilds.
* A new parameter was added for `cmake_autogen` and `cmake_autorcc` to specify the config name of the `auto*_executable` to be used.
* The timestamp target was split into three targets for per-config to avoid redundant `mocs_compilation` builds.
* Per-config `DEP_FILE_RULE_NAME` values were added to `AutogenInfo.json` for `CMAKE_CROSS_CONFIG` usage.
* Some functions were refactored to avoid code duplication.

Fixes: #20074
2023-09-13 18:23:56 +02:00
Orkun Tokdemir 10b09647f2 RunCMake: Add RunCMake_TEST_EXPECT_RESULT 2023-09-13 15:59:57 +02:00
Brad King a8c50d6faf Merge topic 'orkun_21677_16_06_2023'
09b650d000 Autogen: Move QtAutoMocDeps tests to RunCMake/Autogen
ebc9e448b3 Autogen: Add depfile support for Makefiles
e5358b9d8d RunCMake: Add RunCMake_TEST_NOT_EXPECT variables

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !8570
2023-09-13 08:42:55 -04:00
Brad King 5e5132e1b1 MinGW: Search for packages in standard MSYSTEM environment prefixes
MSYS2 and similar MinGW/MSYS distributions define development
environments with a `MSYSTEM` environment variable.  Each such
environment has a documented installation prefix for its packages,
often provided by a `MSYSTEM_PREFIX` environment variable.
Since commit 84a25fc263 (cmake_host_system_information: Add
MSYSTEM_PREFIX query, 2023-09-08) we can look up this prefix.

Add `$MSYSTEM_PREFIX/local` and `$MSYSTEM_PREFIX` to our system search
prefixes when targeting MinGW under `MSYSTEM` environments.  This is
their equivalent to `/usr/local` and `/usr`, which we search by default
on UNIX systems.

Issue: #24216
2023-09-13 08:35:59 -04:00
Ben Boeckel 24a9b00f83 Merge branch 'cxxmodules-non-compiled-source-release' into cxxmodules-non-compiled-source
* cxxmodules-non-compiled-source-release:
  cxxmodules: detect and message about non-compiled sources
2023-09-12 14:47:20 -04:00
Ben Boeckel 458e3974a8 cxxmodules: detect and message about non-compiled sources
Previously an internal error was raised which ended up causing an
internal exception to be thrown. This is a typo situation that should
fall into an explicit error.

Fixes: #25207
2023-09-12 14:46:36 -04:00
Brad King 976659c846 Merge topic 'presets-schema'
f1a7179520 presets: Add $schema property to JSON schema
f83771dfce presets: Add missing spaces in JSON schema

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8777
2023-09-12 09:08:17 -04:00
Brad King 93d813d87c Merge topic 'vs-cuda-object-libs'
6ebff6ebf8 VS: Avoid unnecessary CUDA device linking for OBJECT libraries

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8794
2023-09-12 09:06:15 -04:00
ChenMoFeiJin f1a7179520 presets: Add $schema property to JSON schema
Many modern code editors have support for JSON Schema.  When you specify
the `$schema` property in a JSON file, the editor can provide features
like auto-completion, error checking, etc., which can improve your
efficiency when writing and modifying the `CMakePresets.json` file.
2023-09-12 18:18:37 +08:00
Kyle Edwards 34d46acfc8 Tests/RunCMake: Set $ENV{PWD} before each test
This will more accurately emulate how a shell would run CMake.

Also, don't set $ENV{PWD} in Tests/RunCMake/SymlinkTrees, since RunCMake is
now already doing this.
2023-09-11 16:58:14 -04:00
Robert Maynard 6ebff6ebf8 VS: Avoid unnecessary CUDA device linking for OBJECT libraries
Without `CudaLink` fields, MSBuild tries to perform a device link step
for object libraries with CUDA_SEPARABLE_COMPILATION on them even when
not needed.  This commonly was encountered when generating PTX or
OPTIX-IR output.
2023-09-11 16:49:35 -04:00
Orkun Tokdemir 09b650d000 Autogen: Move QtAutoMocDeps tests to RunCMake/Autogen 2023-09-11 14:51:58 +02:00
Orkun Tokdemir e5358b9d8d RunCMake: Add RunCMake_TEST_NOT_EXPECT variables 2023-09-11 14:51:58 +02:00
Brad King 84a25fc263 cmake_host_system_information: Add MSYSTEM_PREFIX query
Add a query on Windows hosts for the installation prefix of a
MSYS or MinGW development environment.

Issue: #24216
2023-09-10 07:33:47 -04:00
Brad King be657bf1e0 Tests: Migrate CTestTest{NoBuild,NoExe} to RunCMake.ctest_{build,test}
Avoid duplicating infrastructure provided by the latter.
2023-09-07 11:46:53 -04:00
Brad King 1c5e4b60b1 Merge topic 'FindPkgConfig-system-cflags'
252c66c697 FindPkgConfig: Tolerate PKG_CONFIG_SYSTEM_INCLUDE_PATH in environment
4507883135 Tests: Rename RunCMake.FindPkgConfig LIBRARY_PATH case to SYSTEM_PATH

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8768
2023-09-07 07:52:06 -04:00
Cristian Le 252c66c697 FindPkgConfig: Tolerate PKG_CONFIG_SYSTEM_INCLUDE_PATH in environment
Tell `pkg-config --cflags` not to filter out `-I` flags for entries of
`PKG_CONFIG_SYSTEM_INCLUDE_PATH` (and `CPATH` for `pkgconf`).

Fixes: #25228
2023-09-06 12:17:39 -04:00
Cristian Le 4507883135 Tests: Rename RunCMake.FindPkgConfig LIBRARY_PATH case to SYSTEM_PATH
Prepare to cover CFLAGS too.
2023-09-06 12:12:53 -04:00
Brad King 4771544386 Merge topic 'replace-cmsysprocess-with-cmuvprocesschain'
a5f98df778 Source: Fix mysterious new IWYU warnings
0712e3cfea cmCTestCoverageHandler: Replace cmsysProcess with cmUVProcessChain
96b3dd329e cmCTestLaunchReporter: Replace cmsysProcess with cmUVProcessChain
b15ad7ebb6 cmCTest: Replace cmsysProcess with cmUVProcessChain
50a6e78a82 cmSystemTools::RunSingleCommand(): Replace cmsysProcess with cmUVProcessChain
49a37d5a97 cmCTestScriptHandler: Replace cmsysProcess with cmUVProcessChain
bc702aa97e cmcmd: Replace cmsysProcess with cmUVProcessChain
ec124582ac cmProcessTools::RunProcess(): Replace cmsysProcess with cmUVProcessChain
...

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !8665
2023-09-06 11:22:28 -04:00
Brad King ce4df15c41 Merge topic 'xcode-no-legacy-buildsystem'
b78a14e204 Xcode: reject legacy buildsystem for Xcode 14

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8762
2023-09-06 11:12:57 -04:00
Kyle Edwards e1fe5bb475 Tests: Fix FileAPI interface_exe test 2023-09-01 14:02:44 -04:00