Commit Graph

278 Commits

Author SHA1 Message Date
Stephen Kelly 0dfe395e3c Features: Add COMPILE_FEATURES generator expression.
Allow setting build properties based on the features available
for a target.  The availability of features is determined at
generate-time by evaluating the link implementation.

Ensure that the <LANG>_STANDARD determined while evaluating
COMPILE_FEATURES in the link implementation is not lower than that
provided by the INTERFACE of the link implementation.  This is
similar to handling of transitive properties such as
POSITION_INDEPENDENT_CODE.
2014-05-21 17:22:32 +02:00
Brad King c1edede31f Merge topic 'compile-features-C-language'
e0890d03 Features: Extend concept to C language.
2014-05-20 09:40:14 -04:00
Brad King 567ca4c79e Merge topic 'xcode-file-type'
a339ea65 Xcode: Add source file property to control file type (#14854)
ae80cb9f Xcode: Refactor internal source file type selection
2014-05-16 10:21:06 -04:00
Brad King a339ea6529 Xcode: Add source file property to control file type (#14854)
Add source file properties to control Xcode file type attributes:

  XCODE_EXPLICIT_FILE_TYPE   => explicitFileType
  XCODE_LAST_KNOWN_FILE_TYPE => lastKnownFileType

Add a RunCMake.XcodeProject test to verify generated project content.
2014-05-15 14:34:52 -04:00
Brad King 209cd475eb Help: Add notes for topic 'cmake-gui-capture-output' 2014-05-15 11:10:52 -04:00
Stephen Kelly e0890d03a4 Features: Extend concept to C language.
Add properties and variables corresponding to CXX equivalents.

Add features for c_function_prototypes (C90), c_restrict (C99),
c_variadic_macros (C99) and c_static_assert (C11). This feature
set can be extended later.

Add a <PREFIX>_RESTRICT symbol define to WriteCompilerDetectionHeader
to conditionally represent the c_restrict feature.
2014-05-15 00:15:18 +02:00
Brad King 2e347eb183 Merge topic 'WriteCompilerDetectionHeader-module'
62a4a67d Add the WriteCompilerDetectionHeader module.
2014-05-14 13:58:30 -04:00
Stephen Kelly 62a4a67dc5 Add the WriteCompilerDetectionHeader module.
Provide a function to write a portable header to detect compiler
features.  Generate a preprocessor #error for unknown compilers
and compiler versions whose features are not yet recorded.  This
error condition might be relaxed in the future, but for now it
is useful for verification of expectations.
2014-05-14 13:57:30 -04:00
Brad King 58fcd57c40 Merge topic 'package-disable-registry'
ba387cb8 Help: Add notes for topic 'package-disable-registry'
be8ae960 Allow the Package Registry to be disabled (#14849)
d09fda5d Tests: Improve FindPackageTest for in-source builds
ac24a1c0 Tests: Improve FindPackageTest exported package version
2014-05-12 10:45:51 -04:00
Brad King ba387cb871 Help: Add notes for topic 'package-disable-registry' 2014-05-12 09:50:03 -04:00
Brad King 90f66381d3 Help: Add release notes for policy CMP0053 2014-05-08 13:24:50 -04:00
Brad King a354a8ba5e Merge topic 'UseSWIG-guess_module_name'
145d653e Help: Add notes for topic 'UseSWIG-guess_module_name'
2014-05-01 09:36:16 -04:00
Brad King 4cbce89ba9 Merge topic 'ExternalData-missing-not-fatal'
4a5cf964 Help: Add notes for topic 'ExternalData-missing-not-fatal'
2014-05-01 09:36:12 -04:00
Brad King 145d653e5f Help: Add notes for topic 'UseSWIG-guess_module_name' 2014-05-01 09:27:16 -04:00
Brad King 4a5cf96453 Help: Add notes for topic 'ExternalData-missing-not-fatal' 2014-05-01 09:22:30 -04:00
Brad King 80209fdb7b Help: Add notes for topic 'FindCUDA-cubin-fatbin' 2014-05-01 09:02:34 -04:00
Brad King b56a9ae7f1 Merge topic 'target_compile_features'
9eaf3755 Export: Populate INTERFACE_COMPILE_FEATURES property.
8ed59fc2 Add target_compile_features command.
4e6ca504 cmTargetPropCommandBase: Change the interface to return bool.
5412dede cmTarget: Transitively evaluate compiler features.
baff4434 cmTarget: Allow populating COMPILE_FEATURES using generator expressions.
f97bf437 Features: Add cxx_auto_type.
03355d6b cmTarget: Add COMPILE_FEATURES target property.
faeddf64 project: Add infrastructure for recording CXX compiler features
913394af cmTarget: Add CXX_STANDARD and CXX_EXTENSION target properties.
8238a6cd Add some COMPILE_OPTIONS for specifying C++ dialect.
892243fc Tests: Require CMake 3.0 for the SystemInformation test.
59b5fdd3 Don't load Clang-CXX from AppleClang-CXX.
2014-04-15 10:32:11 -04:00
Brad King 73721c7ce0 CMakeDetermineVSServicePack: Add deprecation diagnostic
Warn project developers at runtime that the module should not be used
anymore.  Issue the diagnostic only when the project requires a new
enough CMake to use the alternative.  Honor the
CMAKE_(ERROR|WARN)_DEPRECATED settings.
2014-04-14 09:31:54 -04:00
Brad King 5c63c13190 Merge topic 'install-prefix-in-interface'
783bce29 Export: Disallow exported interface includes in src/build tree (#14592).
c869984e RunCMake: Allow specifying the source dir and file to test.
2014-04-10 09:53:13 -04:00
Stephen Kelly 783bce295b Export: Disallow exported interface includes in src/build tree (#14592).
Allow directories in the source tree or build tree only if the
install tree is a subdirectory of the source tree or build tree,
as appropriate.

Re-use the test files in the RunCMake.include_directories test
to run in multiple scenarios.  Bump the required CMake version
in the test to 3.0 to ensure that the new policy warnings are
emitted correctly.
2014-04-09 10:38:49 +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 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 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
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 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
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
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 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 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 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 4da09d1a3f Help: Add release notes for topic 'FeatureSummary_combine_WHAT_values' 2014-03-05 11:20:28 -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 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
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 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 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 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
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
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 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