Commit Graph

1631 Commits

Author SHA1 Message Date
Brad King 625b8f9076 Ninja: Avoid empty phony edges for target ordering
Since commit v3.9.0-rc1~230^2~2 (ninja: break unnecessary target
dependencies, 2017-04-17) we unconditionally generate a phony edge for
target ordering.  It is needed in case a later target depends on it.
However, if the phony edge has no inputs then `ninja -d explain` prints:

    ninja explain: output ... of phony edge with no inputs doesn't exist

Furthermore the phony edge's output is considered dirty and can cause
dependents to be incorrectly considered dirty.  Avoid this by always
generating at least one input to the target ordering phony edges.
If we have no real dependencies just use a path that always exists.

Fixes: #17942
2018-04-26 08:40:57 -04:00
Brad King 5a6c629289 Merge topic 'vs-dedup-custom-commands'
f59c33a763 VS: Generate a custom command only in the least dependent target
d58d4daa6b cmVisualStudio10TargetGenerator: Use cmLocalVisualStudio10Generator

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1889
2018-04-25 08:56:16 -04:00
Brad King 195400cab7 Merge topic 'Genex-TARGET_GENEX_PROPERTY'
4d15046edd Genex: Add $<TARGET_GENEX_EVAL:...> and $<GENEX_EVAL:...>

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1984
2018-04-24 11:06:19 -04:00
Brad King 6c942ec338 Merge topic 'FindMatlab/mcr-compatibility'
59fb9e89b2 FindMatlab: Matlab Runtime Compiler support

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1970
2018-04-24 11:01:36 -04:00
Raffi Enficiaud 59fb9e89b2 FindMatlab: Matlab Runtime Compiler support
* Determining automatically the MCR version on OSX and Windows
* Distinguishing between MCR and Matlab
* Specific tests for the MCR
* mexext on windows does not work properly: the mexext is hardcoded
* Doc updates for the MCR

Fixes: #16487
2018-04-23 10:30:49 -04:00
Marc Chevrier 4d15046edd Genex: Add $<TARGET_GENEX_EVAL:...> and $<GENEX_EVAL:...>
Fixes: #17884
2018-04-23 11:13:52 +02:00
Fujii Hironori f59c33a763 VS: Generate a custom command only in the least dependent target
If a custom command is assigned to multiple targets, generate the build
rule only in the least-dependent `.vcxproj` file.  Otherwise MSBuild
will run the command on the first build of a dependent target even if
its dependencies already brought the command up to date (in order to
populates its build log).

Generate targets in least-to-most-dependent order, and assign a custom
command to the least dependent target.

Added cmLocalVisualStudio10Generator::GenerateTargetsDepthFirst to call
cmVisualStudio10TargetGenerator::Generate in least-dependent order.

Moved SourcesVisited from cmVisualStudio10TargetGenerator to
cmLocalVisualStudio10Generator to avoid attaching a custom command to
multiple targets among the local generator.

Fixes: #16767
2018-04-23 13:31:28 +09:00
Brad King fe0082875a Merge topic 'vs-sdk-dirs'
6ec3e880e7 VS: Add variables to set SDK directories in vcxproj files

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1965
2018-04-20 07:52:02 -04:00
Bastien Schatt 6ec3e880e7 VS: Add variables to set SDK directories in vcxproj files
Create `CMAKE_VS_SDK_*_DIRECTORIES` variables to tell the VS generator
how to populate fields in `.vcxproj` files that specify SDK directories.

Fixes: #17908
2018-04-19 09:39:34 -04:00
Brad King 3c6388553a Merge topic 'CheckIncludeFile-required-libs'
a61ae3fb80 CheckIncludeFiles: Honor CMAKE_REQUIRED_LIBRARIES
391a5837ee cmake_policy: Add undocumented PARENT_SCOPE option to GET
3c47ac5b25 OpenWatcom: Add workaround for lack of error on missing library

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1978
2018-04-19 08:23:08 -04:00
Brad King a61ae3fb80 CheckIncludeFiles: Honor CMAKE_REQUIRED_LIBRARIES
Other check modules honor this variable, so include file checks should
too.  Add policy `CMP0075` to enable the behavior in a compatible way.

This change was originally made by commit v3.11.0-rc1~108^2
(CheckIncludeFiles: Honor CMAKE_REQUIRED_LIBRARIES, 2017-12-24) but it
was reverted by commit v3.11.1~9^2 (Revert "CheckIncludeFiles: Honor
CMAKE_REQUIRED_LIBRARIES", 2018-04-04) because the behavior change could
affect checks in existing projects in an incompatible way.

Fixes: #9514
2018-04-18 08:09:56 -04:00
Brad King da294a039d Android: Add support for NDK r17
The `armeabi` ABI is no longer available, so we can no longer use it by
default unconditionally.  Instead detect all available ABIs and choose
the oldest arm ABI that is available.

Also update the test suite to account for the lack of `armeabi` support
and pass as of Android NDK r17-beta2.
2018-04-17 11:21:15 -04:00
Brad King 8c2d87dc01 Merge topic 'list-TRANSFORM'
dca2347980 list: Add TRANSFORM sub-command
cdae12f8f8 string() Refactoring: creates an helper for REGEX REPLACE

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1938
2018-04-17 07:38:28 -04:00
Marc Chevrier dca2347980 list: Add TRANSFORM sub-command
Issue: #17823
2018-04-16 17:11:53 +02:00
Brad King 0a122393d7 Merge branch 'backport-fix-explicit-CMakeLists.txt' 2018-04-13 09:46:54 -04:00
Brad King 8480c2afc0 Restore support for explicitly referenced CMakeLists.txt sources
Since commit v3.11.0-rc1~467^2 (VS,Xcode: Add CMakeLists.txt sources
without mutating targets, 2017-10-18) we do not add `CMakeLists.txt` to
target sources but instead generate references to them directly.  This
broke projects that explicitly specify their `CMakeLists.txt` file as a
source file because the explicit entry is no longer consolidated with
the generated one.

Teach the relevant generators to avoid duplicating `CMakeLists.txt`
source references and add test cases.

Fixes: #17828
2018-04-13 09:41:06 -04:00
Brad King 2cdefcbe62 Merge topic 'variable_watch-on-PARENT_SCOPE'
65198cfd0f variable_watch: trigger on variables set via PARENT_SCOPE

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1948
2018-04-12 11:32:37 -04:00
Matteo Settenvini 65198cfd0f variable_watch: trigger on variables set via PARENT_SCOPE
Make sure that we also trigger variable watches when a variable
is set in the parent scope.

Fixes: #17827
2018-04-11 15:02:07 -04:00
Brad King ded33659b1 Merge topic 'cpack-trace-nullptr'
6f2701abf6 CPack: Fix crash on invalid generator name

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1950
2018-04-11 10:33:48 -04:00
Brad King 6f2701abf6 CPack: Fix crash on invalid generator name
In commit v3.11.0-rc1~68^2 (CPack: accept --trace and --trace-expand,
2017-12-09) a nullptr dereference was added that occurs when
`cpack -G NotAGenerator` is invoked.  Add the needed condition.

Fixes: #17900
2018-04-10 15:00:37 -04:00
Brad King 5c10e8f608 Merge topic 'fix-crash-trace-exp-uninit-vars'
aad360eb3d Fix crash with --trace-expand --warn-uninitialized together

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1944
2018-04-10 11:32:56 -04:00
R2RT aad360eb3d Fix crash with --trace-expand --warn-uninitialized together
Some code paths in `ExpandVariablesInString{New,Old}` were not checking
the `filename` parameter for a null pointer, but this can happen when
using the above flags together.  Add the checks and a test case.

Fixes: #17896
2018-04-09 11:59:07 -04:00
Brad King 576d01fed4 Merge topic 'ninja-fortran-rspfile'
d6390ce26e Ninja: Fix Fortran support with response files
8592c6326b cmNinjaTargetGenerator: Move force-rspfile check to earlier
e0aa060352 cmNinjaTargetGenerator: Move depfile logic to later in its function

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1936
2018-04-06 10:30:40 -04:00
Brad King d308e9442e Merge topic 'glob_configure_depends'
6c4f8b4596 Adjust help documentation for file(GLOB), add topic notes
20612978c8 Add tests for `file(GLOB)` CONFIGURE_DEPENDS flag
3f4b81f540 Add glob verify support to XCode, VS, Ninja, and Makefile generators
ca0befc2e1 Add `CONFIGURE_DEPENDS` flag support to cmFileCommand::HandleGlobCommand
599c93e22d Add cmGlobVerificationManager class, integrate with cmake and cmState

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1767
2018-04-06 10:25:08 -04:00
Brad King d6390ce26e Ninja: Fix Fortran support with response files
The Ninja generator splits preprocessing and compilation steps for
Fortran.  Fix this logic to work when using response files for
compilation so that it works for the preprocessing step too.

This fixes behavior under `CMAKE_NINJA_FORCE_RESPONSE_FILE`.

Issue: #17877
2018-04-05 13:02:27 -04:00
Brad King 6425ceb46c Merge topic 'wcdh-bare-features'
f38d050231 WCDH: introduce BARE_FEATURES

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1869
2018-04-04 11:16:50 -04:00
Brad King 8496d11ef8 Merge topic 'android-no-libstdc++'
843d55de29 Android: Suppress implicit -lstdc++ linker flag

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1919
2018-04-04 11:14:36 -04:00
Rolf Eike Beer f38d050231 WCDH: introduce BARE_FEATURES
This allows defining compat versions of some C/C++ features with the name of the
keyword itself, so all code can look as if it was written for the new language
standard.
2018-04-03 20:56:28 +02:00
Brad King 843d55de29 Android: Suppress implicit -lstdc++ linker flag
The chosen STL libraries are already linked explicitly so we shouldn't
let the compiler add its implicit `-lstdc++` (the default) when invoking
the linker.

Fixes: #17863
NDK-Issue: https://github.com/android-ndk/ndk/issues/105
Inspired-by: Tom Hughes <tomtheengineer@gmail.com>
2018-04-03 14:34:57 -04:00
Marc Chevrier 438429d6fe UseSWIG: Rework tests 2018-04-02 16:24:13 +02:00
Brad King e42fcb117f Merge topic 'remove-vs8-generator'
eb80af9093 Drop Visual Studio 8 2005 generator
e7af91d026 Tests: Remove unused file from Tutorial Step7 test

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1901
2018-04-02 10:09:15 -04:00
Brad King eb80af9093 Drop Visual Studio 8 2005 generator
This generator has been deprecated since CMake 3.9.  Remove it.
2018-04-02 10:08:10 -04:00
Shane Parris 20612978c8 Add tests for file(GLOB) CONFIGURE_DEPENDS flag 2018-04-01 23:16:12 -04:00
Brad King 3272677e63 Merge topic 'genex-TARGET_NAME_IF_EXISTS'
7b173a2933 genex: Add TARGET_NAME_IF_EXISTS expression

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1890
2018-03-29 10:21:48 -04:00
Alex Turbov 7b173a2933 genex: Add TARGET_NAME_IF_EXISTS expression
Define `$<TARGET_NAME_IF_EXISTS:tgt>` to mean `tgt` if the target
exists and otherwise an empty string.
2018-03-28 08:38:00 -04:00
Craig Scott d5f0b2df8e Merge topic 'cmake_minimum_required-forward-compat'
8dc97acb03 cmake_minimum_required: Tolerate unknown future arguments

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1888
2018-03-27 08:16:46 -04:00
Brad King b9788dc5a3 Merge topic 'revert-CTestTestfile-removal-again'
70c50aa23c Revert "Remove CTestTestfile.cmake when BUILD_TESTING is OFF"

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1887
2018-03-27 07:49:28 -04:00
Brad King 8dc97acb03 cmake_minimum_required: Tolerate unknown future arguments
When a `...<max>` version is given that is larger than the running
version of CMake, assume that the project is aware of a newer version of
CMake and that any unknown arguments are future arguments.  This will
allow future versions of CMake to add arguments to the command that
projects can use without introducing errors in older versions of CMake
(back to 3.12).
2018-03-26 11:31:08 -04:00
Brad King 70c50aa23c Revert "Remove CTestTestfile.cmake when BUILD_TESTING is OFF"
Revert commit v3.8.0-rc1~305^2 (Remove CTestTestfile.cmake when BUILD_TESTING
is OFF, 2016-11-14) again.  We reverted it once in commit v3.8.0-rc3~22^2
(Revert "Remove CTestTestfile.cmake when BUILD_TESTING is OFF", 2017-03-06) but
it was accidentally restored by commit v3.11.0-rc1~387^2 (server: add
"ctestInfo" request to get test info, 2017-10-25), perhaps due to conflict
resolution during rebase.

We cannot remove `CTestTestfile.cmake` when testing is off because it breaks
projects that never enable testing but create their own `CTestTestfile.cmake`
manually instead.  Revert the change again and add a test case.
2018-03-26 07:44:22 -04:00
Craig Scott 9f2ec9d241 Merge topic 'list-sublist'
768225837d list: Add SUBLIST sub-command

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1874
2018-03-22 15:27:24 -04:00
Craig Scott 82df2fe17e Merge topic 'policy-version-range'
45408b5ea1 cmake_minimum_required: Optionally set policies with version range
6a41aa2abd cmPolicies: Split parsing and impl of ApplyPolicyVersion
1d00ed7cf7 cmPolicies: Drop unnecessary check from ApplyPolicyVersion
0df559832b cmPolicies: Pass policy version as std::string

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1864
2018-03-22 15:24:49 -04:00
Brad King d78d750c04 Merge topic 'clarify_inherited_properties'
ff6234509e Help: Clarify behavior of INHERITED properties
9cc97ab4dc Tests: Add tests for INHERITED property chaining

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1879
2018-03-22 08:33:53 -04:00
Brad King a7ac022425 Merge topic 'find-package_root-revise'
3f479a3ca3 find_package: Improve CMP0074 warning messages

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1880
2018-03-22 08:32:54 -04:00
Marc Chevrier 768225837d list: Add SUBLIST sub-command
Issue: #17823
2018-03-21 12:54:53 -04:00
Brad King a13cfa246f Merge topic 'FindPython-new-implementation'
50b5e9ed13 CMake build: Use new FindPython module
352baee207 FindPython*: New implementation for Python stuff

Acked-by: Kitware Robot <kwrobot@kitware.com>
Reviewed-by: Ben Boeckel <ben.boeckel@kitware.com>
Acked-by: Alex Turbov <i.zaufi@gmail.com>
Merge-request: !1819
2018-03-21 10:01:52 -04:00
Brad King 45408b5ea1 cmake_minimum_required: Optionally set policies with version range
Teach `cmake_minimum_required` and `cmake_policy(VERSION)` to support a
version range of the form `<min>[...<max>]`.  Define this to mean that
version `<min>` is required, but known policies up to those introduced
by `<max>` will be set to `NEW`.  This will allow projects to easily
specify a range of versions for which they have been updated.
2018-03-21 08:00:28 -04:00
Brad King 3f479a3ca3 find_package: Improve CMP0074 warning messages
Policy `CMP0074` was added by commit eb35d8884b (find_package: Use
PackageName_ROOT variables as search prefixes, 2018-03-15).  Revise the
logic to avoid warning when a `PackageName_ROOT` variable is set to
empty since that won't change the search behavior.  Also, when we do
warn include the variable value(s) for reference.
2018-03-21 07:51:20 -04:00
Craig Scott 9cc97ab4dc Tests: Add tests for INHERITED property chaining 2018-03-21 21:38:47 +11:00
Marc Chevrier a58158727b list(): add JOIN sub-command 2018-03-20 14:28:17 +01:00
Marc Chevrier 50b5e9ed13 CMake build: Use new FindPython module 2018-03-20 09:29:55 +01:00