Commit Graph

44363 Commits

Author SHA1 Message Date
Brad King
eb5ea5a505 CMakeVersion: Use '-rc0' version suffix on release branches prior to rc1
Revert the change from commit 7b354baad5 (CMakeVersion: Set
CMake_VERSION_RC to 0 even in non-rc versions, 2019-07-25) and instead
define a `0` value in `CMake_VERSION_RC` to mean `-rc0`.  This
distinguishes release branch versions prior to the first release
candidate from the first release candidate itself.  It also makes room
for a dedicated "CMake $major.$minor.0-rc1" release commit for `-rc1` as
we have for later release candidates and final releases.
2019-07-26 08:08:30 -04:00
Brad King
d9156c387c Merge branch 'release-3.15' 2019-07-26 07:37:55 -04:00
Brad King
8df10447a1 Merge topic 'doc-relnotes-3.15'
3b113cc131 Help: Add 3.15.1 release notes

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3608
2019-07-26 07:37:19 -04:00
Brad King
52ea0c4676 Merge topic 'optimize-usage-requirements'
1d3841b600 Genex: Memoize usage requirement TARGET_PROPERTY existence
b5460f9931 cmLinkItem: Expose HadHeadSensitiveCondition in cmLinkInterfaceLibraries
ad2b3a32d1 Genex: Optimize build setting TARGET_PROPERTY evaluation
11fa818ecd Genex: Optimize usage requirement TARGET_PROPERTY recursion
0239bf8ac8 Genex: In TARGET_PROPERTY check for usage reqs in link libs earlier
7caebeb0e4 Genex: Re-order TARGET_PROPERTY logic to de-duplicate checks
b2785a0fbd Genex: Move TARGET_PROPERTY linked targets evaluation to end

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Cristian Adam <cristian.adam@gmail.com>
Merge-request: !3589
2019-07-26 07:33:27 -04:00
Brad King
467e6ac728 Merge topic 'definitions_string_view'
e91bfe440c cmMakefile: Let AddDefinition accept a value as cm::string_view
f2ba968ef2 cmMakefile: Simplify and rename AddDefinitionBool
9b5cc42531 cmDefinitions: Remove const char* based Set method
e268840c0a cmDefinitions: Add Unset and cm::string_view based Set methods
451fd329a8 cmDefinitions: Cleanups

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3577
2019-07-26 07:32:18 -04:00
Brad King
c23c4ed9cf Merge topic 'IsON_IsOFF_string_view'
4ff0bb054b cmSystemTools: Make IsInternallyOn, IsON and IsOff cm::string_view based
65d3ea2c7f cmAlgorithms: Make cmHasLiteral{Prefix,Suffix} cm::string_view based

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3598
2019-07-26 07:30:45 -04:00
Brad King
9f23c91919 Merge topic 'update-kwsys'
aff019f7a4 Merge branch 'upstream-KWSys' into update-kwsys
780d9e070b KWSys 2019-07-25 (a24a6acb)

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3602
2019-07-26 07:29:21 -04:00
Brad King
c9af23d2a1 Merge topic 'variable-typo'
94f536b935 cmCTestHandlerCommand: fix typo of local variable

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3600
2019-07-26 07:28:09 -04:00
Brad King
838278f4ba Merge branch 'doc-relnotes-3.15' into release-3.15
Merge-request: !3608
2019-07-26 07:25:33 -04:00
Brad King
3b113cc131 Help: Add 3.15.1 release notes 2019-07-26 07:18:09 -04:00
Brad King
ea2b488fec Merge branch 'release-3.15' 2019-07-26 07:13:12 -04:00
Brad King
f54c9f6cc3 Merge topic 'FindMPI-link-flags'
cf04da7e70 FindMPI: make sure computed link flags are not de-duplicated

Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: Ben Boeckel <ben.boeckel@kitware.com>
Tested-by: Robert Maynard <robert.maynard@kitware.com>
Acked-by: Axel Huebl <axel.huebl@plasma.ninja>
Merge-request: !3605
2019-07-26 07:12:08 -04:00
Kitware Robot
7feece688d CMake Nightly Date Stamp 2019-07-26 00:01:24 -04:00
Brad King
693a9b382a Merge branch 'FindMPI-link-flags' into release-3.15
Merge-request: !3605
2019-07-25 13:09:25 -04:00
Robert Maynard
cf04da7e70 FindMPI: make sure computed link flags are not de-duplicated
In commit f7eaa342de (FindMPI: Store imported target link flags as a
list instead of a string, 2019-06-14, v3.15.0-rc2~2^2) we used
`separate_arguments` to parse the extracted link flags and add them to
`INTERFACE_LINK_LIBRARIES`.  That property is not meant for link flags
and CMake may de-duplicate them.  This is particularly problematic for
flags like `-Wl,-rpath -Wl,/path1 -Wl,-rpath -Wl,/path2`.

In commit 39c572c9c9 (FindMPI: Updated to use INTERFACE_LINK_OPTIONS,
2019-06-24) we moved the parsed flags over to `INTERFACE_LINK_OPTIONS`,
but that may still perform de-duplication.  Avoid the parsing and
de-duplication of flags by passing the original string via `SHELL:`
instead.

Fixes: #19516
2019-07-25 12:59:21 -04:00
Brad King
579e27ec97 Merge topic 'cmake-version-rc'
7b354baad5 CMakeVersion: Set CMake_VERSION_RC to 0 even in non-rc versions

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3603
2019-07-25 09:26:55 -04:00
Brad King
7b354baad5 CMakeVersion: Set CMake_VERSION_RC to 0 even in non-rc versions
The logic that uses this value already ignores any "false" value, so `0`
is just as good as not being set at all.  Using `0` for this role makes
the version components look more symmetric and reduces the number of
edits needed when creating releases.
2019-07-25 09:23:48 -04:00
Brad King
aff019f7a4 Merge branch 'upstream-KWSys' into update-kwsys
* upstream-KWSys:
  KWSys 2019-07-25 (a24a6acb)
2019-07-25 07:54:34 -04:00
KWSys Upstream
780d9e070b KWSys 2019-07-25 (a24a6acb)
Code extracted from:

    https://gitlab.kitware.com/utils/kwsys.git

at commit a24a6acbbb4a51cf6fefbeb10d1f63ed1b670c69 (master).

Upstream Shortlog
-----------------

Brad King (3):
      15896025 SystemTools: Use C++11 in SystemToolsAppendComponents
      c6f8e24a SystemTools: Fix CollapseFullPath with relative base path
      5ca03af6 SystemTools: Revert "Reduce scope of 'buf' variable in CollapseFullPath"

David Bodnar (5):
      116a4919 RegularExpression: Reduce scope of 'len' variable
      31f5cdeb RegularExpression: Initialize private members on construction
      6e36d909 SystemTools: Reduce scope of 'buf' variable in CollapseFullPath
      a93bc28c SystemTools: Drop unnecessary .c_str()
      6c3dfd25 CommandLineArguments: initialize internal class members directly
2019-07-25 07:54:33 -04:00
Brad King
a1c6d7e9af Merge branch 'release-3.15' 2019-07-25 07:27:14 -04:00
Brad King
9111590aca Merge topic 'ninja-swift-map-file-path'
3391a3eca8 Ninja: do not normalise swift support file paths

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3597
2019-07-25 07:21:18 -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
Kitware Robot
00be1957da CMake Nightly Date Stamp 2019-07-25 00:01:08 -04:00
Ben Boeckel
94f536b935 cmCTestHandlerCommand: fix typo of local variable 2019-07-24 15:29:32 -04:00
Sebastian Holtermann
4ff0bb054b cmSystemTools: Make IsInternallyOn, IsON and IsOff cm::string_view based 2019-07-24 19:31:14 +02:00
Sebastian Holtermann
65d3ea2c7f cmAlgorithms: Make cmHasLiteral{Prefix,Suffix} cm::string_view based 2019-07-24 19:31:14 +02: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
Brad King
a96363f899 Merge branch 'release-3.15' 2019-07-24 08:16:44 -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
a4657ef670 Merge branch 'backport-clang-gnulike-support' into clang-gnulike-support 2019-07-24 08:04:52 -04:00
Brad King
161b33f12b Help/guide/tutorial: Revert "require C++14 for the Tutorial"
Revert the changes from commit a2a90f41e3 (Tests: require C++14 for the
Tutorial, 2019-03-21, v3.15.0-rc1~41^2~2) for the content in its new
home.  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:04:20 -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
Sebastian Holtermann
e91bfe440c cmMakefile: Let AddDefinition accept a value as cm::string_view
This changes `cmMakefile::AddDefinition` to take a `cm::string_view` as value
argument instead of a `const char *`.

Benefits are:
- `std::string` can be passed to `cmMakefile::AddDefinition` directly without
  the `c_str()` plus string length recomputation fallback.
- Lengths of literals passed to `cmMakefile::AddDefinition` can be computed at
  compile time.

In various sources uses of `cmMakefile::AddDefinition` are adapted to avoid
`std::string::c_str` calls and the `std::string` is passed directly.
Uses of `cmMakefile::AddDefinition`, where a `nullptr` `const char*` might
be passed to `cmMakefile::AddDefinition` are extended with `nullptr` checks.
2019-07-24 11:11:25 +02:00
Sebastian Holtermann
f2ba968ef2 cmMakefile: Simplify and rename AddDefinitionBool
This simplifies the `cmMakefile::AddDefinition` method with bool value
overload to call the string based `cmMakefile::AddDefinition` method
with either an "ON" or "OFF" string.
Also the method is renamed to `cmMakefile::AddDefinitionBool`
2019-07-24 11:11:25 +02:00
Sebastian Holtermann
9b5cc42531 cmDefinitions: Remove const char* based Set method
- Removes `cmDefinitions::Set` method overload that takes a `const char*`
  value argument.
- Updates calls to `cmDefinitions::Set` to use the `cm::string_view` based
  version instead.
2019-07-24 11:11:25 +02:00
Sebastian Holtermann
e268840c0a cmDefinitions: Add Unset and cm::string_view based Set methods
- The `cmDefinitions::Def` struct is simplified by removing an unused
  constructor and the `std_string` type definition.  The std::string value
  becomes a member variable instead of being derived from.

- The `cmDefinitions::Unset` method is added that unsets a definition.
  It has the same functionality as calling `cmDefinitions::Set` with a
  `nullptr` value argument,

- The `cmDefinitions::Set` method gets an overloaded version that takes a
  `cm::string_view` as value argument.

- The originl `cmDefinitions::Set` method with `const char*` argument is
  refactored to either call the `cm::string_view` based `cmDefinitions::Set`
  overload or `cmDefinitions::Unset`, depending on whether the value
  `const char*` is a nullptr (`Unset`) or not (`Set`).
2019-07-24 11:11:25 +02:00
Sebastian Holtermann
451fd329a8 cmDefinitions: Cleanups 2019-07-24 11:11:25 +02:00
Kitware Robot
1f618fae4d CMake Nightly Date Stamp 2019-07-24 00:01:09 -04:00
Saleem Abdulrasool
3391a3eca8 Ninja: do not normalise swift support file paths
When building the output-map-file.json, do not convert the path to a
Ninja path, which will make it relative.  If `cmake` is invoked with the
`-B` option the files will be written relative to the directory where
CMake was invoked rather than relative to the build tree.  This path
need not be a relative path since it is used internally by CMake to
determine where to write the output map file.  This allows the use of
`-B` option in CMake in projects with Swift targets.
2019-07-23 17:56:19 -07:00
Brad King
1d3841b600 Genex: Memoize usage requirement TARGET_PROPERTY existence
For each usage requirement (such as `INTERFACE_COMPILE_DEFINITIONS` or
`INTERFACE_INCLUDE_DIRECTORIES`), the value of the generator expression
`$<TARGET_PROPERTY:target,prop>` includes the values of the same
property from the transitive closure of link libraries of the target.

In cases that a target's transitive closure of dependencies does not
depend on the target being linked (the "head" target), we can memoize
whether or not a usage requirement property exists at all for that
target.  When a usage requirement does not exist for a target, we
can skip evaluating it for every consuming target.

Fixes: #18964, #18965
2019-07-23 10:44:19 -04:00
Brad King
b5460f9931 cmLinkItem: Expose HadHeadSensitiveCondition in cmLinkInterfaceLibraries
Clients may be able to avoid repeating work if they know the transitive
link interface libraries do not depend on what is linking them.
2019-07-23 10:06:35 -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