Commit Graph

4483 Commits

Author SHA1 Message Date
Brad King
211e3223a6 Merge topic 'test-cpack-improve-failure-messages'
7f90d5e5 Tests: Improve RunCMake.CPack_* failure message formatting
2016-10-10 10:23:33 -04:00
Brad King
d3f1fcf6d1 Merge topic 'android-export-has-cpp'
dda6775c Android: Record use of C++ by static libs in exported Android.mk files
2016-10-10 10:23:27 -04:00
Brad King
19d4f942fe Merge topic 'android-cxxabi'
8cdac469 Android: Fix support for cxxabi.h with libc++
2016-10-10 10:23:24 -04:00
Stephen Kelly
fbc1b75c26 Test: Remove condition for CMake version no longer supported 2016-10-10 10:09:54 -04:00
Brad King
5d8da06d60 Merge branch 'android-export-has-cpp' into release 2016-10-07 15:03:15 -04:00
Brad King
dda6775c94 Android: Record use of C++ by static libs in exported Android.mk files
When a `PREBUILT_STATIC_LIBRARY` uses C++ in its sources then the `.a`
file will have a link-time dependency on the C++ runtime libraries.
Android NDK r14 will add a way to give this information to the NDK build
system by adding a `LOCAL_HAS_CPP` setting to the `Android.mk` file.
Add this for exported static libraries that use C++.
2016-10-07 15:02:42 -04:00
Brad King
7f90d5e5cc Tests: Improve RunCMake.CPack_* failure message formatting
Format a `message(FATAL_ERROR)` call with markup to make the generated
message more readable so that the difference between the actual and
expected results is easier to see.
2016-10-07 11:28:32 -04:00
Brad King
8cdac469d1 Android: Fix support for cxxabi.h with libc++
Additional include directories are needed for this on some STL types.

Closes: #16350
2016-10-07 09:53:51 -04:00
Domen Vrankar
bb8cf52156 CPack/RPM single debuginfo packaging
Generate a single debuginfo package even
if components packaging is enabled.

This makes issue #15668 resolution feature complete.

Closes: #15486
2016-10-07 09:19:04 -04:00
Domen Vrankar
758f58b4a1 CPack/RPM learned defining main component
Main component rpm package is generated
without component suffix in filename
and package name.
2016-10-07 09:19:04 -04:00
Brad King
9e7f9bbf56 Merge topic 'android-ndk-r13'
0c3a0477 Android: Update libc++ include directories for NDK r13
ebef3632 Android: Suppress -Wattributes warnings in test case builds
2016-10-07 09:10:49 -04:00
Brad King
ebef3632c7 Android: Suppress -Wattributes warnings in test case builds
We use `-Werror` in the Android test builds to make sure there are
no warnings that we care about (e.g. unused flags).  However, the
NDK r13 tools produce a warning about their own builtins:

```
<built-in>: In function 'float abs(float)':
<built-in>: warning: conflicts with previous declaration here [-Wattributes]
```

Suppress this warning so that we can continue using `-Werror` but
tolerate these warnings.
2016-10-06 13:26:05 -04:00
Ruslan Baratov
dc6d806660 Add a BUILD_RPATH target property specifying build-tree RPATH entries
Users may need to add custom `RPATH` entries to be able to run binaries
from their build tree without setting `LD_LIBRARY_PATH`.  Provide a way
to do this that does not affect the install-tree `RPATH`.
2016-10-03 13:42:27 -04:00
Brad King
8202816a36 Merge topic 'autogen-empty-qrc'
bcafc399 QtAutogen: Add test for empty qrc file
98b11f25 QtAutogen: Allow .qrc files that do not contain any file reference
2016-10-01 08:20:33 -04:00
Brad King
b4235b7590 Merge topic 'add-setup-projects-tests-module'
130784e0 AndroidTestUtilities: Add module to help drive Android device tests
2016-10-01 08:20:27 -04:00
Schuyler Kylstra
130784e039 AndroidTestUtilities: Add module to help drive Android device tests
Add a module to manage the data needed for the project tests.  It will
move the test data to the build directory and transfer necessary data to
an Android device if that is enabled.
2016-09-30 13:49:47 -04:00
Sebastian Holtermann
bcafc399c5 QtAutogen: Add test for empty qrc file 2016-09-30 10:02:49 -04:00
Brad King
d56f9237d7 Tests: Teach Server test to wait for server exit
We expect the server to exit when its communication pipes are closed.
Close them and wait for the server to exit.  If supported by the current
version of python, kill the server if it does not exit after a few
seconds.
2016-09-30 09:36:57 -04:00
Brad King
523f8ec82c server-mode: Add option to enable/disable test case explicitly
Add a `CMake_TEST_SERVER_MODE` option that can be set in testing builds
to enable/disable server mode tests explicitly.  This will allow testing
in combination with `CMake_TEST_EXTERNAL_CMAKE` or for server mode to be
built on systems that have a python version that cannot run the test.
2016-09-29 13:40:21 -04:00
Brad King
a833496199 server-mode: Rename variable CMake_{HAVE => ENABLE}_SERVER_MODE
The latter is a better name for making it a public-facing option.
2016-09-29 13:20:10 -04:00
Brad King
5d29506811 Merge topic 'cmake_parse_arguments-PARSE_ARGV-multi-value'
66c70cd9 cmake_parse_arguments: Add additional unit tests
41291b20 cmake_parse_arguments: Fix PARSE_ARGV multi-value argument handling
2016-09-29 08:09:48 -04:00
Brad King
48cd0f7405 Merge topic 'cmake-server-commands'
71a50587 server-mode: Add project data for unit tests
7b1e60f2 server-mode: Report CMakeCache entries
84553a6e server-mode: Add command to retrieve build system files
ead71873 server-mode: Report information relevant for a codemodel
2016-09-29 08:09:45 -04:00
Brad King
7cea3479d6 Merge topic 'fix-explicit-RC'
9c5238df project: Fix support for explicit RC language
40c04821 Tests: Decide earlier whether to test resources
2016-09-29 08:09:36 -04:00
Matthew Woehlke
66c70cd9f1 cmake_parse_arguments: Add additional unit tests
Add additional unit tests for some corner cases in argument splitting.
2016-09-28 15:20:42 -04:00
Matthew Woehlke
41291b20f3 cmake_parse_arguments: Fix PARSE_ARGV multi-value argument handling
The `PARSE_ARGV` mode was recently added to help functions properly
parse their arguments even when those arguments may be quoted and
contain literal `;` in their values.  Fix the implementation to encode
`;`s in reported multi-value arguments and in `UNPARSED_ARGUMENTS` so
that `;`s in the individual values are preserved in the lists.  This
allows clients to access all their argument values correctly.
2016-09-28 14:18:20 -04:00
Tobias Hunger
71a505870c server-mode: Add project data for unit tests
Do some basic unit tests for "codemodel", "cmakeInputs" and "cache"
commands of the cmake server.

This just calls the commands right now and makes sure the server
thinks it can reply to the request. The data itself is currently not
validated.
2016-09-28 20:10:59 +02:00
Brad King
9c5238dfd6 project: Fix support for explicit RC language
The check added in commit v3.6.0-rc1~293^2 (Diagnose recursive
project/enable_language without crashing, 2016-03-07) broke support for
enabling `RC` explicitly along with other languages like `C`.  The
reason is that we enable all listed languages at once so the internal
`enable_language(RC)` that we do while enabling `C` or `CXX` on some
platforms triggers the recursion check if `RC` is explicitly listed.

Ideally we should refactor things to only enable one language at a time,
but for now it is simplest to just exclude `RC` from the explicit list
until other languages are enabled, and then enable it.

Closes: #16330
2016-09-28 10:34:57 -04:00
Brad King
40c0482153 Tests: Decide earlier whether to test resources
Provide a CMake_TEST_RESOURCES variable storing the decision.
2016-09-28 09:40:00 -04:00
Brad King
af35ddc808 Tests: Add newline to RunCMake.CPack_RPM SOURCE_PACKAGE case
The `main.cpp` that this test generates needs a newline so that
compilers do not warn about a missing newline.  Otherwise the warning
causes RunCMake infrastructure to detect unexpected output.
2016-09-28 09:07:42 -04:00
Brad King
756169ac99 Tests: Update ModuleNotices test for new notice 2016-09-27 15:18:07 -04:00
Brad King
86578eccf2 Simplify CMake per-source license notices
Per-source copyright/license notice headers that spell out copyright holder
names and years are hard to maintain and often out-of-date or plain wrong.
Precise contributor information is already maintained automatically by the
version control tool.  Ultimately it is the receiver of a file who is
responsible for determining its licensing status, and per-source notices are
merely a convenience.  Therefore it is simpler and more accurate for
each source to have a generic notice of the license name and references to
more detailed information on copyright holders and full license terms.

Our `Copyright.txt` file now contains a list of Contributors whose names
appeared source-level copyright notices.  It also references version control
history for more precise information.  Therefore we no longer need to spell
out the list of Contributors in each source file notice.

Replace CMake per-source copyright/license notice headers with a short
description of the license and links to `Copyright.txt` and online information
available from "https://cmake.org/licensing".  The online URL also handles
cases of modules being copied out of our source into other projects, so we
can drop our notices about replacing links with full license text.

Run the `Utilities/Scripts/filter-notices.bash` script to perform the majority
of the replacements mechanically.  Manually fix up shebang lines and trailing
newlines in a few files.  Manually update the notices in a few files that the
script does not handle.
2016-09-27 15:14:44 -04:00
Brad King
681e0429fc Tests: Fix RunCMake.CTest output match to tolerate line number changes 2016-09-27 15:04:27 -04:00
Brad King
1adcf4917e Merge topic 'cpack-rpm-debuginfo-sources'
39c7d62c CPack/RPM debuginfo packaging documentation
dd3c938a CPack/RPM debuginfo directories to sources
b78fcf0d CPack/RPM debuginfo packages must contain sources
2016-09-27 08:23:03 -04:00
Brad King
e8ff565d94 Merge topic 'cmake-server-basic-commands'
89043267 server-mode: Add command to compute the build system
0a8ad670 server-mode: Add a configure command
544f65f4 server-mode: Set global configuration of cmake via a command
82104cc7 server-mode: Query global configuration of cmake via a command
2016-09-27 08:22:50 -04:00
Domen Vrankar
dd3c938a0f CPack/RPM debuginfo directories to sources
List of sources must be split into paths parts
so that debuginfo package cleans up after
itself.
2016-09-27 08:18:21 -04:00
Domen Vrankar
b78fcf0d2f CPack/RPM debuginfo packages must contain sources
Issue #15668 fix was missing relevant source
files in debuginfo package.
2016-09-27 08:18:21 -04:00
Nils Gladitz
144cc6f1f9 Ninja: Add source location as include directory for preprocessed files
Fortran INCLUDE statements are not handled by the preprocessor.

Since the location of the preprocessed file is distinct from the
original source file explicitly add the source file's directory
as an include path in the actual compile step (not the preprocessing step)
so INCLUDE can find it.

Closes: #16332
2016-09-27 08:11:08 -04:00
Tobias Hunger
544f65f44d server-mode: Set global configuration of cmake via a command
"setGlobalSettings" can be used to change settings reported by
"globalSettings" command.
2016-09-26 14:25:20 -04:00
Tobias Hunger
82104cc7a8 server-mode: Query global configuration of cmake via a command
Add "globalSettings" command that returns:
* Return capability information
* Return currently used generator/extra generator
* Return a range of flags for debug/trace/etc.
2016-09-26 14:23:53 -04:00
Brad King
4d6f0a5573 Merge topic 'revert-cpack-deb-package-description-fallback'
1ef45a30 Revert "CPack/DEB: Make package description variable precedence match RPM"
2016-09-26 09:06:39 -04:00
Brad King
c6f07d06c6 Merge topic 'xcode-swift-version'
b35568f3 Xcode: Add option to set Swift language version
49d50ad4 Xcode: Port rudimentary Swift support to Xcode 8
2016-09-26 09:06:29 -04:00
Brad King
b35568f3f9 Xcode: Add option to set Swift language version
Create a new CMAKE_Swift_LANGUAGE_VERSION variable to specify the
SWIFT_VERSION attribute in a generated Xcode project.  Ideally this
would be a `<LANG>_STANDARD` property but since Swift support is
very minimal we should reserve that property for more complete
treatment later.

Issue: #16326
2016-09-26 08:46:23 -04:00
Domen Vrankar
1ef45a30aa Revert "CPack/DEB: Make package description variable precedence match RPM"
This reverts commit 332b089ad2 as multiline
descriptions require special formatting.
2016-09-24 12:05:06 +02:00
Brad King
b66bc6606e Tests: Add Fortran submodule tests
Co-Author: Damian Rouson <damian@sourceryinstitute.org>
Issue: #16234
2016-09-23 08:51:06 -04:00
Brad King
c60fe33075 Merge topic 'test-Fortran-split'
eb8cd356 Tests: Split Fortran module testing into separate FortranModules test
a41c8724 Tests: Check if Fortran compiler supports F90
1ec5097d Tests: Use more generic variables in Fortran test
d7bd2efb Tests: Remove trailing line from Fortran/External
2016-09-23 08:40:10 -04:00
Brad King
eb8cd35684 Tests: Split Fortran module testing into separate FortranModules test
The main Fortran test is not granular enough.  Split some into another
test.
2016-09-22 14:52:01 -04:00
Brad King
a41c8724d1 Tests: Check if Fortran compiler supports F90 2016-09-22 14:52:00 -04:00
Brad King
1ec5097d4d Tests: Use more generic variables in Fortran test 2016-09-22 14:52:00 -04:00
Brad King
d7bd2efbc4 Tests: Remove trailing line from Fortran/External 2016-09-22 14:52:00 -04:00
Brad King
764775c4dd Fix XCODE_ATTRIBUTE_..._LOCATION target property lookup
Refactoring in commit v3.5.0-rc1~272^2~16 (cmGeneratorTarget: Add API for
property keys, 2015-10-25) changed the Xcode generator implementation of
`XCODE_ATTRIBUTE_...` properties to use the target `GetProperty` method on each
`XCODE_ATTRIBUTE_...` property listed by `GetPropertyKeys` instead of looping
over the property entries directly.  This made the lookup of property names of
the form `XCODE_ATTRIBUTE_..._LOCATION` accidentally trigger the computed
property logic for the undocumented/legacy `<CONFIG>_LOCATION` property.  Of
course the computed property value is not the same as the value stored in the
`XCODE_ATTRIBUTE_..._LOCATION` property.  Fix the computed property logic to
avoid triggering on `XCODE_ATTRIBUTE_...` attributes.

Closes: #16319
2016-09-22 11:29:52 -04:00
Brad King
f4475eb92b Merge topic 'test-fixtures'
73f47c9e CTest: Add support for test fixtures
2016-09-22 08:09:55 -04:00
Tobias Hunger
1d601c6cb9 server-mode: Introduce cmServerConnection
Use it to split pipe and stdin/out handling out of cmServer itself.

The server will shut down when it looses its connection to the client.
This has the nice property that a crashing client will cause the server
to terminate as the OS will close the connection on behave of the client.
2016-09-22 08:06:38 -04:00
Brad King
2c2ffd3874 Merge topic 'ctest-capture-error'
adf1e32f Help: Add notes for topic 'ctest-capture-error'
d328dc68 CTest: Add CAPTURE_CMAKE_ERROR val to `ctest_*` commands
9ac2e189 ctest_coverage: If gcov is not found just warn, not error
2016-09-21 08:47:51 -04:00
Brad King
68f7a476e7 Merge topic 'runcmake-cpack-test-framework-fix'
cb851a7c Tests: Fix RunCMake.CPack test infrastructure after logical conflict
2016-09-21 08:47:33 -04:00
Domen Vrankar
cb851a7c12 Tests: Fix RunCMake.CPack test infrastructure after logical conflict
The changes in commit d9cec8ad (CPack/RPM: Generate source rpm (SRPM)
packages on demand, 2016-09-19) logically conflict with the
infrastructure updates in commit 4682b42b (Tests: Add subtest support to
RunCMake/CPack infrastructure, 2016-09-13).  Integrate the two changes
so they work together.
2016-09-20 16:05:41 -04:00
Craig Scott
73f47c9e46 CTest: Add support for test fixtures
Add new test properties:

* FIXTURES_SETUP
* FIXTURES_CLEANUP
* FIXTURES_REQUIRED

to specify the roles and dependencies of tests providing/using
test fixtures.
2016-09-20 14:37:38 -04:00
Bill Hoffman
d328dc6853 CTest: Add CAPTURE_CMAKE_ERROR val to ctest_* commands
If a `ctest_*` command has CAPTURE_CMAKE_ERROR then any errors generated
by cmake during that command will cause the value to be assigned `-1`.
This will prevent a `ctest -S` script from returning non-zero unless the
script explicitly calls `message(FATAL_ERROR)`.
2016-09-20 13:14:20 -04:00
Brad King
6b8812c27e Merge topic 'directory-list-targets-and-subdirs'
d0be1e15 Add directory properties to get source and binary directories
cbca6582 Add directory property to list buildsystem targets
7a4b8d0d Add a directory property to list subdirectories
089868a2 cmState: Record buildsystem target names in each directory
2016-09-20 08:41:01 -04:00
Brad King
290d48ebc7 Merge topic 'cpack-rpm-srpm-package'
d9cec8ad CPack/RPM: Generate source rpm (SRPM) packages on demand
2016-09-20 08:40:55 -04:00
Brad King
9dc5bd9611 Merge topic 'cpack.hash_computing'
1c63aa4d CPack: Add option to generate a checksum file next to each package file
4682b42b Tests: Add subtest support to RunCMake/CPack infrastructure
2016-09-20 08:40:52 -04:00
Tobias Hunger
7df8a8f276 server-mode: Add --experimental flag
Allow for experimental cmProtocolVersions, which will only ever get
listed if the server was started with the (undocumented)
"--experimental" flag.

Mark current protocol version 1.0 as experimental.
2016-09-20 08:32:26 -04:00
Domen Vrankar
d9cec8adca CPack/RPM: Generate source rpm (SRPM) packages on demand
Closes: #15839
2016-09-20 08:24:28 -04:00
Brad King
d0be1e15c3 Add directory properties to get source and binary directories
Add SOURCE_DIR and BINARY_DIR directory properties that return the
absolute paths to the corresponding directories.  These correspond
to the target properties of the same names that we already have.
2016-09-19 14:00:50 -04:00
Brad King
cbca65826c Add directory property to list buildsystem targets
Add a BUILDSYSTEM_TARGETS property to allow project code to traverse
the list of its own targets in a given directory.
2016-09-19 14:00:32 -04:00
Brad King
7a4b8d0dc2 Add a directory property to list subdirectories
Add a SUBDIRECTORIES directory property to allow project code to
traverse the directory structure of itself as CMake sees it.
2016-09-19 13:59:43 -04:00
Petr Orlov
1c63aa4d43 CPack: Add option to generate a checksum file next to each package file
Add variable CPACK_PACKAGE_CHECKSUM to activate it.
2016-09-19 10:22:50 -04:00
Domen Vrankar
4682b42bdb Tests: Add subtest support to RunCMake/CPack infrastructure 2016-09-19 10:20:13 -04:00
Tobias Hunger
b63c1f6ce7 cmake-server: Add unit test 2016-09-19 08:57:58 -04:00
Tobias Hunger
b13d3e0d0b cmake-server: Bare-bones server implementation
Adds a bare-bones cmake-server implementation and makes it possible
to start that with "cmake -E server".

Communication happens via stdin/stdout for now.

Protocol is based on Json objects surrounded by magic strings
("[== CMake Server ==[" and "]== CMake Server ==]"), which simplifies
Json parsing significantly.

This patch also defines an interface used to implement different
versions of the protocol spoken by the server, but does not include
any protocol implementaiton.
2016-09-19 08:57:57 -04:00
Stephen Kelly
92d76b50aa Make the add_custom_command output more predictable
I otherwise get:

   Expected stderr to match:

    expect-err> CMake Error at AppendNotOutput.cmake:1 \(add_custom_command\):
    expect-err>   add_custom_command given APPEND option with output.*
    expect-err>   which is not already a custom command output.
    expect-err> Call Stack \(most recent call first\):
    expect-err>   CMakeLists.txt:3 \(include\)

   Actual stderr:

    actual-err> CMake Error at AppendNotOutput.cmake:1 (add_custom_command):
    actual-err>   add_custom_command given APPEND option with output
    actual-err>   "/home/stephen/dev/src/cmake/with
    actual-err> space/Tests/RunCMake/add_custom_command/AppendNotOutput-build/out" which is
    actual-err>   not already a custom command output.
    actual-err> Call Stack (most recent call first):
    actual-err>   CMakeLists.txt:3 (include)

Using a specific line for paths is a style already used elsewhere for
the same reason, such as CMP0041 output.
2016-09-19 08:49:46 -04:00
Brad King
4356bd7fe3 Merge topic 'file-curl-httpheader'
8f6cb366 file(DOWNLOAD|UPLOAD): Add HTTPHEADER suboption
2016-09-16 10:21:23 -04:00
Brad King
38a378e10d Merge topic 'find_package-dir-sort'
31be918b find_package: Optionally sort globbed directories in a meaningful order
2016-09-16 10:21:17 -04:00
Ruslan Baratov
8f6cb36695 file(DOWNLOAD|UPLOAD): Add HTTPHEADER suboption 2016-09-15 21:41:39 +03:00
Pierluigi Taddei
31be918b0b find_package: Optionally sort globbed directories in a meaningful order
Add `CMAKE_FIND_PACKAGE_SORT_{ORDER,DIRECTION}` variables to specify
sort order and direction.

When multiple package with the same name have been found in the same
location sorting option can be used to force a specific version to be
loaded (e.g. libA_1.12.0 instead of libA_1.1.0).  Currently sorting by
NAME and by NATURAL order have been implemented.

Natural ordering makes use of the `strverscmp(3)` ordering.
2016-09-15 13:35:25 -04:00
Ruslan Baratov
a788cf3092 Tests: Add case for file(LOCK) with lower-cased path
The KWSys update in commit d28e4467 (KWSys 2016-09-14 (c4049689))
fixed this case, so add it to the test suite.

Closes: #16295
2016-09-15 11:44:28 -04:00
Brad King
010140311a Merge topic 'update-kwsys'
de149317 Tests: Use upper-case drive letters in RunCMake.get_filename_component
04d94fbe Merge branch 'upstream-KWSys' into update-kwsys
d28e4467 KWSys 2016-09-14 (c4049689)
e4fc770f Merge branch 'upstream-KWSys' into update-kwsys
b80d6136 KWSys 2016-09-14 (e736efa1)
2016-09-15 08:46:48 -04:00
Brad King
b7dcadac44 Merge topic 'add-strverscmp'
88494325 Tests: Add test for our strverscmp implementation
07f69bd5 cmSystemTools: Add strverscmp
2016-09-15 08:46:45 -04:00
Brad King
de1493176b Tests: Use upper-case drive letters in RunCMake.get_filename_component
With the most recent KWSys update, the "actual case" operation on
Windows always upper-cases the drive letter now even for absolute paths
that do not exist.  Use an upper-case drive letter in the test so that
it can tolerate this operation on Windows and the lack of this operation
elsewhere.
2016-09-15 08:39:18 -04:00
Pierluigi Taddei
884943251b Tests: Add test for our strverscmp implementation
Cover typical examples and the ordering defined by the `strverscmp(3)`
man page.
2016-09-14 09:10:18 -04:00
Brad King
171ea5d3cf Merge topic 'file-curl-userpw'
abeb42f1 Help: Add notes for topic 'file-curl-userpw'
e5ba1041 file(DOWNLOAD|UPLOAD): Add 'USERPWD' suboption
2016-09-14 08:56:22 -04:00
Brad King
b93623550d Merge topic 'add_androidmk_generator'
42ce9f1e Add support for creating prebuilt Android.mk files
d5257063 Export: Virtualize file generation step helpers
f81b9475 Export: Factor out file generation steps into helpers
2016-09-14 08:56:19 -04:00
Ruslan Baratov
e5ba1041be file(DOWNLOAD|UPLOAD): Add 'USERPWD' suboption 2016-09-13 20:24:12 +03:00
Bill Hoffman
42ce9f1e71 Add support for creating prebuilt Android.mk files
Add options to the `install()` and `export()` commands to export the
targets we build into Android.mk files that reference them as prebuilt
libraries with associated usage requirements (compile definitions,
include directories, link libraries).  This will allow CMake-built
projects to be imported into projects using the Android NDK build
system.

Closes: #15562
2016-09-13 12:47:43 -04:00
Brad King
994e98bf41 Merge topic 'timestamp-names'
410add40 Help: Add notes for topic 'timestamp-names'
751f7b52 string(TIMESTAMP ...): add '%a' and '%b' format specifiers
2016-09-13 11:40:47 -04:00
Brad King
8a56e311ec Merge topic 'file-download-unexpected-arg'
4dd997da file(DOWNLOAD|UPLOAD): Warn on unexpected arguments
2016-09-13 11:40:35 -04:00
Ruslan Baratov
751f7b5255 string(TIMESTAMP ...): add '%a' and '%b' format specifiers
%b: Abbreviated month name (e.g. Oct).
%a: Abbreviated weekday name (e.g. Fri).
2016-09-12 19:07:38 +03:00
Brad King
a7305ef00a Merge topic 'geh-failure-tests'
612d6f29 Tests: Refactor GenerateExportHeader test code
ce76abb4 Tests: Add data symbols to GenerateExportHeader test
8f95b93b Tests: Add failure test for GenerateExportHeader
2016-09-12 11:57:15 -04:00
Matthew Woehlke
612d6f29f8 Tests: Refactor GenerateExportHeader test code
Refactor the library code used in the GenerateExportHeader test to use
an improved naming convention that more directly identifies what it
being tested, making use of namespaces to avoid possible symbol
collisions. This also eliminates duplicate cases such as `libshared()`
and `libshared_not_exported()` which had the same decoration, and adds
consistent pairings of <name>_EXPORT and <name>_DEPRECATED_EXPORT which
were missing previously. The data tests from the previous commit are
also added to `libstatic` and `libshared_and_static` for consistency.

Note that there are no exported members of exported classes, as these
are not allowed on Windows.
2016-09-12 10:29:20 -04:00
Matthew Woehlke
ce76abb4c4 Tests: Add data symbols to GenerateExportHeader test
Add static data members and global variables to the GenerateExportHeader
shared library, testing that export decoration for these works in
addition to decoration of classes and free functions.
2016-09-12 10:28:59 -04:00
Matthew Woehlke
8f95b93b41 Tests: Add failure test for GenerateExportHeader
Modify notation of statements in the GenerateExportHeader test expected
to result in link errors. Modify script used to build the test to also
generate a suite of modified sources, each having exactly one of the
failing lines enabled, and to generate EXCLUDE_FROM_ALL executables for
the same. Modify RunCMake script used to drive the test to read the list
of such executables and try to build each of them, verifying that they
do in fact fail to build.

This will verify that the _NO_EXPORT macros are working as expected, and
will also catch errors like the one that commit 0cbaaf2d
(GenerateExportHeader: Fix add_compiler_export_flags regression,
2016-09-01) fixed.

When setting up the failure tests for GenerateExportHeader, check if the
compiler actually hides non-exported stuff.  If not, the failure tests
won't fail, and will cause the overall test to fail.  Since this
typically is only the case for very old compilers, simply skipping them
as opposed to trying to do something more fine grained seems reasonably
safe.
2016-09-12 10:27:45 -04:00
Brad King
b3b238c3cc Merge topic 'bzip2-imported-targets'
79eba4b7 Help: Add notes for topic 'bzip2-imported-targets'
069cac58 Tests: Add FindBZip2 unit tests
e9ce0503 FindBZip2: Add imported target
2016-09-12 09:31:41 -04:00
Ruslan Baratov
4dd997da54 file(DOWNLOAD|UPLOAD): Warn on unexpected arguments
Emit warning message on unparsed argument instead of silently ignoring it.
Can't stop with the error message because it may break old code.
2016-09-09 23:19:39 +03:00
Roger Leigh
069cac584f Tests: Add FindBZip2 unit tests 2016-09-09 11:42:35 -04:00
Brad King
c40cbccf7d Merge topic 'parse_arguments_argv_n'
cb299acc cmake_parse_arguments: Add option to read arguments from ARGC/ARGV#
2016-09-09 11:18:07 -04:00
Brad King
188a42a72f Merge topic 'FindMatlab-regression-tests-print-on-error'
1031e5d9 FindMatlab: add verbosity to the nightly tests
2016-09-09 11:17:55 -04:00
Bill Hoffman
cb299acc27 cmake_parse_arguments: Add option to read arguments from ARGC/ARGV#
The `ARGC`/`ARGV#` variables in function scope hold the original
arguments with no ;-list flattening.  Add a way for functions to
cleanly parse arguments that may contain `;`.  This also avoids
extra copying of the arguments.

Co-Author: Brad King <brad.king@kitware.com>
2016-09-08 11:33:46 -04:00
Brad King
988b3806b6 Merge topic 'vs-15-generator'
bdc679a8 VS15: Add Visual Studio 15 generator
a8936656 VS: Update v140 flag tables from VS 15 MSBuild files
21346d3f Features: Record features for VS 15 Preview 4
2016-09-08 09:36:54 -04:00
Raffi Enficiaud
1031e5d993 FindMatlab: add verbosity to the nightly tests 2016-09-08 13:26:42 +02:00
Brad King
bdc679a8ae VS15: Add Visual Studio 15 generator
Call the generator "Visual Studio 15" without any year because the
preview version of VS 15 does not provide a year in the product name.

Copy cmGlobalVisualStudio14Generator to cmGlobalVisualStudio15Generator
and update version numbers accordingly.  Add the VS15 enumeration value.
Note that we do not need to add a MSVC15 variable or v150 toolset
because Visual Studio 15 comes with an updated version of the v140
toolset and remains ABI-compatible.

Teach tests VSExternalInclude, RunCMake.GeneratorPlatform, and
RunCMake.GeneratorToolset to treat VS 15 as they do VS 10-14.

Closes: #16143
2016-09-07 15:49:08 -04:00
Brad King
f9973166e8 ExternalData: Tolerate files duplicated across multiple targets
If multiple ExternalData_Target_Add calls generate the same output file
then we need to avoid calling add_custom_command multiple times with
that output.  This was already done within a single target by setting a
variable in the local function scope.  This will not be visible in other
calls though so we need to use a directory property instead to prevent
adding a custom command multiple times for one output in a directory.

Normally it is not safe to have multiple custom commands that produce
the same output file across multiple independent targets, but since we
use atomic replacement of outputs the resulting races should not be a
problem.  For the convenience of projects, tolerate this instead of
diagnosing it.  In particular, we previously allowed up to two copies
of the custom command in one directory because CMake has a fallback
from MAIN_DEPENDENCY to an `<output>.rule` file.

While at it, add a note to the documentation that typically only one
external data target should be needed for a project.

Reported-by: David Manthey <david.manthey@kitware.com>
2016-09-07 15:17:33 -04:00