Commit Graph

6636 Commits

Author SHA1 Message Date
Kyle Edwards 9ab15fa74a Merge topic 'cmRemoveQuotes'
27090096ef cmStringAlgorithms: Add cmRemoveQuotes

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3665
2019-08-13 09:52:23 -04:00
Brad King 1a901ed09e Merge topic 'fphsa-components-space'
e45187d525 FPHSA: Remove extra space in module components report

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Alex Turbov <i.zaufi@gmail.com>
Merge-request: !3655
2019-08-09 10:28:45 -04:00
Sebastian Holtermann 27090096ef cmStringAlgorithms: Add cmRemoveQuotes
- Add `cmRemoveQuotes` function to cmStringAlgorithms
- Remove unused removeQuotes inline functions
2019-08-09 12:20:50 +02:00
Brad King ddb1759b3e Merge topic 'cmStringAlgorithms_move_functions'
959b97a27f Tests: testStringAlgorithms: Add cmTrimWhitespace, cmEscapeQuotes, cmTokenize
7fbcc16dcd cmStringAlgorithms: cmIsSpace, cmTrimWhitespace, cmEscapeQuotes, cmTokenize

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3647
2019-08-07 11:47:54 -04:00
Brad King ce14f6c677 Merge topic 'find_package-prefer-config-not-found'
8ed868606d find_package: Fix prefer-config mode to not fail on missing optional package

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3653
2019-08-07 09:57:35 -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
Sylvain Joubert e45187d525 FPHSA: Remove extra space in module components report 2019-08-06 12:42:06 +02:00
Brad King e0f735f8f5 Merge topic 'shared-deps-no-iface'
d75cad01f0 Fix rpath-link for shared lib with only private deps
4b2e1fc9ee cmGeneratorTarget: Use local var to de-duplicate CMP0022 checks
94648953be cmLinkItem: Simplify tracking of whether link interface is explicit

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3642
2019-08-05 10:37:47 -04:00
Brad King 7eb2fd6ca6 Merge topic 'fileapi-install-generators'
d70a0f8681 fileapi: Fix codemodel target install destination for cross-dir rules

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3639
2019-08-05 10:20:27 -04:00
Sebastian Holtermann 959b97a27f Tests: testStringAlgorithms: Add cmTrimWhitespace, cmEscapeQuotes, cmTokenize
Extend the testStringAlgorithms test with tests for `cmTrimWhitespace`,
`cmEscapeQuotes` and `cmTokenize`.
2019-08-05 11:25:30 +02:00
Brad King d75cad01f0 Fix rpath-link for shared lib with only private deps
Under CMP0022 NEW behavior, the link interface is explicit even if there
are no public dependencies (`INTERFACE_LINK_LIBRARIES` is not set).
Mark it as such to activate our tracking of private runtime dependencies
of shared libraries for generation of `-rpath-link` flags.

Fixes: #19556
2019-08-02 14:50:57 -04:00
Sebastian Holtermann 4aa555f9da Tests: Add CMakeLib.testStringAlgorithms test 2019-08-01 11:45:04 +02: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 ac7ac46fce Merge topic 'FindPythonInterp-no-version-verify'
800c3ab2e0 FindPythonInterp: Document lack of version filtering for plain `python`

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Rolf Eike Beer <eike@sf-mail.de>
Merge-request: !3631
2019-07-31 11:45:38 -04:00
Brad King cb88632790 Merge topic 'vs-spectre-off'
f9b7c660d7 VS: Fix mapping of `-Qspectre-` flag

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3629
2019-07-31 11:41:37 -04:00
Brad King 800c3ab2e0 FindPythonInterp: Document lack of version filtering for plain python
Also drop the `CMakeOnly.MajorVersionSelection-PythonInterp_2` test
because some environments now have a plain `python` executable for
Python 3.

Fixes: #19536
2019-07-30 12:09:43 -04:00
Brad King e4193adf29 Merge topic 'swift-with-interface-libs'
601fe84bd1 Swift: Restore support for enabling with INTERFACE libraries

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Wanderley Guimarães da Silva <wanderley.guimaraes@gmail.com>
Acked-by: Guillaume Egles <gegles@gmail.com>
Merge-request: !3624
2019-07-30 11:38:35 -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 f22a2a1fa5 Merge topic 'CheckCXXSymbolExists-c++-syntax'
72fcadb007 CheckCXXSymbolExists: Make C++-syntax symbols work on more compilers

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3545
2019-07-29 11:50:42 -04:00
Brad King 23503ba5f0 Merge topic 'android-ndk-r19'
97bca2f9fa Android: Use unified toolchain in NDK r19+
19f36c5fb2 Android: Update test to not require GCC compiler to exist in NDK
f3e32ddae9 Android: Re-order system initialization to select sysroot last
9a0720b819 Android: Clarify name of internal variable for arch triple
4e6c58d937 Android: Select NDK host tag while determining system

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3612
2019-07-29 11:48:33 -04:00
Brad King 08cd8ef5ee Merge topic 'test-cleanup-src-dir'
d1aa9f307e Tests: Remove stray source dir modification in RunCMake.find_program

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3610
2019-07-29 11:47:30 -04:00
Hong Xu 72fcadb007 CheckCXXSymbolExists: Make C++-syntax symbols work on more compilers
On some compilers the syntax `#ifndef std::fopen` will always lead to
compilation error.  Avoid generating it in the check.
2019-07-26 15:09:28 -04:00
Brad King 97bca2f9fa Android: Use unified toolchain in NDK r19+
The NDK build system now uses only a single toolchain in

    <ndk>/toolchains/llvm/prebuilt/<host>

Its compilers are always `bin/{clang,clang++}` and its binutils are
always `bin/<triple>-*`.  It is a standalone toolchain:

* The Anrdoid API level is specified at the end of `--target=`.
* The standard library may be specified via `-stdlib=`.
* No need to pass system includes or libraries explicitly.
* No need to pass `--sysroot` or `-gcc-toolchain`.

Teach CMake to recognize NDK versions that have a unified
toolchain with its own sysroot and use the above approach.

Fixes: #18739
2019-07-26 14:17:07 -04:00
Brad King 19f36c5fb2 Android: Update test to not require GCC compiler to exist in NDK 2019-07-26 14:17:07 -04:00
Kyle Edwards 8fd481a899 Merge topic 'ep_support_no_submodule_init'
d6be117ca0 ExternalProject: Support not initializing any submodules

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3579
2019-07-26 12:02:34 -04:00
Brad King d1aa9f307e Tests: Remove stray source dir modification in RunCMake.find_program
Since commit c76c1ea208 (find_program: Consider CWD only for paths with
separator, 2018-05-31, v3.13.0-rc1~413^2) this test has created a
directory in the source tree unnecessarily.  Remove it.
2019-07-26 09:53:25 -04:00
Jiang Yue f08dcbffec Property: Add INSTALL_REMOVE_ENVIROMENT_RPATH property 2019-07-25 12:30:23 -04:00
Brad King c173ed1184 Merge topic 'makefile-depend-relative-include'
d46bac5d38 Makefile: Fix regression in dependencies on relative includes

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3599
2019-07-25 07:20:09 -04:00
Brad King 6e0d92cc53 Merge topic 'clang-gnulike-support'
a4657ef670 Merge branch 'backport-clang-gnulike-support' into clang-gnulike-support
161b33f12b Help/guide/tutorial: Revert "require C++14 for the Tutorial"
4f15a6a5c2 Tests: Revert "require C++14 for the Tutorial"
5cfc39127e Merge branch 'backport-clang-gnulike-support' into clang-gnulike-support
d50b31be35 Clang: For MSVC ABI do not use modes older than C++14

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3592
2019-07-25 07:17:22 -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 156f4c2f80 Merge topic 'find_pkg_use_new_global_controls'
609fe39043 FindPackage:  Support `NO_[]_PATH` global call options
ff29c92df6 Tests: find_file restore PATH env variable after test runs

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3590
2019-07-24 11:55:03 -04:00
Brad King 47777942a5 Merge topic 'math_exp_not'
d427f12b73 math(EXPR): Implement ~(exp_NOT) expression as documented

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3582
2019-07-24 11:53:54 -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
Robert Maynard d6be117ca0 ExternalProject: Support not initializing any submodules
Fixes #15592
2019-07-24 09:36:30 -04:00
Brad King 3a3e59617a Merge topic 'fix-emulator-arguments'
bf6f5467a0 Fix allocation in CROSSCOMPILING_EMULATOR evaluation

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3591
2019-07-24 08:16:10 -04:00
Brad King 420073e536 Merge branch 'backport-clang-gnulike-support' into release-3.15
Merge-request: !3592
2019-07-24 08:12:51 -04:00
Brad King 4f15a6a5c2 Tests: Revert "require C++14 for the Tutorial"
Revert commit a2a90f41e3 (Tests: require C++14 for the Tutorial,
2019-03-21, v3.15.0-rc1~41^2~2).  In commit d50b31be35 (Clang: For MSVC
ABI do not use modes older than C++14, 2019-07-23) we fixed the C++
standard selection for GNU-like Clang with the MSVC ABI so the test code
itself no longer needs to do it.  In particular, changing the tests in
this way broke the tutorial's narrative.
2019-07-24 08:02:37 -04:00
Brad King 5cfc39127e Merge branch 'backport-clang-gnulike-support' into clang-gnulike-support 2019-07-24 08:00:53 -04:00
Brad King d50b31be35 Clang: For MSVC ABI do not use modes older than C++14
Since commit d44c0db0b2 (clang: setup correct configuration in gnu mode,
2019-02-20, v3.15.0-rc1~41^2~5) we support the GNU-like Clang that
targets the MSVC ABI.  However, Clang cannot compile with the MSVC
standard library unless it runs in a mode aware of C++14 (since MSVC
itself does not even have a lower mode).  When `CMAKE_CXX_STANDARD` is
set to 98 or 11, use C++14 anyway.

Since Clang's default mode is aware of C++14, another option is to not
add any flags for 98 or 11.  However, if a future Clang version ever
defaults to a higher C++ standard, setting the standard to 98 or 11
should at least not use a mode higher than 14.

Also revert test updates from commit 4819ff9647 (Tests: fix failures
with gnu mode clang on windows, 2019-03-21, v3.15.0-rc1~41^2~3) that
were meant to work around the standard selection problem.

Fixes: #19496
2019-07-24 07:40:30 -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
Gabor Bencze d427f12b73 math(EXPR): Implement ~(exp_NOT) expression as documented
Fixes: #19252
2019-07-23 07:33:50 -04:00
Brad King 5396c5fce4 Merge topic 'make-imported-targets-more-equal'
680a3c63bb target_*: Allow setting INTERFACE properties of UNKNOWN IMPORTED targets
62b5d1e4ad cmTargetPropCommandBase: Order target type condition by order in enum

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3581
2019-07-23 07:30:53 -04:00
Robert Maynard 609fe39043 FindPackage: Support NO_[]_PATH global call options 2019-07-22 17:17:02 -04:00
Robert Maynard ff29c92df6 Tests: find_file restore PATH env variable after test runs 2019-07-22 17:17:02 -04:00
Avraham Shukron 680a3c63bb target_*: Allow setting INTERFACE properties of UNKNOWN IMPORTED targets
Extend the change made by commit fe4b25ec2f (Teach target_* commands to
set INTERFACE properties of IMPORTED targets, 2017-09-18,
v3.11.0-rc1~433^2~2) to work with imported targets of type `UNKNOWN`.

Fixes: #19434
2019-07-22 10:23:39 -04:00
Craig Scott 9e42075498 Merge topic 'cpack-install-scripts'
5f96601675 CPack: Introduce CPACK_INSTALL_SCRIPTS variable

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3531
2019-07-22 07:04:00 -04:00
Craig Scott f4131e4e1b Merge topic 'feature/message-indent'
5f6fd917a3 message(): Control indentation via CMAKE_MESSAGE_INDENT

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3464
2019-07-22 07:02:50 -04:00
Alex Turbov 5f96601675 CPack: Introduce CPACK_INSTALL_SCRIPTS variable
The singular name `CPACK_INSTALL_SCRIPT` has existed but was not linked
from the CPack documentation.  Also, it supported multiple values and
should have had a plural name.  Add a plural-named alternative now.
If both `CPACK_INSTALL_SCRIPTS` and `CPACK_INSTALL_SCRIPT` are set then
ignore the latter with a warning.

Signed-off-by: Alex Turbov <i.zaufi@gmail.com>
2019-07-22 02:01:44 +03:00
Alex Turbov 5f6fd917a3 message(): Control indentation via CMAKE_MESSAGE_INDENT 2019-07-21 10:19:30 +10:00