Commit Graph

1381 Commits

Author SHA1 Message Date
Brad King
bd77717800 Merge topic 'fix-genex-SOURCES'
068cc545 Genex: Fix TARGET_PROPERTY value of SOURCES

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1218
2017-09-01 10:25:08 -04:00
Brad King
068cc545d9 Genex: Fix TARGET_PROPERTY value of SOURCES
Refactoring in commit v3.8.0-rc1~445^2~2 (cmTarget: Move sanity checks
and computed property access to callers, 2016-10-13) exposed a typo in
commit v3.8.0-rc1~445^2~3 (cmGeneratorTarget: Implement
cmTargetPropertyComputer interface, 2016-10-13).  Together they broke
the `$<TARGET_PROPERTY:mytgt,SOURCES>` generator expression in the case
that the `SOURCES` target property is populated in part by the
`target_sources` command.  Add the missing `;`-separator.

Fixes: #17243
2017-09-01 10:23:37 -04:00
Brad King
96c882dcba Merge topic 'lexer-null'
14d9a11b ListFileLexer: fix heap-buffer-overflow on malicious input

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1153
2017-08-31 10:08:18 -04:00
Matthias Maennich
14d9a11be9 ListFileLexer: fix heap-buffer-overflow on malicious input
In case a list file contains a null terminated string that is continued
until a later space, the lexer token information got inconsistent:

e.g. an argument   "TEST\0FOOBAR"    is passed by the lexer as a token

char* = "TEST\0FOOBAR" and length 11
             ^^ note: ascii 0x00

Using strdup in cmListFileLexer leads lexer->token.text to be allocated
with size 5 and lexer->token.length to be set to 11

A subsequent call to this function with an argument of  5 < length <= 11
wrongly assumed a sufficiently sized buffer and therefore corrupted the
heap buffer. The program might crash due to this corruption.
The case "NullTerminatedArgument" is intentionally using a quite large
'rest' to increase the chance to actually hit the issue. It will reliably
crash with address sanitizer enabled though.

This fix addresses all rules where arbitrary characters are matched to
ignore \0 in order to fall through to the rule that matches an arbitrary
character as BadCharacter.

Signed-off-by: Matthias Maennich <matthias@maennich.net>
2017-08-30 11:28:51 -04:00
Bill Hoffman
311b7b1a70 Add properties to run cppcheck along with the compiler
Create a `<LANG>_CPPCHECK` target property (initialized by a
`CMAKE_<LANG>_CPPCHECK` variable) to specify a `cppcheck` command line
to be run along with the compiler.
2017-08-30 10:23:46 -04:00
Brad King
ebc91a4452 Avoid CRLF newlines in Git repo blobs
In commit 8ed03baa76 (gitattributes: prefer `eol=crlf` to `-crlf`,
2017-08-23) we left a few CRLF blobs in the repository.  Some Git
versions get confused by text files with CRLF blobs.  Convert them
to LF blobs.  Use the `eol=crlf` attribute to tell Git to use CRLF
on checkout.
2017-08-30 08:29:43 -04:00
Brad King
ce602febf0 Tests: Fix RunCMake.BuildDepends on VS 2017 with v90 toolset
The MSVC toolsets v100 and below forget to re-link when a manifest
changes.  Exclude this part of the test case for them.
2017-08-25 09:55:50 -04:00
Domen Vrankar
80047bd611 CPack: extend testing framework
Some CPack tests require running
commands after the inclusion of
CPack.cmake and this patch enables
such tests to declare run_after_include_cpack
function which is run after the
inclusion.
2017-08-19 22:41:14 +02:00
Sylvain Joubert
d8ecc25457 Add PREPEND sub-command to string command 2017-08-11 13:26:33 +02:00
Brad King
8c0afd2c75 Merge branch 'find-package_root-disable' into release-3.9
Merge-request: !1116
2017-08-10 09:27:19 -04:00
Brad King
311f338ddc Merge topic 'find-package_root-test-regex'
e574bce1 Tests: Simplify RunCMake.find_package PackageRoot case regexes

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Chuck Atkins <chuck.atkins@kitware.com>
Merge-request: !1115
2017-08-10 09:22:17 -04:00
Brad King
f4e66b41d8 Merge topic 'find-package_root-disable'
578d95f8 find_*: Disable the PACKAGE_ROOT search path group for CMake 3.9

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1116
2017-08-10 09:22:02 -04:00
Brad King
578d95f87d find_*: Disable the PACKAGE_ROOT search path group for CMake 3.9
Disable the feature added by commit v3.9.0-rc1~71^2~2 (find_*: Add a new
PackageRoot search path group, 2017-05-03) and remove documentation
added by commit v3.9.0-rc1~71^2 (find_*: Add docs for PackageRoot search
path group, 2017-05-03).  Unfortunately the name `<pkg>_ROOT` may
already be set by projects for their own incompatible purposes.  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 variable we can use in the tests to enable the behavior
before the policy is introduced.

Fixes: #17144
2017-08-08 11:52:28 -04:00
Brad King
db6ea482f6 Merge topic 'gtest-dynamic-discovery'
bfcda401 Add dynamic test discovery for for Google Test

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1056
2017-08-08 09:29:48 -04:00
Brad King
e574bce15b Tests: Simplify RunCMake.find_package PackageRoot case regexes 2017-08-08 08:23:57 -04:00
Brad King
49640d3629 HP-UX: Drop support for building CMake on HP-UX
CMake will soon require both C++11 and libuv to build.  Neither of
these works on HP-UX, so unfortunately we need to drop support for
the platform until someone can get them working.

Issue: #17137
2017-08-07 09:16:09 -04:00
Brad King
51f08783c2 Merge topic 'genex-error-grammar'
e49c9eec cmGeneratorExpressionNode: add some missing commas

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1102
2017-08-04 09:17:24 -04:00
Brad King
18cbf898f8 Merge topic 'add-package_root-to-find_package'
4a207116 find_package: Split PACKAGE_ROOT tests to work with smaller regex
9722ff5a find_package: Fix PACKAGE_ROOT test to check find_pacakge(CONFIG) mode.
c5d2b99c find_package: Add missing PACKAGE_ROOT_PATH search path implementation.

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1082
2017-08-04 09:09:59 -04:00
Ben Boeckel
e49c9eec27 cmGeneratorExpressionNode: add some missing commas 2017-08-03 13:39:58 -04:00
Chuck Atkins
4a20711690 find_package: Split PACKAGE_ROOT tests to work with smaller regex 2017-08-02 12:03:52 -04:00
Chuck Atkins
9722ff5a6f find_package: Fix PACKAGE_ROOT test to check find_pacakge(CONFIG) mode. 2017-07-28 10:49:13 -04:00
Matthew Woehlke
bfcda4013a Add dynamic test discovery for for Google Test
Add a new gtest_discover_tests function to GoogleTest.cmake,
implementing dynamic test discovery (i.e. tests are discovered by
actually running the test executable and asking for the list of
available tests, which is used to dynamically declare the tests) rather
than the source-parsing approach used by gtest_add_tests. Compared to
the source-parsing approach, this has the advantage of being robust
against users declaring tests in unusual ways, and much better support
for advanced features such as parameterized tests.

A unit test, modeled after the TEST_INCLUDE_DIR[S] test, is also
included. Note that the unit test does not actually require that Google
Test is available. The new functionality does not actually depend on
Google Test as such; it only requires that the test executable lists
tests in the expected format when invoked with --gtest_list_tests, which
the unit test can fake readily.
2017-07-27 09:47:28 -04:00
Brad King
81005ff16b Merge topic 'string-clear-intermediate-matches'
b7941641 cmStringCommand: clear intermediate matches

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1065
2017-07-21 10:16:26 -04:00
Brad King
43383fa922 Merge topic 'docsExternalProject'
8842a027 ExternalProject: Improve documentation

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1037
2017-07-21 10:12:33 -04:00
Ben Boeckel
b794164143 cmStringCommand: clear intermediate matches
When `string(REGEX REPLACE)` or `string(REGEX MATCHALL)` loop
internally, they store their matches, but they do not clear the previous
match from an earlier iteration. This can leave the contents of
`CMAKE_MATCH_<N>` with bogus values for later matches in the string if
they have groups which earlier matched a non-empty string, but now match
an empty string.

Fixes #17079.
2017-07-21 09:09:56 -04:00
Brad King
407c7415f4 Merge topic 'cmake-E-sha'
c4de0a25 Add sha1sum, sha224sum, sha256sum, sha384sum and sha512sum to command mode
c4647d84 Change ComputeFileMD5 to ComputeFileHash
501a4fee Add some unit tests for md5sum

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1021
2017-07-18 11:12:57 -04:00
Brad King
787017451c Merge topic 'objlib-own-target-objs'
d89e10cd Diagnose object library self-reference

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1053
2017-07-18 11:12:00 -04:00
Craig Scott
8842a0272b ExternalProject: Improve documentation
- Added clearer structure by grouping the options into logical sections.
- Expanded the details for many of the options.
- Added Examples section to show how to use the various commands.
- Specifically highlighted that the contents of SOURCE_DIR may be lost
  if a download method is also provided.
- Updated argument-matching regex to be more robust and account for the
  varying leading spaces before keywords in the docs.
- Updated tests to account for slightly changed error messages.
2017-07-18 08:39:39 +10:00
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
André Klitzing
c4de0a25ac Add sha1sum, sha224sum, sha256sum, sha384sum and sha512sum to command mode 2017-07-14 19:49:45 +02:00
Brad King
489a7706c2 Merge topic 'android-system-include-last'
4bafa392 Android: Always add standard include directories last

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1052
2017-07-13 10:07:36 -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
0f158272d6 Merge topic 'test_include_files'
117033c1 Add TEST_INCLUDE_DIR[S] unit test
ed5bde30 Add TEST_INCLUDE_FILES

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1031
2017-07-13 07:46:47 -04:00
Brad King
f5be951117 Merge topic 'labels-for-subprojects'
376dc3eb Help: Add notes for topic 'labels_for_subprojects'
a70d8e93 Add tests for new directory labels and labels-for-subprojects features
47b3a57c Display subproject timing summary
d3859624 Add directory property 'LABELS' and CMAKE_DIRECTORY_LABELS variable
d08ec4d2 Add CTEST_LABELS_FOR_SUBPROJECTS as a CTest module and script variable

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1004
2017-07-13 07:46:09 -04:00
Matthew Woehlke
117033c1d9 Add TEST_INCLUDE_DIR[S] unit test
Add a unit test for the TEST_INCLUDE_DIR and (new) TEST_INCLUDE_DIRS
directory properties.
2017-07-12 13:28:21 -04:00
Brad King
ff9321a18a Merge topic 'vs-2017-sln-guid'
5cf9c3d0 VS: Add SolutionGuid to generated .sln files

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1042
2017-07-12 08:59:26 -04:00
Brad King
083a5cad0e Merge topic 'find_package-root-prefix-path-suffixes'
80b905f8 find_*: Honor PATH_SUFFIXES in PackageName_ROOT paths
1ae1b880 cmFindCommon: Drop unused FilterPaths method
cca8454e cmFindCommon: Fix typo in PackageName_ROOT path label

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Chuck Atkins <chuck.atkins@kitware.com>
Merge-request: !1044
2017-07-12 08:59:07 -04:00
Brad King
7020833841 Merge topic 'bindexplib-revert-consts'
3250b9a1 bindexplib: Revert support for constants symbols

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1041
2017-07-12 08:58:36 -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
Betsy McPhail
a70d8e93e8 Add tests for new directory labels and labels-for-subprojects features 2017-07-10 16:25: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
4bf96ed9b0 Merge topic 'find_package-restore-considered-configs'
e7730d78 find_package: Restore longer message when config files were considered

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !1032
2017-07-10 10:21:23 -04:00
André Klitzing
501a4feea8 Add some unit tests for md5sum 2017-07-09 13:18:20 +02: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
0552747b58 Merge topic 'feature/include_guard'
c96f43b7 include_guard: add tests for the feature
80f1221f include_guard: add doc pages and a release note
85b52a04 include_guard: add vim syntax highlighting rules
d44bd1c2 include_guard: implement new command

Acked-by: Kitware Robot <kwrobot@kitware.com>
Reviewed-by: Craig Scott <craig.scott@crascit.com>
Merge-request: !928
2017-06-28 08:53:30 -04:00