Commit Graph

10144 Commits

Author SHA1 Message Date
Brad King 87330a10e2 Merge topic 'ninja-multi-output-path-prefix'
df38eaab2c Ninja Multi-Config: Write output path prefix

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8280
2023-03-03 09:18:34 -05:00
Kyle Edwards def618f1ae Merge topic 'TargetRunTimeDllDirs'
a2c9c4f202 Add test for the new TARGET_RUNTIME_DLL_PATHS genex
aa68de0a27 TARGET_RUNTIME_DLLS: minor refactoring of shared-check.cmake
2ce3d62ffb Help: add documentation for the new TARGET_RUNTIME_DLL_DIRS genex
c351dcd967 TARGET_RUNTIME_DLL_DIRS: add the new genex to cmGeneratorExpressionNode
064c3244da TARGET_RUNTIME_DLLS: fix test for this genex

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Acked-by: Alex <leha-bot@yandex.ru>
Merge-request: !8247
2023-03-02 16:28:30 -05:00
Kyle Edwards df38eaab2c Ninja Multi-Config: Write output path prefix
Fixes: #24566
2023-03-02 15:10:53 -05:00
Brad King 9f309e655f Merge topic 'test-minver'
f53bd6f450 Tests: Bump CMake minimum required in tests to 3.5

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !8274
2023-03-02 10:13:08 -05:00
Brad King 5fe186ade7 Merge topic 'target_sources-backtrace'
b909be9e23 target_sources: Fix backtrace on missing source
4a3e79048b Tests: Add RunCMake.target_sources case covering missing source

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Reviewed-by: Ben Boeckel <ben.boeckel@kitware.com>
Merge-request: !8268
2023-03-02 10:07:31 -05:00
Brad King 1d7fb31778 Merge topic 'Apple-handle-Text-Stubs'
ede33f30cf Apple: Handle generation and comsuption of text-based stubs (.tbd files)
fcbd723a50 Enhance support functions

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Brad King <brad.king@kitware.com>
Merge-request: !8204
2023-03-02 09:53:03 -05:00
Brad King f53bd6f450 Tests: Bump CMake minimum required in tests to 3.5
CMake 3.27 deprecates compatibility with CMake < 3.5.  Update tests that
do not cover older interfaces to avoid the deprecation warning.

Follow the pattern from:

* commit 7b07ccdd2b (Tests/*Only: Update cmake_minimum_required versions,
                     2020-06-15, v3.19.0-rc1~629^2~1)

* commit 72e7c45e98 (Tests: Bump CMake minimum required in tests to 2.8.12,
                     2020-12-22, v3.20.0-rc1~224^2)

* commit f6b4db365a (Tests: bump cmake_minimum_required version to 2.8.12,
                     2021-04-04, v3.21.0-rc1~372^2)

Also remove explicit `cmake_policy` settings made redundant by the
version.
2023-03-01 16:36:54 -05:00
Marc Chevrier ede33f30cf Apple: Handle generation and comsuption of text-based stubs (.tbd files)
Fixes: #24123
2023-03-01 12:23:28 +01:00
Brad King b909be9e23 target_sources: Fix backtrace on missing source
If a source file is not found, the error message reports a backtrace.
Previously the backtrace pointed at where the target was created.
In the case of `target_sources`, the missing source may have been
named elsewhere.

Fixes: #24538
2023-02-28 18:07:36 -05:00
Brad King 4a3e79048b Tests: Add RunCMake.target_sources case covering missing source 2023-02-28 17:50:31 -05:00
Brad King 2e469212c8 Dart,FindDart: Add policy to remove these modules
These modules and the "DART" tool they support have long been replaced
by CTest.
2023-02-28 08:43:45 -05:00
Brad King 6dd2948b4b Tests: Port "testing" test from Dart module to CTest module 2023-02-28 08:35:19 -05:00
Brad King 12d041b8f7 Merge topic 'target_sources-file_set-no-exist'
7e3f9aa1b2 target_sources: give a hint when a file named `FILE_SET` is not found

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !8253
2023-02-28 08:32:04 -05:00
Brad King 8190d5e40b Merge topic 'FindX11-more-xcb-components'
0cca309dfd FindX11: support the xcb-{cursor,shape,xrm} components
e7d7710cf2 Tests/FindX11: fix preprocessor check for xcb_xrandr component

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8261
2023-02-28 08:30:05 -05:00
Brad King 40539096fd Merge topic 'dll-name-soversion'
a7f9c7da26 Add option to add SOVERSION to DLL names
9694504adc Tests: Simplify RunCMake.TargetArtifacts spec
3cd34eb279 Tests: Rename RunCMake.{ArtifactOutputDirs => TargetArtifacts}

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !8021
2023-02-28 08:29:20 -05:00
Ben Boeckel 0cca309dfd FindX11: support the xcb-{cursor,shape,xrm} components
Fixes: #24417
2023-02-27 17:40:48 -05:00
Ben Boeckel e7d7710cf2 Tests/FindX11: fix preprocessor check for xcb_xrandr component 2023-02-27 17:40:31 -05:00
Ralf Habacker a7f9c7da26 Add option to add SOVERSION to DLL names
Add variable/target property `[CMAKE_]DLL_NAME_WITH_SOVERSION`.

Fixes: #24251
Signed-off-by: Ralf Habacker <ralf.habacker@freenet.de>
2023-02-27 09:18:34 -05:00
Brad King 9ae0402198 Merge topic 'install-prefix-genex-install-code-script'
18e02ace5b install(CODE|SCRIPT): Support $<INSTALL_PREFIX> genex

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8251
2023-02-27 09:06:20 -05:00
Alexander Neundorf a2c9c4f202 Add test for the new TARGET_RUNTIME_DLL_PATHS genex
For one of the shared libraries the RUNTIME_OUTPUT_PATH
is set to a subdir and the test is supposed to check that
those directories appear in TARGET_RUNTIME_DLL_PATHS genex
2023-02-26 16:37:37 +01:00
Alexander Neundorf aa68de0a27 TARGET_RUNTIME_DLLS: minor refactoring of shared-check.cmake
Renamed variables and text which mentions dlls to items, since
we can use this check also for testing the directories.
2023-02-26 16:37:37 +01:00
Craig Scott 57f09a818c Merge topic 'fetchcontent-reject-CMAKE_TOOLCHAIN_FILE-env-var'
c15674a9cb FetchContent: Reject CMAKE_TOOLCHAIN_FILE env var in sub-build
31ef93f19f FetchContent: Only use @-@ replacements for sub-build CMakeLists.txt

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !8248
2023-02-25 17:16:37 -05:00
Ben Boeckel 7e3f9aa1b2 target_sources: give a hint when a file named FILE_SET is not found
`FILE_SET` is only supported within `target_sources()` and only directly
after a visibility keyword or another `FILE_SET`. Give a hint as to what
might be wrong if a file named `FILE_SET` cannot be found for any
reason.

Fixes: #24539
2023-02-24 17:43:22 -05:00
Brad King 9694504adc Tests: Simplify RunCMake.TargetArtifacts spec 2023-02-24 15:23:10 -05:00
Brad King 3cd34eb279 Tests: Rename RunCMake.{ArtifactOutputDirs => TargetArtifacts}
Generalize the name so we can add other kinds of artifact checks.
2023-02-24 15:00:32 -05:00
Kyle Edwards 18e02ace5b install(CODE|SCRIPT): Support $<INSTALL_PREFIX> genex
Fixes: #24534
2023-02-24 10:17:45 -05:00
Brad King 35ca2d524b Merge topic 'msvc-embed-manifest-direct'
0b552eb877 MSVC: Embed manifests directly for non-incremental vs_link_exe links

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8245
2023-02-24 08:40:07 -05:00
Brad King 88b75204e5 Merge topic 'PATH-genex-handle-list-of-paths'
e395310a21 PATH-genex: handle lists for path decomposition and transformations

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Acked-by: scivision <michael@scivision.dev>
Merge-request: !8238
2023-02-24 08:35:19 -05:00
Brad King 7552276e6e Merge topic 'GenerateExportHeader-Fix-Clang-support-on-Windows'
1e19936320 GenerateExportHeader: Fix Clang support on Windows

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Adrien De Coninck <deconinck.adrien@gmail.com>
Merge-request: !8221
2023-02-24 08:33:23 -05:00
Craig Scott c15674a9cb FetchContent: Reject CMAKE_TOOLCHAIN_FILE env var in sub-build
The sub-build should never try to use a toolchain file. The toolchain file
may itself be getting downloaded by FetchContent. If the
CMAKE_TOOLCHAIN_FILE environment variable is set, CMake uses it to
initialize the CMake variable of the same name. We need to explicitly
clear them before the first project call of the sub-build.

Fixes: #24535
2023-02-24 17:17:36 +11:00
Andrew Ng 0b552eb877 MSVC: Embed manifests directly for non-incremental vs_link_exe links
This avoids the need to separately execute `mt.exe` to perform the
embedding of manifests into the output for non-incremental links. The
primary motivation for this change is that this separate execution of
`mt.exe` to embed manifests is known to cause intermittent failures due
to AV/security scanning.

The only change in behavior is that any linker generated manifest will
no longer be output as a separate manifest file alongside the output
file.

Fixes: #24531
2023-02-23 14:35:08 -05:00
Brad King df9c4b1872 find_package: Use <PACKAGENAME>_ROOT variables as search prefixes
Extend commit eb35d8884b (find_package: Use PackageName_ROOT variables
as search prefixes, 2018-03-15, v3.12.0-rc1~349^2) to also check
upper-case `<PACKAGENAME>_ROOT` variables.  Add policy `CMP0144` to
enable the behavior in a compatible way.

Fixes: #24403
2023-02-23 09:15:14 -05:00
Corentin Damman 1e19936320 GenerateExportHeader: Fix Clang support on Windows
When using Clang with Visual Studio, the GenerateExportHeader function
generates the DEPRECATED definition "__attribute__ ((__deprecated__))",
because Clang can compile such instruction. However, if a user wants to compile
the library with this generated header with MSVC, the declaration is not valid.

We suggest to always use the DEPRECATED definition "__declspec(deprecated)" on
Windows, which is valid for both Clang and MSVC.
2023-02-23 09:19:06 +01:00
Alexander Neundorf 064c3244da TARGET_RUNTIME_DLLS: fix test for this genex
In a95cbf38 multiple files were renamed, and check.cmake slipped
through, and the test did actually not work correctly since then.
This patch renames check.cmake to its correct name shared-check.cmake.
2023-02-22 23:59:58 +01:00
Marc Chevrier e395310a21 PATH-genex: handle lists for path decomposition and transformations
Fixes: #24371
2023-02-21 19:34:43 +01:00
David Gobbi aa86e8ddfd Remove component size limit for version comparisons
The VersionCompare() function converted version components to
'unsigned long' prior to comparing them.  Any version components
too large for 'unsigned long' were treated as equal to ULONG_MAX.
This impacted operators like VERSION_GREATER, VERSION_LESS, and
VERSION_EQUAL.  The new code does not limit the length of the
version components for valid comparisons.
2023-02-20 12:54:43 -05:00
David Gobbi 7e730d8f7f Tests: Add cases for cmSystemTools::VersionCompare 2023-02-20 12:54:04 -05:00
Brad King d18806e673 Merge topic 'ninja-custom-command-depends'
ea2a05f402 Add variable CMAKE_ADD_CUSTOM_COMMAND_DEPENDS_EXPLICIT_ONLY

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8220
2023-02-20 08:34:34 -05:00
Brad King 4e39c25fce Merge topic 'xcode-revert-header-map'
841272eb35 Xcode: Restore suppression of header maps

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8218
2023-02-20 08:32:11 -05:00
Brad King 841272eb35 Xcode: Restore suppression of header maps
In commit 8527f42b96 (Xcode: Explicitly disable deprecated user include
path feature, 2023-01-31, v3.26.0-rc1~7^2) we dropped the Xcode build
setting `USE_HEADERMAP = NO` because Xcode 14's "Build Documentation"
feature (`xcodebuild RUN_DOCUMENTATION_COMPILER=YES`) fails in some
cases without header maps.  However, enabling header maps causes Xcode
to add `-iquote .../foo.hmap` and `-I .../bar.hmap` flags that can
change the intended header file search order based on the contents of
the header maps.  This can break existing projects.  Restore the
`USE_HEADERMAP = NO` setting to fix the header file search order.

Further investigation will be needed to resolve the problematic cases
with the Xcode 14 "Build Documentation" feature.  Meanwhile projects
encountering such cases can set the `XCODE_ATTRIBUTE_USE_HEADERMAP`
target property to `YES` themselves.

Fixes: #24418
Issue: #24379
2023-02-17 18:02:45 -05:00
Abdelmaged Khalifa ea2a05f402 Add variable CMAKE_ADD_CUSTOM_COMMAND_DEPENDS_EXPLICIT_ONLY
Add CMake variable `CMAKE_ADD_CUSTOM_COMMAND_DEPENDS_EXPLICIT_ONLY` to enable
option `DEPENDS_EXPLICIT_ONLY` on all uses of `add_custom_command`.

Fixes: #17097
2023-02-17 17:12:12 +02:00
Brad King 31a8e05d46 Merge topic 'lcc-lfortran-fix'
9f9d121ddb LCC: Disable Fortran preprocessor testing if unsupported
ea5f1f33fd LCC: Disable implicit testing of FortranCInterface
5434547678 LCC: Don't require liblfortran on lcc versions that don't have it

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !8214
2023-02-17 08:48:50 -05:00
Brad King 51c7917072 Merge topic 'deprecate-extra-generators'
ef5a4d964b Deprecate "extra" generators in favor of cmake-file-api(7)

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8211
2023-02-16 11:44:05 -05:00
makise-homura 9f9d121ddb LCC: Disable Fortran preprocessor testing if unsupported
LCC < 1.24 has no way to disable integrated Fortran preprocessor,
and it can't produce preprocessed files explicitly. So we
disable all functionality (and therefore tests) related to it.
2023-02-16 03:55:31 +03:00
makise-homura ea5f1f33fd LCC: Disable implicit testing of FortranCInterface
LCC < 1.24 has unsupported mangling scheme: it changes
'sub' neither to 'sub' nor to 'SUB', but to 'Sub'.
So we should explicitly check if FortranCInterface works
in the case of LCC.
2023-02-16 03:53:14 +03:00
scivision 848f7b0a81 cmake -E time: use C++11 chrono and better format output
fixes #24415
2023-02-15 10:53:14 -05:00
Brad King ef5a4d964b Deprecate "extra" generators in favor of cmake-file-api(7)
The "extra" generators were created in CMake's early years to provide
support for users of specific IDEs by directly generating their project
files alongside make or ninja files.  Nowadays the file-api provides a
more generic, maintainable, well-tested, and robust way for IDEs to view
CMake project build trees.  Deprecate the legacy "extra" generators to
encourage the corresponding IDEs to use the file-api.

Fixes: #19090
2023-02-15 10:48:26 -05:00
Brad King b297b63f17 Merge topic 'AutoExport-vftable'
f513781bc5 WINDOWS_EXPORT_ALL_SYMBOLS: Export vftable symbol

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8201
2023-02-15 08:58:44 -05:00
Brad King e2ed34abf8 Merge topic 'ninja-custom-command-depends'
082ccd7530 add_custom_command: Add DEPENDS_EXPLICIT_ONLY option for Ninja

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !8198
2023-02-15 08:57:32 -05:00
Brad King a550db0d45 Merge topic 'test-extra-generators'
6cf281b108 Tests: Add dedicated RunCMake.ExtraGenerators test

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !8202
2023-02-15 08:20:29 -05:00