Commit Graph

4978 Commits

Author SHA1 Message Date
Brad King
b97878643b Merge branch 'objlib-own-target-objs' into release-3.9 2017-07-17 11:42:18 -04:00
Brad King
d89e10cd58 Diagnose object library self-reference
The code

    add_library(A OBJECT a.c)
    target_sources(A PRIVATE $<TARGET_OBJECTS:A>)

used to crash CMake via infinite recursion while evaluating the
generator expression.  Then the change in commit v3.9.0-rc1~266^2~1
(cmGeneratorTarget: Replace source classifier implementation,
2017-04-07) avoided the infinite recursion because GetKindedSources now
creates a map entry and initializes it once.  If it is called again on
the same target during that initialization, the partially computed
results are returned.  This is still wrong but does not crash.
Detect and diagnose this case instead.

Co-Author: Ben Boeckel <ben.boeckel@kitware.com>
Fixes: #16578
2017-07-14 14:05:22 -04:00
Brad King
4bafa3922e Android: Always add standard include directories last
The logic added in commit v3.6.0-rc1~30^2 (Add a variable to specify
language-wide system include directories, 2016-05-24) to use
`CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES` incorrectly filters them by
`CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIES`.  Rather than recognizing
this, commit v3.8.0-rc1~60^2 (Android: Pass sysroot include directory
explicitly, 2017-01-20) worked around the problem by incorrectly
removing `/usr/include` from `CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIES`
so it worked in `CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES`.

By not filtering out `/usr/include` from user-specified include
directories, we allow the code

    include_directories(${CMAKE_SYSROOT}/usr/include)

to place the include directory too early on the command line.

Fix support for standard include directories to not be filtered by
implicit include directories, and do not remove `/usr/include` from the
list of implicit include directories for Android builds.  Add a test
case to verify that an explicit `/usr/include` is ignored in favor
of the standard directory at the end.

Fixes: #17059
2017-07-13 10:03:58 -04:00
Brad King
c42c039d32 Merge branch 'vs-2017-sln-guid' into release-3.9 2017-07-11 10:42:21 -04:00
Brad King
5cf9c3d0cc VS: Add SolutionGuid to generated .sln files
Visual Studio 2017 Update 3 adds a SolutionGuid to its `.sln` files.

Fixes: #17041
2017-07-11 10:41:28 -04:00
Brad King
7638c6ea8d Merge branch 'find_package-root-prefix-path-suffixes' into release-3.9 2017-07-11 09:20:37 -04:00
Brad King
80b905f882 find_*: Honor PATH_SUFFIXES in PackageName_ROOT paths
This was accidentally forgotten in commit v3.9.0-rc1~71^2~2 (find_*: Add
a new PackageRoot search path group, 2017-05-03).

Fixes: #17052
2017-07-11 09:11:19 -04:00
Brad King
6fba4ec0f5 Merge branch 'bindexplib-revert-consts' into release-3.9 2017-07-10 14:54:30 -04:00
Brad King
3250b9a122 bindexplib: Revert support for constants symbols
Revert the main logic change of commit v3.9.0-rc1~192^2 (bindexplib: fix
constants symbols export, 2017-04-26) and its test case.  Unfortunately
some constants may be provided by multiple object files with different
`@...` suffixes, leading to ambiguous references.  Revert support
pending further investigation.

Fixes: #17045
2017-07-10 14:54:07 -04:00
Brad King
9b9a57e16b Merge branch 'autogen-no-generated-files' into release-3.9 2017-07-07 11:44:35 -04:00
Brad King
e7730d78b4 find_package: Restore longer message when config files were considered
Since commit v3.9.0-rc1~58^2 (find_package: shorten output for missing
package in config mode, 2017-05-09) we print only the one line

    - Could NOT find Foo (missing: Foo_DIR)

when package Foo cannot be found in CONFIG mode and it is not REQUIRED.
However, in the case that package configuration files were found but not
used, this one line message leaves out important information.  This can
happen when a package configuration file sets `Foo_FOUND` to `FALSE` or
when its package version file does not match the requested version.
Restore the longer message in these cases.  Otherwise a seemingly valid
explicit `Foo_DIR` setting appears to be silently ignored even if it was
considered.

Fixes: #17029
2017-07-07 11:43:59 -04:00
Brad King
9a34e95a41 Autogen: Skip generated files for compatibility with CMake 3.8
The change in commit v3.9.0-rc1~464^2~8 (Autogen: Add AUTOMOC/UIC
support for generated source files, 2017-03-02) changes behavior of
existing projects that may not expect `AUTOGEN` on generated files and
do not yet set `SKIP_AUTOGEN` on them.  Disable the behavior change for
now to fix the regression for CMake 3.9.  We can restore it later with a
policy.

In order to keep the implementation and tests working, add an
undocumented property we can use in the tests to enable the behavior
before the policy is introduced.

Fixes: #17031
Issue: #16186
2017-07-07 10:12:15 -04:00
Brad King
fd771df773 Merge branch 'fix-crash-on-non-enabled-language-features' into release-3.9 2017-06-27 09:14:31 -04:00
Brad King
1d86103846 Merge branch 'vs-cuda-fix-flags' into release-3.9 2017-06-27 09:14:26 -04:00
Brad King
bbc1f3642c VS: Fix support for nvcc flags not in our flag table
The change in commit v3.9.0-rc4~3^2 (VS: Improve workaround for CUDA
-Xcompiler placement bug, 2017-06-21) accidentally appended to the
`AdditionalOptions` as if it were a `;`-separated list, but it is
actually a command-line string.  Append with a space instead.

While at it, fix the same problem for the `AdditionalOptions` added to
`CudaLink` by commit v3.9.0-rc3~1^2 (CUDA: When linking device code
suppress CUDA 8.0+ deprecation warnings, 2017-06-09).

Fixes: #17008
2017-06-27 09:08:50 -04:00
Brad King
e03a1b3b61 target_compile_features: Do not crash on non-enabled language
Fixes: #17011
2017-06-26 13:54:20 -04:00
Brad King
869904271b Tests: Enable languages explicitly in RunCMake.target_compile_features
Enable C or CXX (or nothing) as needed in each test case.
This will allow us to add test cases that do not enable CXX.
2017-06-26 13:54:20 -04:00
Brad King
c8ee5dbc0c Merge branch 'vs-rc-flags' into release-3.9 2017-06-22 09:52:28 -04:00
Brad King
974f43338b VS: Fix support for rc /nologo flag in per-source COMPILE_FLAGS
Since commit v3.9.0-rc1~160^2 (VS: Use tool-specific flag table for
COMPILE_FLAGS parsing, 2017-05-03) we now correctly use the `rc` flag
table to process the COMPILE_FLAGS flags of `.rc` source files instead
of incorrectly using the `cl` flag table as before.  However, our `rc`
flag table is not complete.  The `/nologo` flag was working before only
by accident because the `cl` flag table entry for it happened to match.
Add the proper entry to the `rc` flag table.

Fixes: #16991
2017-06-22 09:45:42 -04:00
Brad King
3d99244477 Merge branch 'vs-cuda-fix-flags' into release-3.9 2017-06-21 14:24:23 -04:00
Brad King
3b75421515 VS: Improve workaround for CUDA -Xcompiler placement bug
In commit v3.9.0-rc1~431^2~6 (VS: Place CUDA host compiler options in
proper project file fields, 2017-03-07) we worked around a bug in the
CUDA VS integration by dropping `AdditionalCompilerOptions`.  However,
this silently drops `-Xcompiler=` options given by the user that don't
map to one of CudaCompile's dedicated settings.  Improve the workaround
to instead put the remaining `AdditionalCompilerOptions` into the
`AdditionalOptions` field behind `-Xcompiler=` ourselves.
2017-06-21 14:24:11 -04:00
Brad King
f2059585e6 VS: Fix target_compile_options for CUDA
Fix the VS generator to honor `COMPILE_OPTIONS` for CUDA.  The exclusion
added by commit v3.9.0-rc1~431^2~7 (VS: Do not pass CUDA compile options
to C compiler, 2017-03-07) was correct but we need additional logic to
pass the CUDA compile options to the CUDA compiler.  Also we should
still pass the CXX or C options to MSVC (ClCompile) when those languages
are enabled even if the link language is CUDA.
2017-06-21 14:23:46 -04:00
Michael Stürmer
51865fc67e Vs: allow CSharp targets to be linked to CXX targets
Fixes: #16755
2017-06-21 08:37:15 +02:00
Brad King
ba247ccaba IPO: Consider support for each language separately
We only define `INTERPROCEDURAL_OPTIMIZATION` behavior for C, CXX, and
Fortran languages.  Do not try to enable support for other languages.
Furthermore, each language builds with a different compiler, so check
for support by CMake and the compiler for each language independently.

Fixes: #16944
2017-06-14 10:36:57 -04:00
Brad King
2d3d88f3bb Merge topic 'GoogleTest-disabled-tests'
92bbb706 GoogleTest: Add support for disabled tests

Acked-by: Kitware Robot <kwrobot@kitware.com>
Reviewed-by: Craig Scott <craig.scott@crascit.com>
Merge-request: !920
2017-06-05 10:16:39 -04:00
Chuck Atkins
92bbb70695 GoogleTest: Add support for disabled tests
Fixes: #10612
2017-06-05 10:11:08 -04:00
Brad King
00639f2d5d Merge topic 'test-GNUInstallDirs-FreeBSD'
913736f1 Tests: Fix RunCMake.GNUInstallDirs on BSD platforms

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !921
2017-06-05 09:42:36 -04:00
Brad King
913736f17d Tests: Fix RunCMake.GNUInstallDirs on BSD platforms
The `GNUInstallDirs` module has different defaults on BSD platforms.
Update the test expected output to account for the difference.

Fixes: #16887
2017-06-02 16:26:30 -04:00
Brad King
6a42b9609f Merge topic 'ninja-mingw'
82badfff Ninja: Fix CMP0058 on MinGW
c5ff50fc Tests: Fix CustomCommandByproducts regex for phony rules

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !919
2017-06-01 14:00:58 -04:00
Brad King
860db083ca Merge topic 'add-common-record-features-macros'
3c1ecb52 Intel: Fix missing C std default for 12.0 <= ver < 12.1
f70b0bb3 SunPro: Make sure all known versions get CXX98 defaults
220ede74 GNU: Fix language defaults for 3.4
a40e6ba8 Clang: Fix language defaults for 2.1
9b112a84 Compilers: Port to use default cmake_record_lang_compile_features macros
37221529 MSVC: Add empty definitions for std compile options
e556f1b9 CompileFeatures: Makes tests work with meta-feature only
20ffa147 Tests: Allow test macro to take no executable arguments
...

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !833
2017-06-01 13:40:47 -04:00
Brad King
c5ff50fc19 Tests: Fix CustomCommandByproducts regex for phony rules
Update the regex to match phony rules that have no inputs.
2017-05-31 11:48:02 -04:00
Brad King
52d0983a88 Tests: Skip BootstrapTest if testing external CMake
If we are not actually building CMake then we should not run the
`BootstrapTest` (which builds CMake).
2017-05-31 10:11:51 -04:00
Brad King
de16ff3e58 Merge topic 'ninja-mingw'
6a2f8335 Ninja: Fix escaping of path to depfile
781eb380 Tests: Fix VSResource test on MinGW with Ninja and a space in the path

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !911
2017-05-31 08:55:44 -04:00
Brad King
926ef3ee03 Merge topic 'fix-XCTest-build-config'
be55f069 Tests: Fix XCTest build configuration

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !907
2017-05-31 08:53:39 -04:00
Brad King
781eb380f4 Tests: Fix VSResource test on MinGW with Ninja and a space in the path 2017-05-30 15:30:40 -04:00
Brad King
f34f7815e3 Tests: Fix Qt5Autogen test on Xcode
Fix the `mocPlugin` project to provide `mocPlugin.xcodeproj` instead of
`Project.xcodeproj` so that the `try_compile` project name matches.
Also search in the `Debug` subdirectory of the `try_compile` build tree
for the resulting binaries, to work with multi-config generators.
2017-05-30 10:09:37 -04:00
Brad King
be55f069f9 Tests: Fix XCTest build configuration
Build the test binaries with the same configuration in which they will
be tested instead of the default Debug configuration.  This fixes the
test when run in a Release configuration.
2017-05-30 09:44:13 -04:00
Chuck Atkins
e556f1b909 CompileFeatures: Makes tests work with meta-feature only 2017-05-29 13:51:45 -04:00
Chuck Atkins
20ffa14708 Tests: Allow test macro to take no executable arguments 2017-05-29 12:34:28 -04:00
Brad King
d375618921 Merge topic 'sunpro-std-flags'
370d0d25 SunPro: update flags used for CMake itself
f1f21e30 SunPro: set -library=stlport as standard compile option for C++98
9316120c SunPro: add standard compile option for C++03
783fbb77 Tests: Compile entire Plugin test with the same language standard

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !879
2017-05-28 09:22:33 -04:00
Brad King
783fbb77e7 Tests: Compile entire Plugin test with the same language standard
Set `CMAKE_CXX_STANDARD` early so that both KWSys and our test code
build with the same language standard.  This is important on compilers
that have incompatible standard libraries.
2017-05-26 13:26:39 -04:00
Sebastian Holtermann
e3e692caea Autogen: Test adaptions 2017-05-26 15:27:17 +02:00
Sebastian Holtermann
dbda590628 Autogen: Per-config file suffixes. New AUTOGEN_BUILD_DIR target property.
Closes #14760
Closes #14313
2017-05-26 15:27:17 +02:00
Brad King
def409af76 Merge topic 'FindDoxygen-add-docs-function'
59ffabfe Improve Doxygen support

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !684
2017-05-25 15:14:53 -04:00
Brad King
d6df882add Merge topic 'find_dependency-improvements'
ab358d6a Improve find_dependency argument handling

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !872
2017-05-25 15:13:47 -04:00
Brad King
a9b11235a8 Merge topic 'find_package-shorter-message'
d0b9d1cc find_package: shorten output for missing package in config mode
d9df805f cmFindPackageCommand: Split condition to improve readability

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !851
2017-05-25 15:13:03 -04:00
Alex Turbov
59ffabfeec Improve Doxygen support
Except Graphviz's `dot` Doxygen may use few other utilities like
`mscgen` (Message Sequence Chart) and `dia` (Diagram Editor).

Now this module allows to manage Doxygen settings from `CMakeLists.txt`
and forget about `Doxyfile`s. Also it provides a helper function
to add a target to generate documentation: `doxygen_add_docs`.

Implement code review notes:

- Introduce `COMPONENTS` to find: `dot`, `mscgen` and `dia`;
- Deprecate variables `DOXYGEN_SKIP_DOT`, `DOXYGEN_EXECUTABLE`,
  `DOXYGEN_DOT_EXECUTABLE`, `DOXYGEN_DOT_FOUND` in favour of
  `doxygen_add_docs ` usage instead;
- Properly handle paths to found tools in Windows;
- Prevent adding a custom target if Doxygen was not really found;
- Introduce exported (executable) targets for found components.

Co-Author: Craig Scott <craig.scott@crascit.com>
2017-05-24 10:15:45 +07:00
Christoph Grüninger
d0b9d1cceb find_package: shorten output for missing package in config mode
If CONFIG or MODULE is given and the package is not REQUIRED,
output a one-liner instead of the full warning.

Update Tests/RunCMake/find_package expected output to match.
2017-05-23 15:27:42 -04:00
Matthew Woehlke
ab358d6a85 Improve find_dependency argument handling
Remove highly specialized and totally positional argument handling in
find_dependency macro, and instead just pass arguments through to
find_package. This gives users access to the full suite of arguments
that find_package knows, and is backward compatible with the old
arguments.

Also, rewrite the unit tests for this, since the old tests are
exclusively focused on testing the old argument handling and are no
longer applicable, and add some success tests (the old tests did not
even set up the CMake state in a way that CMake had any hope of ever
finding the test package).
2017-05-22 13:32:43 -04:00
Brad King
a5ccddf057 FindProtobuf: Rename imported targets to match upstream names
Rename our recently added imported targets to match those provided by
the upstream's CMake-based build.  That way a project using
`find_package(Protobuf)` can get the same target names no matter how
protobuf is found.

Suggested-by: Konstantin Podsvirov <konstantin@podsvirov.pro>
2017-05-22 10:51:55 -04:00