Commit Graph

65801 Commits

Author SHA1 Message Date
Brad King f494bbaf8f Merge topic 'FindBacktrace-imported-library'
9433755e5d FindBacktrace: Add imported library

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9406
2024-04-16 08:51:59 -04:00
Brad King e9fcec6ac1 Merge topic 'findgtk2-fix'
7e49b98219 FindGTK2: Find arch-specific headers via pkg-config

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9417
2024-04-16 08:50:45 -04:00
Brad King c5774572c1 Merge topic 'lcc-updates-2024-04'
8f89ecb073 Tests: Exclude more tests found to be failing on broken libc on Elbrus
b0551cce64 cmArgumentParserTypes: Workaround for ICE on e2k

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !9426
2024-04-16 08:49:25 -04:00
Brad King 1c9e514d28 Merge topic 'swift-module-libraries'
56e5cea600 Swift: Support module libraries with command-line build systems

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9379
2024-04-16 08:47:11 -04:00
Brad King 211fbe7759 Merge topic 'cxx-checks-tolerate-unused-arguments'
6a2cfbd4ea cm_cxx_features: Ignore Clang unused-argument warnings

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9427
2024-04-16 08:45:37 -04:00
Brad King cf2a74d5c4 Merge topic 'file-GET_RUNTIME_DEPENDENCIES-macos-rpath'
3e865241f3 file(GET_RUNTIME_DEPENDENCIES): propagate parent rpath on macOS

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9428
2024-04-16 08:44:13 -04:00
Brad King f0e36bc429 Merge topic 'test-separate_arguments'
a716ed88e7 Tests: Avoid unnecessary copy of cmake in RunCMake.separate_arguments

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !9424
2024-04-16 08:41:39 -04:00
Kitware Robot 56c8a2d33b CMake Nightly Date Stamp 2024-04-16 00:01:13 -04:00
David Faure 9433755e5d FindBacktrace: Add imported library
This is to avoid (a future version of) Qt from having to wrap
FindBacktrace like [1].

[1] https://code.qt.io/cgit/qt/qtbase.git/tree/cmake/FindWrapBacktrace.cmake
2024-04-15 13:27:23 -04:00
Maxim Cournoyer 7e49b98219 FindGTK2: Find arch-specific headers via pkg-config
Fixes: #25884
2024-04-15 12:19:35 -04:00
jinzhe li 6a2cfbd4ea cm_cxx_features: Ignore Clang unused-argument warnings
Filter out `-Wunused-command-line-argument` warnings from Clang (that
can be caused by user-specified flags) so that they do not break our
checks for C++ feature availability.

This extends commit 71b65abca2 (C++ feature checks: Filter out warnings
caused by user flags, 2017-09-19, v3.10.0-rc1~90^2).
2024-04-15 12:09:49 -04:00
Luis Caro Campos 3e865241f3 file(GET_RUNTIME_DEPENDENCIES): propagate parent rpath on macOS
Fixes: #24400
2024-04-15 11:59:39 -04:00
Evan Wilde 56e5cea600 Swift: Support module libraries with command-line build systems
Wire up the flags needed to support module libraries built and used with
Swift. We need to pass `-bundle` to the linker when linking module
libraries on Darwin, and we need to pass `-export-dynamic` to the linker
when emitting an executable that exports symbols on Linux. This patch
wires up `CMAKE_SHARED_MODULE_CREATE_Swift_FLAGS` and
`CMAKE_SHARED_MODULE_LOADER_Swift_FLAG` on Darwin, and hooks up
`CMAKE_EXE_EXPORTS_Swift_FLAG` on Linux in order to support passing
things correctly.

We can't expose `CMAKE_EXE_LINKER_FLAGS` to Swift, as it contains flags
that the Swift compiler doesn't recognize, but the other
language-specific variables are safe to expose.
2024-04-15 08:23:39 -07:00
Brad King e449417f94 Merge topic 'genex-cleanup'
895efd4e7a cmGeneratorExpression: Consolidate recognition of transitive properties
5f7d8192da cmGeneratorExpression: Inline evaluation helper at only call site
91a25de520 cmGeneratorExpression: Add comments on implementation details
0a61116f52 cmGeneratorTarget: Remove EvaluateInterfaceProperty argument default

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !9425
2024-04-15 10:16:35 -04:00
Brad King a716ed88e7 Tests: Avoid unnecessary copy of cmake in RunCMake.separate_arguments
The `cmake` binary can be quite large in debug builds.

Inspired-by: Rolf Eike Beer <eb@emlix.com>
2024-04-15 10:13:28 -04:00
Brad King ca449572ef Merge topic 'cxxmodules-import-std'
429902ebad Clang: support creating a target for imported modules
4617f272b4 MSVC: support `import std`
62a71047bb cmGraphVizWriter: ignore `__cmake_`-prefixed targets
442086c1dc fileapi: ignore `__cmake_`-prefixed targets
ffe74289b3 CMakeDetermineCompilerId: extract C++ standard library impl
15bbd1d9b8 Experimental: add an experimental feature gate for `import std`
f80c60df02 CMakeDetermineCompilerSupport: construct C++ modules targets
19341e2582 ci: enable `import_std23` C++ module tests on MSVC
...

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !9337
2024-04-15 09:56:53 -04:00
Kitware Robot abd572de90 CMake Nightly Date Stamp 2024-04-15 00:02:49 -04:00
Kitware Robot 5df54e2228 CMake Nightly Date Stamp 2024-04-14 00:01:11 -04:00
Kitware Robot 9ae75401d5 CMake Nightly Date Stamp 2024-04-13 00:01:24 -04:00
makise-homura 8f89ecb073 Tests: Exclude more tests found to be failing on broken libc on Elbrus
Since last commit on this topic on Jan 15, 2024, nightly testing has found
some other CPack tests failing on broken libc on Elbrus, which was revealed
after transition to libuv. These tests are excluded in this condition.
2024-04-12 22:14:35 +03:00
makise-homura b0551cce64 cmArgumentParserTypes: Workaround for ICE on e2k
Original report by Ilya Kurdyukov <ilyakurdyukov@altlinux.org> from Alt Linux Team
Link: https://git.altlinux.org/gears/c/cmake.git?p=cmake.git;a=commitdiff;h=320f02347da0fe728e715a34a67e6d4d6241d132
2024-04-12 22:14:34 +03:00
Brad King 895efd4e7a cmGeneratorExpression: Consolidate recognition of transitive properties 2024-04-12 12:24:05 -04:00
Brad King 5f7d8192da cmGeneratorExpression: Inline evaluation helper at only call site 2024-04-12 12:23:59 -04:00
Brad King 91a25de520 cmGeneratorExpression: Add comments on implementation details
Clarify the purpose of some genex code that collects properties over the
transitive link closure.
2024-04-12 11:50:55 -04:00
Brad King 0a61116f52 cmGeneratorTarget: Remove EvaluateInterfaceProperty argument default
Pass it explicitly at the call sites.
2024-04-12 11:50:52 -04:00
Ben Boeckel 429902ebad Clang: support creating a target for imported modules 2024-04-12 11:46:40 -04:00
Ben Boeckel 4617f272b4 MSVC: support import std 2024-04-12 11:46:40 -04:00
Ben Boeckel 62a71047bb cmGraphVizWriter: ignore __cmake_-prefixed targets
These targets are internal to CMake's C++ `import std` implementation
and should not appear.
2024-04-12 11:46:40 -04:00
Ben Boeckel 442086c1dc fileapi: ignore __cmake_-prefixed targets
These targets are internal to CMake's C++ `import std` implementation
and should not appear.
2024-04-12 11:46:40 -04:00
Ben Boeckel ffe74289b3 CMakeDetermineCompilerId: extract C++ standard library impl
This is needed for C++ modules because `import std` support may differ
based on the standard library implementation. Extract the information as
necessary.
2024-04-12 11:46:39 -04:00
Ben Boeckel 15bbd1d9b8 Experimental: add an experimental feature gate for import std 2024-04-12 11:46:39 -04:00
Ben Boeckel f80c60df02 CMakeDetermineCompilerSupport: construct C++ modules targets
Compilers may implement this by implementing a `_cmake_cxx_import_std`
function which takes the standard version as an argument (e.g., `23`)
and creating a target named `CMake::CXX${std}` that represents how
`import std;` should be represented within CMake.
2024-04-12 09:32:29 -04:00
Brad King 1d31a00ee4 Merge topic 'genex-compatible-interface'
c94cfe92eb GenEx: Fix COMPATIBLE_INTERFACE_ evaluation outside usage requirements
061f7a6b97 GenEx: Remove redundant condition in COMPATIBLE_INTERFACE_ evaluation
86f99c5f6d GenEx: Add COMPATIBLE_INTERFACE_ implementation comments
541a788264 Tests: Add COMPATIBLE_INTERFACE_ cases outside usage requirements
5ebcf96170 Tests: Add COMPATIBLE_INTERFACE_ cases for library targets
f4249cf86f Tests: Add COMPATIBLE_INTERFACE_NUMBER_{MAX,MIN} transitive-only cases

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9423
2024-04-12 09:30:45 -04:00
Brad King 3bb04b05a5 Merge topic 'fix-cmake-mode-warnings'
f0bfcc125d cmake-mode.el: fix "docstring wider than 80 characters" warning
c1e5c9f162 cmake-mode.el: fix "no lexical-binding directive" warning

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9421
2024-04-12 09:29:52 -04:00
Brad King d616df8ad1 Merge topic 'aix-export-tdata'
b4d1ab42b8 AIX: Consider tdata symbols in ExportImportList

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9422
2024-04-12 09:28:46 -04:00
Brad King a2efb32667 Merge topic 'doc-regex-classes'
dc7a810a75 Help: Clarify documentation on regex character classes

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9419
2024-04-12 09:27:38 -04:00
Kitware Robot af1d83c94f CMake Nightly Date Stamp 2024-04-12 00:01:13 -04:00
Brad King c94cfe92eb GenEx: Fix COMPATIBLE_INTERFACE_ evaluation outside usage requirements
In commit ff6c401309 (cmTarget: Add interface for compatible numeric
properties, 2013-10-22, v3.0.0-rc1~460^2) the condition

    dagCheckerParent && !dagCheckerParent->EvaluatingLinkLibraries()

was written that way to avoid a nullptr dereference, but is actually
meant to say "is not evaluating link libraries".  That can also be true
when there is no `dagCheckerParent`, such as when evaluating a generator
expression outside of usage requirements, e.g., for `add_custom_target`.
The original commit tried to account for that by duplicating the
implementation in another code path, but that did not work in all cases.

Fix the condition, remove the duplication, and enable tests for the
now-working cases.
2024-04-11 18:35:40 -04:00
Brad King 061f7a6b97 GenEx: Remove redundant condition in COMPATIBLE_INTERFACE_ evaluation
The `IsLinkInterfaceDependent*Property` methods internally exclude
INTERFACE libraries since commit 0bfcb450e6 (INTERFACE_LIBRARY: Avoid
codepaths which set unneeded properties., 2013-11-20, v3.0.0-rc1~301^2~1).
2024-04-11 18:34:47 -04:00
Brad King 86f99c5f6d GenEx: Add COMPATIBLE_INTERFACE_ implementation comments 2024-04-11 18:34:47 -04:00
Brad King 541a788264 Tests: Add COMPATIBLE_INTERFACE_ cases outside usage requirements 2024-04-11 18:34:19 -04:00
Brad King 5ebcf96170 Tests: Add COMPATIBLE_INTERFACE_ cases for library targets
The transitive (or not) behavior of these properties depends on the
target type.  Add cases for STATIC, OBJECT, and INTERFACE libraries.
2024-04-11 17:02:52 -04:00
Brad King f4249cf86f Tests: Add COMPATIBLE_INTERFACE_NUMBER_{MAX,MIN} transitive-only cases 2024-04-11 16:48:21 -04:00
David Tenty b4d1ab42b8 AIX: Consider tdata symbols in ExportImportList
Thread-local variables are put in the tdata section on AIX / XCOFF [1]. Unfortunately
the ExportImportList script currently doesn't consider this section when looking for
symbols to export.

This results in linking failures in applications (such as LLVM) when building which expect these thread local variables to be exported from their shared libraries.

[1]: https://www.ibm.com/docs/en/aix/7.3?topic=formats-xcoff-object-file-format
2024-04-11 12:18:41 -04:00
Konstantin Kharlamov f0bfcc125d cmake-mode.el: fix "docstring wider than 80 characters" warning
Fixes:
    In cmake-help:
    cmake-mode.el:492:2: Warning: docstring wider than 80 characters
2024-04-11 18:24:18 +03:00
Konstantin Kharlamov c1e5c9f162 cmake-mode.el: fix "no lexical-binding directive" warning
Fixes:
    In toplevel form:
    cmake-mode.el:1:1: Warning: file has no ‘lexical-binding’ directive on its first line
2024-04-11 18:23:48 +03:00
Brad King 96a9dd7544 Merge branch 'release-3.29' 2024-04-11 10:45:02 -04:00
Ben Boeckel 19341e2582 ci: enable import_std23 C++ module tests on MSVC 2024-04-11 10:19:44 -04:00
Ben Boeckel 2c8361f923 cxxmodules: link to std-providing targets when available 2024-04-11 10:19:44 -04:00
Ben Boeckel 15cd73d6c2 cmGlobalGenerator: compute target features before synthetic targets
For `import std;` support, CMake needs to know the standard library
involved in order to ensure that the right target is linked. Afterwards,
the created synthetic targets need their target compile features
computed.
2024-04-11 10:19:44 -04:00