Commit Graph

13057 Commits

Author SHA1 Message Date
KOLANICH 5b45a3d0ce CheckCompilerFlag: Match the Clang "argument unused" output for all languages
Improve detection of missing compiler flags: move "argument unused
during compilation: .*" pattern from language-specific branches into
the common list.
2023-01-24 17:17:36 -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
Evan Wilde 4165eb3d0b Ninja: Emit swiftmodule from executable with exports
This patch adds support for tracking the swiftmodules for executables
exporting symbols.

This fixes a bug in the earlier implementation around emitting the
swiftmodule. Previously, the code would use
`CMAKE_EXE_EXPORTS_Swift_FLAG` to inject the `-emit-module`, and module
path information into the `CMAKE_Swift_LINK_EXECUTABLE` rule. Because
Swift skips the build step and only runs during the link phase, these
flags were injected in `cmNinjaNormalTargetGenerator::ComputeLinkCmd`
instead of `cmLocalGenerator::GetTargetFlags` where it is done normally.

Unfortunately, injecting in `ComputeLinkCmd` didn't do anything because
we have a `linkCmd` so `ComputeLinkCmd` exits early, before the
EXE_EXPORT flags get added to the link command.

Instead of playing with that flag, CMake checks
`CMAKE_Swift_LINK_EXECUTABLE_WITH_EXPORTS` and uses that as the link
rule if it exists and falls back on `CMAKE_Swift_LINK_EXECUTABLE`. I've
defined that variable in terms of `CMAKE_Swift_LINK_EXECUTABLE` with the
necessary additional flags for emitting the swift module instead. This
has the same end effect as the desired behavior, but simplifies things a
bit.

Since we're generating the swiftmodule for executables with exports,
I've also updated the dependency graph to include the swiftmodule as an
output in the build dependency graph if the executable has exports.

Tests updated:
 - RunCMake/NoWorkToDo:
   Ensure that the build graph does not result in unnecessary rebuilds
   with exporting executables.

 - SwiftOnly:
   Ensure that we can consume functions defined in the executable by a
   library getting linked into said executable.
2023-01-19 11:49:24 -08:00
Brad King a429e4b9b1 CYGWIN: Drop pre-2.8.4 compatibility mode CMAKE_LEGACY_CYGWIN_WIN32
Prior to CMake 2.8.4 (released in 2011), we defined `WIN32` on CYGWIN.
That was removed, but an undocumented `CMAKE_LEGACY_CYGWIN_WIN32`
compatibility mode was left to help projects transition.  Only projects
that do not require at least 2.8.4 as their minimum CMake version need
the compatibility mode.  We've also long warned about projects that do
not require at least 2.8.12, so it is now reasonable to remove the
legacy compatibility mode.
2023-01-19 14:29:35 -05:00
Brad King eae1398d09 cmake --system-information: Stop dumping CMake{Output,Error}.log
CMake no longer logs system information to these files.
2023-01-19 13:24:06 -05:00
Brad King 5031934fb0 Merge topic 'configure-log'
f6ed2585e5 Modules: Record system inspection steps in the configure log
0f688386ea Modules: Drop redundant check logging to CMakeOutput.log and CMakeError.log
ecc26f98eb UsewxWidgets: Remove leftover debugging code
874c2e1198 FindQt4: Drop outdated advice to look at CMakeError.log on failure
a80465bcad GHS: Drop debugging message from log
9199449687 CompileFeatures: Warn explicitly when feature detection binary is not found
24ccc8c3c9 CompilerId: Restore logging of failed identifications
95976514f6 Tests: Avoid using CMake{Output,Error}.log files

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8089
2023-01-19 13:21:36 -05:00
Brad King c601bd28af Merge topic 'FindLibLZMA_quote'
b4be607701 FindLibLZMA: Fix failure when no include directories are needed

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8088
2023-01-19 09:22:43 -05:00
Brad King f6ed2585e5 Modules: Record system inspection steps in the configure log
Replace old-style `file(APPEND .../CMake{Output,Error}.log)` logging
with calls to `message(CONFIGURE_LOG)` to record the steps in the
`CMakeConfigureLog.yaml` configure log instead.

Issue: #23200
2023-01-18 17:59:10 -05:00
Brad King 0f688386ea Modules: Drop redundant check logging to CMakeOutput.log and CMakeError.log
`try_compile` and `try_run` now automatically log checks using them to
`CMakeConfigureLog.yaml`.

Add `LOG_DESCRIPTION` arguments to some `try_compile` calls to
replace the description previously written to the old logs.

Issue: #23200
2023-01-18 16:41:01 -05:00
Brad King ecc26f98eb UsewxWidgets: Remove leftover debugging code 2023-01-18 16:41:01 -05:00
Brad King 874c2e1198 FindQt4: Drop outdated advice to look at CMakeError.log on failure
The find module does not write information to the log.
2023-01-18 16:41:00 -05:00
Brad King a80465bcad GHS: Drop debugging message from log 2023-01-18 16:41:00 -05:00
Brad King 9199449687 CompileFeatures: Warn explicitly when feature detection binary is not found
This step is not normally expected to fail, so warn instead of logging it.
2023-01-18 16:41:00 -05:00
Brad King 24ccc8c3c9 CompilerId: Restore logging of failed identifications
Changes in commit 9c5bd7fe3a (CompilerId: Output errors from all
attempts at detection, 2022-08-16, v3.25.0-rc1~290^2) accidentally
stopped logging failed compiler identification build output.
2023-01-18 16:41:00 -05:00
Even Rouault b4be607701 FindLibLZMA: Fix failure when no include directories are needed
Quote the value of `INTERFACE_INCLUDE_DIRECTORIES` to ensure
`set_target_properties` gets matching property/value pairs.
2023-01-18 16:26:24 -05:00
Kitware Robot 33abef7416 Revise C++ coding style using clang-format-15
Run the `clang-format.bash` script to update all our C and C++ code to a
new style defined by `.clang-format`.  Use `clang-format` version 15.

* If you reached this commit for a line in `git blame`, re-run the blame
  operation starting at the parent of this commit to see older history
  for the content.

* See the parent commit for instructions to rebase a change across this
  style transition commit.

Fixes: #24315
2023-01-18 16:20:47 -05:00
Brad King 9ce1c87037 Merge topic 'swift-ios'
44abf24848 Swift: Add comment about where platform-specific flags should go
9a013c9e9d Swift: Use macOS-style linker flags on iOS, tvOS, and watchOS too

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8070
2023-01-18 10:56:23 -05:00
Brad King 427538b78e Merge topic 'docpc'
93624e4c3d Help:ProcessorCount: recommend cmake_host_system_information

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8077
2023-01-18 10:48:35 -05:00
Brad King bdb4a4136b Merge topic 'IntelLLVM-c++23'
4331f7b4bf IntelLLVM: Add provisional flags for C23 and C++23
42ca6416af IntelLLVM: Replace -Qstd= with -Qstd: on Windows

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Alex <leha-bot@yandex.ru>
Merge-request: !8064
2023-01-18 10:47:17 -05:00
Brad King 44abf24848 Swift: Add comment about where platform-specific flags should go 2023-01-17 09:21:15 -05:00
Craig Hutchinson 9a013c9e9d Swift: Use macOS-style linker flags on iOS, tvOS, and watchOS too
Without this, building a shared Swift library with `CMAKE_SYSTEM_NAME=iOS`
produces the error `ld: unknown option: -soname`.  iOS is an Apple platform,
and so should use the `-install_name` option.
2023-01-17 09:20:39 -05:00
Vitaly Stakhovsky 99614e06be Source: Fix a few typos 2023-01-17 08:25:04 -05:00
scivision 93624e4c3d Help:ProcessorCount: recommend cmake_host_system_information
closes #24277
2023-01-16 15:30:06 -05:00
scivision 4331f7b4bf IntelLLVM: Add provisional flags for C23 and C++23 2023-01-16 15:08:34 -05:00
scivision 42ca6416af IntelLLVM: Replace -Qstd= with -Qstd: on Windows
The latter is the documented form [1].

[1] https://www.intel.com/content/www/us/en/develop/documentation/oneapi-dpcpp-cpp-compiler-dev-guide-and-reference/top/compiler-reference/compiler-options/language-options/std-qstd.html
2023-01-16 15:08:34 -05:00
Brad King be4dcdf100 Merge topic 'FindMatlab-macos-rosetta'
1bc9b0f256 FindMatlab: accommodate Matlab running under Rosetta
8dcd14bb87 FindMatlab: simplify mexext find logic

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8063
2023-01-13 08:57:43 -05:00
Brad King a547f315dd Merge topic 'deprecate-findunixcmds'
0847682c47 FindUnixCommands: Deprecate in favor of cmake -E

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8061
2023-01-13 08:53:30 -05:00
Brad King ff7e813fc1 Merge topic 'implicit-includes'
607bccb4ef Restore implicit include directory extraction for adaptive relative paths

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8067
2023-01-13 08:45:38 -05:00
Brad King 1efb3c5870 Merge topic 'IntelLLVM-msvc-no-cxx11'
88f9fdcb03 IntelLLVM: Avoid unnecessary -Qstd=c++11 flag on Windows

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8069
2023-01-13 08:43:30 -05:00
Brad King 8cf8c24df2 Merge topic 'IntelLLVM-no-icpx-on-Windows'
870d89627f Help: Clarify compiler id distinction between Intel Classic and IntelLLVM
ea4cfb3b53 Merge branch 'backport-IntelLLVM-no-icpx-on-Windows'
8834e4d6a5 IntelLLVM: Avoid finding not-yet-supported icpx on Windows

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8041
2023-01-13 08:39:41 -05:00
Brad King 88f9fdcb03 IntelLLVM: Avoid unnecessary -Qstd=c++11 flag on Windows
The IntelLLVM compiler, for compatibility with MSVC on Windows, always
runs with support for at least C++14.  The `-Qstd=c++11` flag just
causes a warning that it is unused.

Fixes: #24316
2023-01-12 15:58:14 -05:00
Brad King 607bccb4ef Restore implicit include directory extraction for adaptive relative paths
Update the logic added by commit ef41d49812 (Fix implicit include
directory extraction for adaptive relative paths, 2019-04-08,
v3.14.2~5^2) to account for the new `try_compile` work directory used
for the ABI check since commit 2edf0fc6d7 (Modules: Use new
keyword-dispatched try_compile signature, 2022-09-13,
v3.25.0-rc1~144^2).

Paths relative to the work directory will now have one more `../`
in them, so update the test data to match.

Fixes: #24279
2023-01-12 12:05:42 -05:00
FeRD (Frank Dana) 0847682c47 FindUnixCommands: Deprecate in favor of cmake -E
`${CMAKE_COMMAND} -E` subcommands are cross-platform replacements.

Fixes: #24263
2023-01-12 11:34:48 -05:00
Brad King ea4cfb3b53 Merge branch 'backport-IntelLLVM-no-icpx-on-Windows' 2023-01-12 10:24:06 -05:00
Michael Hirsch 8834e4d6a5 IntelLLVM: Avoid finding not-yet-supported icpx on Windows
Intel oneAPI 2023.0 added the `icpx` compiler front-end on Windows.
It uses a GNU-like command-line, and is not yet supported by CMake.
Avoid finding `icpx` as the CXX compiler on Windows until support
is added.

Fixes: #24266
Issue: #24314
2023-01-12 10:23:38 -05:00
scivision 1bc9b0f256 FindMatlab: accommodate Matlab running under Rosetta
fixes #24312
2023-01-12 09:47:09 -05:00
Brad King a46a5aedee Merge topic 'bug/cuda-toolkit-support-arm64-sbsa'
743d4181b4 FindCUDAToolkit: Support cross-compilation to sbsa-linux
e60fa80fbe FindCUDAToolkit: Handle CUDA::nvToolsExt not existing

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8057
2023-01-12 09:29:28 -05:00
Brad King c8f42171f2 Merge topic 'cuda-12'
4d90f65b24 CUDA: Update set of architectures supported by CUDA 12

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8031
2023-01-12 09:28:05 -05:00
Brad King ef2220bf88 Merge topic 'FindwxWindows-typos'
256262876b FindwxWindows: Fix comment typos

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8052
2023-01-12 09:26:35 -05:00
Brad King b09f2f25b7 Merge topic 'frontend-variant-always'
e4fcdfa301 Set CMAKE_<LANG>_COMPILER_FRONTEND_VARIANT on single-variant compilers

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8036
2023-01-12 09:22:46 -05:00
Brad King d696b9dbcc Merge topic 'findmatlab_system_include'
6683c20f22 FindMatlab: Add SYSTEM include flag for matlab_add_mex

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8039
2023-01-12 09:21:37 -05:00
Brad King cc988d81a4 Merge topic 'FindBoost-1.81'
a97032c4e7 FindBoost: Add Boost 1.81 support

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Christoph Grüninger <foss@grueninger.de>
Merge-request: !8056
2023-01-12 09:20:06 -05:00
scivision 8dcd14bb87 FindMatlab: simplify mexext find logic
This eliminates an explicit for() loop
2023-01-12 08:41:13 -05:00
leha-bot a97032c4e7 FindBoost: Add Boost 1.81 support
Update the list of known versions.

There is a new header-only library, Boost.URL. It has no
dependencies and has a core header `<boost/url.hpp>`.

Run the command

    cmake -DBOOST_DIR=/path/to/boost_1_81_0 \
      -P Utilities/Scripts/BoostScanDeps.cmake

to extract dependencies from the 1.81.0 source tree.
They are the same as 1.80's dependencies, so just update
the version check for warning about newer versions.
2023-01-11 17:31:33 -05:00
xiny 4d90f65b24 CUDA: Update set of architectures supported by CUDA 12
Remove architectures 35 and 37 for CUDA 12.

Architecture 21 is not in CMAKE_CUDA_ARCHITECTURES_ALL_MAJOR so there is
no need to remove it.
2023-01-11 16:47:30 -05:00
lilinjie 256262876b FindwxWindows: Fix comment typos 2023-01-11 16:27:04 -05:00
Jorrit Olthuis 6683c20f22 FindMatlab: Add SYSTEM include flag for matlab_add_mex
Add the `SYSTEM` flag for include directories provided by MATLAB, as the
the pragmas used are not compatible with GCC and generate a warning.

Fixes: #24166
2023-01-11 15:26:19 -05:00
Russell Greene e4fcdfa301 Set CMAKE_<LANG>_COMPILER_FRONTEND_VARIANT on single-variant compilers
The `GNU` and `MSVC` compilers obviously use their own front-end
command-line style.  Also set this for `AppleClang`.

Fixes: #24232
2023-01-11 14:50:40 -05:00
Robert Maynard 743d4181b4 FindCUDAToolkit: Support cross-compilation to sbsa-linux
Fixes #24192
2023-01-11 11:27:37 -05:00