Commit Graph

46867 Commits

Author SHA1 Message Date
Brad King 8affe9aa33 export: Fix use-after-free on multiple calls overwriting same FILE
CMake 3.16 and below allow multiple `export()` calls with the same output
file even without using `APPEND`.  The implementation worked by accident
by leaking memory.  Refactoring in commit 5444a8095d (cmGlobalGenerator:
modernize memrory managemenbt, 2019-12-29, v3.17.0-rc1~239^2) cleaned up
that memory leak and converted it to a use-after-free instead.

The problem is caused by using the `cmGlobalGenerator::BuildExportSets`
map to own `cmExportBuildFileGenerator` instances.  It can own only
one instance per output FILE name at a time, so repeating use of the
same file now frees the old `cmExportBuildFileGenerator` instance
and leaves the pointer in the `cmMakefile::ExportBuildFileGenerators`
vector dangling.  Move ownership of the instances into `cmMakefile`'s
vector since its entries are not replaced on a repeat output FILE.

In future work we should introduce a policy to error out on this case.
For now simply fix the use-after-free to restore CMake <= 3.16 behavior.

Fixes: #20469
2020-03-19 06:41:39 -04:00
Brad King 1ec72e0947 CMake 3.17.0-rc3 v3.17.0-rc3 2020-03-12 09:45:24 -04:00
Brad King c852c0d138 Merge topic 'apple-clang-flags-c++17' into release-3.17
a67f2d00d8 Apple Clang: add flags for C++17 standard

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4468
2020-03-12 09:33:18 -04:00
Brad King d584d01103 Merge topic 'swift-link-line-spaces' into release-3.17
af39d1b993 Swift: Fix quoting of library search paths with spaces

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4469
2020-03-12 09:32:01 -04:00
Saleem Abdulrasool af39d1b993 Swift: Fix quoting of library search paths with spaces
The library search paths added by commit 2746c61e6d (Swift: Add library
search paths for dependencies, 2019-06-09, v3.16.0-rc1~561^2) need to be
quoted properly on command lines to handle spaces and such.  This was
already done by `cmLinkLineComputer::ComputeLinkPath` for
non-Swift-specific link directories.
2020-03-12 08:46:11 -04:00
Brad King 3cf22df42e Merge topic 'ctest-curl-debugfunction' into release-3.17
7a1cce210b CTest: Fix our internal CURL_DEBUGFUNCTION to conform to CURL docs

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4459
2020-03-12 08:19:43 -04:00
Brad King c278b4eda9 Merge topic 'FindPython-ENV-CMAKE_FRAMEWORK_PATH' into release-3.17
1044776472 FindPython: Convert env CMAKE_FRAMEWORK_PATH to CMake path

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Marc Chevrier <marc.chevrier@gmail.com>
Merge-request: !4462
2020-03-12 08:18:54 -04:00
Brad King c5f850d145 Merge topic 'swift-rpath' into release-3.17
f481b3a947 Swift: repair RPATH handling for macOS

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4456
2020-03-12 08:18:03 -04:00
Marc Chevrier a67f2d00d8 Apple Clang: add flags for C++17 standard 2020-03-12 08:09:12 -04:00
Craig Scott 3d388e5e98 Merge topic 'rename-macho-version-properties' into release-3.17
14732d3f30 macOS: Rename OSX_*_VERSION properties to MACHO_*_VERSION

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4452
2020-03-12 06:52:11 -04:00
Brad King 14732d3f30 macOS: Rename OSX_*_VERSION properties to MACHO_*_VERSION
The properties added by commit 4a62e3d97c (macOS: Add
OSX_COMPATIBILITY_VERSION and OSX_CURRENT_VERSION properties,
2020-01-24, v3.17.0-rc1~80^2~1) are general-purpose for all platforms
using Mach-O formats and not just on OS X.  Rename them accordingly.
The properties are new to the CMake 3.17 release so we can rename
them without compatibility concerns.

Fixes: #20442
2020-03-12 21:15:40 +11:00
Betsy McPhail 7a1cce210b CTest: Fix our internal CURL_DEBUGFUNCTION to conform to CURL docs
The curl debug callback function must return ``0``.

Fixes: #20449
2020-03-11 13:36:58 -04:00
Bo Anderson 1044776472 FindPython: Convert env CMAKE_FRAMEWORK_PATH to CMake path 2020-03-11 13:35:33 -04:00
Brad King dd45b7b429 Merge topic 'FindCUDAToolkit-reduce-verbosity' into release-3.17
a7cf574417 CUDAToolkit: Mark find queries as advanced variables

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4455
2020-03-11 08:56:40 -04:00
Saleem Abdulrasool f481b3a947 Swift: repair RPATH handling for macOS
The configuration previously handled Linux properly but did not function
on macOS as `ld64` does not support `:` delimited paths.  Account for
that by setting it to the empty string which will use multiple
invocations of the `-Xlinker -rpath -Xlinker ...` pattern to compute the
correct RPATH.
2020-03-11 08:45:47 -04:00
Robert Maynard a7cf574417 CUDAToolkit: Mark find queries as advanced variables
Fixes #20435
2020-03-10 13:27:16 -04:00
Brad King 7b7170a584 Merge topic 'release-notes-minor-cleanups' into release-3.17
d5e6fedd7b Help: Cleanup minor typos and grammar in 3.17 release notes

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4449
2020-03-10 10:30:07 -04:00
Brad King 51c8ac8e89 Merge topic 'doc-3.17-relnotes' into release-3.17
6b925d0536 Help: Fix 3.17 release notes for Xcode scheme settings
e0409b8bca Help: Fix toctree order of Xcode scheme variable and property

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4447
2020-03-10 10:29:14 -04:00
Kyle Edwards 2427bbf01c Merge topic 'swift-ninja-multiconfig' into release-3.17
65b3848de0 Swift: support Ninja Multi-Config

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4440
2020-03-10 10:16:17 -04:00
Brad King 6b925d0536 Help: Fix 3.17 release notes for Xcode scheme settings
In commit 730a53ef1d (Help: Organize and revise 3.17 release notes,
2020-02-04, v3.17.0-rc1~21^2) we accidentally combined the release notes
for `CMAKE_XCODE_SCHEME_ENVIRONMENT` and `XCODE_SCHEME_WORKING_DIRECTORY`.
Split them up again.  Also mention `CMAKE_XCODE_SCHEME_WORKING_DIRECTORY`.

Fixes: #20439
2020-03-10 08:51:53 -04:00
Brad King e0409b8bca Help: Fix toctree order of Xcode scheme variable and property
In commit 92c4c852db (Xcode: Add custom working directory property,
2019-11-18, v3.17.0-rc1~400^2) the toctree links to the new properties
were not added in sorted order.  Move them.

Issue: #20439
2020-03-10 08:51:53 -04:00
Craig Scott d5e6fedd7b Help: Cleanup minor typos and grammar in 3.17 release notes 2020-03-10 23:24:59 +11:00
Brad King cb84575b0d Merge topic 'cuda_warning' into release-3.17
6ebc6cec41 cm_cxx_features: Filter out CUDA installation warnings

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4437
2020-03-10 08:22:57 -04:00
Brad King d11a5d8f2b Merge topic 'invalid_alias' into release-3.17
a54d96b722 cmAlgorithms: Fix -Wnon-c-typedef-for-linkage warnings

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4438
2020-03-10 08:22:00 -04:00
Raul Tambre a54d96b722 cmAlgorithms: Fix -Wnon-c-typedef-for-linkage warnings
In commit bf1e73305a (cmAlgorithms: Refactor cmRemoveDuplicates,
2019-03-03, v3.15.0-rc1~414^2) we added `union X = struct {}`.
C++ had a rule change whereby only C-compatible unnamed typedefs are
allowed. Clang 11 warns about this by default.  See
https://reviews.llvm.org/D74103.  The aliases don't seem to be
necessary, so simply define as structs.
2020-03-09 09:21:25 -04:00
Raul Tambre 6ebc6cec41 cm_cxx_features: Filter out CUDA installation warnings
Clang always outputs these if it doesn't recognize the installed CUDA version.
They don't affect compiling C++.

Fixes #20434.
2020-03-09 09:17:41 -04:00
Saleem Abdulrasool 65b3848de0 Swift: support Ninja Multi-Config
Enable support for multi-configuration builds using Ninja when building
Swift.
2020-03-09 09:11:22 -04:00
Brad King 6857aaaa06 Merge topic 'ibmi-fix-libuv-build' into release-3.17
7d6bd14dca libuv: Add support for building on IBM i (OS400)

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4431
2020-03-09 08:58:38 -04:00
Jesse Gorzinski 7d6bd14dca libuv: Add support for building on IBM i (OS400) 2020-03-06 14:24:01 -05:00
Brad King b7d43ea0da Merge topic 'cmstd-IBM-i' into release-3.17
917db8163d cmstd: Remove -isystem option for IBM i (OS400)

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4430
2020-03-06 09:24:45 -05:00
Brad King a1ccbab5a8 Merge branch 'release-3.16' into release-3.17 2020-03-06 09:23:23 -05:00
Brad King 6746fdf7cb Merge topic 'doc-add_custom_command-depends' into release-3.17
785f2b2df1 Help: Clarify add_custom_command DEPENDS conversion to file paths

Acked-by: Kitware Robot <kwrobot@kitware.com>
Reviewed-by: Ben Boeckel <ben.boeckel@kitware.com>
Merge-request: !4434
2020-03-06 09:20:02 -05:00
Brad King 785f2b2df1 Help: Clarify add_custom_command DEPENDS conversion to file paths
In commit f5126badd8 (add_custom_command: convert DEPENDS path arguments
to absolute paths, 2019-12-18, v3.17.0-rc1~263^2) we updated the
documentation to describe the behavior introduced by that commit.
However, the behavior was removed again by commit fd0ba705ce
(add_custom_command: check if a relative path should be an in-source
path, 2020-01-09, v3.17.0-rc1~141^2~4) without updating the
documentation.

Update the documentation again to describe the behavior as of the latter
commit.  Spell out the steps that `cmLocalGenerator::GetRealDependency`
and `cmTargetTraceDependencies::IsUtility` use to add file-level and
target-level dependencies.
2020-03-06 08:44:46 -05:00
ThePrez 917db8163d cmstd: Remove -isystem option for IBM i (OS400)
Much like AIX, IBM i (OS identifier "OS400") implicitly adds `extern
"C"` around system header files included with the `-isystem` option.
Update the condition added by commit c688b401d3 (cmstd: Modernize CMake
system headers, 2019-08-04, v3.16.0-rc1~81^2~1) to treat `IBM i` as we
do AIX.
2020-03-05 15:07:46 -05:00
Brad King cf0dc5efbf Merge topic 'ninja-multi-custom-command-deps' into release-3.17
081c4679f7 Ninja Multi-Config: Don't build target dependencies for custom commands

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4423
2020-03-05 07:24:48 -05:00
Brad King b7d8c91822 CMake 3.16.5 v3.16.5 2020-03-04 08:50:44 -05:00
Brad King 75d5232e18 Merge branch 'doc-rel-3.16-updates' into release-3.16
Merge-request: !4425
2020-03-04 08:49:19 -05:00
Brad King f1f5d90752 Merge topic 'doc-rel-3.16-updates' into release-3.17
d25d8e9eef Help: Update CMake 3.16 release notes for 3.16.5

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4425
2020-03-04 08:48:00 -05:00
Brad King 2c6d55b652 Merge branch 'release-3.16' into release-3.17 2020-03-04 08:44:28 -05:00
Brad King ab00435e79 Merge topic 'FindPython-manage-SOABI-suffix' into release-3.17
0c97b73bc0 FindPython: python_add_library can now manage SOABI suffix.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4420
2020-03-04 08:20:17 -05:00
Brad King b0317d9b98 Merge topic 'llvm-rc-defines-not-flags' into release-3.17
ee70c5de4d llvm-rc: Forward DEFINES instead of FLAGS

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4419
2020-03-04 08:19:30 -05:00
Brad King 27a29c46b6 Merge topic 'ninja-multi-spurious-unused-variables' into release-3.17
8b799f80e3 Ninja Multi-Config: Fix spurious unused variable warning

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4421
2020-03-04 08:18:03 -05:00
Kyle Edwards 8b799f80e3 Ninja Multi-Config: Fix spurious unused variable warning
Fixes: #20381
2020-03-03 15:52:36 -05:00
Kyle Edwards 081c4679f7 Ninja Multi-Config: Don't build target dependencies for custom commands
If cross-config mode is used, and a target depends on another target
as well as a custom command, we don't want the custom command to also
depend on the depended target, as that would build targets unnecessarily.
Fix this behavior.
2020-03-03 15:15:13 -05:00
Thomas Bernard ee70c5de4d llvm-rc: Forward DEFINES instead of FLAGS
Since commit 1c2d031cbd (Add -E cmake_llvm_rc to preprocess files for
llvm-rc, 2020-01-14, v3.17.0-rc1~24^2) we pass the full target `<FLAGS>`
to the llvm-rc resource compiler, but we should pass only `<DEFINES>`.

Fixes: #20414
2020-03-03 08:12:25 -05:00
Marc Chevrier 0c97b73bc0 FindPython: python_add_library can now manage SOABI suffix.
Fixes: #20408
2020-03-03 13:13:48 +01:00
Brad King d1cb554c99 CMake 3.17.0-rc2 v3.17.0-rc2 2020-03-02 14:15:14 -05:00
Brad King 5f36f1027b Merge topic 'ninja-multi-variable-shuffle-again' into release-3.17
c794b70f19 Ninja Multi-Config: Always generate build.ninja
9590c3a400 Generator: Don't allow Ninja Multi-Config variables on other generators
7a63dafafb Ninja Multi-Config: Remove "NMC" from variable names

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4403
2020-02-28 11:32:06 -05:00
Brad King 18c8fbcb0b Merge topic 'foreach-range-issues' into release-3.17
185d1aefaa foreach: Set fatal error on invalid range
a33b3949e5 foreach: Fix crash when parsing invalid integer

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4407
2020-02-28 11:15:30 -05:00
Brad King 15ac1f671b Merge topic 'q_namespace_export' into release-3.17
426941c433 Autogen: Recognize the new Q_NAMESPACE_EXPORT macro in AUTOMOC

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4398
2020-02-28 11:14:33 -05:00