The Fedora `rocm-hip-devel` package organizes the `hip-lang` cmake package
differently from the official ROCm base images. Cover it separately.
Issue: #25050
The Debian package for `hipcc` organizes the `hip-lang` cmake package
differently from the official ROCm base images. Cover it separately.
Issue: #24562
`include-what-you-use` diagnostics, in practice, are specific to
the environment's compiler and standard library. Update includes
to satisfy IWYU for our CI job under Debian 12.
7b205b7078 ci: Build macOS 10.13+ package as C++17
7f6cebb1cd ci: Split macOS 10.10+ and 10.13+ package language standard selection
aab16d4bfc ci: Drop unnecessary -stdlib flag from macOS package
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8567
Take advantage of the standard library implementations of those C++17
features available when targeting macOS 10.13. Note that the standard
library `std::filesystem` implementation is not available until 10.15.
The job frequently fails during `ctest_build`, and the log shows
sccache: Compiler killed by signal 9
It does not compile much anyway, so disable sccache pending further
investigation.
The ISPC 1.20.0 release page on GitHub replaced existing macOS release
binaries with new ones. Update the hashes added by commit 44d13f50a2
(ci: Update to ISPC 1.20.0, 2023-05-09, v3.27.0-rc1~110^2).
Revert commit f24c6ae5b8 (ci: Add nlohmann-json to Fedora base image,
2023-05-17). The previously-upcoming dependency on nlohmann-json has
been replaced with our existing dependency on jsoncpp.
The `ccc-analyzer` compiler wrapper preprocesses differently
for clang-analyzer than for normal compilation. In particular,
the `__clang_analyzer__` preprocessor definition is added.
This does not interact well with `sccache` because it indexes based on
the compiler's normal preprocessing but stores results from the entire
`ccc-analyzer` invocation.
80181da866 Tests: Add option to control timeout of BootstrapTest
21df34b255 Tests: Modernize name of option to control existence of BootstrapTest
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8491
d38779df2a ci: Enable RunCMake.CXXModules collation cases in clang jobs
69e4525241 Tests/CXXModules: add example for private modules between targets
18f87c87f8 cmCxxModuleMapper: track whether modules are private or not
56f7d6f827 cmCxxModuleMapper: add a structure to represent BMI locations
8207a3a266 cmDyndepCollation: add a query for visibility of an object's modules
e8efcbec8c iwyu: ignore `std::remove_reference` requirements
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8476
Since commit 069a32b03c (Tests/RunCMake/CXXModules: split out
collation-requiring tests, 2022-11-28, v3.26.0-rc1~243^2~4)
these cases require explicit configuration.
VS 17.6 now implements `ScanSourceforModuleDependencies` using the same
`cl /scanDependencies` scanner that our Ninja generator uses. It can
distinguish module internal partitions from module interface units based
on their content. Switch from `CompileAsCppModule` to `CompileAsCpp`
for `CXX_MODULES` sources so that MSBuild can scan and classify them.
Since commit 703f39354e (ci: add clang-tidy development headers to
Fedora base image, 2022-08-31, v3.25.0-rc1~215^2), Fedora has added the
`clang-tools-extra-devel` package.
In Fedora's HDF5 packages for OpenMPI and MPICH, the `h5pfc` compiler
wrappers for Fortran use the wrong search path for their Fortran
modules. Patch them locally in CI jobs until it is fixed in Fedora
upstream.
3fe8e33f27 Clang: Record Clang 16.0 flags for our experimental C++ modules support
Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: scivision <michael@scivision.dev>
Acked-by: Alex <leha-bot@yandex.ru>
Merge-request: !8285
These artifacts need to be manually signed before distribution.
Move them to a dedicated `unsigned/` directory to avoid accidental
distribution without signing.
In commit 4c7c66dcf5 (gitlab-ci: Add jobs to make Windows x86_64 and
i386 packages, 2022-05-19, v3.24.0-rc1~112^2) we used a separate Windows
packaging job in nightly packaging pipelines. It did not run in release
pipelines, where we need to run the final packaging step manually with
signing. Simplify nightly packaging pipelines by running `cpack` at the
end of the build job as we do for other platforms.
For release packaging pipelines, create an archive of the files needed
to build a package, and present this as the built "package" on Windows.
P1689 support has been merged in Clang trunk and Clang 16 branch, so we
are now able to use the finalized clang-scan-deps command line options.
See also llvm-project's clang/test/ClangScanDeps/P1689.cppm [1] for the
samples of clang-scan-deps usages.
[1] https://github.com/llvm/llvm-project/blob/6d859df46e/clang/test/ClangScanDeps/P1689.cppm
Signed-off-by: Kefu Chai <kefu.chai@scylladb.com>
3350c17451 ci: Enable file(DOWNLOAD) TLS_VERIFY test case in CI jobs
17b47da3d8 Tests: Add test for file(DOWNLOAD) with TLS_VERIFY
Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8194
6789af36bf Help: Fix broken links found by `linkcheck`
8f4bd3bf7e ci: Check for broken links when build HTML manual
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8177
Apply the approach from commit 354fdf2116 (ci: Reduce intermediate
docker layers and final image size, 2023-02-01) to more stages.
Also:
* Use cache (prefetch metadata and packages) to reduce network I/O
and speedup image build.
* Use `tmpfs` to drop logs produced by the package manager.
Instead of requiring setting up a mock CI environment with the official
image locally. While such docs would be handy anyways, requiring that
entire setup to get a small piece of information from a build is
unnecessary.
bf3425c3d2 ci: add a comment to run IWYU in verbose mode
25f0b4f397 CMake: add an option to run IWYU in verbose mode
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8130
- With this change we can use e.g. ImageMagick::Magick++ directly
in targt_link_libraries.
- This change also adds CFLAGS which was missing before.
- Also adds example on how to use the targets.
These patches now support the `-MF` output, so remove the `none` support
added just for the old patchset which did not use it.
Also update the flag name to `-fmodule-output=`.
Due to the new Clang module mapper flag, use a new experimental support
UUID as well.
Some package managers provide a minimal set of static libraries,
which historically has caused problems for FindCUDAToolkit.
Resolve this issue by creating a CUDA image with only the minimal
set of static libraries.
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
The pre-build step will allow actions to be executed before the
CMake build but after Ninja and sccache have been downloaded, so
they can be used in the pre-build step. The env step is meant for
setting up environment variables anyway, rather than performing
actions.
The post-build step will allow extra artifacts to be computed after
the build is complete.
The job added by commit 16a5c36795 (gitlab-ci: add nightly job testing
NVHPC with Ninja on Linux, 2022-11-21) started failing after CI hosts
were updated from NVIDIA driver version 520 to version 525. Somehow
this causes the NVHPC multi-cuda `nvcc` wrapper to select CUDA 10.2
instead of 11.7 as with older driver versions.
As a workaround, add the preferred version of `nvcc` to the PATH.
Issue: #24225
We already have `t:debian10-{makefiles,ninja}-clang` jobs covering old
versions of Clang with Makefile and Ninja generators. Complement them
with new `t:fedora37-{makefiles,ninja}-clang` jobs covering recent
versions of Clang.
Fedora 37 now packages LLVMFlang, so enable Fortran tests with that
compiler too.
Issue: #22387
09c1b1db07 gitlab-ci: Add windows-arm64 native jobs for Ninja and VS
61ebd7d083 ci: Download cmake on windows-arm64
93a5d89b42 ci: Teach cmake download script on Windows to branch on host architecture
1ccffcf0ea ci: Factor out helper to load python into environment on Windows
781303c0e2 ci: Factor out helper to load qt into environment on Windows
b0d16c7f74 Tests: Fix CTest.UpdateGIT under repo-local defaultBranch config
Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Ben Boeckel <ben.boeckel@kitware.com>
Merge-request: !7905
0e9782b336 msvc: bless MSVC 19.34 support for C++ modules as experimental
Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !7745
46b2849550 ci: Update LLVM/Clang to 15.0 in nightly CI jobs on Windows
3eb94e4d51 ci: Simplify LLVM/Clang CI job specs on Windows
8ba5835c8d ci: Factor out helper to load clang into environment on Windows
bf2e4a2e85 ci: Factor out helper to load ninja into environment on Windows
93ff726114 Tests: Fix TryCompile bad source case for clang-cl 15 on Windows
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !7897
Revert commit 0ac9ec47f6 (ci: add clang-tidy to Debian x86_64 base
image, 2022-09-20). Our clang-tidy job runs under Fedora, and we need
the plugin to compile there anyway, so lints like IWYU will best be done
in the Fedora image.
Issue: #23912
Load env scripts with `.` sourcing instead of `Invoke-Expression`.
This allows powershell variables to persist, much like bash.
Leave helper script loading unchanged, as those scripts may set
powershell variables that we do not want to persist.
Since commit b87645b6a5 (gitlab-ci: Update non-packaging Windows builds
to MSVC 14.33 toolset, 2022-08-18), the version of MSVC used in CI test
jobs supports the `cl -scanDependencies` functionality we need to
support C++ modules. Enable the corresponding tests.
b55152e7ad gitlab-ci: add jobs to test CMake with external dependencies on Linux
6a05d107ca ci: add CMake external build dependencies to Debian and Fedora base images
d3c1b8a491 jsoncpp: Require version 1.6.0 when using system-provided library
68d3ca7008 Tests: Fix RunCMake.FileAPI test with jsoncpp < 1.7.5
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !7592
4f95e6b284 ci: test BMI exporting and installation with GCC in CI
c49d5f137b RunCMake/CXXModules: add a "deep-chain" test
297e0f4dce cmCxxModuleMapper: support MSVC module map format
b3c2880cb2 cmCxxModuleMapper: track transitive modules for MSVC
a43713d615 CTestCustom: ignore `cm::optional` uninitialized memory false positive
b90de0b492 RunCMake/CXXModules: support MSVC extensions
a84c186a7d cmScanDepFormat: support the MSVC 17.3 toolchain temporarily
d7f5064ff7 cmScanDepFormat: support P1689R5
...
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !7481
Since commit 06c6e76a12 (ci: update to WiX 3.14.0.6526, 2022-06-10,
v3.24.0-rc1~4^2~2) we download the WiX binaries from `wixtoolset.org`
instead of a `github.com` CDN. Avoid hitting their organization site
on every CI job by hosting the binaries at `cmake.org`.
5db79b5cd3 gitlab-ci: update to an image with git installed
3e1ace7f46 ci: add git to the CI image
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !7398
07bc3b07ec gitlab-ci: test C++ modules using GCC
1b2270aa4e ci: add a Docker image to test out C++ modules with GCC
8c5a53096a Tests/RunCMake/CXXModules: add module-using examples
4151547e2f cmGlobalNinjaGenerator: use `cmModuleMapper` implementation
b43bdaff3c cmCxxModuleMapper: implement support for GCC's module map format
02d0f0e752 cmCxxModuleMapper: add source to handle module mapper contents
a046a45aad cmGlobalNinjaGenerator: add a TODO for header units
386465bf83 cmTarget: add support for C++ module fileset types
...
Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !7369
In commit 7a21173b0e (gitlab-ci: Add job to build Windows arm64
binaries, 2022-06-13, v3.24.0-rc1~4^2~1) we built the Qt binaries using
the MSVC 14.32 toolset targeting arm64. However, the `cmake-gui` built
with them does not start, perhaps due to a bug in MSVC's ARM64 support.
Run the `Utilities/Release/win/qtbase-6.3.0-win-msvc.cmake` script for
`i386` and `x86_64`. Run it for `arm64` with the `clang-cl` argument.
Issue: #21902
Base it on the approach from commit 4c7c66dcf5 (gitlab-ci: Add jobs to
make Windows x86_64 and i386 packages, 2022-05-19). Leave out the
packaging and upload steps for now because they are only for the nightly
binaries, and will need a new release of CPack to pass the `arm64`
architecture to WiX.
Issue: #21902
Revert commit 5ece12b7e4 (gitlab-ci: add ISPC to the Fedora CI image,
2020-08-18, v3.19.0-rc1~244^2). Later we will download ISPC in specific
jobs.
Update a `RunCMake.NinjaMultiConfig` test expectation to account for
a change to the Qt deployed on Fedora 36.
Apply the approach from commit 747940157f (gitlab-ci: init environment
with per-CMAKE_CONFIGURATION shell scripts, 2021-03-12,
v3.21.0-rc1~480^2~4) to macOS and Windows too.
Run CPack in a separate job for nightly binaries, and not at all for
release binaries. Unlike macOS disk images (.dmg), we cannot sign the
binaries inside Windows installers (.msi) after-the-fact. Instead,
produce enough artifacts from the build job to sign and package release
binaries manually.
Port build settings from `Utilities/Release/win/x86/Dockerfile` and its
helper scripts.
Since commit 313ea361b0 (CMake: Use FindPython instead of
FindPythonInterp to build CMake itself, 2022-04-21), CI jobs on some
Windows hosts have been finding Python via the Windows Registry.
Explicitly disable the registry search so that the CI jobs find the
Python that we download and put in the PATH inside the job.
In commit f9526f39a1 (ci: Add bzr and p4 to Debian and Fedora base
images, 2022-02-21) we checked the SHA-256 hash of the Perforce binary.
However, content at the download URL has changed in just the last few
weeks, so we cannot consider it stable.
1f601753d7 gitlab-ci: add jobs testing cuda11.6 with nvcc and clang 13
7716750062 ci: add cuda11.6 base image
77bdcc949d gitlab-ci: run CUDA and HIP test jobs in any non-MR pipeline
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !7038
The actual compiler is too large to put in the base image.
Install its dependencies so we can download and run it in a job.
Note that Swift binaries are only available for `x86_64`.
Perforce does not provide binaries for `aarch64`, so leave it out for
that architecture.
Fedora now packages `breezy` instead of the original `bzr`. Note that
breezy does not have the xmloutput plugin needed for `bzr log --xml`.
This is also why commit 1972a75536 (Tests: Drop CTestUpdate.BZR test
check for xmloutput plugin, 2022-02-04) observed that there is no
`bzr xmlplugins` command.
Previously we used a complicated heuristic to decide whether or not to
run the MFC test, but it sometimes decided incorrectly to run the test.
Since that was first written, we have developed a convention for other
tests to enable them via undocumented cache entries that are added only
on machines known to meet the tests' requirements. Do that for MFC.
We should have at least one CI job in merge request pipelines that
builds CMake with assertions enabled. We avoid using the `Debug`
configuration in order to keep CI artifacts small, so instead use
the `Release` configuration without `-DNDEBUG`.
Avoid searching for a Java installation on Windows hosts.
This will allow some CI hosts to have Java for other projects.
We already do this on macOS. While at it, clarify the macOS setting.
Since commit 3b9975d9b5 (ci: Add JOM nightly CI job, 2021-11-17) the
`ExternalProject` test often fails spuriously with an internal error
message from JOM. Exclude it for now pending further investigation.
Prior to covering JOM in CI, it was covered by a standalone nightly
build that excluded the `ExternalProject` test for the same reason.
64038fd5bc Help: Add release notes for Find{BLAS,LAPACK} BLA_SIZEOF_INTEGER option
972489ae4e Find{BLAS,LAPACK}: Provide testing of BLA_SIZEOF_INTEGER
95219365ff Find{BLAS,LAPACK}: Make possible testing of ILP64 model
2cd94f3e57 Find{BLAS,LAPACK}: Specify integer type in tests
9b69307b56 Find{BLAS,LAPACK}: De-duplicate and generalize test creation logic
91fd645d46 FindLAPACK: Stop processing if LAPACK library does not have 64-bit integer API
b8a3cea51f FindBLAS: Stop processing if BLAS library does not have 64-bit integer API
d2f5c7856f FindLAPACK: Search 32/64-bit integer API via BLA_SIZEOF_INTEGER if possible
...
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6407
31ac4b9165 ci: Verify that Intel MKL is found when it is the only BLAS/LAPACK
57dcde19da Find{BLAS,LAPACK}: Avoid clobbering results when no vendor is requested
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6336
f90d15458a FindGLUT: Use pkg-config to find flags if available
f3f0401187 FindGLUT: Reduce if/else nesting and indentation
bece79f9be Tests: Add case covering FindGLUT variables and imported targets
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !6251