Commit Graph

26819 Commits

Author SHA1 Message Date
Brad King
58b0674687 VS: Tell VS 16.4 not to verify SYMBOLIC custom command inputs
Extend the fix from commit 0578239d3a (VS: Tell VS 16.4 not to verify
SYMBOLIC custom command outputs, 2019-09-23, v3.15.4~2^2) to apply to
SYMBOLIC *inputs* too.  This is needed when there is a chain of custom
commands that use symbolic paths for ordering.

Fixes: #20179
2020-01-28 13:52:05 -05:00
Brad King
5b43aa7755 CMake 3.15.6 2019-12-16 10:21:27 -05:00
Brad King
b3a536e726 Merge branch 'backport-3.15-vs-v142-version' into release-3.15
Merge-request: !4133
2019-12-12 11:38:15 -05:00
Brad King
07612646fe VS: Fix support for v142 toolset minor versions in VS 16.5+
The fix in commit 5117389931 (VS: Fix support for v142 toolset minor
versions, 2019-10-01, v3.15.5~6^2) worked around a bug in VS's placement
of toolset files.   VS 16.5 will fix that bug and restore the original
pattern for locations of toolset files.  Update our logic to look for
both possibilities.

Issue: #19779
2019-12-12 11:25:42 -05:00
Alexander Grund
b35926e260 Check for support before adding bigtoc linker flag
Fixes: #20076
2019-12-09 11:39:12 -05:00
Brad King
2a5e5b25ba CMake 3.15.5 2019-10-30 09:44:41 -04:00
Brad King
881bca249d Merge branch 'vs-v142-csharp-flags' into release-3.15
Merge-request: !3908
2019-10-11 11:18:41 -04:00
Brad King
bbf216fb6b VS: Add toolset v142 CSharp flag table
While the flag tables for C and C++ were generated from MSBuild `.xml`
files, the CSharp flag tables were written by hand.  Copy the `v141`
flag table to use for the `v142` toolset.

Remove the special case added by commit 626c51f47b (VS: Update for
Visual Studio 2019 Preview 2, 2019-01-24, v3.14.0-rc1~74^2) that mapped
the v142 flag table lookup to v141 since we now have the real v142
table.

Fixes: #19828
2019-10-11 11:11:20 -04:00
Brad King
dec3e9363e Merge branch 'backport-vs-16.4-global-targets' into release-3.15
Merge-request: !3896
2019-10-07 17:51:51 -04:00
Brad King
ac1a1bf18b VS: Tell VS 16.4 not to verify CMake-provided custom command outputs
Extend the fix from commit 0578239d3a (VS: Tell VS 16.4 not to verify
SYMBOLIC custom command outputs, 2019-09-23, v3.15.4~2^2) to apply to
outputs in CMake-provided targets like `install`.  Simply mark these
outputs as `SYMBOLIC` too since they are not actually generated.

Fixes: #19737
2019-10-07 17:44:32 -04:00
Brad King
b21e4e4a15 Merge branch 'backport-xcode-scheme-custom-target' into release-3.15
Merge-request: !3878
2019-10-02 08:25:27 -04:00
Brad King
ac9934406d Xcode: Restore CMAKE_XCODE_GENERATE_SCHEME for custom targets
The target property introduced by commit 413b71485a (Xcode: Create Xcode
schemes per target, 2019-03-11, v3.15.0-rc1~347^2) was accidentally not
initialized by `CMAKE_XCODE_GENERATE_SCHEME` for custom targets.  Fix it
and update the test.

Fixes: #19759
2019-10-02 08:17:32 -04:00
Brad King
5117389931 VS: Fix support for v142 toolset minor versions
When using `-T v142,version=14.22` the `.props` file location is
different starting with version `14.20` than it was in `14.16` and
below.  Adapt the path based on the version.

Fixes: #19779
2019-10-01 11:39:38 -04:00
Brad King
6fb747a01c CMake 3.15.4 2019-09-30 15:30:00 -04:00
Brad King
e7637a3d1a Merge branch 'backport-3.15-fix-EXCLUDE_FROM_ALL-subdir-all' into release-3.15
Merge-request: !3863
2019-09-30 10:29:11 -04:00
Brad King
05d7ca14e9 Merge branch 'backport-3.14-fix-EXCLUDE_FROM_ALL-subdir-all' 2019-09-30 09:19:21 -04:00
Brad King
b3b1c7bf3a Restore "all" target in subdirectories marked EXCLUDE_FROM_ALL
The "all" target in each directory is supposed to have targets from that
directory even if the directory itself is marked `EXCLUDE_FROM_ALL` in
its parent.  This was broken by commit dc6888573d (Pass EXCLUDE_FROM_ALL
from directory to targets, 2019-01-15, v3.14.0-rc1~83^2) which made the
participation of a target in "all" independent of context.  Revert much
of the logic change from that commit to restore the old behavior.  Then
re-implement the behavior intended by the commit to keep its test
working.  Extend the test to cover the old behavior too.

Fixes: #19753
2019-09-30 09:18:20 -04:00
Brad King
156b56480a Makefiles: Revert "Make build root targets ... recursive"
Revert the main logic change from commit 827da1119e (Makefiles: Make
build root targets "all", "clean" and "preinstall" recursive,
2019-05-17, v3.15.0-rc1~96^2~2) for the "all" and "preinstall" targets.

The commit cleaned up the Makefile generator to use the same logic for
the "all" target in the top-level directory as for subdirectories.  It
exposed a long-existing bug that caused the "all" target in a
subdirectory to include the "all" targets from sub-subdirectories even
if they are marked `EXCLUDE_FROM_ALL`.  The `Tests/SubDir` test should
fail but the problem is currently covered up by another bug introduced
by commit dc6888573d (Pass EXCLUDE_FROM_ALL from directory to targets,
2019-01-15, v3.14.0-rc1~83^2) that causes the "all" targets in
`EXCLUDE_FROM_ALL` subdirectories to be empty.

Revert the top-level "all" and "preinstall" targets to the old approach
to prepare to fix the latter bug without exposing the long-existing bug
at the top-level.  Leave the "clean" target in the new approach because
it does not honor `EXCLUDE_FROM_ALL` anyway.

Issue: #19753
2019-09-27 14:15:00 -04:00
Brad King
0578239d3a VS: Tell VS 16.4 not to verify SYMBOLIC custom command outputs
VS 16.4 introduces an additional check on `CustomBuild` rules that warns
if the outputs of the command are not created.  However, CMake supports
marking outputs with the `SYMBOLIC` property to indicate that they will
not actually be generated.  That property is used by Makefile and Ninja
generators but has not been needed by the VS generators before.  Teach
the VS generator to disable `VerifyInputsAndOutputsExist` in custom
build rules that have a symbolic output.

Fixes: #19737
2019-09-24 10:41:20 -04:00
Brad King
26a0e200e5 CMake 3.15.3 2019-09-04 09:50:07 -04:00
Brad King
1ae24ee108 Merge branch 'fileapi-CMP0037-OLD' into release-3.15
Merge-request: !3760
2019-08-30 10:21:29 -04:00
Brad King
9da1c33cf1 fileapi: Fix codemodel v2 target file name for CMP0037 OLD behavior
With CMP0037 OLD behavior, executable and library target names may
contain a slash.  Avoid constructing file names with slashes.

Fixes: #19653
2019-08-30 10:20:12 -04:00
Brad King
aeeccc3b15 Merge branch 'backport-find-no-name' into release-3.15
Merge-request: !3751
2019-08-28 11:28:59 -04:00
Brad King
4c8760c9fb find_path: Fix crash on empty old-style list of names
Fixes: #19651
2019-08-28 11:18:53 -04:00
Brad King
1d953058a2 Merge branch 'autogen_fix_use_after_move' into release-3.15
Merge-request: !3745
2019-08-27 10:25:53 -04:00
Sebastian Holtermann
e32f70036c Autogen: Fix AUTOUIC segfault, when file includes colliding ui_*.h file
This fixes a case of use after move of a `std::shared_ptr` in `AUTOUIC`.

It triggered a segfault, when the error message for colliding `ui_*.h`
includes in different files was computed.
2019-08-27 10:17:33 -04:00
Brad King
1d68639654 Merge branch 'alpine-cpu_zero' into release-3.15
Merge-request: !3740
2019-08-27 10:11:37 -04:00
Brad King
6157c0fe84 Merge branch 'cmGlobalGenerator-compilerId-lifetime' into release-3.15
Merge-request: !3741
2019-08-27 10:11:29 -04:00
Brad King
b0566f62eb Merge branch 'ninja_additional_clean_files_custom_target' into release-3.15
Merge-request: !3739
2019-08-27 10:11:06 -04:00
Brad King
1902e39746 cmAffinity: Add include for CPU_ZERO on Alpine Linux
The definition of `CPU_ZERO` requires `<string.h>` to be included
explicitly for `memset`.  Since IWYU does not agree on other Linux
platforms, use a pragma to silence the warning.

Fixes: #19643
2019-08-27 09:32:32 -04:00
Brad King
17ce0c29ad cmGlobalGenerator: Fix CheckCompilerIdCompatibility local var lifetime
Save the value of the compiler id variable in storage we own so that
mutating it based on a policy does not invalidate the local value for
later comparisons.  This was identified by Clang AddressSanitizer.
2019-08-26 10:28:32 -04:00
Sebastian Holtermann
3ed8cffe73 Ninja: Add support for ADDITIONAL_CLEAN_FILES in custom targets
This enables the support for `ADDITIONAL_CLEAN_FILES` in custom targets
using the ninja generator.

Fixes: #19641
2019-08-26 09:31:03 -04:00
Brad King
290ab79f61 Merge branch 'ctest-json-REQUIRED_FILES' into release-3.15
Merge-request: !3719
2019-08-22 15:09:49 -04:00
Brad King
5778880d20 CTest: Fix --show-only=json-v1 output with REQUIRED_FILES property
Fixes: #19629
2019-08-22 15:07:43 -04:00
M Furkan USLU
154c5f7949 ccmake: handle cache entries with empty STRINGS property
Fixes: #19585
2019-08-20 08:48:09 -04:00
Brad King
40bbe50e23 CMake 3.15.2 2019-08-07 12:44:19 -04:00
Brad King
9a384e7304 Merge branch 'find_package-prefer-config-not-found' into release-3.15
Merge-request: !3653
2019-08-06 09:43:25 -04:00
Cristian Adam
8ed868606d find_package: Fix prefer-config mode to not fail on missing optional package
When `CMAKE_FIND_PACKAGE_PREFER_CONFIG` mode was set to `ON`, failure to
find a package was fatal even if it was not `REQUIRED`.  Fix this and
add a test case.

Fixes: #19557
2019-08-06 09:36:36 -04:00
Brad King
edca8d5c3a Merge branch 'fileapi-install-generators' into release-3.15
Merge-request: !3639
2019-08-02 11:06:22 -04:00
Brad King
d70a0f8681 fileapi: Fix codemodel target install destination for cross-dir rules
Since commit e89ad0f94e (install: Allow installing targets created in
another directory, 2018-06-18, v3.13.0-rc1~407^2) we support calling
`install(TARGETS)` for targets created in another directory.  However,
install generators are associated with the directory in which the call
to `install()` appears.  This may not be the same directory in which the
target is defined.  Record in each target the list of install generators
it has.

Fixes: #19546
2019-07-31 19:32:55 -04:00
Brad King
7d98cd0442 Merge branch 'source_group-tree-files' into release-3.15
Merge-request: !3630
2019-07-30 11:31:15 -04:00
Brad King
93af8a2583 source_group: Fix regression in relative FILES
Fix the check added in commit 8d93815d20 (source_group command ensures
that FILES arguments are actually files, 2019-04-25, v3.15.0-rc1~195^2)
to convert to an absolute path before checking for existence.

Also simplify the conversion to an absolute path.

Fixes: #19454
2019-07-30 11:29:58 -04:00
Brad King
4053d5737d Merge branch 'vs-spectre-off' into release-3.15
Merge-request: !3629
2019-07-30 11:20:59 -04:00
Brad King
f9b7c660d7 VS: Fix mapping of -Qspectre- flag
The mapping for this flag was added by commit 43aa632f57 (VS: Populate
`-Qspectre-` flag table entry for v142, 2019-01-24, v3.14.0-rc1~74^2~7).
However, it did not do anything because the special logic added by
commit bb60ed6e72 (VS: Add flag table entry for -Qspectre, 2018-10-08,
v3.13.0-rc1~4^2) to move the `SpectreMitigation` element from
`ClCompile` to the top level only handled the presence of the setting
and not its value.  Extend the special logic to carry the value too.

Fixes: #19535
2019-07-30 11:17:28 -04:00
Brad King
601fe84bd1 Swift: Restore support for enabling with INTERFACE libraries
The check added in commit b06f4c8a74 (Swift: disallow WIN32_EXECUTABLE
properties, 2019-05-31, v3.15.0-rc1~9^2) makes sense only for
executables because the `WIN32_EXECUTABLE` property is defined only for
them.  Running the check on other target types, particularly those that
do not link such as INTERFACE libraries, violates internal assumptions.
In particular, `GetLinkerLanguage` should not be called on such targets.

Fixes: #19528
2019-07-29 15:24:29 -04:00
Brad King
f43a7d76c7 CMake 3.15.1 2019-07-26 07:50:55 -04:00
Brad King
070a5e3835 Merge branch 'makefile-depend-relative-include' into release-3.15
Merge-request: !3599
2019-07-25 07:15:42 -04:00
Brad King
d46bac5d38 Makefile: Fix regression in dependencies on relative includes
Since commit a13a5c948e (Replace use of CollapseCombinedPath with
CollapseFullPath, 2019-03-19, v3.15.0-rc1~361^2~1), one code path now
calls `CollapseFullPath` with a base path that may be relative.
Backport KWSys commit c6f8e24a3 (SystemTools: Fix CollapseFullPath with
relative base path, 2019-07-24) to handle such base paths.

This case occurs when a build tree is placed in a directory inside a
source tree such that CMake is willing to generate a relative path from
the build tree to the source tree.  Add a test covering this case.

Fixes: #19507
2019-07-24 11:37:31 -04:00
Brad King
07b93cb185 Merge branch 'fix-emulator-arguments' into release-3.15
Merge-request: !3591
2019-07-23 08:38:57 -04:00
Marek Antoniak
bf6f5467a0 Fix allocation in CROSSCOMPILING_EMULATOR evaluation
In commit fec441ec17 (Teach CROSSCOMPILING_EMULATOR to support
arguments, 2019-05-30, v3.15.0-rc1~6^2) the new member
`cmCustomCommandGenerator::EmulatorsWithArguments` was not initialized
to the proper size.  Fix this and add a test case covering the crash
that could occur with multiple commands where an emulator appears only
in a later command.

Fixes: #19500
Co-Author: Brad King <brad.king@kitware.com>
2019-07-23 08:33:31 -04:00