Commit Graph

676 Commits

Author SHA1 Message Date
Stephen Kelly e7d6e1f44f Features: Add cxx_alignas.
cxx_alignof will be a separate feature known to CMake, because
both can be implemented with separate backward compatibility
versions.
2014-04-08 11:05:56 +02:00
Stephen Kelly 32c2acd65c Features: Add cxx_extern_templates. 2014-04-08 11:05:56 +02:00
Stephen Kelly 9064f78b0c Features: Add cxx_unrestricted_unions. 2014-04-08 11:05:56 +02:00
Stephen Kelly 3322b393a2 Features: Add cxx_unicode_literals. 2014-04-08 11:05:56 +02:00
Stephen Kelly 04c5b99f38 Features: Add cxx_user_literals. 2014-04-08 11:05:56 +02:00
Stephen Kelly e1e292cd06 Features: Add cxx_alias_templates. 2014-04-08 11:05:56 +02:00
Stephen Kelly 3300f78310 Features: Add cxx_rvalue_references. 2014-04-08 11:05:55 +02:00
Stephen Kelly b1c5bd5314 Features: Add cxx_reference_qualified_functions. 2014-04-08 11:05:55 +02:00
Stephen Kelly ea9c445f06 Features: Add cxx_raw_string_literals. 2014-04-08 11:05:55 +02:00
Stephen Kelly 735adf2c94 Features: Add cxx_range_for. 2014-04-08 11:05:55 +02:00
Stephen Kelly 0fa9bbf1fa Features: Add cxx_nullptr. 2014-04-08 11:05:55 +02:00
Stephen Kelly 8149fc909f Features: Add cxx_noexcept. 2014-04-08 11:05:55 +02:00
Stephen Kelly bd2a025eb0 Features: Add cxx_nonstatic_member_init. 2014-04-08 11:05:55 +02:00
Stephen Kelly 15cdf6f51d Features: Add cxx_lambdas. 2014-04-08 11:05:55 +02:00
Stephen Kelly a579a0aab4 Features: Add cxx_inheriting_constructors. 2014-04-08 11:05:55 +02:00
Stephen Kelly ebab2015f9 Features: Add cxx_explicit_conversions. 2014-04-08 11:05:55 +02:00
Stephen Kelly ac3a1b14c0 Features: Add cxx_deleted_functions. 2014-04-08 11:05:55 +02:00
Stephen Kelly 91f3699000 Features: Add cxx_defaulted_functions. 2014-04-08 11:05:54 +02:00
Stephen Kelly 7e748417bc Features: Add cxx_decltype. 2014-04-08 11:05:54 +02:00
Stephen Kelly 8d3467636c Features: Add cxx_strong_enums. 2014-04-08 11:05:54 +02:00
Stephen Kelly 0caf08e43e Features: Add cxx_auto_function. 2014-04-08 11:05:54 +02:00
Stephen Kelly 0685ac6edc Features: Add cxx_override. 2014-04-08 11:05:54 +02:00
Stephen Kelly 57ac6a905c Features: Add cxx_final. 2014-04-08 11:05:54 +02:00
Stephen Kelly 88542a6101 Features: Add cxx_static_assert. 2014-04-08 11:05:54 +02:00
Stephen Kelly 91289312fa Features: Add cxx_constexpr. 2014-04-08 11:05:54 +02:00
Stephen Kelly 10f33eee1d Features: Add cxx_variadic_templates.
Expect cxx_variadic_templates to implement N2555.

N2555 is essentially a bugfix and predates most compiler releases which
aimed to experimentally support variadic templates.
2014-04-08 11:05:54 +02:00
Stephen Kelly 750dfee29c Features: Add cxx_delegating_constructors. 2014-04-08 11:05:54 +02:00
Stephen Kelly 8ed59fc207 Add target_compile_features command.
This can be used to set the compiler features required by particular
targets. An error is issued at CMake time if the compiler does not
support the required feature. If a language dialect flag is required
by the features used, that will be added automatically.

Base the target_compile_features command on cmTargetPropCommandBase. This
gives us 'free' handling of IMPORTED, ALIAS, INTERFACE, non-compilable
and missing targets.
2014-04-07 18:11:18 +02:00
Stephen Kelly 5412deded1 cmTarget: Transitively evaluate compiler features.
Extend the interface of the target_compile_features command with
PUBLIC and INTERFACE keywords. Populate the INTERFACE_COMPILER_FEATURES
target property if they are set. Consume the INTERFACE_COMPILER_FEATURES
target property from linked dependent targets to determine the final
required compiler features and the compile flag, if needed.

Use the same pattern of origin-debugging which is used for other
build properties.
2014-04-07 18:11:18 +02:00
Stephen Kelly baff44345c cmTarget: Allow populating COMPILE_FEATURES using generator expressions.
Delay validation of the content as a feature if it contains a
generator expression. It will be checked again at generate-time
after evaluation.
2014-04-07 18:11:18 +02:00
Stephen Kelly f97bf4370c Features: Add cxx_auto_type.
Record the availability of this feature for GNU 4.8 on (UNIX AND
NOT APPLE) only.  In the future, availability can be recorded for
earlier GNU, for other platforms and for other compilers. Initially
the affected configurations are as restricted as possible to allow
for easy testing while extending the features vector in only one
dimension.

The error message when using the set_property API directly is not
very good, but follow up commits will provide origin debugging of
the property and a target_compile_features command which will
provide a configure-time backtrace when possible.
2014-04-07 18:11:18 +02:00
Stephen Kelly 03355d6b5b cmTarget: Add COMPILE_FEATURES target property.
Use the contents of it to upgrade the CXX_STANDARD target property,
if appropriate.  This will have the effect of adding the -std=c++11
compile flag or other language specification on GNU when that is
needed for the feature.
2014-04-07 16:52:22 +02:00
Stephen Kelly faeddf64f2 project: Add infrastructure for recording CXX compiler features
Add a feature test using the compiler macros and the preprocessor to
determine available features.

Add a CMAKE_CXX_COMPILE_FEATURES variable which contains all features
known to the loaded compiler, and a CMAKE_CXX_KNOWN_FEATURES variable
containing all features known to CMake.  Add language standard specific
variables for internal use to determine the standard-specific compile
flags to use.

This will be extended to other languages in the future.  Follow-up
commits will add features which will be recorded by the feature test.
2014-04-07 16:48:44 +02:00
Stephen Kelly 913394af24 cmTarget: Add CXX_STANDARD and CXX_EXTENSION target properties.
These are used to determine whether to add -std=c++11, -std=gnu++11
etc flags on the compile line.
2014-04-07 16:48:44 +02:00
Brad King bc0e9806d7 Merge topic 'ExternalProject_exclude-from-all'
f4fe6322 Help: Add notes for topic 'ExternalProject_exclude-from-all'
2014-04-03 15:56:40 -04:00
Brad King f4fe632297 Help: Add notes for topic 'ExternalProject_exclude-from-all' 2014-04-03 13:14:29 -04:00
Brad King 5376151aa1 Merge topic 'target-transitive-sources'
9407174b target_sources: New command to add sources to target.
81ad69e0 Make the SOURCES target property writable.
6e636f2e cmTarget: Make the SOURCES origin tracable.
3676fb49 cmTarget: Allow transitive evaluation of SOURCES property.
e6971df6 cmTarget: Make the source files depend on the config.
df753df9 cmGeneratorTarget: Don't add computed sources to the target.
869328aa cmComputeTargetDepends: Use valid config to compute target depends.
2014-04-03 12:51:53 -04:00
Brad King 93054aa84f Merge topic 'target-sources-refactor'
5de63265 Genex: Only evaluate TARGET_OBJECTS to determine target sources.
aa0a3562 cmGeneratorTarget: Compute target objects on demand
042c1c83 cmTarget: Compute languages from object libraries on demand.
fdcefe3c cmGeneratorTarget: Compute consumed object libraries on demand.
c355d108 cmComputeTargetDepends: Track object library depends.
e5da9e51 cmTarget: Allow any generator expression in SOURCES property.
5702e106 cmTarget: Include TARGET_OBJECTS genex in target SOURCES property.
857d30b5 cmGlobalGenerator: Add interface to call ForceLinkerLanguages
28e1d2f8 cmStringCommand: Add GENEX_STRIP subcommand.
bf98cc25 Genex: Evaluate TARGET_OBJECTS as a normal expression.
8cd113ad cmTarget: Store strings instead of cmSourceFile* to represent SOURCES.
4959f341 cmSourceFileLocation: Collapse full path for directory comparisons.
fcc92878 cmSourceFileLocation: Remove unused Update method.
59e8740a cmTarget: Remove AddSourceFile method
26d494ba cmTarget: Use string API to add sources to cmTarget objects.
d38423ec cmTarget: Add a method to obtain list of filenames for sources.
...
2014-04-03 12:51:51 -04:00
Brad King 1d4366ffac Merge topic 'revise-compiler-id-policies'
13684e2b cmMakefile: Port PolicyOptionalWarningEnabled to string APIs
8018fcca Merge branch 'master' into revise-compiler-id-policies
a41c0a9d Do not warn by default when policy CMP0025 or CMP0047 is not set
d339653e Help: Revise and format policy CMP0025 and CMP0047 docs
2014-04-03 12:51:49 -04:00
Stephen Kelly 9407174b1a target_sources: New command to add sources to target. 2014-04-02 23:14:02 +02:00
Stephen Kelly 81ad69e056 Make the SOURCES target property writable. 2014-04-02 23:14:02 +02:00
Stephen Kelly 6e636f2eba cmTarget: Make the SOURCES origin tracable. 2014-04-02 23:14:02 +02:00
Stephen Kelly 3676fb4963 cmTarget: Allow transitive evaluation of SOURCES property.
Extend the cmGeneratorExpressionDAGChecker with an interface
returning the name of the top target.  Use that to determine
when there is a DAG violation, as required by the RunCMake.Languages
tests.
2014-04-02 23:14:02 +02:00
Stephen Kelly 5de63265e3 Genex: Only evaluate TARGET_OBJECTS to determine target sources.
The output of this expression may contain macros for IDEs to replace
such as $(Configuration), $(CURRENT_ARCH) etc.  To avoid generating
content which is not usable in other contexts, report an error if
there is an attempt to use it in other contexts.

This commit may be reverted in the future if a solution to the
above difference is implemented.
2014-04-02 23:12:57 +02:00
Stephen Kelly e5da9e51d0 cmTarget: Allow any generator expression in SOURCES property.
Remove use of UseObjectLibraries from Makefile and Ninja generators. It
is not needed now because those generators use GetExternalObjects
which already contains the objects from object libraries.

The VS10 generator calls both the UseObjectLibraries and the GetExternalObjects
methods. Ensure that duplicates are not created by skipping objects
from object libraries in handling of GetExternalObjects.

Similarly, fix VS6, VS7 and Xcode object handling by skipping
external objects from OBJECT_LIBRARY usage as appropriate.

The error message in the BadSourceExpression1 test is now reported
by the generator expression evaluator, so it has different text.
2014-04-02 23:12:56 +02:00
Stephen Kelly 5702e10677 cmTarget: Include TARGET_OBJECTS genex in target SOURCES property.
Add policy CMP0051 to control this behavior.
2014-04-02 23:12:56 +02:00
Brad King 97243c22b2 Merge branch 'revise-compiler-id-policies' into release 2014-04-02 14:54:17 -04:00
Brad King 8018fcca6e Merge branch 'master' into revise-compiler-id-policies 2014-04-02 14:44:35 -04:00
Brad King a41c0a9dcb Do not warn by default when policy CMP0025 or CMP0047 is not set
These policies are triggered by the use of a particular compiler rather
than outdated CMake code in a project.  Avoid warning in every project
that enables a language by not displaying the policy warning by default.
Add variable CMAKE_POLICY_WARNING_CMP<NNNN> to control the warning
explicitly; otherwise enable the warning with --debug-output or --trace.

This breaks with strict policy convention because it does not provide
developers with any warning about the behavior change by default.
Existing projects will continue to build without a warning or change in
behavior.  When a developer changes the minimum required version of
CMake in a project to a sufficiently high value (3.0), the project will
suddenly get the new compiler id and may break, but at least the
breakage comes with a change to the project rather than the version of
CMake used to build it.

Breaking strict policy convention is worthwhile in this case because
very few projects will be affected by the behavior change but every
project would have to see the warning if it were enabled by default.
2014-04-02 14:43:54 -04:00
Brad King d339653eaf Help: Revise and format policy CMP0025 and CMP0047 docs
Add inline reST markup as appropriate.  Word CMP0047 docs more like
those of CMP0025.  State explicitly that the policies must be set
before the project or enable_language command calls.
2014-04-02 14:42:45 -04:00
Alex Merry fcdf86d004 Help: Rewrite the cmake-developer.7 find module documentation
As well as the traditional variables, providing imported targets is
suggested, and the relative advantages and disadvantages briefly
discussed.

A mini-tutorial walking through creating a simple find module is
provided.

This changes the recommended version variable from Foo_VERSION_STRING to
Foo_VERSION, because there is really no need to have different variable
names for package version files vs. find modules.  It notes the old
variable name, though, and suggests setting it for compatibility.
2014-04-02 10:59:29 -04:00
Stephen Kelly 28e1d2f8fc cmStringCommand: Add GENEX_STRIP subcommand.
Strip out any generator expressions in the input string.
2014-03-31 23:18:44 +02:00
Stephen Kelly bf98cc252f Genex: Evaluate TARGET_OBJECTS as a normal expression. 2014-03-31 23:18:44 +02:00
Brad King 63c6325487 Merge topic 'fix-Qt-manual-typo'
dcfbbe87 Help: Fix typo in cmake-qt manual.
2014-03-26 13:24:47 -04:00
Stephen Kelly dcfbbe87eb Help: Fix typo in cmake-qt manual.
Do -> To.
2014-03-26 17:50:08 +01:00
Ben Boeckel 9523d2a55c ninja: Add support for custom depfile formats
Not everything that isn't MSVC is GCC. I have support for LDC's depfile
format on its way upstream[1], but its future is uncertain. CMake should
at least support this for future depfile formats.

[1]https://github.com/martine/ninja/pull/721
2014-03-23 23:54:13 -04:00
Brad King df136e6c27 Merge topic 'ExternalProject-no-download-progress'
f1b953ec Help: Add notes for topic 'ExternalProject-no-download-progress'
7d35b550 ExternalProject: Add option to disable download progress (#14807)
2014-03-20 09:22:26 -04:00
Stephen Kelly bbffccca42 add_custom_command: Evaluate generator expressions in DEPENDS
Rely on evaluation in cmCustomCommandGenerator for the generators.

When tracing target dependencies, depend on the union of dependencies
for all configurations.
2014-03-20 09:21:56 -04:00
Brad King f1b953ec9b Help: Add notes for topic 'ExternalProject-no-download-progress' 2014-03-17 13:12:10 -04:00
Brad King 6e466c6f2e Merge branch 'master' into CONFIG-LOCATION-CMP0026 2014-03-17 09:31:21 -04:00
Stephen Kelly c903b5319b cmTarget: Restore <CONFIG>_LOCATION to CMP0026 OLD behavior (#14808)
Restore support for the undocumented <CONFIG>_LOCATION target property
removed by commit v3.0.0-rc1~175^2 (cmTarget: Remove support for
<CONFIG>_LOCATION property, 2013-12-30) as part of the CMP0026 OLD
behavior.
2014-03-17 09:30:39 -04:00
Brad King 7fba4552fc Merge topic 'cpack-deb-compression-types'
16caa6ec Help: Add release notes for topic 'cpack-deb-compression-types'
2014-03-14 10:36:05 -04:00
Brad King 3d89b36415 Merge topic 'ctest-intel-coverage'
3a7501d9 Help: Add release notes for topic 'ctest-intel-coverage'
9840320d CTest: Add support for Intel coverage files
2014-03-14 10:35:42 -04:00
Brad King 3a7501d9eb Help: Add release notes for topic 'ctest-intel-coverage' 2014-03-14 10:31:30 -04:00
Brad King 16caa6ecba Help: Add release notes for topic 'cpack-deb-compression-types' 2014-03-14 09:34:14 -04:00
Brad King 328c217960 Help: Drop cmStdString from cmake-developer(7) examples
The type no longer exists within CMake.
2014-03-13 15:11:22 -04:00
Brad King b801205dad Merge topic 'ctest-coverage-extra'
93d5c4dc Help: Add release notes for topic 'ctest-coverage-extra'
ef1c1153 CTest: Teach ctest_coverage() to read CTEST_COVERAGE_EXTRA_FLAGS
2014-03-11 09:18:28 -04:00
Brad King e21ffaf8fe Merge topic 'doc-osx-path-variables'
764e977a Help: Document variables CMAKE_APPBUNDLE_PATH and CMAKE_FRAMEWORK_PATH
2014-03-10 10:35:32 -04:00
Brad King 29d4f6b03b Merge branch 'doc-osx-path-variables' into release 2014-03-10 10:24:16 -04:00
Brad King 764e977ad7 Help: Document variables CMAKE_APPBUNDLE_PATH and CMAKE_FRAMEWORK_PATH 2014-03-10 10:23:42 -04:00
Brad King 93d5c4dc22 Help: Add release notes for topic 'ctest-coverage-extra' 2014-03-10 10:21:11 -04:00
Brad King 581abf6d31 Merge branch 'release' 2014-03-10 09:37:08 -04:00
Brad King 7c9041bdab Merge topic 'link-libraries-response-files'
489b1c23 Windows: Use response files to specify link libraries for GNU tools
745caae6 Makefile: Rename linker response file boolean to be more specific
5e8e4d0f cmLocalGenerator: Add response file option to OutputLinkLibraries
b9aa5041 cmLocalGenerator: Simplify GetIncludeFlags output formatting
971653b7 cmLocalGenerator: Add format option to ConvertToLinkReference
0c0ef9e7 cmLocalGenerator: Add format option to ConvertToIncludeReference
02bebd60 cmLocalGenerator: Add format option to ConvertToOutputForExisting
c8751709 Makefile: Factor out some duplicate link libraries generation
2014-03-06 09:46:50 -05:00
Brad King 489b1c23b9 Windows: Use response files to specify link libraries for GNU tools
Work around the command-line-length limit by using an @linklibs.rsp
response file to pass the flags for link libraries.  This allows
very long lists of libraries to be used in addition to the existing
support for passing object files via response file.

Suggested-by: Peter Keuschnigg <peter.keuschnigg@pmu.ac.at>
2014-03-05 13:07:41 -05:00
Brad King 4d67891a73 Merge topic 'FeatureSummary_combine_WHAT_values'
4da09d1a Help: Add release notes for topic 'FeatureSummary_combine_WHAT_values'
2014-03-05 13:04:49 -05:00
Brad King 4da09d1a3f Help: Add release notes for topic 'FeatureSummary_combine_WHAT_values' 2014-03-05 11:20:28 -05:00
Brad King c9df12ccee Merge topic 'doc-host-target-vars'
06986afc Help: Update CMAKE_SYSTEM* and CMAKE_HOST_SYSTEM* documentation
2014-03-05 11:08:01 -05:00
Brad King 955dd1a551 Merge topic 'doc-find_package-build-paths'
69d73d27 Help: Mention in find_package that cmake-gui step is Windows-only (#14781)
2014-03-05 11:07:57 -05:00
Jiri Malak 06986afc4b Help: Update CMAKE_SYSTEM* and CMAKE_HOST_SYSTEM* documentation
Update to documentation for HOST/TARGET system related variables to be
consistent with current functionality.
2014-03-04 10:01:26 -05:00
Brad King 54a4c93087 Merge branch 'doc-find_package-build-paths' into release 2014-03-03 14:43:36 -05:00
Brad King 69d73d27cb Help: Mention in find_package that cmake-gui step is Windows-only (#14781)
Recently used cmake-gui locations are searched only on Windows because
the Windows registry is used to record the values.  This behavior is
historical and may be removed by a policy in the future so rather than
implementing it on other platforms simply document the current behavior.
2014-03-03 14:36:48 -05:00
Brad King 8982a4b301 Merge topic 'add_definitions-no-genex'
1a9316a8 add_definitions: Don't document genex support.
2014-03-03 10:32:05 -05:00
Brad King d838c477ae Merge topic 'CMP0043-dir-prop'
38df26bc CMP0043: Document old and new interfaces for setting directory property.
2014-03-03 10:31:53 -05:00
Brad King c69a84c308 Merge branch 'CMP0043-dir-prop' into release 2014-03-03 10:12:05 -05:00
Brad King 9efba5d956 Merge branch 'add_definitions-no-genex' into release 2014-03-03 10:12:01 -05:00
Stephen Kelly 38df26bc6f CMP0043: Document old and new interfaces for setting directory property. 2014-03-03 10:11:19 -05:00
Stephen Kelly 1a9316a808 add_definitions: Don't document genex support.
This command does not support generator expressions. The documentation
was mistakenly extended to claim it in commit v3.0.0-rc1~60^2~3 (Help: Mark
up the buildsystem commands documentation, 2014-02-03).
2014-03-03 10:10:39 -05:00
Brad King d57bc8797d Merge topic 'FindRuby-2'
57abfeaa Help: Add FindRuby-2 topic release notes
165f6430 FindRuby: Add support for Ruby 2.0 and 2.1
2014-03-03 10:06:24 -05:00
Brad King eafd2a8511 Merge topic 'FindPkgConfig-PKG_CONFIG'
80aa18b4 Help: Add release notes for topic 'FindPkgConfig-PKG_CONFIG'
c53b5cd2 FindPkgConfig: Prefer PKG_CONFIG to find pkg-config (#13175)
2014-02-28 09:48:38 -05:00
Brad King e62102bef1 Merge topic 'FindGTest-AUTO-SOURCES'
ac42bca8 Help: Add FindGTest-AUTO-SOURCES topic release notes
c50325b8 FindGTest: Optionally detect sources automatically (#14775)
2014-02-28 09:48:36 -05:00
Brad King 27defbd6d4 Merge topic 'add-FindOpenCL'
1b08e609 Help: Add release notes for topic 'add-FindOpenCL'
041485bc Add FindOpenCL module
2014-02-28 09:48:30 -05:00
Brad King 2a93843f3f Merge topic 'ExternalProject-BUILD_ALWAYS'
755b378e Help: Add ExternalProject-BUILD_ALWAYS topic release notes
2014-02-28 09:48:27 -05:00
Brad King 244b7696ed Merge topic 'FindHg-add-WC_INFO'
02a74a7d Help: Add FindHg-WC_INFO topic release notes
2014-02-28 09:48:25 -05:00
Brad King 80aa18b4a8 Help: Add release notes for topic 'FindPkgConfig-PKG_CONFIG' 2014-02-28 09:48:20 -05:00
Brad King 1b08e6095b Help: Add release notes for topic 'add-FindOpenCL' 2014-02-28 09:18:06 -05:00
Brad King 42f981987e Merge branch 'FindRuby-2' into release 2014-02-28 08:50:32 -05:00
Brad King 5161f7bc36 Help: Consolidate FindRuby-2 release notes for 3.0.0 2014-02-28 08:50:05 -05:00
Brad King 57abfeaac5 Help: Add FindRuby-2 topic release notes 2014-02-28 08:47:12 -05:00
Brad King 755b378e57 Help: Add ExternalProject-BUILD_ALWAYS topic release notes 2014-02-27 09:09:02 -05:00
Brad King 02a74a7d9f Help: Add FindHg-WC_INFO topic release notes 2014-02-27 09:03:32 -05:00
Brad King ac42bca833 Help: Add FindGTest-AUTO-SOURCES topic release notes 2014-02-27 08:54:13 -05:00
Brad King 041ba1eefd Merge topic 'INTERFACE-property-docs'
ad75afbf Help: List the whitelist of properties for INTERFACE libraries.
2014-02-26 09:38:58 -05:00
Brad King 6223621e9a Merge topic 'msvc-compiler-pdb-files'
fba51b09 MSVC: Add properties to configure compiler PDB files (#14762)
3737860a cmTarget: Add per-config compilation info
718a9532 cmTarget: Refactor ComputePDBOutputDir interface
aae5184c Help: Refactor PDB_NAME and PDB_OUTPUT_DIRECTORY docs
b4aac0ca Makefile: Fix per-config linker PDB output directory
2014-02-26 09:38:51 -05:00
Brad King fba51b096e MSVC: Add properties to configure compiler PDB files (#14762)
Since commit v2.8.12~437^2~2 (VS: Separate compiler and linker PDB files
2013-04-05) we no longer set /Fd with the PDB_NAME or PDB_OUTPUT_DIRECTORY
properties.  Those properties now exclusively handle linker PDB files.
Since STATIC libraries do not link their compiler PDB file becomes more
important.  Add new target properties "COMPILE_PDB_NAME[_<CONFIG>]" and
"COMPILE_PDB_OUTPUT_DIRECTORY[_<CONFIG>]" to specify the compiler PDB
file location and pass the value to the MSVC /Fd option.
2014-02-26 09:34:38 -05:00
Matthäus G. Chajdas 041485bc16 Add FindOpenCL module 2014-02-26 08:53:00 -05:00
Stephen Kelly ad75afbfb4 Help: List the whitelist of properties for INTERFACE libraries. 2014-02-26 10:40:49 +01:00
Brad King 958cd84431 Merge topic 'dev/faster-parsers'
048be205 Help: Add release notes for the 'faster-parsers' topic
7c565d2f cmGeneratorExpression: Improve parsing in StripEmptyListElements
68eb1757 cmGeneratorExpressionLexer: Use a switch statement to parse
67253133 ExpandListArguments: Optimize the parser
2014-02-25 11:18:14 -05:00
Ben Boeckel 048be20536 Help: Add release notes for the 'faster-parsers' topic 2014-02-25 10:56:10 -05:00
Brad King aae5184c16 Help: Refactor PDB_NAME and PDB_OUTPUT_DIRECTORY docs
Move the note about VS 6 into the PDB_NOTE.txt common include file
and include it from the per-config properties too.  Also re-word
the note to clarify the separate compiler and linker flags involved
and state explicitly that compiler flags are not affected.
2014-02-24 13:44:27 -05:00
Brad King cf42f93d07 Merge topic 'install-FILES-genex'
6e89c8a5 install: Support generator expressions in FILES and PROGRAMS mode
f11f7b34 cmInstallFilesGenerator: Add reference to calling cmMakefile
e190236c Help: Format install() command documentation
2014-02-24 10:40:04 -05:00
Brad King c124c7de1d Merge topic 'doc-add_test-cleanup'
8afa5fe8 Help: Revise and format add_test() command documentation
2014-02-24 10:40:03 -05:00
Brad King b686154b61 Merge branch 'install-FILES-genex' into release 2014-02-24 09:16:36 -05:00
Brad King 6e89c8a5f1 install: Support generator expressions in FILES and PROGRAMS mode
Teach the install(FILES) and install(PROGRAMS) commands to evaluate
generator expressions in the list of files.

Extend the ExportImport test to cover installation cases involving
generator expressions.
2014-02-21 17:05:26 -05:00
Brad King e190236c74 Help: Format install() command documentation
Add inline markup and explicit markup blocks as appropriate.
2014-02-21 17:05:26 -05:00
Brad King 549b4d02d4 Merge branch 'doc-add_test-cleanup' into release 2014-02-20 09:53:08 -05:00
Brad King 8afa5fe8ce Help: Revise and format add_test() command documentation
Favor the add_test(NAME) signature and document the limitations of
the plain signature.
2014-02-20 08:58:13 -05:00
Brad King 28dcccface Begin post-3.0 development 2014-02-19 09:30:37 -05:00
Brad King 7cbab17871 Change version scheme to use only two components for feature levels
Historically CMake used three version components for the feature level.
We released new features while incrementing only the third version
component.  Since commit v2.8.2~105^2~4 (New version scheme to support
branchy workflow, 2010-04-23) we used the fourth version component for
bug-fix releases and the development date:

 <major>.<minor>.<patch>[.<tweak>][-rc<n>] = Release
 <major>.<minor>.<patch>.<date>[-<id>]     = Development

This solidified use of three components for the feature level, and was
necessary to continue releasing 2.x versions because:

* Some existing projects performed floating-point comparisons of
  ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} to 2.x numbers
  so ``x`` could never be higher than 9.

* Version 2.9.<date> was used briefly in post-2.8.0 development in
  CVS prior to the transition to Git, so using it in releases may
  have caused confusion.

Now that we are moving to 3.x versions, these two restrictions go away.
Therefore we now change to use only two components for the feature
level and use the scheme:

 <major>.<minor>.<patch>[-rc<n>] = Release
 <major>.<minor>.<date>[-<id>]   = Development
2014-02-19 09:30:13 -05:00
Brad King f8ccb6d038 Help: Drop development topic notes to prepare release
Release versions do not have the development topic section of
the CMake Release Notes index page.
2014-02-19 09:30:12 -05:00
Brad King db68dd2454 Help: Rename 3.0 release notes to 3.0.0
Bug-fix releases 3.0.x may have their own notes so this will look more
consistent.
2014-02-19 09:30:00 -05:00
Brad King d30e4fa703 Help: Consolidate remaining 3.0 release notes 2014-02-19 08:39:44 -05:00
Brad King a7c956b867 Merge topic 'doc-usage-requirements'
0c54b775 Help: Document the purpose of usage requirements clearly.
2014-02-19 08:34:29 -05:00
Brad King 9304d09613 Merge topic 'FindBoost-namespace'
17485e37 FindBoost: Add suport for custom namespaces
2014-02-19 08:34:24 -05:00
Brad King 5a607c4a6f Merge topic 'doc-package-registry'
bf012e0c Help: Format find_package() command documentation
bd6887e4 Help: Document the package registry in cmake-packages.7
2014-02-19 08:34:22 -05:00
Stephen Kelly 0c54b775a4 Help: Document the purpose of usage requirements clearly.
People will be tempted to put things there for convenience, thereby
causing conflicts similar to

 http://thread.gmane.org/gmane.comp.compilers.clang.devel/35162/focus=35169

where it is conceivable that the LLVM developers could put a flag on
a target for convenience, which would cause conflicts for some downstreams.
2014-02-18 16:08:44 +01:00
Chuck Atkins 17485e37a2 FindBoost: Add suport for custom namespaces
When building boost with an alternate namespace the libraries generated
will have a different naming convention.  This is often done to ensure
no symbol conflicts with external libraries built against a different
version of boost.  If the namespace used is "myprivateboost::" instead
of "boost::" then the libraries built will be named myprivateboost_foo
instead of boost_foo.  Add an option to specify a custom namespace used
to alter the library names that get searched for.
2014-02-17 16:05:48 -05:00
Brad King bf012e0cb6 Help: Format find_package() command documentation
Add inline markup and explicit markup block syntax as needed.
Add cross-references to other documentation as appropriate.
2014-02-17 15:37:04 -05:00
Brad King bd6887e4d6 Help: Document the package registry in cmake-packages.7
Port documentation from the CMake Wiki page at:

 http://www.cmake.org/Wiki/CMake/Tutorials/Package_Registry

as of 2014-02-17 into our main documentation.
2014-02-17 15:34:48 -05:00
Stephen Kelly a74d125a7c Help: Fix typo
binary_find -> binary_search.
2014-02-17 11:07:59 +01:00
Stephen Kelly f2eee72fac add_custom_command: Disallow use of SOURCE signatures.
Add CMP0050 to control this behavior.
2014-02-12 11:19:27 -05:00
Stephen Kelly c248a437c4 Add policy CMP0049 to avoid variable expansion in source lists 2014-02-12 11:17:38 -05:00
Brad King 10f90d644c Help: Add CMake 3.0 Release Notes
Manually read through version control history since the 2.8.12.2
release and write release notes for important user-facing changes.

Co-Author: Stephen Kelly <steveire@gmail.com>
2014-02-11 09:07:14 -05:00
Brad King 5d05124cb7 Merge topic 'doc-policy-version-3.0'
aab11bca Help: Change version 3.0.0 -> 3.0 in policy docs
2014-02-10 15:40:33 -05:00
Brad King aab11bcab4 Help: Change version 3.0.0 -> 3.0 in policy docs
Starting with 3.0 we will use only two components for the feature level,
and policies are only ever introduced with a bump to the feature level
version.
2014-02-10 11:40:21 -05:00
Brad King 89d49eccc5 Merge topic 'extend-docs'
0b3e98d9 Help: Don't list debuggable properties in cmake-buildsystem manual.
39d08b92 Help: Add additional hyperlink targets
ef17e293 Help: Document SYSTEM treatment of IMPORTED target INTERFACE_INCLUDE_DIRS
2014-02-10 11:25:10 -05:00
Brad King f67ab2a920 Merge topic 'release-notes-prep'
4b7f2f52 Help: Add hyperlink targets for argument types in cmake-language(7)
113df227 Remove ChangeLog.manual
79f55909 Remove ChangeLog.txt
d25dbc90 Tests/BundleTest: Drop use of ChangeLog.txt
2014-02-10 11:24:58 -05:00
Stephen Kelly 0b3e98d913 Help: Don't list debuggable properties in cmake-buildsystem manual. 2014-02-10 09:03:53 +01:00
Stephen Kelly 39d08b929e Help: Add additional hyperlink targets 2014-02-09 12:11:09 +01:00
Stephen Kelly ef17e29389 Help: Document SYSTEM treatment of IMPORTED target INTERFACE_INCLUDE_DIRS
Document how the behavior can be controlled.
2014-02-09 12:11:09 +01:00
Brad King 4b7f2f5213 Help: Add hyperlink targets for argument types in cmake-language(7)
Add reStructuredText hyperlink targets for the bracket, quoted, and
unquoted argument sections.
2014-02-07 13:35:50 -05:00
Stephen Kelly f02b5fb5a0 Help: Fix typo.
'to not to' -> 'not to'
2014-02-07 14:25:19 +01:00
Stephen Kelly cc46b702d0 Help: Adjust the QtAutogen properties to the common style.
Link to the cmake-qt manual.
2014-02-06 16:15:54 -05:00
Stephen Kelly f371545d3b Help: Use ``True`` and ``False`` for IMPORTED values.
Only the first letter is capitalized. It is marked up.
2014-02-06 16:15:54 -05:00
Stephen Kelly 3879c84782 Help: Document relation of properties to the rest of the buildsystem. 2014-02-06 16:15:53 -05:00
Stephen Kelly ba4c2fa8fd Help: Mark up the buildsystem commands documentation
Cross-link to the cmake-buildsystem manual.
2014-02-06 16:15:53 -05:00
Stephen Kelly a683262a72 Help: Note that the compatible interface properties must not intersect. 2014-02-06 16:15:53 -05:00
Stephen Kelly fbe01bedbe Help: Specify how to order and modify transitively set property values. 2014-02-06 16:15:53 -05:00
Stephen Kelly 645500b413 Help: Add hyperlink targets to some manual sections.
These can be refered to from the command documentation and other
relevant locations.
2014-02-06 16:15:53 -05:00
Stephen Kelly 85a4fad78c Help: Use ``inline-literals`` to mark generator expressions. 2014-02-06 16:15:52 -05:00
Stephen Kelly a0fa025377 Help: Mark up references to NEW and OLD policy settings properly. 2014-02-06 16:15:52 -05:00
Stephen Kelly 6c02e7f427 Help: Add a style guide. 2014-02-06 16:15:50 -05:00
Stephen Kelly 91fbff8820 Help: Fix typos
Psuedo -> Pseudo

 behaviour -> behavior

CMake uses American spelling.
2014-02-06 16:14:13 -05:00
Brad King fed3f88f8c Merge topic 'doc-version-components'
52e7beb6 Help: Expand documentation of CMAKE_VERSION and related variables
2014-02-05 09:34:37 -05:00
Brad King 0bae76b439 Merge topic 'release-notes'
ccc87047 Help: Add documents to collect notes between releases
70309e70 Help: Add documents for release notes
34ea1f15 Utilities/Sphinx: Add option to build 'text' format
2014-02-05 09:34:30 -05:00
Brad King 52e7beb6ab Help: Expand documentation of CMAKE_VERSION and related variables
Describe the meaning of each version component in more detail in the
documentation of CMAKE_VERSION.  Simplify the per-component version
variable documentation by referencing the main variable.

Include information about how to compare version strings.  Also add
an historical note about the version scheme used prior to commit
v2.8.2~105^2~4 (New version scheme to support branchy workflow,
2010-04-23).
2014-02-05 09:24:41 -05:00
Brad King ccc8704777 Help: Add documents to collect notes between releases
Add a release/dev.txt file and include it from release/index.rst in
development versions.  Add a "Changes Since Release" section with a
toctree that globs adjacent "dev/*" documents.  Add a sample topic
document explaining how topic-specific release note documents work.

This approach will allow developers to write release notes for their
changes as they are made.  The release manager may then consolidate and
organize the notes for a specific release version.
2014-02-04 11:48:54 -05:00
Brad King 70309e7083 Help: Add documents for release notes
Add a release/index.rst document titled "CMake Release Notes" to hold
the toctree for release notes.  Add a "Release Notes" section to the
top-level html document index to link to the new document.
2014-02-04 11:15:12 -05:00
Alex Merry 635e96dde2 Help: Be clearer about which header files are considered for AUTOMOC
The old documentation stated that "all header files" were considered,
which was not true for any sensible definition of "all header files".
Only header files with certain names are considered.

Document the filename patterns matched for parsing.
2014-02-04 13:42:39 +01:00
Brad King 2e2552af65 Merge topic 'cmake-qt-manual'
4271a4ed Help: Add information about INTERFACE_AUTOUIC_OPTIONS.
7935f4de Help: Note that AUTOMOC consumes the defines and includes from targets.
2739a6f9 Help: Move Qt tool invocation information to a generic cmake-qt manual.
2014-02-03 11:11:14 -05:00
Stephen Kelly 4271a4ed35 Help: Add information about INTERFACE_AUTOUIC_OPTIONS. 2014-02-02 11:50:16 +01:00
Stephen Kelly 7935f4dec8 Help: Note that AUTOMOC consumes the defines and includes from targets. 2014-02-02 11:34:04 +01:00
Stephen Kelly 2739a6f97e Help: Move Qt tool invocation information to a generic cmake-qt manual.
Add an introduction about the use of different package types, and the
ability to use Qt 4 and 5 versions together in a single buildsystem.

Add a section about automatic linking of the qtmain.lib library and
how to disable it.
2014-02-02 11:28:12 +01:00
Brad King 7e142c5ac2 project: Manage VERSION variables
Teach the project() command to set variables

  {PROJECT,<PROJECT-NAME>}_VERSION{,_MAJOR,_MINOR,_PATCH,_TWEAK}

holding the project version number and its components.  Add project()
command option "VERSION" to specify the version explicitly, and default
to the empty string when it is not given.

Since this clears variables when no VERSION is given, this may change
behavior for existing projects that set the version variables themselves
prior to calling project().  Add policy CMP0048 for compatibility.

Suggested-by: Alex Neundorf <neundorf@kde.org>
2014-01-29 09:45:18 -05:00
Brad King 16d040c958 project: Add optional LANGUAGES keyword
Teach the project() command to recognize an optional "LANGUAGES"
keyword after the project name and prior to the list of languages.
Do not allow multiple copies of the keyword.  If the keyword is
specified and no languages are listed, imply NONE.
2014-01-29 09:40:51 -05:00
Brad King 00007dcc36 Help: Format project command and variable documentation
Also add document for CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE variable.
2014-01-29 09:15:20 -05:00
Stephen Kelly ed632736e3 Help: Note that std::string::clear may not be used.
As found in commit 519c0a5d (Can't use std::string::clear() in
cmake., 2012-09-15).
2014-01-27 13:02:59 -05:00
Stephen Kelly cc04bb6c16 Help: Document non-use of std::set::insert.
As found in commit 8e7c207e (Use a manual loop to insert into
set::set., 2012-09-15).
2014-01-27 13:02:59 -05:00
Brad King 0bd4157886 Merge topic 'cmake-rerun-depends'
82d43175 Allow projects to specify extra inputs to CMake
1ef444d6 Add test case to verify CMake does not re-run on first build
2014-01-22 08:47:59 -05:00
Brad King d8d3e9241e Merge topic 'cmake-E-sleep'
94389f63 cmake: Add '-E sleep' command
2014-01-22 08:47:57 -05:00
Stephen Kelly e00db59d6c QNX: Introduce QCC compiler id for that QNX platform compiler.
Introduce policy CMP0047 to control resetting the id for
compatibility.

De-duplicate content in the QNX platform file by including the GNU
one. QNX is a form of GNU platform.

Do not clear CMAKE_SHARED_LIBRARY_${lang}_FLAGS variables.  They
are populated again later by the Compiler/GNU.cmake file anyway.

Modify the CMAKE_CXX_COMPILE_OBJECT variable only when the QCC
compiler id is in use, and the language is CXX.  Use the QNX
recommended flag for QCC instead of the gcc compatible -x flag.

Populate new module files to handle system includes and depfiles
when using the QCC compiler.

Remove code which unsets the system include and depfiles related
variables.  When a GNU driver is used instead of the QCC one, the
appropriate flags will be used.  These variables were previously
cleared for lowest-common-denominator compatibility with both
drivers.
2014-01-22 08:47:32 -05:00
Brad King 82d4317503 Allow projects to specify extra inputs to CMake
Define a new 'CMAKE_CONFIGURE_DEPENDS' directory property that projects
can use to specify input files to the CMake configuration process.
Extend the RunCMake.Configure test to verify that the build system
re-runs CMake when this input changes.
2014-01-21 14:14:49 -05:00
Brad King 94389f6388 cmake: Add '-E sleep' command
Add a cmake command-line interface to provide a cross-platform 'sleep'.
2014-01-21 13:50:49 -05:00
Brad King 25d414625a Merge topic 'update-qt4-docs'
f81e67c6 Help: Update Qt4 documentation.
2014-01-20 10:59:19 -05:00
Brad King 45056264bb Help: Document CMAKE_OSX_* variables
Add documentation entries for variables

 CMAKE_OSX_ARCHITECTURES
 CMAKE_OSX_DEPLOYMENT_TARGET
 CMAKE_OSX_SYSROOT

Explain what each does and when/how they should be set.
2014-01-16 10:21:47 -05:00
Brad King c700a623c1 Merge topic 'fix-help-if-typo'
5968b6e0 Help: Fix typo in 'if()' command documentation
2014-01-16 09:24:17 -05:00
Raphael Kubo da Costa 5968b6e030 Help: Fix typo in 'if()' command documentation
s/argumemnts/arguments/
2014-01-15 15:47:59 -05:00
Stephen Kelly f81e67c616 Help: Update Qt4 documentation.
Remove independent doc listing for Qt4ConfigurationSettings, Qt4Macros
and UseQt4. These are implementation details.

Recommend the use of IMPORTED targets.

Remove references to the UseQt4 file, which is obsolete in light of
the IMPORTED targets.

Add documentation for automatic tool invocation and options.

Remove reference to variables which should not be needed in modern
implementations.
2014-01-15 16:23:51 +01:00
Rolf Eike Beer 3a0d164bb2 allow to mark a test as "Not Run" with a specific return code (#8466) 2014-01-14 23:57:40 +01:00
Brad King 071005add1 Merge topic 'support-codelite-ide-generator'
0c4e8c70 Add support for codelite IDE project fles
2014-01-13 10:28:37 -05:00
Nils Gladitz 0bf6f13b1d AddDependencies: new policy requires dependencies to exist
Added new policy CMP0046 which requires dependencies added by
add_dependencies() to actually exist.
2014-01-12 12:58:04 +01:00
Eran Ifrah 0c4e8c70a0 Add support for codelite IDE project fles 2014-01-10 09:20:11 +02:00
Brad King 98bdd78afc Merge topic 'extend-docs'
2f15a07 Help: Link to CMAKE_POLICY_DEFAULT_CMP<NNNN> in policies manual.
bb8bde3 Help: Add notes about relocatability of config-file packages.
2014-01-09 16:26:30 -05:00
Brad King e56530f612 Merge topic 'minor-cleanups'
531e40b cmTarget: Make GetSourceFiles populate an out-vector parameter.
38de54c cmGeneratorTarget: Add methods to access source file groups.
f579fe0 Help: Fix link to MAP_IMPORTED_CONFIG_<CONFIG>
590d238 cmTarget: Handle NO_SYSTEM_FROM_IMPORTED.
2014-01-09 13:54:23 -05:00
Stephen Kelly 2f15a07727 Help: Link to CMAKE_POLICY_DEFAULT_CMP<NNNN> in policies manual. 2014-01-09 19:45:08 +01:00
Stephen Kelly bb8bde35b8 Help: Add notes about relocatability of config-file packages. 2014-01-09 19:45:08 +01:00
Brad King 15562c11ef Merge topic 'policies'
73e9340 get_target_property: Error on non-existent target.
ab9f58f FindQt4: Ensure target exists before calling get_target_property.
37ebeb9 FindQt4: Fix use of get_target_property to use actual target name.
6aabb6a Genex: Use case-sensitive comparison for COMPILER_ID.
5bb53f6 cmTarget: Deprecate COMPILE_DEFINITIONS_ properties with a policy.
2014-01-09 09:37:20 -05:00
Brad King 69c366a281 Merge topic 'optional-install'
be0458c InstallRules: added new variable to disable generation of install rules
2014-01-09 09:37:17 -05:00
Stephen Kelly 73e93400e2 get_target_property: Error on non-existent target.
Introduce policy CMP0045 to control this behavior.
2014-01-08 16:41:34 +01:00
Stephen Kelly 6aabb6a62b Genex: Use case-sensitive comparison for COMPILER_ID. 2014-01-08 16:41:34 +01:00
Stephen Kelly 5bb53f6b73 cmTarget: Deprecate COMPILE_DEFINITIONS_ properties with a policy. 2014-01-08 16:41:34 +01:00
Nils Gladitz be0458c562 InstallRules: added new variable to disable generation of install rules
The boolean variable CMAKE_SKIP_INSTALL_RULES
allows disabling generation of install rules for projects which don't
want them.
2014-01-08 16:28:14 +01:00
Stephen Kelly f579fe0d7a Help: Fix link to MAP_IMPORTED_CONFIG_<CONFIG> 2014-01-08 16:06:41 +01:00
Stephen Kelly 28ffb7e0be Note how to write CMP0022 compatible code with CMake 2.8.9.
This has come up on the mailing list, and various other places.
2014-01-08 13:41:24 +01:00
Brad King 855e8759fd Merge topic 'minor-cleanups'
3917d86 Genex: Add a nullary form for CONFIG
5169130 Help: Document the target properties exported to IMPORTED targets.
ee21f1c CompatibleInterface: Test debugging of not-set property.
80e9fe9 Help: Note that language-specific 'built-ins' are set by the project command.
0b5bf8a Help: Mention CMAKE_DISABLE_FIND_PACKAGE_<PackageName> in package docs.
28c865b Tests: simplify Qt4 target usage
6cfe6b8 Help: Fix typo: 'target' -> 'target property'
b7deca4 Test: Remove obsolete commented code.
9c9f69f Genex: Make EQUAL support upper case binary literals
6eb3218 Genex: Fix case of methods in the dag checker.
646c6ec Genex: Use a preprocessor loop to implement transitive DAG check.
711fb38 Genex: List transitive properties and methods as a table, not two lists.
802a28f Add cmHasLiteralSuffix API.
2014-01-07 09:39:22 -05:00
Stephen Kelly 3917d86b26 Genex: Add a nullary form for CONFIG
This is consistent with other similar expressions such as PLATFORM_ID,
and makes the CONFIGURATION expression obsolete.

Fix an off-by-one error in
GeneratorExpressionContent::EvaluateParameters exposed by a unit test.

Remove the test for 'bad' nullary use of $<CONFIG>.

Add a unit test to verify that $<CONFIG> and $<CONFIGURATION> have
the same value.
2014-01-07 09:38:01 -05:00
Stephen Kelly 5169130539 Help: Document the target properties exported to IMPORTED targets. 2014-01-07 09:38:01 -05:00
Stephen Kelly 80e9fe9cee Help: Note that language-specific 'built-ins' are set by the project command. 2014-01-07 09:38:01 -05:00
Stephen Kelly 0b5bf8ad0b Help: Mention CMAKE_DISABLE_FIND_PACKAGE_<PackageName> in package docs. 2014-01-07 09:38:00 -05:00
Stephen Kelly 6cfe6b881d Help: Fix typo: 'target' -> 'target property' 2014-01-07 09:38:00 -05:00
Stephen Kelly 58c174e945 Help: Document the C++ subset permitted for CMake code.
This may be incomplete, but further limitations can be added when
needed.
2014-01-06 19:15:31 +01:00
Stephen Kelly 9eb06d0dde add_library: Disallow invalid signatures for INTERFACE_LIBRARY.
Document the valid signatures. Add a test for the IMPORTED GLOBAL
signature.
2014-01-06 17:25:10 +01:00
Stephen Kelly 2af966d9ab Genex: Add EQUAL expression.
Support decimal, hex, octal and binary literals.
2014-01-06 17:25:09 +01:00
Brad King b225dbbd02 Merge topic 'minor-cleanups'
a55c70d cmTarget: Remove support for <CONFIG>_LOCATION property.
c9f9b3c cmTarget: Test impliedByUse number-compatible properties.
fbe1fa7 cmTarget: Don't repeat property origin debug information.
01c545c cmTarget: Fix debug report for interface-set compatibility types.
c67e1a6 cmTarget: Fix reporting interface-set properties which are FALSE.
07b0f54 Qt Tests: Remove commented and unneeded line.
79db8ef cmTarget: Fix the property compatibility error message
43340a9 Help: Reformat Qt autogenerator documentation.
d98ea6c Help: Mark some code blocks as containing cmake code.
ea78935 GenerateExportHeader: Reformat docs.
272a20f cmTarget: Don't update IMPORTED target compilation properties
03d842a Run the add_compile_options command unit test.
cd3d0b6 get_property: Fix testing ALIASED_TARGET target property (#14670)
6a62228 install: Ensure that install(TARGETS) works with no DESTINATION
af3d3b8 export: Only generate and install configuration files if needed.
0de81bb Help: Workaround pygments reporting an error for genexes.
...
2014-01-06 11:15:34 -05:00
Stephen Kelly 0d9cdab93d Help: Add cmake-buildsystem.7 manual
Describe how to define a buildsystem of binary targets, how to
express dependencies between them, how to add build specifications,
how to specify usage requirements, transitive and compatible
propagation and the various pseudo targets.
2014-01-06 10:25:24 -05:00
Stephen Kelly 43340a9c96 Help: Reformat Qt autogenerator documentation. 2014-01-04 11:28:57 +01:00
Stephen Kelly d98ea6c0b8 Help: Mark some code blocks as containing cmake code. 2014-01-04 11:28:57 +01:00
Brad King 6cff2afc8b Merge topic 'export-EXPORT-subcommand'
98b9f52 Help: Document export(EXPORT) in the cmake-packages manual.
a1d2bda Don't copy find_dependency in configure_package_config_file.
f4f6529 Help: cmake-packages: Add missing slash.
cbe7e8f export: Implement EXPORT subcommand (#9822)
2014-01-02 14:44:08 -05:00
Brad King 0d63bdd2d9 Merge topic 'rpath-default'
d25ad48 OS X: Add CMP0042 to enable MACOSX_RPATH by default
2014-01-02 14:23:09 -05:00
Clinton Stimpson d25ad482e9 OS X: Add CMP0042 to enable MACOSX_RPATH by default
Also adding documentation for CMAKE_MACOSX_RPATH, and improving
documentation for MACOSX_RPATH.
2014-01-02 13:41:49 -05:00
Stephen Kelly 98b9f52bc9 Help: Document export(EXPORT) in the cmake-packages manual. 2013-12-24 13:02:49 +01:00
Stephen Kelly a1d2bda23e Don't copy find_dependency in configure_package_config_file.
There is not really any need to. Downstreams can either rely on it
being provided by CMake, or copy and distribute it.

Change the documented include for the find_dependency macro.
2013-12-24 13:02:49 +01:00
Stephen Kelly f4f6529354 Help: cmake-packages: Add missing slash. 2013-12-24 13:02:49 +01:00
Stephen Kelly cbe7e8fae4 export: Implement EXPORT subcommand (#9822)
Teach the export command to handle export sets defined by invocations
of install(TARGETS ... EXPORT foo).  This makes maintenance of targets
exported to both the build tree and install tree trivial.
2013-12-24 13:02:49 +01:00
Brad King 12862e939f Help: Simplify top-level index organization
Revise the organization introduced in commit 2c7cd95c (Help: Organize
top-level index, 2013-10-28) to drop "Other Manuals" and put them in
"Reference Manuals" because the distinction between them has blurred.
Perhaps a better breakdown of the reference manuals will emerge in
the future.

While at it, sort the reference manual toctree by name.
2013-12-20 15:10:10 -05:00
Brad King 4372365177 Merge topic 'cmake-packages-manual'
3fe4ac8 Help: Add a CMake manual for Packages related docs.
20cafa2 Split the find_dependency macro into a separate file.
2013-12-20 15:01:26 -05:00
Stephen Kelly 3fe4ac828d Help: Add a CMake manual for Packages related docs. 2013-12-20 19:20:31 +01:00
Brad King 6820882be5 Merge topic 'extend-policies-manual'
8f849b9 Help: Mention if(POLICY) and NO_POLICY_SCOPE in policies manual.
2013-12-20 09:41:52 -05:00
Brad King 053c39c4d9 Merge topic 'doc-clarify-CMAKE_VERBOSE_MAKEFILE'
0227ece Help: Clarify CMAKE_VERBOSE_MAKEFILE initialization (#14658)
2013-12-20 09:41:47 -05:00
Stephen Kelly 8f849b9071 Help: Mention if(POLICY) and NO_POLICY_SCOPE in policies manual. 2013-12-20 12:32:43 +01:00
Brad King 0227ece0a6 Help: Clarify CMAKE_VERBOSE_MAKEFILE initialization (#14658)
Explain that it is initialized to false by the project() command and
intended for configuration by the end user performing a build.
2013-12-19 14:48:51 -05:00
Stephen Kelly 4cb7d792af Help: Fix CMP0037 docs.
INTERFACE libraries may not use double-colons, but IMPORTED
targets may.
2013-12-19 16:17:58 +01:00
Stephen Kelly 5187580bcd Help: Add missing period. 2013-12-19 16:17:58 +01:00
Brad King b375c18b9e Merge topic 'doc-clarify-if-TARGET'
6b8662e Help: Clarify if(TARGET) behavior (#14646)
b74819e Help: Format 'if' command documentation
2013-12-19 10:13:53 -05:00
Brad King 6b8662e681 Help: Clarify if(TARGET) behavior (#14646)
Define the meaning of a "target" clearly and link to the commands
that create them.
2013-12-18 12:15:43 -05:00
Brad King b74819e4fe Help: Format 'if' command documentation
Manually update reStructuredText formatting.  Use a definition list
for the possible if() tests supported.  Add inline literal markup
as appropriate.  Also make minor wording tweaks to make it flow
better with the new markup.
2013-12-18 12:14:24 -05:00
Stephen Kelly 20cafa2e1f Split the find_dependency macro into a separate file.
This allows Config file authors to use it without having to use
CONFIGURE_PACKAGE_CONFIG_FILE.
2013-12-13 16:14:02 +01:00
Stephen Kelly e2cb3e7d43 Help: Note that COMPATIBLE_INTERFACE_ properties may be origin-debugged.
Link to other properties mentioned in the docs already.
2013-12-13 14:48:19 +01:00
Brad King 0060e955db Help: Format and clarify source_group() documentation (#14631)
Refine the .rst formatting.  Document the FILES option explicitly
and specify how it treats relative paths.
2013-12-05 13:22:57 -05:00
Brad King 998d7c8f4a Merge topic 'minor-cleanups'
259bf09 Make the cmStrictTargetComparison operate on const cmTarget*.
8cc3cdb Help: Fix up the VISIBILITY_INLINES_HIDDEN docs.
1396ab8 Don't generate self-references for system include directories.
2013-12-05 09:25:34 -05:00
Brad King 520ead7200 Merge topic 'cleanup-build-commands'
e420124 CMakeDetermineCompilerId: Use CMAKE_VS_(DEVENV|MSBUILD|MSDEV)_COMMAND
0c55729 VS: Add CMAKE_VS_(DEVENV|MSBUILD|MSDEV)_COMMAND variables
2013-12-05 09:24:59 -05:00
Brad King 0c55729c13 VS: Add CMAKE_VS_(DEVENV|MSBUILD|MSDEV)_COMMAND variables
Since commit 5f5c92b9 (VS: Add internal APIs to find MSBuild,
devenv/VCExpress, and msdev, 2013-11-13) the VS generators have
known how to lookup the locations of their build tools directly.
Expose this information to CMake language code by defining new
variables to hold the paths to these tools.
2013-12-04 11:05:05 -05:00
Brad King a6b45087a1 Merge topic 'cmake-toolchains-manual'
c45b5ce Help: Add cmake-toolchains.7 manual
3e3f8b4 Help: Document the CMAKE_FIND_ROOT_PATH* variables.
531c108 Help: Document the CMAKE_TOOLCHAIN_FILE.
2013-12-03 09:45:28 -05:00
Stephen Kelly c45b5ceb66 Help: Add cmake-toolchains.7 manual
Create a manual for toolchain related docs.
2013-12-03 09:44:31 -05:00
Stephen Kelly 8cc3cdb614 Help: Fix up the VISIBILITY_INLINES_HIDDEN docs.
Resolve some sentence fragments, remove a copy-pasto from other docs
and use a link to the CMAKE_VISIBILITY_INLINES_HIDDEN variable.
2013-12-03 11:19:07 +01:00
Brad King 65fb49ba35 Merge topic 'doc-pdb-not-for-static-libs'
c0897cf Help: Document PDB behavior w.r.t. static libraries explicitly (#14600)
09c05f3 Help: Format PDB_NAME and PDB_OUTPUT_DIRECTORY documentation
cb7b907 Help: Document CMAKE_PDB_OUTPUT_DIRECTORY_<CONFIG> variable
2013-12-02 12:07:50 -05:00
Brad King ea8d1a9cca Merge topic 'INTERFACE_AUTOUIC_OPTIONS'
98093c4 QtAutoUic: Add INTERFACE_AUTOUIC_OPTIONS target property.
02542b4 QtAutoUic: Handle new -include command line parameter.
1242f4e Genex: Add {UPPER,LOWER}_CASE and MAKE_C_IDENTIFIER.
754b321 QtAutogen: Use config without prefix in map key.
2013-12-02 12:07:31 -05:00
Brad King 9d51c764f7 Merge topic 'export-includes'
5838aba Export: Report error on relative include with genex.
7a3e45b Export: Prefix relative items with genexes in INSTALL_INTERFACE.
f088a32 Export: Process INSTALL_INTERFACE in INCLUDES DESTINATION.
9eedc85 Export: Process relative includes after genex evaluation.
80790f3 Export: Test existing behavior of exporting includes with genexes.
38afc82 target_include_directories: Allow relative path with genex
2013-12-02 12:06:43 -05:00
Brad King 9c56366250 Merge topic 'KateProjectGenerator2'
b54c336 kate: add some documentation
9414217 kate: insert build targets
644e012 kate: add project generator for the Kate project plugin
2013-12-02 12:06:27 -05:00
Brad King c0897cfad0 Help: Document PDB behavior w.r.t. static libraries explicitly (#14600)
Document PDB_NAME and PDB_OUTPUT_DIRECTORY as applying only to shared
libraries and executables.  Add an explicit note to explain why they
do not work for static libraries.
2013-12-02 11:32:41 -05:00
Brad King 09c05f37cf Help: Format PDB_NAME and PDB_OUTPUT_DIRECTORY documentation
Add reStructuredText inline markup.
2013-12-02 11:11:40 -05:00
Brad King cb7b90726c Help: Document CMAKE_PDB_OUTPUT_DIRECTORY_<CONFIG> variable 2013-12-02 11:11:07 -05:00
Stephen Kelly 98093c45db QtAutoUic: Add INTERFACE_AUTOUIC_OPTIONS target property.
Transitively consume the property from linked dependents.

Implement configuration-specific support by following the pattern
set out for compile definitions and includes in cmQtAutoGenerators.

Implement support for origin-tracking with CMAKE_DEBUG_TARGET_PROPERTIES.

This is motivated by the needs of KDE, which provides a separate
translation system based on gettext instead of the Qt linguist
translation system. The Qt uic tool provides command line options
for configuring the method used to translate text, and to add an
include directive to the generated file to provide the method.

 http://thread.gmane.org/gmane.comp.kde.devel.frameworks/7930/focus=7992

Implement the interface to provide the uic options as a usage-requirement
on the KI18n target, as designed for KDE.
2013-11-27 19:06:12 +01:00
Stephen Kelly 1242f4e569 Genex: Add {UPPER,LOWER}_CASE and MAKE_C_IDENTIFIER. 2013-11-27 19:06:12 +01:00
Stephen Kelly 3e3f8b456f Help: Document the CMAKE_FIND_ROOT_PATH* variables.
Add a replacement template for the variables, and link to them from
the documentation for the find_* commands.
2013-11-27 13:21:12 +01:00
Stephen Kelly 531c108da1 Help: Document the CMAKE_TOOLCHAIN_FILE.
Link to the new docs from existing references to the variable.
2013-11-27 13:21:12 +01:00
Brad King b80ef72b4d Merge topic 'ninja-compile-link-pool'
7605e37 Ninja: job pool support for compiling and linking
2013-11-26 09:52:35 -05:00
Brad King fd2ffb42aa Merge topic 'minor-cleanups'
ebeb31d Help: Fix typo in CMP0040 docs.
97b0abb Help: Fix typo in genex docs.
2013-11-26 09:48:21 -05:00
Stephen Kelly 5838aba1aa Export: Report error on relative include with genex.
Diagnostics which check the sanity of exported include paths
previously skipped over any path containing a generator expression.

Introduce a policy to issue an error message in such cases.

The export files created in the OLD behavior are not usable, because
they contain relative paths or paths to the source or build location
which are not suitable for use on installation. CMake will report an
error on import.
2013-11-26 13:01:55 +01:00
Stephen Kelly ebeb31db2f Help: Fix typo in CMP0040 docs.
'report and error' -> 'report an error'
2013-11-26 12:10:37 +01:00
Stephen Kelly 97b0abb423 Help: Fix typo in genex docs.
would be require -> would require
2013-11-26 12:10:25 +01:00
Stephen Kelly 1320e0768e cmQtAutogen: Allow specifying depends for autogen targets.
Test this by generating files with a custom target, which moc
requires to be present when it is run.
2013-11-25 22:41:21 +01:00
Peter Kümmel 7605e37aab Ninja: job pool support for compiling and linking
Could be tested by setting the environment
variable NINJA_STATUS=[%r]
2013-11-25 22:23:24 +01:00
Alex Neundorf b54c336e46 kate: add some documentation
Alex
2013-11-25 10:48:39 -05:00
Brad King beec9dbc53 Help: Organize and revise the cmake-generators.7 manual
Move "extra" generators to their own section instead of duplicating them
for each corresponding main generator.  Divide the list of main
generators into command-line and IDE sections and sort the names within
each section.  Document the environment from which each kind of
generator may be used.

Add a section to each "extra" generator documenting which main
generators may be used with it.
2013-11-25 10:17:18 -05:00
Brad King 45a03aa654 Help: Document $ENV{VAR} syntax in cmake-language.7 manual 2013-11-25 08:55:28 -05:00
Brad King 3013a11826 Merge topic 'cross-compiling-toolchain-variables'
7521da2 Introduce CMAKE_STAGING_PREFIX variable.
2013-11-22 08:40:50 -05:00
Stephen Kelly 8e729df0fc Help: Reformat cmake-generator-expressions.7 manual
Use definition lists instead of a preformatted block to enumerate
the genex documentation.

Consistently capitalize the description.

Use ``...`` to format genex parameters in the description.

Turn references to commands into links.

Add high level documentation about the motivation for generator
expressions.

Regroup expressions into subsections for different genex types. Add
a high-level description and example of the expressions in each
section.

Explode the documentation for filesystem artifacts, instead of only
referring to the variations.
2013-11-21 15:20:46 -05:00
Brad King d46dfd32c6 Merge topic 'missing-target-error'
a02f3d2 Add policy CMP0040 to disallow custom commands on missing targets
2013-11-21 09:39:39 -05:00
Brad King 26bed2ac57 Merge topic 'find_backtrace'
c6f339c Add FindBacktrace.cmake module.
2013-11-21 09:38:56 -05:00
Nils Gladitz a02f3d2de0 Add policy CMP0040 to disallow custom commands on missing targets 2013-11-21 09:24:08 -05:00
Stephen Kelly 7521da2852 Introduce CMAKE_STAGING_PREFIX variable.
This variable can be useful in cross-compiling contexts where the
sysroot is read-only or where the sysroot should otherwise remain
pristine.

If the new CMAKE_STAGING_PREFIX variable is set, it is used instead
of CMAKE_INSTALL_PREFIX when generating the installation rules in
cmake_install.cmake.

This way, the CMAKE_INSTALL_PREFIX variable
always refers to the installation prefix on the target device, regardless
of whether host==target.

If any -rpath paths passed to the linker contain the CMAKE_STAGING_PREFIX,
the matching path fragments are replaced with the CMAKE_INSTALL_PREFIX.
Matching paths in the -rpath-link are not transformed.

The cross-prefix usr-move workaround is assumed not to require extension
regarding CMAKE_STAGING_PREFIX. The staging area is a single prefix, so
there is no scope for cross-prefix symlinks. The CMAKE_INSTALL_PREFIX
is still used to determine the workaround path, and that variable
remains the relevant one even if CMAKE_STAGING_PREFIX is used. If the
generated export files are deployed to the target, the workaround
will still be in place, and still be employed if required.
2013-11-21 11:48:03 +01:00
Brad King 7df3a10a5e Merge topic 'dev/better-eclipse-language-support'
a990722 eclipse: Support custom natures via a global property
51726cc eclipse: Add natures for Eclipse based on enabled languages
4a352d4 Notify extra generators about languages
2013-11-20 09:08:34 -05:00
Brad King e776a2dae4 Merge topic 'macro-args-docs'
f0db2e3 Help: Document macro argument caveats in more detail
2013-11-19 12:44:48 -05:00
Brad King 46ec48c93d Merge topic 'cross-compiling-toolchain-variables'
7cd65c9 Add CMAKE_SYSROOT variable to set --sysroot when cross compiling.
5096967 Allow toolchain files to specify an external toolchain.
76552d5 Add compiler target compile options.
f41ecd1 CMakeDetermineCompilerId: Look for internal file only on host
2013-11-19 12:41:57 -05:00
Stephen Kelly 7cd65c97fa Add CMAKE_SYSROOT variable to set --sysroot when cross compiling.
As CMAKE_ROOT_FIND_PATH can be a list, a new CMAKE_SYSROOT is
introduced, which is never a list.

The contents of this variable is passed to supporting compilers
as --sysroot. It is also accounted for when processing implicit
link directories reported by the compiler, and when generating
RPATH information.
2013-11-19 12:39:39 -05:00
Stephen Kelly 5096967ecd Allow toolchain files to specify an external toolchain.
Clang can compile code, but uses the gcc tools for other tasks such
as linking. The -gcc-toolchain option can be used for that, but
generalize so that other compilers can be treated the same.

If such a location is specified, use it as a hint for finding
the binutils executables.
2013-11-19 12:39:34 -05:00
Stephen Kelly 76552d595d Add compiler target compile options.
For clang, this allows passing -target <triple> to the compiler, and
for qcc, -V<arch> using toolchain files containing something like

 set(triple arm-linux-gnueabihf)
 set(CMAKE_C_COMPILER "/usr/bin/clang")
 set(CMAKE_C_COMPILER_TARGET ${triple})
 set(CMAKE_CXX_COMPILER "/usr/bin/clang++")
 set(CMAKE_CXX_COMPILER_TARGET ${triple})

or

 set(arch gcc_ntoarmv7le)
 set(CMAKE_C_COMPILER /opt/qnx650/host/linux/x86/usr/bin/qcc)
 set(CMAKE_C_COMPILER_TARGET ${arch})
 set(CMAKE_CXX_COMPILER /opt/qnx650/host/linux/x86/usr/bin/QCC)
 set(CMAKE_CXX_COMPILER_TARGET ${arch})

Both clang and qcc are inherently cross compiler( driver)s.

When cross-compiling with clang, use the CMAKE_${lang}_COMPILER_TARGET
as the _CMAKE_TOOLCHAIN_PREFIX to find the appropriate binutils.

When cross-compiling with QNX qcc, use the CMAKE_${lang}_COMPILER_TARGET
to set the appropriate _CMAKE_TOOLCHAIN_PREFIX.
2013-11-19 12:38:53 -05:00
Ben Boeckel a990722b5a eclipse: Support custom natures via a global property
This is useful for enabling natures not recognized by the Eclipse
generator directly in a project.
2013-11-19 11:48:19 -05:00
Brad King 1da77bf1ee Merge topic 'cleanup-build-commands'
4cce44b Help: Document the CMAKE_MAKE_PROGRAM variable in more detail
558c74d VS: Switch to internal CMAKE_MAKE_PROGRAM lookup by generators
5229f2d Tests: Do not use an explicit make program for VS generators
72dd738 Tests: Fix MFC test heuristic for empty CMAKE_TEST_MAKEPROGRAM
fd6076d Tests: Pass CMAKE_MAKE_PROGRAM instead of --build-makeprogram
68031ab Tests: Configure SubProject-Stage2 test more robustly
003d10c Tests: Simplify VSExcludeFromDefaultBuild configuration
e47d934 Tests: Simplify VSProjectInSubdir configuration
e965cb1 Tests: Simplify CTest.BuildCommand.ProjectInSubdir configuration
72bf255 Tests: Pass --build-options to every test
4d1d772 ctest: Teach --build-options to allow zero options
96966b5 ctest: Make the --build-makeprogram optional for --build-and-test
91a0211 Simplify some calls to cmGlobalGenerator::Build
123a060 Teach GenerateBuildCommand to find its own make program
5f5c92b VS: Add internal APIs to find MSBuild, devenv/VCExpress, and msdev
4ac75fd Prefer CMAKE_MAKE_PROGRAM over CMAKE_BUILD_TOOL (#14548)
...
2013-11-19 10:55:39 -05:00
Brad King 6574d3d1d1 Merge topic 'forbid-reserved-targets'
3900fcf CMP0037: Extend policy to reserved names and custom targets
2013-11-19 09:47:32 -05:00
Nils Gladitz 3900fcf4a8 CMP0037: Extend policy to reserved names and custom targets
Teach add_custom_target to check the policy too.  Extend the policy to
disallow reserved target names that we use for builtin targets like
"all".

Extend the RunCMake.CMP0037 test to cover these cases.
2013-11-19 09:44:22 -05:00
Daniele E. Domenichelli f0db2e3898 Help: Document macro argument caveats in more detail
Add notes about macro arguments in the foreach, if, and list commands.
Add a section to the macro command documentation explaining in detail
how macro arguments are not variables.
2013-11-19 09:01:54 -05:00
Brad King 4cce44b6c5 Help: Document the CMAKE_MAKE_PROGRAM variable in more detail
Explain how it is set for each group of generators.  Also explain
the build-time selection behavior used by Visual Studio generators.
2013-11-18 11:30:51 -05:00
Brad King 96966b5c80 ctest: Make the --build-makeprogram optional for --build-and-test
GenerateBuildCommand now knows how to lookup CMAKE_MAKE_PROGRAM or
choose a generator-provided default build tool.  Therefore the
--build-makeprogram can now be optional and simply override the
default selection when provided.

Note that with --build-nocmake we now need to load the cache in order to
make the CMAKE_MAKE_PROGRAM entry available to GenerateBuildCommand.
2013-11-18 11:30:49 -05:00
Brad King 4ac75fdfe6 Prefer CMAKE_MAKE_PROGRAM over CMAKE_BUILD_TOOL (#14548)
Historically these were both added for the Makefile and Visual Studio
generators, respectively.  Later the VS generators started using the
CMAKE_MAKE_PROGRAM cache entry to find the IDE build tool, and the
CMAKE_BUILD_TOOL was simply set as an alias.

Fix the documentation to explain that CMAKE_MAKE_PROGRAM is the modern
variable and that CMAKE_BUILD_TOOL is the compatibility alias, not the
other way around.  Replace uses of CMAKE_BUILD_TOOL with
CMAKE_MAKE_PROGRAM in CMake-provided modules.  Nothing needs to lookup
CMAKE_BUILD_TOOL in the cache, so simply set it as a normal variable.
2013-11-18 08:26:23 -05:00
Brad King bca67c710f build_command: Return a "cmake --build" command-line
Re-implement the build_command() command to use "cmake --build" instead
of generating a native build tool invocation directly.  This command
will internally invoke the proper native build tool.

This avoids requiring cmGlobalGenerator::GenerateBuildCommand to produce
a string so that it can be later refactored to produce a vector with no
quoting or escaping.  It will also allow us to later teach CMake to
delay the decision about which build tool to invoke until after the
project build system is generated to disk.  For example, on Visual
Studio 10 and above the preferred command-line tool is MSBuild, but we
need to fall back to devenv if the .sln has Intel Fortran .vfproj files.
2013-11-15 14:38:18 -05:00
Nils Gladitz 7eb994062a CTest: added documentation for the "Upload" submission PART 2013-11-15 15:22:08 +01:00
Kitware Robot 3442f2bcc4 Help: Format manual/*.1.rst options as definition lists
Convert the command-line option documentation formatting from bullet
lists to definition lists.
2013-11-14 10:05:32 -05:00
Brad King 978d796e8d Merge topic 'policy-summary-periods'
49cbca6 CMP0038: Add missing '.' to policy summary line
7390002 CMP0039: Add missing '.' to policy summary line
2013-11-13 09:58:50 -05:00
Brad King 49cbca6c2a CMP0038: Add missing '.' to policy summary line 2013-11-12 11:54:49 -05:00
Daniele E. Domenichelli 7390002964 CMP0039: Add missing '.' to policy summary line 2013-11-12 11:54:14 -05:00
Brad King 684063c036 Refactor tool selection for edit_cache (#14544)
Refactor edit_cache tool selection to ask each global generator for its
preference.  Teach the Ninja generator to always use cmake-gui because
Ninja by design cannot run interactive terminal dialogs like ccmake.
Teach the Makefile generator to use cmake-gui when also using an "extra"
generator whose IDE has no terminal to run ccmake, and otherwise fall
back to CMAKE_EDIT_COMMAND selection for normal Makefile build systems.
2013-11-12 08:47:19 -05:00
Brad King 2053e0cd51 Merge topic 'tll-target-policies'
596b2a8 Disallow linking to utility targets (#13902).
301bb5c Disallow link-to-self (#13947).
05f5fde Disallow invalid target names (#13140)
2013-11-08 10:33:14 -05:00
Brad King 064e6d3272 Merge topic 'doc-cmake-language'
79fd233 Help: Reference cmake-language.7 comment docs from cmake-developer.7
a931ee4 Help: Add cmake-language.7 manual
2013-11-08 10:33:10 -05:00
Brad King 79fd233806 Help: Reference cmake-language.7 comment docs from cmake-developer.7
The cmake-language.7 manual now documents comment syntax.  Reference it
from cmake-developer.7 when discussing how to add comment-enclosed
documentation to modules.
2013-11-08 08:41:49 -05:00
Brad King a931ee4414 Help: Add cmake-language.7 manual 2013-11-08 08:41:46 -05:00
Brad King 3bb6266492 Help: Clarify execute_process COMMAND argument behavior
State in the execute_process how COMMAND arguments are passed to
the child.  Add a note at the end about how the command differs
from add_custom_*().

Suggested-by: Alan W. Irwin
2013-11-07 16:42:39 -05:00
Brad King ea6b656f0c Help: Format execute_process command documentation
Use a code-block for the signature.  Format the options as a definition
list.
2013-11-07 16:42:04 -05:00
Stephen Kelly 596b2a8c08 Disallow linking to utility targets (#13902). 2013-11-07 11:06:40 +01:00
Stephen Kelly 301bb5cdda Disallow link-to-self (#13947). 2013-11-07 11:06:39 +01:00
Stephen Kelly 05f5fde0eb Disallow invalid target names (#13140)
Exclude Borland and NMake from the CMP0037 test. They do not accept
the colon in a target name.
2013-11-07 11:06:39 +01:00
Brad King 93fe461e6c Merge topic 'remove-cmake-i-wizard'
0fa9aea Help: Drop mention of cmake -i wizard mode
2013-11-05 08:17:06 -05:00
Brad King 0fa9aea293 Help: Drop mention of cmake -i wizard mode
The parent commit removed support for this mode, so do not mention
it in the documentation.
2013-11-04 11:16:22 -05:00
Brad King d1e8a0240b Help: Refine manual/*.1.rst usage summaries
Use a parsed-literal block to list possible command-line signatures.
Add an "Options" section header before the list of options.
2013-11-04 11:06:14 -05:00
Brad King e9654c632a Fix INTERFACE_LINK_LIBRARIES documentation typos
Apply the changes from commit 603fe925 (Fix summary documentation of
INTERFACE_LINK_LIBRARIES, 2013-11-04) and commit 0aa97b6b (Fix spelling
in INTERFACE_LINK_LIBRARIES documentation, 2013-11-04) to the new
location of the same documentation.
2013-11-04 08:33:38 -05:00
Brad King b4a1f442bb Merge topic 'policy-CMP0022-fixes-for-master'
b51696f CMP0022: Update target_link_libraries plain signature documentation
25b7f87 Merge branch 'policy-CMP0022-fixes' into policy-CMP0022-fixes-for-master
0a561a0 CMP0022: Warn about a given target at most once
23d21b7 Do not export INTERFACE_LINK_LIBRARIES from non-linkable targets
ef10b87 CMP0022: Plain target_link_libraries must populate link interface
0e06788 CMP0022: Add test for target_link_libraries plain signature
c0f4a61 CMP0022: Add unit test for null pointer check and message.
4b0cfa7 Merge branch 'output-CMP0022-entries' into policy-CMP0022-fixes
2013-11-04 07:54:20 -05:00
Brad King a9c8f7b300 Merge topic 'doc-CMAKE_INCLUDE_DIRECTORIES_BEFORE'
12d10a0 Add missing documentation for include dirs related variables. (#12611)
2013-11-04 07:53:57 -05:00
Brad King 1d998085be Merge topic 'improve-tgt-INCLUDE_DIRECTORIES-docs'
8c6363a cmTarget: Improve INCLUDE_DIRECTORIES property docs (#13188).
2013-11-04 07:53:51 -05:00
Brad King b51696f003 CMP0022: Update target_link_libraries plain signature documentation
Make the documentation change made by commit ef10b87c (CMP0022: Plain
target_link_libraries must populate link interface, 2013-11-02) in the
new location for the same documentation.
2013-11-03 09:23:02 -05:00
Stephen Kelly 12d10a00ac Add missing documentation for include dirs related variables. (#12611)
Document CMAKE_INCLUDE_DIRECTORIES_BEFORE and
CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE.
2013-11-02 16:06:19 +01:00
Brad King 2043a86b6a Merge topic 'doc-rst-note-and-productionlist'
450b515 cmRST: Add support for the note and productionlist directives
2013-11-02 10:54:10 -04:00
Stephen Kelly 8c6363a62f cmTarget: Improve INCLUDE_DIRECTORIES property docs (#13188).
Note that relative paths should not be added directly.
2013-11-02 14:38:55 +01:00
Brad King c76e44e7b9 Help: Limit reference manual toctree depth to 1
Add a :maxdepth: option to all toctree directives to limit their depth
to 1.  We do not want subheadings from individual documents to pollute
the already large lists of CMake Domain objects.
2013-11-01 11:12:02 -04:00
Brad King e065decd43 Merge topic 'add-CMAKE_FIND_NO_INSTALL_PREFIX'
fe057ab Allow disabling adding the install prefix to the prefix search path.
2013-11-01 09:40:19 -04:00
Stephen Kelly fe057ab3cd Allow disabling adding the install prefix to the prefix search path.
In certain scenarios, it is preferable to keep a 'dirty' install prefix
than to clear it, and to expect that content will not be found there.
Add a CMAKE_FIND_NO_INSTALL_PREFIX variable that can be set to disable
searching the install prefix.
2013-10-31 16:40:24 +01:00
Brad King c247f1e175 Merge topic 'vs-generator-names'
29071fe VS: Add version year to generator names
2013-10-31 09:39:42 -04:00
Brad King 450b515ad0 cmRST: Add support for the note and productionlist directives
Simply print out the lines as normal paragraph text.  Teach the
CMakeLib.testRST test to cover this syntax.  Update the
cmake-developer.7 manual to document support for the directives.
2013-10-30 10:26:29 -04:00
Brad King f88332f5b7 Help: Glob manual/*.rst in Sphinx configuration
Add the man page description line as explicit markup at the top of each
Help/manual/*.rst file and scan it from conf.py to automatically
generate the man_pages Sphinx configuration value.  This reduces the
number of places that need to be changed when a new manual is added.
2013-10-30 09:58:25 -04:00
Brad King a1254ddd74 Merge topic 'doc-organize-index'
c9d5ccf Help: Add index document title
2013-10-29 15:21:08 -04:00
Brad King c9d5ccfab1 Help: Add index document title
Add an explicit title directive to set the HTML index page title instead
of taking the first section header.
2013-10-29 14:55:51 -04:00
Brad King 1665721c28 Merge topic 'doc-organize-index'
2c7cd95 Help: Organize top-level index
2013-10-29 09:45:57 -04:00
Brad King fcbe435c23 Merge topic 'Qt-auto-generators'
9c87d9c Add automatic rcc invocation for Qt.
84218e1 Add automatic uic invocation for Qt.
94a0ca6 Record which files are skipped by automoc.
18fb758 Run the main executable created in the autogen tests.
e485ba1 Rename the QtAutomoc tests to QtAutogen.
7ce65c3 Add extra checks for the AUTOMOC target property.
32771fc Update output messages for generic use.
f371ab5 Rename RunAutomoc to RunAutogen.
85b3d6e Extract an SetupAutoMocTarget method.
ca124a1 Rename the AutomocInfo.cmake file to be more generic.
a342c9f Move some makefile definitions up away from moc-specific code.
98632ef Add the AUTOGEN_TARGETS_FOLDER and obsolete AUTOMOC_TARGETS_FOLDER.
63378ba Rename some variables to reflect broader scope.
97f1aa3 Rename method to reflect generic use.
4abb111 Rename local variable to reflect generic use.
03878c9 Move variable set to where it is used.
...
2013-10-28 15:23:09 -04:00
Brad King 2c7cd95c82 Help: Organize top-level index
Divide the list of manuals into separate sections each with its own
title.
2013-10-28 14:46:39 -04:00
Brad King 29071fed2e VS: Add version year to generator names
Rename the Visual Studio >= 10 generators to indicate the version year:

 Visual Studio 10 => Visual Studio 10 2010
 Visual Studio 11 => Visual Studio 11 2012
 Visual Studio 12 => Visual Stduio 12 2013

Report the names with the year to the list of available generators so
that the cmake-gui drop-down shows the years.  When selecting a
generator from the "-G" option or from an existing CMAKE_GENERATOR cache
entry, recognize names without the years for compatibility and map them
to the names with years.

Update the generator names in the cmake-generators.7 manual.
2013-10-28 13:43:14 -04:00
Brad King 4025013dd7 Merge topic 'compatible-interface-numbers'
ff6c401 cmTarget: Add interface for compatible numeric properties
e4e20c1 cmTarget: Add enumeration for consistency to expect from properties.
9877769 cmTarget: Assign consistent content back to the property being evaluated.
816b4a8 cmTarget: Make consistentProperty return consistent content.
030800a cmTarget: Add a template to create correct implied content.
2013-10-26 10:28:30 -04:00
Brad King bb21e17fb7 Merge topic 'remove-pre-2.4-compatibility'
7d47c69 Drop compatibility with CMake < 2.4
c7c44fc CTestTest*: Update minimum required CMake to 2.4
2013-10-26 10:28:09 -04:00
Brad King 8c0bbd37df Merge topic 'minor-cleanups'
f3f49ff Docs: Fix typo
b0686fd Docs: Fix typo.
2013-10-24 09:52:29 -04:00
Stephen Kelly 9c87d9cc3e Add automatic rcc invocation for Qt.
This replaces the need to invoke qt4_add_resources by allowing
adding the source .qrc file directly to the target sources.
2013-10-24 12:30:41 +02:00
Stephen Kelly 84218e1870 Add automatic uic invocation for Qt.
The source files are already processed by cmQtAutomoc to look for
moc includes, so extend that to also look for ui_ includes and
find corresponding .ui files to process.

This replaces the need to invoke qt4_wrap_ui().

As the ui files are not likely to be part of the SOURCES of the
target, store the options associated with them separately in the
cmMakefile for querying during the autogen run.
2013-10-24 12:30:38 +02:00
Stephen Kelly 98632effeb Add the AUTOGEN_TARGETS_FOLDER and obsolete AUTOMOC_TARGETS_FOLDER. 2013-10-24 11:50:47 +02:00
Stephen Kelly ff6c401309 cmTarget: Add interface for compatible numeric properties
When using the boost MPL library, one can set a define to increase
the limit of how many variadic elements should be supported. The
default for BOOST_MPL_LIMIT_VECTOR_SIZE is 20:

 http://www.boost.org/doc/libs/1_36_0/libs/mpl/doc/refmanual/limit-vector-size.html

If the foo library requires that to be set to 30, and the independent
bar library requires it to be set to 40, consumers of both need to set
it to 40.

 add_library(foo INTERFACE)
 set_property(TARGET foo PROPERTY INTERFACE_boost_mpl_vector_size 30)
 set_property(TARGET foo PROPERTY COMPATIBLE_INTERFACE_NUMBER_MAX boost_mpl_vector_size)
 target_compile_definitions(foo INTERFACE BOOST_MPL_LIMIT_VECTOR_SIZE=$<TARGET_PROPERTY:boost_mpl_vector_size>)

 add_library(bar INTERFACE)
 set_property(TARGET bar PROPERTY INTERFACE_boost_mpl_vector_size 40)
 # Technically the next two lines are redundant, but as foo and bar are
 # independent, they both set these interfaces.
 set_property(TARGET bar PROPERTY COMPATIBLE_INTERFACE_NUMBER_MAX boost_mpl_vector_size)
 target_compile_definitions(bar INTERFACE BOOST_MPL_LIMIT_VECTOR_SIZE=$<TARGET_PROPERTY:boost_mpl_vector_size>)

 add_executable(user)
 target_link_libraries(user foo bar)

Because the TARGET_PROPERTY reads the boost_mpl_vector_size property
from the HEAD of the dependency graph (the user target), and because
that property appears in the COMPATIBLE_INTERFACE_NUMBER_MAX of
the dependencies of the user target, the maximum value for it is
chosen for the compile definition, ie, 40.

There are also use-cases for choosing the minimum value of a number.
In Qt, deprecated API can be disabled by version. Setting the
definition QT_DISABLE_DEPRECATED_BEFORE=0 disables no deprecated
API. Setting it to 0x501000 disables API which was deprecated before
Qt 5.1 etc.

If two dependencies require the use of API which was deprecated in
different Qt versions, then COMPATIBLE_INTERFACE_NUMBER_MIN can be
used to ensure that both can compile.
2013-10-24 08:42:05 +02:00
Stephen Kelly f3f49ff7a9 Docs: Fix typo
opitions -> options.
2013-10-23 23:41:00 +02:00
Brad King 2945814de2 cmRST: Teach cmake-module directive to scan bracket comments
When scanning CMake module files for .rst comments, recognize
bracket comments starting in ".rst:" too.  For example:

 #[[.rst:

Include the bracket comment content terminated by the closing bracket.
Exclude the line containing the bracket if it starts in "#".

Teach the CMakeLib.testRST test to cover multiple bracket lengths
and ending brackets on lines with and without "#".

Update the cmake-developer.7 manual to document the bracket-comment
syntax for .rst documentation.
2013-10-23 09:36:00 -04:00
Brad King 8bb2ee96cc cmake-developer.7: Improve flow of module documentation instructions
Use prose instead of enumerated steps and re-order the steps so that
the cmake-module directive is covered contiguously.
2013-10-23 09:36:00 -04:00
Brad King 7d47c69365 Drop compatibility with CMake < 2.4
Drop all behavior activated by setting CMAKE_BACKWARDS_COMPATIBILITY to
a value lower than 2.4, and generate an error when projects or the user
attempt to do so.  In the error suggest using a CMake 2.8.x release.

Teach cmake_minimum_required to warn about projects that do not require
at least CMake 2.4.  They are not supported by CMake >= 3.0.

Replace the documentation of CMAKE_BACKWARDS_COMPATIBILITY with a
reference to policy CMP0001.
2013-10-23 08:54:31 -04:00
Brad King a8cfc21843 Merge topic 'doc-cmake-developer'
e0ce6f0 cmRST: Cross-reference cmake-developer.7 manual and cmRST Doxygen
c1c239b Help: Add documentation format to cmake-developer.7 manual
a06a90f Help: Organize cmake-developer.7 manual Modules section
28f08ba Help: Fix module documentation markup in cmake-developer.7 manual
baaab06 Help: Move Modules/readme.txt content into cmake-developer.7 manual
80a311e Help: Add cmake-developer.7 manual
2013-10-23 08:20:01 -04:00
Stephen Kelly b0686fdeda Docs: Fix typo.
dependee -> depender.
2013-10-23 13:33:26 +02:00
Brad King e0ce6f0a22 cmRST: Cross-reference cmake-developer.7 manual and cmRST Doxygen
The cmRST implementation and the list of capabilities documented in the
cmake-developer.7 manual must be kept in sync.  Add a note to each file
to reference the other.
2013-10-22 10:55:23 -04:00
Brad King c1c239bf75 Help: Add documentation format to cmake-developer.7 manual
Document how CMake uses reStructuredText to provide the help manuals.
Cover supported inline markup and directives, the CMake Domain in
Sphinx, and cross-reference syntax.
2013-10-22 10:55:23 -04:00
Brad King a06a90f457 Help: Organize cmake-developer.7 manual Modules section
Add "Module Documentation" and "Find Modules" subsections.  Add to
Modules/readme.txt a textual reference to the cmake-developer.7 manual
and, while at it, fix the wiki URL domain.
2013-10-22 10:10:15 -04:00
Kitware Robot 28f08ba25c Help: Fix module documentation markup in cmake-developer.7 manual
Convert the content moved from Modules/readme.txt to valid
reStructuredText markup.  Mainly, convert the lists of variables to
definition lists, wrap long lines in paragraph text, and add literal
block markup and indentation.
2013-10-22 10:09:26 -04:00
Kitware Robot baaab068f2 Help: Move Modules/readme.txt content into cmake-developer.7 manual
Move all content from Modules/readme.txt except for the link to the
module maintainers wiki page into "Help/manual/cmake-developer.7.rst".
This produces some invalid reStructuredText markup to be fixed in a
future commit.
2013-10-22 09:51:51 -04:00
Brad King 80a311ed6a Help: Add cmake-developer.7 manual
Add the manual with just an introduction section.  Leave section headers
for Help and Modules to be filled in later.
2013-10-22 09:50:15 -04:00
Brad King 6c9194488a Add policy CMP0036 to disallow build_name 2013-10-22 09:09:53 -04:00
Brad King 3969bb23aa Add policy CMP0035 to disallow variable_requires 2013-10-22 09:09:52 -04:00
Brad King 178b9af186 Add policy CMP0034 to disallow utility_source 2013-10-22 09:09:52 -04:00
Brad King 248d1dc057 Add policy CMP0033 to disallow export_library_dependencies 2013-10-22 09:09:52 -04:00
Brad King 6865c8fe05 Add policy CMP0032 to disallow output_required_files 2013-10-22 09:09:52 -04:00
Brad King aa76518f8b Add policy CMP0031 to disallow load_command 2013-10-22 09:09:52 -04:00
Brad King 97268cf5b7 Add policy CMP0030 to disallow use_mangled_mesa 2013-10-22 09:09:51 -04:00
Brad King 9f64fbf5b5 Add policy CMP0029 to disallow subdir_depends 2013-10-22 09:09:51 -04:00
Brad King 882c0f0b69 Add infrastructure for policies that disallow commands
Add cmCommand::Disallowed helper to check the setting of a policy that
disallows the command.  Add a RunCMake.DisallowedCommands test
placeholder.  Add a Help/policy/DISALLOWED_COMMAND.txt file for
inclusion by each policy document to avoid duplication of the common
text.
2013-10-22 09:09:51 -04:00
Brad King 7809adb814 Merge topic 'string-CONCAT-command'
4e184a2 string: Add CONCAT sub-command
2013-10-22 09:08:15 -04:00
Brad King 5db203d6be Merge topic 'doc-vs-keyword-properties'
b9fe4b6 VS: Document VS_GLOBAL_KEYWORD and VS_KEYWORD relationship (#14493)
2013-10-22 09:07:51 -04:00
Brad King 0d9e8b1ab9 Merge topic 'double-colon-is-imported'
f063c45 Consider targets with double colons to be IMPORTED or ALIAS targets.
2013-10-22 09:07:40 -04:00
Brad King 61de941ad7 Merge topic 'cmake--build-pipes'
bcd5de7 cmake: Always pass through stdout/stderr in --build mode
2013-10-22 09:07:23 -04:00
Brad King 6384f1683a Merge topic 'remove-cmake-i-wizard'
a8226e9 cmake: Drop support for "-i" wizard mode
2013-10-22 09:07:14 -04:00
Brad King 4e184a21be string: Add CONCAT sub-command
Add a string(CONCAT) command to simply concatenate input arguments
together.  This will be useful for combining strings from different
quoting syntaxes.  Add a RunCMake.string test covering these cases.
2013-10-21 12:54:20 -04:00
Brad King b9fe4b6318 VS: Document VS_GLOBAL_KEYWORD and VS_KEYWORD relationship (#14493)
These two target properties serve the same purpose for different versions
of Visual Studio.  Document the versions covered by each property.

Reported-by: mar.na@t-online.de
2013-10-21 10:07:46 -04:00
Stephen Kelly f063c45589 Consider targets with double colons to be IMPORTED or ALIAS targets.
Introduce a policy to control the behavior.

The AliasTargets unit test already tests that using a
double-semicolon in the name is not an error. Change the ExportImport
test to use a namespace with a double-semicolon too.
2013-10-21 15:56:31 +02:00