Commit Graph

282 Commits

Author SHA1 Message Date
Reiner Herrmann edcccde7d6 file: Sort GLOB results to make it deterministic (#14491)
Even though the `file(GLOB)` documentation specifically warns against
using it to collect a list of source files, projects often do it anyway.
Since it uses `readdir()`, the list of files will be unsorted.
This list is often passed directly to add_executable / add_library.
Linking binaries with an unsorted list will make it unreproducible,
which means that the produced binary will differ depending on the
unpredictable `readdir()` order.

To solve those reproducibility issues in a lot of programs (which don't
explicitly `list(SORT)` the list manually), sort the resulting list of
the `file(GLOB)` command.

A more detailed rationale about reproducible builds is available
[here](https://reproducible-builds.org/).
2016-05-17 10:12:11 -04:00
Brad King b30b32a493 Drop find_(library|file|path) prefixes from PATH on non-Windows
Since commit v3.3.0-rc1~430^2 (Teach find_(library|file|path) to get
prefixes from PATH, 2015-02-18) we search in <prefix>/include and
<prefix>/lib directories for prefixes with bin directories in the PATH
environment variable.  The motivation was to support MSYS, MinGW and
similar Windows platforms in their default environments automatically.
At the time this behavior was thought to be worthwhile in general.

Suggested-by: Chuck Atkins <chuck.atkins@kitware.com>
2016-05-09 12:58:08 -04:00
Jean-Christophe Fillion-Robin 8c2cedc624 CustomCommandGenerator: Add support for CROSSCOMPILING_EMULATOR
Teach the `add_custom_command` and `add_custom_target' commands to
substitute argv0 with the crosscompiling emulator if it is a target with
the `CROSSCOMPILING_EMULATOR` property set.
2016-05-09 08:56:27 -04:00
Felix Geyer 49e82c15d5 Fix spelling typos in comments and documentation (#16037)
The Debian package checker tool (lintian) detected several typos in
CMake.
2016-03-29 14:31:02 -04:00
Brad King 1dc8486b40 Help: Organize and clarify `cmake_minimum_required` documentation
State more explicitly that `cmake_policy(VERSION)` is implied and
explain the effects it has.
2016-03-23 14:39:48 -04:00
Brad King b42866a34a Drop Visual Studio 6 generator
This generator has been deprecated since CMake 3.3.  Remove it.
Update documentation, modules, and tests to drop content specific
to this generator.
2016-03-09 09:42:18 -05:00
Brad King 7f1bd9fe69 try_compile: Add option to control type of target
Create a `CMAKE_TRY_COMPILE_TARGET_TYPE` option to specify use
of `add_library(... STATIC ...)` for the generated test project.
This will be useful for cross-compiling toolchains that cannot
link a binary without custom flags or scripts.
2016-02-19 14:07:38 -05:00
Brad King c387325d4a Merge topic 'unix-timestamps'
6727270b CMake: Extend TIMESTAMP sub-commands with new unix time format specifier
2016-02-19 09:47:39 -05:00
Jose-Luis Blanco-Claraco 6727270b75 CMake: Extend TIMESTAMP sub-commands with new unix time format specifier
The new `%s` format specifier is substituted by file()/string()
`TIMESTAMP` sub-commands with the number of seconds since unix-epoch
(1970-01-01 00:00:00 UTC).

Co-Author: Nils Gladitz <nilsgladitz@gmail.com>
2016-02-18 10:30:13 -05:00
Brad King c978223c85 Help: Clarify install(TARGETS) INCLUDES DESTINATION option
The option does not actually participate in argument groups like the
others because it does not actually install anything.  Fix the order
in the documentation accordingly.

Reported-by: Daniel Wirtz <daniel.wirtz@simtech.uni-stuttgart.de>
2016-02-17 10:14:54 -05:00
Brad King 3b8c0fbfd7 Merge topic 'install-EXCLUDE_FROM_ALL'
586e56d0 Help: Add notes for topic 'install-EXCLUDE_FROM_ALL'
d321c196 Tests: Add cases for install() command EXCLUDE_FROM_ALL option
18ce97c4 install: Add EXCLUDE_FROM_ALL option (#14921)
2016-02-09 10:10:15 -05:00
Brad King 2619317c66 Merge topic 'fix-doc-typos'
a3b91d16 Help: Fix command specification for cmake_minimum_required
d8c90800 Help: Fix mistake in cmake-buildsystem(7) example
2016-02-08 10:33:02 -05:00
Horst Kronstorfer a3b91d1640 Help: Fix command specification for cmake_minimum_required
Implementation indicates that at least two components of VERSION must
be specified (see Source/cmCMakeMinimumRequired.cxx.) Therefore the
minor version is not optional.
2016-02-08 09:52:56 -05:00
Nick Lewis 18ce97c4a2 install: Add EXCLUDE_FROM_ALL option (#14921)
Let us take an example of a project that has some tests in a component
that need to be installed into a dedicated test package.  The user
expectation is that the result could be achieved by typing the
following:

    make
    make tests
    make install
    DESTDIR=/testpkgs make install-tests

However this results in test components in the default installation as
well as the testpkg.

Add an EXCLUDE_FROM_ALL option to the install() command to tell it that
the installation rule should not be included unless its component is
explicitly specified for installation.
2016-02-04 09:16:56 -05:00
Ashley Whetter 0205f882ae list: Add FILTER subcommand (#3986)
Create a `list(FILTER)` command to filter lists by regular expression.
2016-02-03 11:13:17 -05:00
Bartosz Kosiorek 4d53e0a75e Help: Clarify `add_custom_command(TARGET)` scope (#15681) 2016-01-28 10:13:27 -05:00
Bartosz Kosiorek 63c5808f93 Help: Clarify scope of `if(TARGET)` expression 2016-01-28 10:13:17 -05:00
Bartosz Kosiorek a336e438e2 Help: Improve markup in `if` command documentation 2016-01-28 10:12:51 -05:00
Bartosz Kosiorek 88968265e2 Help: Improve markup in `get_target_property` documentation 2016-01-28 10:12:50 -05:00
Yves Frederix 630c8aa843 install: Allow generator expressions in DIRECTORY
Teach install(DIRECTORY) to support generator expressions in the list
of directories, much like install(FILES) already supports.
2016-01-13 09:02:06 -05:00
Matthias Maennich ab8a280857 cmake_parse_arguments: consider duplicate keyword as warning
The behaviour of double specified keywords is rather undefined or at
least not clearly documented. This change introduces a strict check and
emits a warning in case a keyword has been specified more than once.
2015-12-17 10:45:19 -05:00
Matthias Maennich e8b148318f CMakeParseArguments: replace by native cmake_parse_arguments command
Implement a native `cmake_parse_arguments` command that is fully
compatible with the documented behaviour of the previous implementation.
Leave the CMakeParseArguments module empty but existing for
compatibility.
2015-12-17 10:44:28 -05:00
Brad King 8e86e113bc Merge topic 'doc-add_executable-typo'
194011b8 Help: Add missing parenthesis in add_executable docs
2015-10-26 13:12:48 -04:00
Christopher Dembia 194011b86f Help: Add missing parenthesis in add_executable docs 2015-10-22 10:31:49 -04:00
Brad King f1de724f41 Merge topic 'doc-file-GLOB-no-order'
5a208f83 Help: Document that file(GLOB*) order is undefined
2015-10-21 09:16:47 -04:00
Ruslan Baratov 5a208f834e Help: Document that file(GLOB*) order is undefined
Since this command use 'readdir' under the hood the order of list is
undefined:
* http://stackoverflow.com/questions/8977441/does-readdir-guarantee-an-order
2015-10-21 08:51:54 -04:00
Brad King 919f26ffba Merge topic 'doc-add_test-requirements'
f19d6a2c Help: Document add_test expectations of test command (#15798)
2015-10-19 13:05:21 -04:00
Brad King f19d6a2c95 Help: Document add_test expectations of test command (#15798) 2015-10-19 11:07:01 -04:00
James Johnston 6556481eb8 Help: Document that SHARED libraries must export a symbol (#15775)
CMake assumes that a SHARED library compiled on Windows will export a LIB file.
This is not actually the case on Visual C++ if the library does not export any
symbols, and causes incremental builds to break if the user specifies SHARED
anyway.  (Users should use MODULE libraries instead.)
2015-10-08 13:53:51 -04:00
Robert Goulet bd189cc24e install: Allow generator expressions in DIRECTORY DESTINATION 2015-09-24 09:13:03 -04:00
Robert Goulet 17aa6fd362 install: Allow generator expressions in FILES DESTINATION 2015-09-23 14:37:17 -04:00
Brad King fcd9f85660 Merge topic 'ctest-variable-docs'
4da5a227 Help: document CTEST_CUSTOM_* variables
70c0cc72 ctest_read_custom_files: mention that ctest does this automatically
71c67e83 CTEST_CUSTOM_*: treat variables as lists
936a95d4 CTestCoverageCollectGCOV: replace tabulators
2015-09-22 10:47:05 -04:00
Chuck Atkins b15f4e9b86 try_compile: Propogate CMP0065 to the generated project.
Set policy CMP0065 to the value used in the calling project.

Set the the value of CMAKE_ENABLE_EXPORTS if set in the calling
project to initialize the target property appropriately.
2015-09-21 10:12:13 -04:00
Ben Boeckel 70c0cc72f0 ctest_read_custom_files: mention that ctest does this automatically 2015-09-21 09:27:54 -04:00
Brad King 6e3151f6cc CTest: Document and test custom output size settings
Add documentation and tests for the existing

 CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE
 CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE

CTest variables.
2015-09-18 11:32:05 -04:00
Brad King 3809150a38 Help: Document string(REGEX) input concatentation (#15742)
These commands concatenate all their input before matching.  Document
this behavior.
2015-09-14 10:37:59 -04:00
Brad King 5f2c47c44c Help: Organize string command docs into sections
Add section headers and titles for each command signature.  Group
related commands into sections.
2015-09-14 10:37:40 -04:00
Brad King 05d22864d2 Merge topic 'doc-get_filename_component-typo'
8bfa34b7 Help: Fix typo in get_filename_component docs
2015-09-09 11:30:45 -04:00
Christopher Meng 8bfa34b78e Help: Fix typo in get_filename_component docs
trailing slahes -> trailing slashes
2015-09-08 11:36:06 -04:00
Brad King 8ea7611bc3 find_program: Optionally consider all names in each directory
When more than one value is given to the NAMES option this command by
default will consider one name at a time and search every directory for
it.  Add a NAMES_PER_DIR option to tell this command to consider one
directory at a time and search for all names in it.
2015-09-02 10:17:22 -04:00
James Johnston e89ea3d190 get_filename_component: Teach new BASE_DIR parameter.
In the get_filename_component command, add a new BASE_DIR parameter to
use with the ABSOLUTE and REALPATH options.  This will be used when
finding an absolute path from a relative path.
2015-08-17 23:55:38 -04:00
Chuck Atkins 7f0b83e018 try_compile: Update documentation for other propagated variables 2015-08-14 11:48:54 -04:00
Chuck Atkins fb77c2c54b try_compile: Propogate the CMAKE_LINK_SEARCH_ variables 2015-08-14 11:48:01 -04:00
Brad King 7ac2b1256b Merge topic 'if-test'
14e49ed1 if: Add "TEST <test>" condition
623dcc85 ExternalProject: Avoid if() auto-dereference of a "TEST" variable
2015-08-03 09:25:10 -04:00
Matt McCormick 14e49ed156 if: Add "TEST <test>" condition
if(TEST TestNameThatExists) will return true if a test with the name
TestNameThatExists has been added with add_test.  The syntax is similar
to if(TARGET TargetName).  Since use of "TEST" as an argument to if()
could previously be interpreted as a non-keyword argument, add policy
CMP0064 to treat it as a keyword as NEW behavior.
2015-08-03 09:22:25 -04:00
James Johnston fe2e503ea4 Help: Document string(FIND) return value when no match is found 2015-07-30 13:24:44 -04:00
Brad King b2eff70f6b Merge topic 'doc-apple-framework-creation'
eb8eaaec Help: Document Apple Framework creation with an example (#15651)
2015-07-15 09:05:44 -04:00
Brad King eb8eaaecbe Help: Document Apple Framework creation with an example (#15651) 2015-07-14 14:57:02 -04:00
Brad King 6b9a7938be Help: Link to cmake-properties.7 manual from set_target_properties docs
Drop the partial documentation of properties from the command
documentation and reference the main properties manual instead.
Otherwise readers may not realize there are many more properties.
2015-07-14 14:42:47 -04:00
Brad King fe3c678778 Help: Link to cmake-properties.7 manual from set_property docs 2015-07-14 14:41:31 -04:00