Commit Graph

72 Commits

Author SHA1 Message Date
Brad King 3228fc5049 Features: Define meaning for no language standard default
Define an empty string in CMAKE_<LANG>_STANDARD_DEFAULT to mean that
the toolchain has no notion of lanuage standard levels.  In this case
the <LANG>_STANDARD[_REQUIRED] properties will have no effect.

Update the RunCMake.CompileFeatures test to exclude the
LinkImplementationFeatureCycle test when there is no standard default.
It can never fail because no use of specific features will adjust the
CXX_STANDARD level required for any target since the standard levels
have no meaning in this case.
2015-01-29 15:01:40 -05:00
Stephen Kelly 85857e6d1c Help: Clarify INTERFACE_SYSTEM_INCLUDE_DIRECTORIES documentation. 2015-01-23 00:15:02 +01:00
Brad King bc045555b5 Merge topic 'doc-CXX_STANDARD-14'
72a0d6df Help: Document valid 14 value for CXX_STANDARD. (#15339)
2015-01-10 12:14:59 -05:00
Stephen Kelly 72a0d6df6d Help: Document valid 14 value for CXX_STANDARD. (#15339)
Support was added in commit v3.1.0-rc1~475^2 (Features: Add support
for C++14 features., 2014-05-06), but the documentation for this
property was not amended.
2015-01-08 19:55:29 +01:00
Brad King 45b1e31451 Merge topic 'vs-nsight-tegra-min-api'
eeaa25e5 Add 'ANDROID_API_MIN' target property to set Android Target MIN API
2014-12-18 10:16:40 -05:00
Brad King e7f26687ab Merge topic 'doc-INTERFACE-target-type'
473446ab Help: Add INTERFACE_LIBRARY to TYPE target property documentation
2014-12-18 10:16:36 -05:00
Tim Blechmann 473446abfa Help: Add INTERFACE_LIBRARY to TYPE target property documentation 2014-12-17 16:03:29 -05:00
Dmitry Polyanitsa eeaa25e521 Add 'ANDROID_API_MIN' target property to set Android Target MIN API
Also add a 'CMAKE_ANDROID_API_MIN' variable to set the property
default.  Teach the VS generator to write the MIN API value into
Nsight Tegra project files.
2014-12-17 11:17:28 -05:00
Brad King f773e28a8e Merge topic 'doc-Nsight-Tegra-toolchain'
23e2bd7e Help: Document Nsight Tegra toolchain configuration (#15276)
2014-12-03 10:01:47 -05:00
Brad King 206117af17 Merge branch 'doc-Nsight-Tegra-toolchain' into release 2014-12-03 09:32:22 -05:00
Brad King 23e2bd7e8c Help: Document Nsight Tegra toolchain configuration (#15276) 2014-12-02 14:40:25 -05:00
Brad King 8e75f1d2fa Merge topic 'target-sources-error-conditions'
8a75c7ef Help: Document the export limitation of INTERFACE_SOURCES.
e1348056 Export: Disallow export of targets with INTERFACE_SOURCES
bb5905bb cmTarget: Don't allow relative paths in INTERFACE_SOURCES
2014-12-01 08:57:34 -05:00
Stephen Kelly 8a75c7ef32 Help: Document the export limitation of INTERFACE_SOURCES. 2014-11-29 12:25:00 +01:00
Stephen Kelly bb1111eaa2 Help: Warn that paths should not be used in INTERFACE_ build properties. 2014-11-25 10:00:35 -05:00
Stephen Kelly f8f02451ad Help: Use a property-specific command instead of the generic one. 2014-11-22 12:58:58 +01:00
Stephen Kelly 8609a884a2 Help: Make remaining build property docs consistent.
These help entries are different enough that they can not use the
generic template.
2014-11-22 12:51:25 +01:00
Stephen Kelly bcface3932 Help: Link to target_link_libraries from target properies. 2014-11-22 12:46:13 +01:00
Stephen Kelly e12926e793 Help: Format the LINK_INTERFACE_LIBRARIES target properies. 2014-11-22 12:45:43 +01:00
Stephen Kelly c8540e9466 Help: Unify the help text of INTERFACE_ build properties. 2014-11-22 12:39:04 +01:00
Brad King 0ff69dd4d1 Help: Document CMAKE_XCODE_ATTRIBUTE_<an-attribute> variable (#15215) 2014-10-22 08:52:12 -04:00
Brad King c12e46991e Add 'ANDROID_API' target property to set Android Target API
Also add a 'CMAKE_ANDROID_API' variable to set the property default.
2014-09-30 08:45:34 -04:00
Brad King 9a4df52aa1 Add 'ANDROID_GUI' target property to mark Android applications
Also add a 'CMAKE_ANDROID_GUI' variable to set the property default
so a project can easily make all executables Android applications.
An Android application executable file has the same extension as a
shared library (.so).
2014-09-29 16:05:53 -04:00
Brad King dd11ae8f0f VS: Do not compile C sources as WinRT (#15100)
The MSVC /ZW flag is valid only for C++ sources.  Whenever we enable
CompileAsWinRT for the whole target, disable it for all C sources.
Update the documentation of VS_WINRT_COMPONENT to drop the statement
about undefined behavior for non-C++ sources, because it is now
defined as expected.
2014-09-02 10:17:02 -04:00
Gilles Khouzam cb1aceed8c VS: Add VS_WINRT_COMPONENT property to enable CompileAsWinRT
Deprecate VS_WINRT_EXTENSIONS and document VS_WINRT_COMPONENT as for VS
generators only.  Also define _WINRT_DLL in SHARED libraries in order to
get a .lib produced.

Inspired-by: Paul Annetts <paul@lightunobscured.com>
2014-08-21 09:28:20 -04:00
Nils Gladitz 5bbec4e398 Help: Document deprecated properties.
Document the COMPILE_DEFINITIONS_<Config> properties as deprecated.
Add new sections for deprecated properties and move POST_INSTALL_SCRIPT
and PRE_INSTALL_SCRIPT there as well.
2014-07-21 19:48:48 +02:00
Brad King a38cc33824 Merge topic 'doc-include-dir-props'
907e422b Help: Explain build/install-tree include dirs in more places (#14946)
2014-06-03 09:03:51 -04:00
Brad King 907e422bc8 Help: Explain build/install-tree include dirs in more places (#14946)
Explain how to use $<BUILD_INTERFACE> and $<INSTALL_INTERFACE> directly
in the documentation of the target_include_directories command and
INTERFACE_INCLUDE_DIRECTORIES target property.  Otherwise readers need
to notice the link to the cmake-buildsystem(7) manual and find the
example in that to understand the need for these expressions.

Also fix the explanation in cmake-buildsystem(7) to not claim that
relative paths may be used inside a BUILD_INTERFACE expression.
2014-06-02 10:49:28 -04:00
Stephen Kelly 60a981ea8e Features: Enable compiler extensions by default.
Compilers enable their extensions by default, and disabling them
implicitly can lead to results which are surprising or non-obvious
to debug.

 http://public.kitware.com/pipermail/cmake-developers/2014-May/010575.html
 http://thread.gmane.org/gmane.comp.programming.tools.cmake.devel/10214
 https://www.mail-archive.com/cmake-developers@cmake.org/msg10116.html
 (Compiler feature extensions by default, 29 May 2014)
2014-05-31 12:16:12 +02:00
Stephen Kelly ca5d990f02 Help: Add a manual for compiler feature control.
Link to it from the documentation of related properties, variables
and commands.

Extend the cmake-developer(7) documentation with notes on
extending feature support for compilers.
2014-05-27 09:35:00 -04:00
Stephen Kelly b4d33f6484 Features: Add missing variable reference in docs. 2014-05-22 17:59:51 +02: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
Stephen Kelly 205215fb8a cmTarget: Add CXX_STANDARD_REQUIRED to control decay. 2014-05-07 12:17:49 +02:00
Stephen Kelly 1df2116bfa Features: Decay language flag if requested is not available.
Use the highest standard compile flags available if requested language
version is too new.

This supports use-cases like

 set(CMAKE_CXX_STANDARD 14)

 # Compiled with -std=c++11 with GNU 4.7, which has no -std=c++14
 # or equivalent flag
 add_executable(main main.cpp)

This can be used in combination with preprocessor defines which
communicate the availability of certain language features for
optional use.
2014-05-07 12:17:49 +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 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
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
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 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
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 85a4fad78c Help: Use ``inline-literals`` to mark generator expressions. 2014-02-06 16:15:52 -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 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
Stephen Kelly 6cfe6b881d Help: Fix typo: 'target' -> 'target property' 2014-01-07 09:38:00 -05:00
Stephen Kelly 43340a9c96 Help: Reformat Qt autogenerator documentation. 2014-01-04 11:28:57 +01: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