6217 Commits

Author SHA1 Message Date
Brad King
cb733eb4a6 Merge branch 'vs-default-platform' into release-3.14
Merge-request: !3246
2019-04-19 07:59:28 -04:00
Brad King
db02be85a0 VS: Provide the default platform name to project code
The value of `CMAKE_VS_PLATFORM_NAME` is computed by Visual Studio
generators based on `CMAKE_GENERATOR_PLATFORM` or some default.
Prior to the VS 2019 generator, the default was always `Win32`.
However, for the `Visual Studio 16 2019` generator, the default is
based on the host platform.

Store the default in a new `CMAKE_VS_PLATFORM_NAME_DEFAULT` variable for
use by project code.  This is particularly useful in toolchain files
because they are allowed to set `CMAKE_GENERATOR_PLATFORM` and so
`CMAKE_VS_PLATFORM_NAME` is not yet known.  Of course the toolchain file
author knows whether it will set `CMAKE_GENERATOR_PLATFORM`, and if not
then `CMAKE_VS_PLATFORM_NAME_DEFAULT` provides the platform name that
will be used.

Fixes: #19177
2019-04-19 07:46:13 -04:00
Rolf Eike Beer
0b54f72e94 FindBoost: Fix detection with version suffixes on Gentoo
The Gentoo case added by commit 1673923c30 (FindBoost: Add support for
Boost 1.67 with Python version suffixes, 2018-03-18, v3.11.0~3^2) left
out the `.` version component separator and instead duplicated the RPM
case.  Add the missing `.` now.

Fixes: #18743
2019-04-16 13:31:27 -04:00
Brad King
7bad2464fc Merge branch 'xcode-extra-sources' into release-3.14
Merge-request: !3208
2019-04-11 10:35:49 -04:00
Brad King
428c1e429f Xcode: Avoid mutating App Bundle targets during generation
For `MACOSX_BUNDLE` targets we generate an `Info.plist` automatically
and add it to the sources presented to Xcode.  Avoid mutating the
original target's list of sources to achieve this.  Otherwise when we
generate the same target again (e.g. in a sub-project's Xcode file) it
will look different than the first time and possibly break invariants.

Fixes: #19114
2019-04-11 10:35:14 -04:00
Brad King
ef41d49812 Fix implicit include directory extraction for adaptive relative paths
In some cases GCC reports *relative* implicit include directories.  They
are computed adaptively with respect to the current working directory
such that the effective implicit include directory is an unchanging
absolute path.  Teach our implicit include directory extraction to
recognize such paths and normalize them.

Fixes: #19133
2019-04-08 10:12:22 -04:00
Brad King
6bc6fc2a7f Tests: Teach RunCMake.ParseImplicitIncludeInfo to match output by regex 2019-04-08 10:12:22 -04:00
Brad King
82948805ec Tests: Clarify hand-written cases in RunCMake.ParseImplicitIncludeInfo 2019-04-08 10:11:54 -04:00
Brad King
30159fe751 Merge branch 'implicit-includes' into release-3.14
Merge-request: !3157
2019-03-29 08:49:34 -04:00
Brad King
dad86f1873 ParseImplicitIncludeInfo: Canonicalize implicit include dirs
The implicit include directory extraction added by commit 5990ecb741
(Compute implicit include directories from compiler output, 2018-12-07,
v3.14.0-rc1~108^2) leaves paths like `/usr/lib/../include` unchanged.
Fix the logic to canonicalize such paths (e.g. to `/usr/include`)
as we do for implicit link directories already.  This is important
to ensure the set of implicit directories is represented in the same
form as the include directories that will be compared to them.

Issue: #19095
2019-03-29 08:48:56 -04:00
Brad King
97c163f5f7 Merge branch 'FindFontconfig-var-case' into release-3.14
Merge-request: !3153
2019-03-27 14:20:53 -04:00
Brad King
a3a1e69f8a FindFontconfig: Convert module variables to camel case
Our documented standard for find module variable names is to match the
case of the find module package name.  This was overlooked when the
module was added by commit 84e7920b3a (FindFontconfig: Add module to
find Fontconfig, 2018-09-27, v3.14.0-rc1~523^2).

The module was released with the upper case names in CMake 3.14.0, so
fix it to have camel case names in 3.14.1.  This is incompatible but
anyone using a given release series should be using the latest patch on
it and we've made breaking fixups on newly released features like this
before.

Reported-by: Christophe Giboudeaux <christophe@krop.fr>
Fixes: #19094
2019-03-26 14:14:09 -04:00
Brad King
588fa1bb9e Restore support for include_directories() in toolchain files
Any `include_directories()` calls in toolchain files are used during our
ABI detection step even though it does not include any system headers.
Since commit 5990ecb741 (Compute implicit include directories from
compiler output, 2018-12-07, v3.14.0-rc1~108^2), that check is also used
to detect implicit include directories.  Any `include_directories()` in
a toolchain file are detected as implicit and later excluded from
explicit specification on compiler command lines, thus breaking the
purpose of the calls in the first place.

Fix the implicit include directory detection step to avoid using paths
from `include_directories()` calls in the toolchain file.

Fixes: #19079
2019-03-25 11:48:17 -04:00
Brad King
c042c998d0 Merge branch 'install-no-imported-global' into release-3.14
Merge-request: !3071
2019-03-07 09:17:21 -05:00
Brad King
47389c5641 install: Do not crash on imported global target
Since commit e89ad0f94e (install: Allow installing targets created in
another directory, 2018-06-18, v3.13.0-rc1~407^2) the `install(TARGETS)`
command may find a global-scoped target outside the calling directory.
Ignore an `IMPORTED GLOBAL` target if it is found in this way.  Imported
targets cannot be installed, and trying to do so violates internal
invariants.

Fixes: #19022
2019-03-07 09:00:56 -05:00
Brad King
509a9409c3 Merge branch 'ios-variable' into release-3.14
Merge-request: !3051
2019-03-05 09:42:58 -05:00
Ruslan Baratov
e427c7c1d8 iOS: Add IOS variable
Since commit 11da882a12 (Apple: Introduce separate system name for iOS,
tvOS, and watchOS, 2018-01-15, v3.14.0-rc1~14^2~1) we support setting
`CMAKE_SYSTEM_NAME` to `iOS`.  Existing iOS toolchain files already
set `IOS` as a short-hand variable, so do the same here.
2019-03-05 09:42:41 -05:00
Brad King
5c0ef417b8 Merge branch 'FindPython-NumPy-fix-include-dir' into release-3.14
Merge-request: !3053
2019-03-04 08:28:56 -05:00
Marc Chevrier
8e3358336d FindPython: Fix NumPy component include directory
Update the component added by commit 513e77550d (FindPython: Introduce
NumPy component, 2018-12-12, v3.14.0-rc1~95^2).  The `numpy/`
sub-directory should not be part of the include directory.  It should be
part of the `#include` line.
2019-03-04 08:28:21 -05:00
Brad King
0b82f56ac6 VS: Fix Fortran target type selection with RC sources
The Intel Fortran `.vfproj` files do support both Fortran and the
Windows Resource compiler (`.rc)` files.  Prior to CMake 3.9 we did not
support that, but commit 2c9f35789d (VS: Decide project type by linker
lang as fallback, 2017-03-30, v3.9.0-rc1~340^2) accidentally enabled it.
It was then broken by commit d3d2c3cd49 (VS: Fix Fortran target type
selection when linking C++ targets, 2019-02-04, v3.14.0-rc1~13^2).

Restore support for Fortran+RC in VS projects and add a test case.

Fixes: #19002
2019-03-01 11:58:21 -05:00
Brad King
f369d59cdd Merge branch 'cmake_role-vs-fix' into release-3.14
Merge-request: !3028
2019-02-27 08:05:55 -05:00
Brad King
e994e1f9cd Merge branch 'FindOctave-remove' into release-3.14
Merge-request: !3027
2019-02-27 07:57:03 -05:00
Brad King
4570b5ae91 Merge branch 'restore-min-cmake-3.1' into release-3.14
Merge-request: !3021
2019-02-27 07:54:49 -05:00
Kyle Edwards
4b95e7fe63 CMAKE_ROLE: Fix value in --build for Visual Studio generators
Fixes: #18990
2019-02-26 14:52:17 -05:00
Brad King
7a1f3fe041 FindOctave: Remove module pending further work
The `FindOctave` module added by commit 170bcb6fdc (FindOctave: Add
module to find GNU octave, 2018-11-17, v3.14.0-rc1~283^2) has a few
problems in its implementation that need to be worked out before the
module can be included in a CMake release.  These were missed during
review.  Remove the module for now.  It can be restored later with a
fresh review.

Issue: #18991
2019-02-26 14:12:34 -05:00
Brad King
a0d4430d66 Tests: Restore support for CMake 3.1 through 3.6 with MSVC
The change in commit a5dd159990 (Tests: Fix RunCMake.try_compile
CxxStandard case on MSVC, 2017-09-22, v3.10.0-rc1~63^2) introduced use
of `if()` conditions not supported until CMake 3.7, so while it was
intended to restore support for CMake versions prior to 3.9, it actually
only did so for 3.7 and 3.8.  Backport the logic to work with CMake 3.1.

Fixes: #18987
2019-02-26 07:35:24 -05:00
Craig Scott
d3b765d451 EXCLUDE_FROM_ALL: Don't warn if installing target excluded from all
The original warning pre-dates support for install components.
There are now legitimate scenarios where an install(TARGETS)
command may list a target that is excluded from all, e.g.
hierarchical projects that will never install the component such a
target belongs to.

Fixes: #18938
2019-02-22 07:55:56 +11:00
Brad King
113a395ee7 Merge branch 'try_compile-expand-compile-defs' into release-3.14
Merge-request: !2965
2019-02-15 06:47:59 -05:00
Brad King
cde2596a19 try_compile: Restore expansion of ;-list in COMPILE_DEFINITIONS
The quoting added by commit 8c5221fb1f (try_compile: Preserve special
characters in COMPILE_DEFINITIONS, 2019-01-21, v3.14.0-rc1~108^2~3)
broke the case that the `COMPILE_DEFINITIONS` value contains a `;`.
Without the quoting the `;` would be generated literally in an unquoted
argument in the test `CMakeLists.txt` file and would then be expanded.
With quoting the `;` is preserved, which is not the old behavior.

Fix this by expanding the `;`-list ahead of time.  Add test cases for
behavior with both `#` and `;`.

This was noticed with the PGI compiler where we set
`CMAKE_CXX*_STANDARD_COMPILE_OPTION` to values like `--c++17;-A`.  The
symptom had also been observed while preparing commit ef8f237686
(ParseImplicitIncludeInfo: add SunPro Fortran and PGI compiler, Cray
fix, 2019-01-29, v3.14.0-rc1~26^2~2) but was not recognized at the time
as a regression.  Revert the workaround added by that commit.

Fixes: #18919
2019-02-15 06:21:19 -05:00
Brad King
1c4570e22e Merge branch 'genex-GENEX_EVAL-fix-recursion' into release-3.14
Merge-request: !2954
2019-02-13 08:37:38 -05:00
Marc Chevrier
e429e9af42 genex: Fix erroneous handling of recursion for $<GENEX_EVAL:>
Fixes: #18894
2019-02-13 08:37:02 -05:00
Brad King
633b3145c0 Merge branch 'FindOctave-interp-target' into release-3.14
Merge-request: !2931
2019-02-11 08:06:38 -05:00
Peter Stroia-Williams
6725975bd8 FindOctave: Add target for octinterp
This change adds the Octave::Octinterp target to make the octinterp
library available without users having to resort to using the
Octave_INTERP_LIBRARY variable.
2019-02-08 20:34:30 +00:00
Brad King
88031dd09a Merge branch 'ghs-updates' into release-3.14
Merge-request: !2943
2019-02-08 14:02:14 -05:00
Brad King
3b58b647ae Merge branch 'fix-exclude-dir-with-iface' into release-3.14
Merge-request: !2937
2019-02-08 14:02:03 -05:00
Fred Baksik
bcd99fac60 GHS: Document usage of GHS_NO_SOURCE_GROUP_FILE
-- Also change variable name to CMAKE_GHS_NO_SOURCE_GROUP_FILE
2019-02-08 13:07:00 -05:00
Brad King
f87e724e8c Fix EXCLUDE_FROM_ALL on directory with an interface library
Since commit dc6888573d (Pass EXCLUDE_FROM_ALL from directory to
targets, 2019-01-15, v3.14.0-rc1~83^2) we automatically forward the
`EXCLUDE_FROM_ALL` to targets as they are created.  This regressed
support for interface libraries on which the property is not allowed.

Skip forwarding the `EXCLUDE_FROM_ALL` property for interface libraries.
It is not needed on them because they do not participate in the
generated build system anyway.

Fixes: #18896
2019-02-08 08:17:48 -05:00
Wil Stark
822697996e VS: Fix nowarn compiler option to accept warning numbers.
Warning disables are transferred to the VS IDE `<NoWarn>` node.

Fixes: #18878
2019-02-07 06:39:45 -05:00
Brad King
d6729505cb Merge topic 'relax_CUDA_RESOLVE_DEVICE_SYMBOLS_constraints'
850ef90a66 CUDA: Honor CUDA_RESOLVE_DEVICE_SYMBOLS for more target types

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Robert Maynard <robert.maynard@kitware.com>
Merge-request: !2900
2019-02-06 06:51:30 -05:00
Robert Maynard
850ef90a66 CUDA: Honor CUDA_RESOLVE_DEVICE_SYMBOLS for more target types
`CUDA_RESOLVE_DEVICE_SYMBOLS` can be used with shared, module, and
executable target types.  This relaxation is to allow for better
interoperability with linkers that automatically do CUDA device symbol
resolution and have no way to disable it.
2019-02-05 11:09:48 -05:00
Sebastian Holtermann
1f802295f2 Autogen: Extend the SameName test with same name but different extension files 2019-02-05 15:51:53 +01:00
Brad King
c6d679f0d9 Merge topic 'vs-fortran-target-check'
d3d2c3cd49 VS: Fix Fortran target type selection when linking C++ targets

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2913
2019-02-05 07:36:36 -05:00
Brad King
c03072f2f7 Merge topic '17870-iphone-friendly-cmake'
e8ee8cab97 Xcode: Completely disable code signing for compiler id detection
11da882a12 Apple: Introduce separate system name for iOS, tvOS, and watchOS
36cf44a7a3 Tests: Isolate RunCMake.XcodeProject per-device cases from host arch

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2392
2019-02-05 07:33:04 -05:00
Brad King
d3d2c3cd49 VS: Fix Fortran target type selection when linking C++ targets
Since commit 2c9f35789d (VS: Decide project type by linker lang as
fallback, 2017-03-30, v3.9.0-rc1~340^2) we consider the linker language
when detecting whether to generate a `.vfproj` or `.vcxproj` file.
However, this could cause C-only projects to become `.vfproj` files if
they link to Fortran projects.  Instead we should consider only the
`LINKER_LANGUAGE` property on the target itself.  This approach is
already used for CSharp.  It allows project code to specify the project
file type for a target with no sources but does not allow linked targets
to affect it.

Fixes: #18687
2019-02-04 14:13:46 -05:00
Brad King
96dece6dc1 Xcode: Update default Swift language version for Xcode 10.2
Xcode 10.2 no longer supports Swift language versions before 4.0.

Fixes: #18871
2019-02-04 13:26:10 -05:00
Gregor Jasny
11da882a12 Apple: Introduce separate system name for iOS, tvOS, and watchOS
- Remove code signing requirements for non-macOS
- Do not set deployment target for non-macOS
- Build static library for compiler feature detection for non-macOS
- Use framework to run CompilerId tests for watchOS
- Port tests to new SDK handling
- Add new Apple cross-compiling section to toolchain documentation

Closes: #17870
2019-02-04 09:03:35 -05:00
Brad King
36cf44a7a3 Tests: Isolate RunCMake.XcodeProject per-device cases from host arch
Run all host cases before per-device cases.  Do not expose the host
`CMAKE_OSX_ARCHITECTURES` environment value to the per-device tests.
2019-02-04 09:02:47 -05:00
Brad King
a5ec7f868f Merge topic 'vs-wince-deployment'
f5d72be57a VS: Fix deployment for WinCE projects

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2907
2019-02-04 07:49:01 -05:00
Brad King
40e1288260 Merge topic 'winrtrefs'
cff026dbc0 VS: Fix WinRT component references
6c21722adb Tests: Fix VSWinStorePhone test with Windows 10 SDK 17763

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2906
2019-02-04 07:47:15 -05:00
Brad King
dc4a2749a5 Merge topic 'set-env-warning'
cb01b8c8ba set: warn of extra arguments after ENV value.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !2903
2019-02-04 07:46:29 -05:00