28357 Commits

Author SHA1 Message Date
Brad King
e3185e3d1b CMake 3.17.0 2020-03-20 06:26:14 -04:00
Brad King
119d1dadce Merge topic 'export-repeat' into release-3.17
8affe9aa33 export: Fix use-after-free on multiple calls overwriting same FILE

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4494
2020-03-20 06:17:00 -04:00
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
Kyle Edwards
1994f950ff cmake: List valid values for --trace-format on the command line 2020-03-18 16:16:46 -04:00
Brad King
1ec72e0947 CMake 3.17.0-rc3 2020-03-12 09:45:24 -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
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
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
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
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 2020-03-04 08:50:44 -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
Brad King
d1cb554c99 CMake 3.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
Kyle Edwards
185d1aefaa foreach: Set fatal error on invalid range
Fixes: #20394
2020-02-27 14:52:06 -05:00
Kyle Edwards
a33b3949e5 foreach: Fix crash when parsing invalid integer
Fixes: #20393
2020-02-27 14:52:06 -05:00
Kyle Edwards
c794b70f19 Ninja Multi-Config: Always generate build.ninja
If CMAKE_DEFAULT_BUILD_TYPE is not specified, use the first item
from CMAKE_CONFIGURATION_TYPES instead.
2020-02-27 10:39:35 -05:00
Kyle Edwards
9590c3a400 Generator: Don't allow Ninja Multi-Config variables on other generators
We may want to enable these variables later on with specific
semantics. To avoid breaking backwards compatibility, make it an
error to use them for now.
2020-02-27 09:23:08 -05:00
Kyle Edwards
7a63dafafb Ninja Multi-Config: Remove "NMC" from variable names
Also rename `..._DEFAULT_BUILD_FILE_CONFIG` to `..._DEFAULT_BUILD_TYPE`.
These name changes make the variables meaningful for future use by other
generators.
2020-02-27 09:22:08 -05:00
Brad King
813b289023 Merge topic 'pch-file-time' into release-3.17
7e9b9fe918 PCH: Copy the timestamp from an absolute header file

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4400
2020-02-27 08:48:49 -05:00
Brad King
e619d29e76 Merge topic 'update-kwsys' into release-3.17
06702acb28 KWSys: Terminal: Add st-256color to VT100 color support whitelist

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4394
2020-02-27 08:46:04 -05:00
Cristian Adam
7e9b9fe918 PCH: Copy the timestamp from an absolute header file
If `target_precompile_headers` contains a file from the project,
then CMake will set the timestamp for `cmake_pch.h|xx` from that
file.

This helps with ccache and precompile headers.

Fixes: #19923
2020-02-26 10:05:47 -05:00
Brad King
06702acb28 KWSys: Terminal: Add st-256color to VT100 color support whitelist
Backport KWSys commit `44eaaa6e8` (Terminal: Add st-256color to VT100
color support whitelist, 2020-02-19) to CMake 3.17.
2020-02-25 09:42:55 -05:00
Brad King
cf789bb447 Merge topic 'ctest-failure-error-reporting' into release-3.17
a5be3916ee CTest: Provide more detailed information on resource allocation error
f0df3ed5b9 Refactor: Provide more detailed error information from TryAllocateResources()
f1c34443b7 CTest: Improve error reporting with bad working directory for tests
1dec359422 Refactor: Require detail when calling cmCTestRunTest::StartFailure()

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4390
2020-02-25 09:00:25 -05:00
Brad King
1d338dcf46 Merge topic 'cuda-non-device-link' into release-3.17
7da2c8c543 Merge branch 'backport-cuda-non-device-link'
738f3f23aa Ninja: Do not use nvcc response files with non-nvcc tools

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !4376
2020-02-25 08:54:45 -05:00
Kyle Edwards
a5be3916ee CTest: Provide more detailed information on resource allocation error 2020-02-24 15:44:01 -05:00
Kyle Edwards
f0df3ed5b9 Refactor: Provide more detailed error information from TryAllocateResources() 2020-02-24 15:44:01 -05:00
Kyle Edwards
f1c34443b7 CTest: Improve error reporting with bad working directory for tests 2020-02-24 15:44:01 -05:00
Kyle Edwards
1dec359422 Refactor: Require detail when calling cmCTestRunTest::StartFailure() 2020-02-24 15:44:01 -05:00
Brad King
0aa91f9a66 Merge branch 'backport-cuda-non-device-link' into release-3.16
Merge-request: !4376
2020-02-24 13:36:24 -05:00
Brad King
7da2c8c543 Merge branch 'backport-cuda-non-device-link' 2020-02-24 13:34:13 -05:00
Francisco Facioni
738f3f23aa Ninja: Do not use nvcc response files with non-nvcc tools
Since commit d91b5a72cd (Ninja: Add support for CUDA nvcc response
files, 2019-05-30, v3.15.0-rc1~8^2) we use NVCC's `--options-file`
option to avoid long link command lines via a response file.  However,
for non-device linking the host tools are used and the option does not
make sense.  Update the logic to use `--options-file` only for device
linking.  Linking with the host tools already has its own logic for
response files.

Fixes: #19954
2020-02-24 13:31:33 -05:00
Brad King
fe564f3131 Merge topic 'update-kwsys' into release-3.17
ce59cabc70 KWSys: SystemTools: CopyFileIfDifferent: Fix endless recursion

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4361
2020-02-18 11:49:00 -05:00
Brad King
ce59cabc70 KWSys: SystemTools: CopyFileIfDifferent: Fix endless recursion
Backport KWSys commit `ea77593a1` (SystemTools: CopyFileIfDifferent: Fix
endless recursion, 2020-02-13) for the CMake 3.17 branch.

Fixes: #20347
2020-02-18 11:41:36 -05:00
Kyle Edwards
7abc3d61ac Ninja Multi-Config: Fix issue with framework dependencies and Autogen
Fixes: #20345
2020-02-17 08:24:57 -05:00
Brad King
125f0451a9 CMake 3.17.0-rc1 2020-02-12 10:32:47 -05:00
Brad King
645474dba1 Merge topic 'ninja-multi-default-configs-fix' into release-3.17
46c836644d Ninja Multi-Config: Fix issue with "all" in CMAKE_NMC_DEFAULT_CONFIGS

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4349
2020-02-12 09:15:54 -05:00
Brad King
10b834a3eb Merge topic 'file-CONFIGURE_DEPENDS-verify-CMP0009' into release-3.17
818ec34bdd file: GLOB_RECURSE VerifyGlobs.cmake should have CMP0009 set to new
b620dc566d file: Fix GLOB_RECURSE LIST_DIRECTORIES documentation regarding CMP0009
715f90bdd9 Tests: Perform minor cleanups in RunCMake.file test

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Kyle Edwards <kyle.edwards@kitware.com>
Merge-request: !4342
2020-02-12 09:15:07 -05:00
Brad King
96ee8b7266 Merge topic 'install-default-fix' into release-3.17
9442ae5083 install: Fix regression when using default destinations

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !4340
2020-02-12 09:05:31 -05:00
Brad King
0f0d8f5b6f Merge branch 'backport-3.16-install-default-fix' into release-3.16 2020-02-12 09:01:23 -05:00
Kyle Edwards
46c836644d Ninja Multi-Config: Fix issue with "all" in CMAKE_NMC_DEFAULT_CONFIGS
Prior to this fix, CMAKE_NMC_DEFAULT_CONFIGS would inherit "all" from
the union of CMAKE_NMC_DEFAULT_BUILD_FILE_CONFIG and
CMAKE_NMC_CROSS_CONFIGS. This is inconsistent with the behavior of the
"all" target signifying CMAKE_NMC_CROSS_CONFIGS. Update "all" in
CMAKE_NMC_DEFAULT_CONFIGS to inherit only from CMAKE_NMC_CROSS_CONFIGS.
2020-02-11 10:49:54 -05:00