summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Merge topic 'doc-relnotes-3.15'Brad King2019-07-261-0/+17
|\ | | | | | | | | | | | | 3b113cc131 Help: Add 3.15.1 release notes Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3608
| * Help: Add 3.15.1 release notesBrad King2019-07-261-0/+17
| |
* | Merge topic 'optimize-usage-requirements'Brad King2019-07-264-137/+231
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * | Genex: Memoize usage requirement TARGET_PROPERTY existenceBrad King2019-07-232-0/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * | cmLinkItem: Expose HadHeadSensitiveCondition in cmLinkInterfaceLibrariesBrad King2019-07-231-1/+3
| | | | | | | | | | | | | | | Clients may be able to avoid repeating work if they know the transitive link interface libraries do not depend on what is linking them.
| * | Genex: Optimize build setting TARGET_PROPERTY evaluationBrad King2019-07-232-54/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For each build setting property (such as `COMPILE_DEFINITIONS` or `INCLUDE_DIRECTORIES`), the value of `$<TARGET_PROPERTY:target,prop>` includes the values of the corresponding `INTERFACE_*` usage requirement property from the transitive closure of link libraries of the target. Previously we computed this by constructing a generator expression string like `$<TARGET_PROPERTY:lib,INTERFACE_COMPILE_DEFINITIONS>` and recursively evaluating it with the generator expression engine. Avoid the string construction and parsing by using the dedicated evaluation method `cmGeneratorTarget::EvaluateInterfaceProperty`. Issue: #18964, #18965
| * | Genex: Optimize usage requirement TARGET_PROPERTY recursionBrad King2019-07-233-22/+95
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In large projects the generation process spends a lot of time evaluating usage requirements through transitive interface properties on targets. This can be seen in a contrived example with deep dependencies: set(prev "") foreach(i RANGE 1 500) add_library(a${i} a.c) target_compile_definitions(a${i} PUBLIC A${i}) target_link_libraries(a${i} PUBLIC ${prev}) set(prev a${i}) endforeach() 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. Previously we computed this by constructing a generator expression string like `$<TARGET_PROPERTY:lib,INTERFACE_COMPILE_DEFINITIONS>` and recursively evaluating it with the generator expression engine. Avoid the string construction and parsing by creating and using a dedicated evaluation method `cmGeneratorTarget::EvaluateInterfaceProperty` that looks up the properties directly. Issue: #18964, #18965
| * | Genex: In TARGET_PROPERTY check for usage reqs in link libs earlierBrad King2019-07-211-25/+26
| | |
| * | Genex: Re-order TARGET_PROPERTY logic to de-duplicate checksBrad King2019-07-211-42/+26
| | | | | | | | | | | | | | | Check for usage requirement properties early enough to avoid duplicate checks in other conditions.
| * | Genex: Move TARGET_PROPERTY linked targets evaluation to endBrad King2019-07-211-35/+28
| | |
* | | Merge topic 'definitions_string_view'Brad King2019-07-2663-314/+281
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * | | cmMakefile: Let AddDefinition accept a value as cm::string_viewSebastian Holtermann2019-07-2456-256/+226
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | | cmMakefile: Simplify and rename AddDefinitionBoolSebastian Holtermann2019-07-246-26/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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`
| * | | cmDefinitions: Remove const char* based Set methodSebastian Holtermann2019-07-244-17/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | - 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.
| * | | cmDefinitions: Add Unset and cm::string_view based Set methodsSebastian Holtermann2019-07-242-17/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - 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`).
| * | | cmDefinitions: CleanupsSebastian Holtermann2019-07-241-8/+9
| | | |
* | | | Merge topic 'IsON_IsOFF_string_view'Brad King2019-07-264-144/+109
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * | | | cmSystemTools: Make IsInternallyOn, IsON and IsOff cm::string_view basedSebastian Holtermann2019-07-242-104/+94
| | | | |
| * | | | cmAlgorithms: Make cmHasLiteral{Prefix,Suffix} cm::string_view basedSebastian Holtermann2019-07-242-40/+15
| | | | |
* | | | | Merge topic 'update-kwsys'Brad King2019-07-264-15/+22
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | aff019f7a4 Merge branch 'upstream-KWSys' into update-kwsys 780d9e070b KWSys 2019-07-25 (a24a6acb) Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3602
| * \ \ \ \ Merge branch 'upstream-KWSys' into update-kwsysBrad King2019-07-254-15/+22
| |\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | * upstream-KWSys: KWSys 2019-07-25 (a24a6acb)
| | * | | | | KWSys 2019-07-25 (a24a6acb)KWSys Upstream2019-07-255-18/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | | | | | Merge topic 'variable-typo'Brad King2019-07-261-7/+7
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 94f536b935 cmCTestHandlerCommand: fix typo of local variable Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3600
| * | | | | | | cmCTestHandlerCommand: fix typo of local variableBen Boeckel2019-07-241-7/+7
| | |_|/ / / / | |/| | | | |
* | | | | | | Merge branch 'release-3.15'Brad King2019-07-260-0/+0
|\ \ \ \ \ \ \ | | |_|_|_|_|/ | |/| | | | |
| * | | | | | Merge branch 'FindMPI-link-flags' into release-3.15Brad King2019-07-251-5/+2
| |\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | Merge-request: !3605
* | \ \ \ \ \ \ Merge topic 'FindMPI-link-flags'Brad King2019-07-261-3/+1
|\ \ \ \ \ \ \ \ | | |/ / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * | | | | | | FindMPI: make sure computed link flags are not de-duplicatedRobert Maynard2019-07-251-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | | | | | | CMake Nightly Date StampKitware Robot2019-07-261-1/+1
| | | | | | | |
* | | | | | | | Merge topic 'cmake-version-rc'Brad King2019-07-252-3/+3
|\ \ \ \ \ \ \ \ | |_|_|_|/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7b354baad5 CMakeVersion: Set CMake_VERSION_RC to 0 even in non-rc versions Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3603
| * | | | | | | CMakeVersion: Set CMake_VERSION_RC to 0 even in non-rc versionsBrad King2019-07-252-3/+3
|/ / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | | | | | Merge branch 'release-3.15'Brad King2019-07-250-0/+0
|\ \ \ \ \ \ \ | | |/ / / / / | |/| | | | |
| * | | | | | Merge branch 'makefile-depend-relative-include' into release-3.15Brad King2019-07-257-4/+47
| |\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | Merge-request: !3599
| * \ \ \ \ \ \ Merge branch 'backport-clang-gnulike-support' into release-3.15Brad King2019-07-2420-43/+42
| |\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | Merge-request: !3592
* | \ \ \ \ \ \ \ Merge topic 'ninja-swift-map-file-path'Brad King2019-07-251-2/+2
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 3391a3eca8 Ninja: do not normalise swift support file paths Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3597
| * | | | | | | | | Ninja: do not normalise swift support file pathsSaleem Abdulrasool2019-07-241-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | | | | | | | | Merge topic 'makefile-depend-relative-include'Brad King2019-07-257-4/+47
|\ \ \ \ \ \ \ \ \ \ | | |_|_|/ / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d46bac5d38 Makefile: Fix regression in dependencies on relative includes Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3599
| * | | | | | | | | Makefile: Fix regression in dependencies on relative includesBrad King2019-07-247-4/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | | | | | | | | Merge topic 'clang-gnulike-support'Brad King2019-07-2519-42/+39
|\ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * \ \ \ \ \ \ \ \ \ Merge branch 'backport-clang-gnulike-support' into clang-gnulike-supportBrad King2019-07-240-0/+0
| |\ \ \ \ \ \ \ \ \ \ | | | |_|_|/ / / / / / | | |/| | | | | | | |
| | * | | | | | | | | Tests: Revert "require C++14 for the Tutorial"Brad King2019-07-2413-13/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | | | | | | | | | Help/guide/tutorial: Revert "require C++14 for the Tutorial"Brad King2019-07-2412-12/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | | | | | | | | | Merge branch 'backport-clang-gnulike-support' into clang-gnulike-supportBrad King2019-07-247-30/+15
| |\ \ \ \ \ \ \ \ \ \ | | |/ / / / / / / / / | | | | | | | | | / / | | |_|_|_|_|_|_|/ / | |/| | | | | | | |
| | * | | | | | | | Clang: For MSVC ABI do not use modes older than C++14Brad King2019-07-247-30/+15
| | |/ / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | | | | | | | CMake Nightly Date StampKitware Robot2019-07-251-1/+1
| |_|_|_|_|/ / / |/| | | | | | |
* | | | | | | | Merge topic 'find_pkg_use_new_global_controls'Brad King2019-07-2414-12/+98
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * | | | | | | | FindPackage: Support `NO_[]_PATH` global call optionsRobert Maynard2019-07-2213-12/+96
| | | | | | | | |
| * | | | | | | | Tests: find_file restore PATH env variable after test runsRobert Maynard2019-07-221-0/+2
| | | | | | | | |
* | | | | | | | | Merge topic 'math_exp_not'Brad King2019-07-244-59/+75
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d427f12b73 math(EXPR): Implement ~(exp_NOT) expression as documented Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3582
| * | | | | | | | | math(EXPR): Implement ~(exp_NOT) expression as documentedGabor Bencze2019-07-234-59/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes: #19252