Commit Graph

29764 Commits

Author SHA1 Message Date
Brad King 0ecd9de6dd CMake 3.19.6 2021-02-24 10:08:43 -05:00
Kyle Edwards 431dd59b5e CMakePresets.json: Remove undocumented support for comments
Fixes: #21858
2021-02-24 09:28:36 -05:00
Brad King d5401de605 CMake 3.19.5 2021-02-15 11:48:33 -05:00
Brad King 33fa015b4a CTest: Restore running dashboard client Test step with modified files
Since commit 6a6f1d1edd (CTest: exit nonzero after
message(SEND_ERROR|FATAL_ERROR), 2020-04-03, v3.19.0-rc1~260^2), `ctest`
no longer runs tests if there are errors before the full set of tests is
defined.  Such errors were previously treated more like warnings.

The change exposed some cases where we were issuing an error message but
proceeding to run tests anyway.  The above commit downgraded one such
case (missing `DartConfiguration.tcl`) to a warning explicitly in order
to restore its former warning-like semantics.

Downgrade the Update step's diagnostic about modified or conflicting
files to a warning for the same reason.

Fixes: #21783
2021-02-09 11:05:08 -05:00
Brad King 263fd22fd8 Merge topic 'xcode12-ios_install_combined' into release-3.19
0110aa018d IOS_INSTALL_COMBINED: Support Xcode 12 (command line only)

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5785
2021-02-09 08:23:29 -05:00
Brad King 58167b3eb0 Merge topic 'lexer-posix-source' into release-3.19
a8b41e2c68 LexerParser: Do not override existing _POSIX_C_SOURCE definition
82cfeeb484 Merge branch 'backport-3.18-ci-wix-download' into release-3.18

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5776
2021-02-08 11:44:15 -05:00
Craig Scott 0110aa018d IOS_INSTALL_COMBINED: Support Xcode 12 (command line only)
Xcode 12 doesn't allow nested builds within the same build directory.
That means we can no longer do an install by building the install target
when IOS_INSTALL_COMBINED is true. We can, however, still do an install
by running the cmake_install.cmake script or executing cmake --install,
since there is no outer build and therefore the associated SDK can be
built as a sub-build.

The non-build methods previously didn't work when
IOS_INSTALL_COMBINED was true because the generated install script
and the CMakeIOSInstallCombined script both made certain assumptions
that relied on being part of a build. Those assumptions are now
removed. A side-effect of this work is that cpack now also works from the
command line when IOS_INSTALL_COMBINED is true.

Relates: #21282
Fixes: #20023
2021-02-08 18:02:46 +11:00
Brad King a8b41e2c68 LexerParser: Do not override existing _POSIX_C_SOURCE definition
In commit f034b0f663 (CMake compilation: do not use compiler extensions,
2020-03-14, v3.18.0-rc1~494^2) we explicitly defined `_POSIX_C_SOURCE`
to ensure availability of POSIX APIs even when compiler extensions are
not enabled.  Update the code to avoid redefining `_POSIX_C_SOURCE` if
it is already defined.  This occurs when building our release binaries
as configured in `Utilities/Release/linux`, where we define
`_POSIX_C_SOURCE` explicitly on the compiler command line.
2021-02-05 07:43:59 -05:00
Craig Scott 5389bb4274 Xcode: Don't hard-code SDK-provided implicit framework search paths
When a framework is linked to a target by its full path and that
framework is located in one of the implicit framework search directories,
CMake 3.18.5 and earlier discarded that path.
ce2dee9e5b (Xcode: Don't add framework as -framework argument in
linker info list, 2020-09-28) introduced a regression which resulted in
the framework path always being added to the search path even if it
matched one of the implicit search paths. This broke the ability to do
device and simulator builds from the same configured project.

Fixes: #21678
2021-02-03 23:11:21 +11:00
Craig Scott df08f8df30 cmComputeLinkInformation: Fix misspelt private variable name 2021-02-03 23:10:08 +11:00
Brad King 375b307bae Apple: Fix linking to frameworks that do not exist until build time
Fixes: #21621
2021-02-03 10:08:48 +11:00
Brad King 0c86d15459 CMake 3.19.4 2021-01-28 10:28:45 -05:00
Brad King 9d6e6b7d3b Merge topic 'vs-sdk-selection' into release-3.19
1e67482daf VS: Generalize Win10 max SDK version to all VS generators

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5721
2021-01-21 09:18:31 -05:00
jonathan molinatto 1e67482daf VS: Generalize Win10 max SDK version to all VS generators
The `CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM` variable added in
CMake 3.19 by commit ba497111f6 (VS: Add option for custom Win10 SDK
version maximum, 2020-08-20, v3.19.0-rc1~262^2) was documented as if it
worked for all generators but implemented only to override CMake's
builtin default for the VS 2015 max SDK version.  Generalize the
variable to set a custom max SDK version for later VS versions too.

Fixes: #21720
2021-01-20 14:46:34 -05:00
Bianca van Schaik 7e615a540e file(GET_RUNTIME_DEPENDENCIES): Fix weak macOS libraries not detected
Starting with Clang 12, `otool -l` reports `LC_LOAD_WEAK_DYLIB` instead
of `LC_LOAD_DYLIB` for weakly linked libraries.  Update the
implementation of `file(GET_RUNTIME_DEPENDENCIES)` to recognize these.

Fixes: #21684
2021-01-20 10:26:54 -05:00
Marc Chevrier 6cee4c6a8b Restore support for cross-compiling CMake itself
In commit eb583b0a66 (cmake_path command: path management, 2020-07-23,
v3.19.0-rc1~216^2~1) we added a `try_run`.  In cross-compilation mode,
C++ features tests must avoid running tests if there is no emulator
defined.
2021-01-18 12:23:23 -05:00
Brad King 19ff734e76 CMake 3.19.3 2021-01-13 07:58:18 -05:00
Brad King 4304767ae4 Merge topic 'trace_expand_bracket' into release-3.19
e6e7f2cab9 cmMakefile: Don't expand bracket arguments in --trace-expand

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5687
2021-01-12 10:20:26 -05:00
Kyle Edwards e20560a2dc cmake-gui: Restore linking of Qt resources
Refactoring in commit 41e223deb3 (CMake GUI: Split up into libraries,
add test shim, 2020-09-14, v3.19.0-rc1~116^2~2) broke linking of Qt
resources, such as the Add/Remove Entry button icons.

Fixes: #21682
2021-01-11 14:57:53 -05:00
Raul Tambre e6e7f2cab9 cmMakefile: Don't expand bracket arguments in --trace-expand
Bracket arguments are literal and shouldn't be expanded.

Fixes #21671.
2021-01-11 19:54:18 +02:00
Brad King fb79784136 Merge topic 'rel-macos-modern' into release-3.19
6410425e5b ci: build separate macOS packages for macOS 10.13+ and macOS 10.10+
bbec5a03c8 Utilities/Release: Add script to build Qt 5.15.2 macOS universal binaries
97e238f61b Utilities/Release: Fix macOS Qt 5.9 build script umask
2c5f30b472 cmake-gui: Fix macOS styling for binaries distributed with Qt 5.10+
3679b74a69 gitlab-ci: update upload jobs to go to cmake.org

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5672
2021-01-08 09:10:24 -05:00
Brad King 2c5f30b472 cmake-gui: Fix macOS styling for binaries distributed with Qt 5.10+
According to https://bugreports.qt.io/browse/QTBUG-59428, Qt 5.10 and
above moved macOS style handling into a separate `qmacstyle` plugin.
Install the plugin in our `CMake.app` package on macOS.

Issue: #21606
2021-01-07 16:10:07 -05:00
Brad King b8b6573db8 Xcode: Use deterministic object ids for script build phases
The Xcode "new build system" only considers a script build phase up to
date if it has run before, even if outputs are newer than inputs.  Use a
deterministic object id for script build phases associated with custom
commands so that they do not need to re-run after CMake re-generates the
project.

Fixes: #21669
2021-01-06 18:46:30 -05:00
Brad King 2892228dc9 cmGlobalXCodeGenerator: Add infrastructure for deterministic object ids 2021-01-06 16:24:12 -05:00
Brad King d250b67722 cmGlobalXCodeGenerator: Adopt pbxproj object id generation 2021-01-06 16:21:53 -05:00
Brad King 92021198e5 cmSystemTools: Revert use of MOVEFILE_WRITE_THROUGH by RenameFile on Windows
Revert commit d78c22aa64 (cmSystemTools: Improve RenameFile on Windows
with MOVEFILE_WRITE_THROUGH, 2020-08-25, v3.19.0-rc1~243^2~3).  Using
this flag causes the operation to fail frequently in some environments.
Drop it for now pending further investigation.

Fixes: #21571
2020-12-17 08:35:38 -05:00
Brad King 0932b1c2b2 CMake 3.19.2 2020-12-16 07:35:29 -05:00
Brad King 854f5ea1cb cmake-gui: Restore completion during path editing
Revert commit 0fc1818831 (QCMakeWidgets: replace QDirModel, 2020-06-15,
v3.19.0-rc1~696^2).  `QFileSystemModel` is not a drop-in replacement for
`QDirModel`.  Additional changes are needed to make it work fully.
Revert the change and suppress the `QDirModel` deprecation warning
pending further investigation.

Fixes: #21589
2020-12-15 08:40:13 -05:00
Brad King 7932e0a46e Merge topic 'ispc_control_header_suffixes' into release-3.19
c9a50f3556 ISPC: Generated Headers suffix configurable with a better default

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5597
2020-12-15 07:40:34 -05:00
Brad King 795c5fe239 Merge topic 'support_CMAKE_VFS_OVERLAY_for_rc_compilation' into release-3.19
18ee6d7e32 llvm-rc: Add CMAKE_VFS_OVERLAY to the preprocessing flags

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5604
2020-12-15 07:38:19 -05:00
Robert Maynard c9a50f3556 ISPC: Generated Headers suffix configurable with a better default
The target property `ISPC_HEADER_SUFFIX` and associated global
variable now can control the suffix used when generating the
C/C++ interoperability ISPC headers.

In addition the default suffix is now "_ispc.h" which matches the
common convention that the ISPC compiler team uses and recommends.
2020-12-14 13:13:09 -05:00
Thomas Bernard 18ee6d7e32 llvm-rc: Add CMAKE_VFS_OVERLAY to the preprocessing flags
Issue: #20658
2020-12-14 11:08:12 -05:00
Brad King 6c34835a26 Merge branch 'backport-ninja-no-cleandead' into release-3.18
Merge-request: !5614
2020-12-14 10:22:16 -05:00
Brad King 1144d25094 Merge branch 'backport-ninja-no-cleandead' into ninja-no-cleandead 2020-12-14 10:14:19 -05:00
Brad King 73a961eaba Ninja: Remove cleandead on regeneration
Remove the `cleandead` tool invocation added by commit fb18215904
(Ninja: clean ninja metadata once generated, 2019-05-13,
v3.17.0-rc1~207^2).  The tool deletes files that were not previously
deleted by regenerating the build system.  Also, there are use cases
where no-longer-generated files should not be removed, such as Qt's TS
files.

Fixes: #21549
2020-12-14 10:08:14 -05:00
Brad King 4cdf951f07 Merge topic 'install-properties' into release-3.19
63db7ae9c4 cmake: Clear INSTALL file properties between runs

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5603
2020-12-14 07:08:49 -05:00
Brad King 63db7ae9c4 cmake: Clear INSTALL file properties between runs
Do not keep state across separate project configurations.
This is particularly important in `cmake-gui` where those
configurations can be for separate projects.

Fixes: #21580
2020-12-11 12:30:27 -05:00
Asit Dhal e5a4ffaad1 execute_process: Improve COMMAND_ERROR_IS_FATAL error capture scenarios
1.  COMMAND_ERROR_IS_FATAL ANY will capture errors if the exit code is
    non zero, there is a timeout or an abnormal exit.

2.  COMMAND_ERROR_IS_FATAL LAST
    will capture if only the last process has an exit code non zero, there
    is a timeout or an abnormal exit.

Fixes: #21562
2020-12-10 06:09:59 -05:00
Brad King d00d5ac0cd Merge topic 'correct_ispc_path_computation' into release-3.19
9af93fef11 ISPC: Handle OBJECT sources in different directories
72ae15ebcb ISPC: Ninja properly compute ISPC_HEADER_DIRECTORY location

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5581
2020-12-08 10:17:33 -05:00
Robert Maynard 9af93fef11 ISPC: Handle OBJECT sources in different directories 2020-12-07 09:14:54 -05:00
Robert Maynard 72ae15ebcb ISPC: Ninja properly compute ISPC_HEADER_DIRECTORY location 2020-12-07 09:14:13 -05:00
Raul Tambre fcabf4a47e macOS: Add architecture flags only for native ASM dialect
ASM dialects like NASM have languages names such as ASM_NASM.
However such ASM dialects don't support the architecture flags, so match only
the full name.

Fixes #21553.
2020-12-04 17:29:14 +02:00
Brad King dd1f26e22e Merge topic 'export-namelink' into release-3.19
38bcb5c0a3 export: Do not fail generation for separate namelink only case

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5556
2020-12-02 09:17:50 -05:00
Brad King b76013b515 Merge topic 'ninja-regen-metadata' into release-3.19
73d1c78bf4 ci: update to use ninja 1.10.2
11f4259362 Ninja: Clean metadata after regen during build on Windows with 1.10.2+

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5555
2020-12-01 09:29:11 -05:00
Deniz Bahadir 38bcb5c0a3 export: Do not fail generation for separate namelink only case
Update the change from commit 64690f6df0 (export: Do not fail generation
for namelink-only case, 2020-10-09, v3.19.0-rc1~7^2) to also handle
separate namelink-only and namelink-skip calls.

Fixes: #21529
2020-12-01 07:35:17 -05:00
Brad King 11f4259362 Ninja: Clean metadata after regen during build on Windows with 1.10.2+
Ninja 1.10.2 fixes support for `generator = 1` rules that run metadata
update commands during regeneration while a build is running.  Update
the condition added by commit ccaa0bccc4 (Ninja: Do not clean metadata
when re-generating inside a running build, 2020-01-27,
v3.17.0-rc1~73^2) to remove our workaround when Ninja is new enough.

Fixes: #20274
2020-11-30 14:57:48 -05:00
Cristian Adam 35432aabda PCH: Fix compiler errors on iOS multi-arch using Ninja Multi-Config
Fixes: #21401
2020-11-30 13:31:51 -05:00
Stephen Kelly 34f6d76755 QNX: Do not disable compiler extensions for CMake itself
The `set(CMAKE_CXX_EXTENSIONS FALSE)` option has the effect of passing
compile option `-std=c++NN` instead of `-std=gnu++NN`.  On some
platforms, the latter form (or the secondary effects that it has, such
as setting _XOPEN_SOURCE) is required.  This typically affects platforms
such as mingw, cygwin and QNX.  The GNU-like compiers default to
`-std=gnu++NN`, which means that users can typically build source code
on those platforms by default.

While the `set(CMAKE_CXX_EXTENSIONS FALSE)` option was set here in
commit f034b0f6 (CMake compilation: do not use compiler extensions,
2020-03-14), the other changes in that commit added `#defines` which
become required in the absense of use of `-std=gnu++NN`.  However, only
platforms regularly tested in the cmake dashboard were ported, as is
reasonable.  That made CMake fail to compile on QNX and perhaps other
platforms which for which no one is submitting regular testing to the
cmake dashboard.

Make the `set(CMAKE_CXX_EXTENSIONS FALSE)` option conditional on non-QNX
to restore the QNX build.

Issue: #21503
2020-11-25 10:17:29 -05:00
Brad King 64fb825438 CMake 3.19.1 2020-11-24 08:50:26 -05:00
Brad King 1f1d705154 Merge topic 'policy-cmp0111-iface' into release-3.19
54ef732b0c cmVisualStudio10TargetGenerator: Avoid GetFullPath on INTERFACE library
f06f4b517c cmTarget: Do not enforce CMP0111 on imported INTERFACE libraries
43c95df8fb Tests: Match RunCMake.CMP0111 stderr more strictly

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5530
2020-11-24 08:43:22 -05:00