Commit Graph

4510 Commits

Author SHA1 Message Date
Brad King 460052516f Allow NO_SYSTEM_FROM_IMPORTED on imported INTERFACE libraries
Imported INTERFACE libraries can specify include directories via
`INTERFACE_INCLUDE_DIRECTORIES` so the default behavior of treating them
as system include directories applies.  Allow users to turn this off by
setting `NO_SYSTEM_FROM_IMPORTED` on such targets.

Closes: #16443
2016-11-21 11:42:01 -05:00
Brad King 95cfb54579 Merge topic 'capture-clang-tidy-errors'
80ebc55a cmake: Report if the <LANG>_CLANG_TIDY tool exits with non-zero
ce1abfa4 cmake: If ldd for LINK_WHAT_YOU_USE fails to run then report why
44de6157 cmake: Comment why we ignore the include-what-you-use return code
2016-11-21 10:02:02 -05:00
Brad King 80ebc55a7c cmake: Report if the <LANG>_CLANG_TIDY tool exits with non-zero
When using `<LANG>_CLANG_TIDY` our internal launcher for the tool must
capture its return code and stderr and report them on failure.
Otherwise incorrect command lines silently fail.

Closes: #16435
2016-11-18 09:43:22 -05:00
Brad King 44de615781 cmake: Comment why we ignore the include-what-you-use return code
The include-what-you-use tool always returns non-zero to indicate that
it did not actually produce an object file as Clang would from the same
command line.  Add a comment explaining that this is why we ignore its
return code.  Also update our `pseudo_iwyu` test suite tool to always
exit with an error too.
2016-11-18 09:43:19 -05:00
Brad King 25b6e7b710 Tolerate removed/replaced CMakeCache.txt with old CMakeFiles/
Users or scripts commonly remove or replace `CMakeCache.txt` without
also removing `CMakeFiles/`.  In this case the information saved in the
cache from platform information initialization is missing, so we need to
re-initialize it.  In such a case, remove the platform information
directory so that re-initialization will occur and restore needed
information to the cache.

Closes: #14820
2016-11-17 10:29:58 -05:00
Brad King 0e9634d2c9 Merge topic 'android-info-variables'
f7c5e970 Android: Add CMAKE_<LANG>_ANDROID_TOOLCHAIN_MACHINE
d95e6dff Android: Add CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG variable
3d42a72b Android: Always set CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION
2016-11-17 09:40:32 -05:00
Brad King 8dd3c319c9 Merge topic 'improve_ctest_memcheck_output'
f0d50957 ctest: Improve output for `-T memcheck`
2016-11-17 09:40:26 -05:00
Bill Hoffman f0d50957b9 ctest: Improve output for -T memcheck
Show how many defects each test that had a defect produced.
Also tell the user where to find the full log files.
2016-11-17 09:38:06 -05:00
Brad King 338e681c76 Merge topic 'test_vs_targets_file_reference'
c9560a9a Tests: Extend VS10Project to cover `.targets` file linking
2016-11-16 07:47:12 -05:00
Soji Yamakawa c9560a9a7b Tests: Extend VS10Project to cover .targets file linking
With VS generators for 2010 and above, passing a `.targets` file to
`target_link_libraries` is expected to generate content in the
`.vcxproj` file to import the targets file.  Add a test to cover this.
2016-11-15 10:47:15 -05:00
Brad King b6f1b1741d Merge topic 'add-SHA-3'
f636d1e7 Help: Add notes for topic 'add-SHA-3'
cb5dba8e Tests: Add SHA-3 algorithm coverage to CPack checksum test
a9fa6099 ExternalProject: Add support for SHA-3 algorithms
b4ffd26f ExternalData: Add support for SHA-3 algorithms
60939702 file: Add support for SHA-3 algorithms
92f95aed string: Add support for SHA-3 algorithms
c326209f cmCryptoHash: Add support for SHA-3 algorithms
979e8ba6 Help: De-duplicate and spell out supported hash algorithms
7a79f7e3 librhash: Activate SHA-3 implementation
87584b5e Merge branch 'upstream-librhash' into add-SHA-3
7fcbd47e librhash 2016-11-06 (de79828d)
c50c32a3 librhash: Update import script to add SHA-3 implementation
2016-11-15 09:26:16 -05:00
Brad King 4deaa25f46 ExternalProject: Fix UPDATE_DISCONNECTED with empty update steps
When `UPDATE_DISCONNECTED` is enabled the post-update steps
unconditionally depend on a `skip-update` step instead of `update`.
Make `skip-update` available whenever `UPDATE_DISCONNECTED` is enabled,
whether there is a real update step or not.

Closes: #16428
2016-11-15 08:45:04 -05:00
Brad King f7c5e970a0 Android: Add CMAKE_<LANG>_ANDROID_TOOLCHAIN_MACHINE
Expose the binutils' machine name (typically used as a prefix on the
tool names) publicly.  This is expected to match the `gcc -dumpmachine`
value.

Suggested-by: Ruslan Baratov <ruslan_baratov@yahoo.com>
2016-11-14 14:39:50 -05:00
Brad King d95e6dff3c Android: Add CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG variable
The NDK provides prebuilt toolchain files in directories named for the
host architecture.  The NDK build system calls this `HOST_TAG`.
Expose the value publicly for use by clients that need to pass it
to external tools.

Suggested-by: Ruslan Baratov <ruslan_baratov@yahoo.com>
2016-11-14 14:29:18 -05:00
Brad King 3d42a72bd5 Android: Always set CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION
When this variable is not set by the user or toolchain file, set it to
the default selected.  This will be useful for client code that needs to
pass the value to an external tool that needs to find the same toolchain
in the NDK.  Leave it empty for a standalone toolchain.

Suggested-by: Ruslan Baratov <ruslan_baratov@yahoo.com>
2016-11-14 14:29:14 -05:00
Brad King 4a4be0301b Merge topic 'swig_add_library'
a57e7630 Help: Add notes for topic 'swig_add_library'
013193d0 SwigTest: Update for swig_add_library and add lua example
ec1d585c UseSWIG: Do not set PREFIX property for SHARED and STATIC lua libraries
4c5b3c1c UseSWIG: Do not set NO_SONAME property for SHARED and STATIC libraries
d0a9d8bb UseSWIG: Add swig_add_library macro.
2016-11-14 09:44:17 -05:00
Brad King cb5dba8eb1 Tests: Add SHA-3 algorithm coverage to CPack checksum test 2016-11-11 11:46:01 -05:00
Brad King b4ffd26fd8 ExternalData: Add support for SHA-3 algorithms 2016-11-11 11:46:00 -05:00
Brad King 8b33507aba Merge topic 'cdash_version_check'
d3633731 Do not query CDash for version
f725b20b Update tests that expect uncompressed output
2016-11-11 10:44:24 -05:00
Brad King 6338652a87 Merge topic 'ctest_memcheck_defect_count'
3a523eec ctest_memcheck: Add DEFECT_COUNT option to capture defect count
2016-11-11 10:44:13 -05:00
Brad King 8715157c73 Merge topic 'ExternalProject-GIT_CONFIG'
2be9d85a ExternalProject: Allow passing config flags to git clone
2016-11-11 10:44:10 -05:00
Daniele E. Domenichelli 013193d0b0 SwigTest: Update for swig_add_library and add lua example 2016-11-11 08:14:10 +01:00
Brad King 60939702e1 file: Add support for SHA-3 algorithms 2016-11-10 16:41:45 -05:00
Brad King 92f95aede9 string: Add support for SHA-3 algorithms 2016-11-10 16:40:43 -05:00
Brad King 1f8480312e Features: Suppress c_static_assert test coverage on Intel <= 15
It works on some pre-15.0.2 versions but not others.
2016-11-10 15:29:25 -05:00
Brad King de53eb18ab Merge topic 'import-librhash'
cd8a57ae Add option to build CMake against a system librhash
71180fc8 FindLibRHash: Add module to find the librhash package
3216e94c Remove unused cm_sha2 infrastructure
5420278d Port hash computation to cmCryptoHash
9a596b33 cmCryptoHash: Re-implement in terms of librhash
47f91a61 cmCryptoHash: Avoid using subclasses at client sites
d0ff3e70 librhash: Port to KWIML for ABI and integer type information
465a85fb librhash: Avoid signed left-shift overflow
fc2cb74f librhash: Implement bswap_32 as a function even in strict C90 mode
0bd333bc librhash: Implement bswap_64 even in strict C90 mode
7189d62c librhash: Use __builtin_bswap{32,64} on Clang
af7ebf8a librhash: Install COPYING file with CMake documentation
bb01f20e librhash: Disable warnings to avoid changing 3rd party code
31bb727f librhash: Build the library within CMake
53048afa librhash: Remove source fragments not needed for CMake
5cb1b345 Merge branch 'upstream-librhash' into import-librhash
...
2016-11-10 08:34:28 -05:00
Brad King 71180fc8aa FindLibRHash: Add module to find the librhash package
Add it to a private source directory that is not installed so that we
can use it for building CMake itself.  This will allow it to mature
before being distributed publicly.
2016-11-10 08:29:38 -05:00
Christian Fetzer 2be9d85af8 ExternalProject: Allow passing config flags to git clone
Add a `GIT_CONFIG` parameter that allows to specify `--config` flags
that are passed to the git clone command.  This can be used to specify
for example `core.autocrlf=true`.  The `--config` parameter is supported
since Git 1.7.7.
2016-11-09 15:54:13 -05:00
Betsy McPhail 3a523eec78 ctest_memcheck: Add DEFECT_COUNT option to capture defect count 2016-11-09 15:34:07 -05:00
Brad King 64b5b06dc6 Merge topic 'drop-kwstyle'
36f9f0f8 Drop KWStyle checks in favor of clang-format and Git hooks
2016-11-09 09:49:58 -05:00
Brad King 453df662ba Merge topic 'imported-interface-libname'
09cda9d5 Allow imported INTERFACE libraries to specify a link library name
1d1f1eeb cmTarget: Refactor GetMappedConfig to choose location property up front
479932fa cmTarget: Add comment clarifying interface library special case
925e4270 cmTarget: Clarify comments in GetMappedConfig
2016-11-09 09:49:49 -05:00
Brad King 09cda9d5e7 Allow imported INTERFACE libraries to specify a link library name
Add an `IMPORTED_LIBNAME[_<CONFIG>]` target property to specify a library
name to be placed on the link line in place of an interface library
since it has no library file of its own.  Restrict use of the property
to imported `INTERFACE` libraries.

This will be particularly useful for find modules that need to provide
imported libraries from system SDKs where the full path to the library
file is not known.  Now such find modules will be able to provide an
imported interface library and set `IMPORTED_LIBNAME` to refer to the
SDK library by name.

Issue: #15267
2016-11-09 09:45:14 -05:00
Zack Galbreath f725b20be3 Update tests that expect uncompressed output
Pass --no-compressed-output to ctest for tests that expect uncompressed output.
2016-11-08 15:58:29 -05:00
Brad King 36f9f0f8a3 Drop KWStyle checks in favor of clang-format and Git hooks
We now define code layout by clang-format and enforce whitespace with
Git hooks.  There is no need to run KWStyle anymore, as all we used it
to check was line length anyway.
2016-11-08 11:40:20 -05:00
Alexander Adam cd0423300b CPack/RPM test for Suggests tag
Suggests tag was not present in older versions
of rpmbuild so we test that the rpm package is
always generated either with Suggests tag present
or skipped if not supported.
2016-11-05 11:44:32 +01:00
Brad King df252db15a Features: Test cycle diagnostic with language standard meta-feature
The `cxx_static_assert` feature may be available in C++ 98 mode of some
compilers or not available at all in others.  Intstead of using an
individual feature to test cyclic requirement of a feature requiring
C++ 11, use the `std_cxx_11` meta-feature that has exactly this meaning.
2016-11-02 10:01:24 -04:00
Brad King 6d5fb0e0d0 Features: Test feature propagation with language standard meta-feature
The `cxx_static_assert` feature may be available in C++ 98 mode of some
compilers or not available at all in others.  Intstead of using an
individual feature to test propagation of a feature requiring C++ 11,
use the `std_cxx_11` meta-feature that has exactly this meaning.
2016-11-02 10:01:23 -04:00
Brad King b0996a3fa2 Features: Add meta-features requesting awareness of a particular standard
A common use case of `target_compile_features` is simply to specify that
the compiler should be run in a mode that is aware of e.g. C++11.  Some
projects simply specify a particular C++11-only feature to request this.
Provide a first-class way to do this by naming features after the
corresponding language standard.  Record them as always available in the
corresponding standard level so that requesting them always ensures that
standard (or higher) is used.
2016-11-02 10:00:28 -04:00
Brad King 505f56dc91 Merge topic 'custom-command-CROSSCOMPILING_EMULATOR'
f648b9be Tests: Check that CROSSCOMPILING_EMULATOR is not used on imported targets
e7480d67 Fix custom command target substitution with CROSSCOMPILING_EMULATOR
2016-11-01 09:14:37 -04:00
Brad King f648b9be63 Tests: Check that CROSSCOMPILING_EMULATOR is not used on imported targets 2016-10-28 15:08:08 -04:00
Brad King e7480d670b Fix custom command target substitution with CROSSCOMPILING_EMULATOR
In commit v3.6.0-rc1~88^2 (CustomCommandGenerator: Add support for
CROSSCOMPILING_EMULATOR, 2016-05-04) logic was introduced to substitute
a target's `CROSSCOMPILING_EMULATOR` for argv0 in a custom command.
However, it broke the case when the argv0 was a target name and now
fails to expand the target name to its location at the same time as
inserting the emulator.  Fix the latter case.

Inspired-by: Brian Maher <brian@brimworks.com>
Closes: #16288
2016-10-28 15:08:03 -04:00
Brad King 9a58517df4 Tests: Add case for Xcode per-config per-source COMPILE_FLAGS diagnostic 2016-10-28 11:18:15 -04:00
Zsolt Parragi 1e4bb35894 Add generator expression support to per-source COMPILE_FLAGS
This allows users to specify different genex-based compile flags for
each file in a target, e.g. compiling just a single file with `Od/Ox` in
release builds on Visual Studio.
2016-10-28 11:18:03 -04:00
Brad King 18a966c80f Merge topic 'cmake-server-handshake-improvements'
42ccbee1 server-mode: Handle generator toolset and platform in handshake
d792491c cmake-server: Better error reporting during handshake
2016-10-28 08:26:49 -04:00
Tobias Hunger d792491c40 cmake-server: Better error reporting during handshake
Catch more problematic input during handshake and report failure.

These were caught before when trying to configure, but it is way better
to get these reports early.
2016-10-27 14:18:42 -04:00
Alex Wang 68e7250a9f Features: Fix cxx_right_angle_brackets compiler feature test
The clang-format pass in commit v3.6.0-rc1~54^2~1 (Revise C++ coding
style using clang-format, 2016-05-16) changed the template right angle
brackets from `>>` to `> >`, which defeats the purpose of this test.
Change it back and exclude this content from formatting.
2016-10-25 13:38:12 -04:00
Brad King 9430125511 Merge topic 'ninja-subdir-binary-dir'
87cc9bfc Merge branch 'backport-ninja-subdir-binary-dir' into ninja-subdir-binary-dir
e983bd32 Ninja: Use binary dir for `$subdir/all` targets
42db2ebc Ninja: Use binary dir for `$subdir/all` targets
2016-10-25 09:08:51 -04:00
Brad King 9a399c27a8 Merge topic 'cmake-server-message-quoting'
9b8dc79c cmake-server: Change message wrapper to avoid ambiguity with content
2016-10-25 09:08:49 -04:00
Brad King 9b8dc79cc8 cmake-server: Change message wrapper to avoid ambiguity with content
Change our message wrapper from

    [== CMake Server ==[ ... ]== CMake Server ==]

to

    [== "CMake Server" ==[ ... ]== "CMake Server" ==]

to guarantee that no JSON content can ever contain the ending string
(because it would be encoded as `]== \"CMake Server\" ==]`).
2016-10-24 14:36:13 -04:00
Alexis Murzeau e983bd326a Ninja: Use binary dir for $subdir/all targets
The targets added by commit v3.6.0-rc1~240^2~2 (Ninja: Add `$subdir/all`
targets, 2016-03-11) use as `$subdir` the relative path from the top of
the source tree to the current source directory.  This is not correct
when using `add_subdirectory(test test_bin)`.  Instead we need to use
the relative path from the top of the binary tree to the current binary
directory as was done for related targets by commit v3.7.0-rc1~268^2
(Ninja: Add `$subdir/{test,install,package}` targets, 2016-08-05).
2016-10-24 10:30:02 -04:00