summaryrefslogtreecommitdiffstats
path: root/Source/cmPolicies.h
Commit message (Collapse)AuthorAgeFilesLines
* Ninja: Add policy to require explicit custom command byproductsBrad King2015-03-201-0/+1
| | | | | | | | | | | | Add policy CMP0058 to avoid generating 'phony' ninja rules for unknown custom command dependencies. This requires projects to specify their custom command byproducts explicitly. With this requirement we no longer have to assume that unknown custom command dependencies are generated and can instead simply assume they are source files expected to exist when the build starts. This is particularly important in in-source builds. It is also helpful for out-of-source builds to allow Ninja to diagnose missing files before running custom command rules that depend on them.
* add_custom_command: Diagnose MAIN_DEPENDENCY limitation.Nils Gladitz2015-03-091-0/+2
| | | | | The new policy CMP0057 diagnoses reuse of the same MAIN_DEPENDENCY across multiple custom commands.
* try_compile: Pass linker flags into test project (#14066)Brad King2014-12-031-0/+1
| | | | | | | | | | | | Copy CMAKE_EXE_LINKER_FLAGS into the test project generated by try_compile, just like we already copy CMAKE_<LANG>_FLAGS. Add CMake Policy CMP0056 to activate this behavior in a compatible way, but do not warn by default when the policy is not set since it will affect all try_compile calls. Extend the RunCMake.try_compile test with a case covering this behavior for each policy setting.
* break: Add policy CMP0055 to check calls strictlyGregor Jasny2014-11-251-0/+1
| | | | | | Reject break() without loop scope or any arguments. Signed-off-by: Gregor Jasny <gjasny@googlemail.com>
* If: Introduce policy CMP0054 - don't dereference quoted variables in if()Nils Gladitz2014-09-111-0/+2
|
* EVIS: Add policy CMP0053Ben Boeckel2014-05-081-0/+2
| | | | | This policy switches between the old EVIS parser and the new, faster parser.
* Export: Disallow exported interface includes in src/build tree (#14592).Stephen Kelly2014-04-091-0/+2
| | | | | | | | | | | 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.
* cmTarget: Include TARGET_OBJECTS genex in target SOURCES property.Stephen Kelly2014-04-021-0/+1
| | | | Add policy CMP0051 to control this behavior.
* add_custom_command: Disallow use of SOURCE signatures.Stephen Kelly2014-02-121-0/+1
| | | | Add CMP0050 to control this behavior.
* Add policy CMP0049 to avoid variable expansion in source listsStephen Kelly2014-02-121-0/+1
|
* Drop tweak version component from CMake PoliciesBrad King2014-02-041-1/+0
| | | | | | | | | | | | | Since commit v2.8.2~105^2~2 (Teach CMake Policies about tweak version component, 2010-04-23), cmPolicies has known how to handle a policy introduced in a tweak version. This was done back when we introduced policies with the current development date version and later updated it to the release version. Now we always introduce policies using the next expected release version and explicitly set the policy to test the NEW behavior. CMake Policies (or any other features) should never be introduced in a tweak (bugfix) release, so drop the infrastructure that allows this.
* project: Manage VERSION variablesBrad King2014-01-291-0/+1
| | | | | | | | | | | | | | | | 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>
* QNX: Introduce QCC compiler id for that QNX platform compiler.Stephen Kelly2014-01-221-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | 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.
* AddDependencies: new policy requires dependencies to existNils Gladitz2014-01-121-0/+1
| | | | | Added new policy CMP0046 which requires dependencies added by add_dependencies() to actually exist.
* get_target_property: Error on non-existent target.Stephen Kelly2014-01-081-0/+1
| | | | Introduce policy CMP0045 to control this behavior.
* Genex: Use case-sensitive comparison for COMPILER_ID.Stephen Kelly2014-01-081-0/+1
|
* cmTarget: Deprecate COMPILE_DEFINITIONS_ properties with a policy.Stephen Kelly2014-01-081-0/+1
|
* OS X: Add CMP0042 to enable MACOSX_RPATH by defaultClinton Stimpson2014-01-021-0/+1
| | | | | Also adding documentation for CMAKE_MACOSX_RPATH, and improving documentation for MACOSX_RPATH.
* Export: Report error on relative include with genex.Stephen Kelly2013-11-261-0/+1
| | | | | | | | | | | | 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.
* Add policy CMP0040 to disallow custom commands on missing targetsNils Gladitz2013-11-211-0/+2
|
* CMP0037: Extend policy to reserved names and custom targetsNils Gladitz2013-11-191-1/+2
| | | | | | | | 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.
* Disallow linking to utility targets (#13902).Stephen Kelly2013-11-071-0/+1
|
* Disallow link-to-self (#13947).Stephen Kelly2013-11-071-0/+1
|
* Disallow invalid target names (#13140)Stephen Kelly2013-11-071-0/+1
| | | | | Exclude Borland and NMake from the CMP0037 test. They do not accept the colon in a target name.
* Add policy CMP0036 to disallow build_nameBrad King2013-10-221-0/+1
|
* Add policy CMP0035 to disallow variable_requiresBrad King2013-10-221-0/+1
|
* Add policy CMP0034 to disallow utility_sourceBrad King2013-10-221-0/+1
|
* Add policy CMP0033 to disallow export_library_dependenciesBrad King2013-10-221-0/+1
|
* Add policy CMP0032 to disallow output_required_filesBrad King2013-10-221-0/+1
|
* Add policy CMP0031 to disallow load_commandBrad King2013-10-221-0/+1
|
* Add policy CMP0030 to disallow use_mangled_mesaBrad King2013-10-221-0/+1
|
* Add policy CMP0029 to disallow subdir_dependsBrad King2013-10-221-0/+1
|
* Consider targets with double colons to be IMPORTED or ALIAS targets.Stephen Kelly2013-10-211-0/+1
| | | | | | | | 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.
* Handle genexes when evaluating INTERFACE_INCLUDE_DIRECTORIES errors.Stephen Kelly2013-10-181-0/+2
|
* Drop builtin policy "full" documentationBrad King2013-10-171-1/+0
| | | | | | | | | | | | | The full policy documentation was moved to Help/policy/*.rst by commit f051814e (Convert builtin help to reStructuredText source files, 2013-10-15). We no longer need the builtin string literals. In commit 87cc62ca (Drop "full" documentation output types, 2013-09-13) we dropped code using the LongDescription field of policy definitions. We need to follow it up with a change similar to commit 399e9c46 (Drop builtin property documentation, 2013-09-16) to remove the policy documentation. Do that now. Keep the short description as it is used in policy error and warning messages.
* Drop "full" documentation output typesBrad King2013-10-151-3/+0
| | | | | | | | | | | | | | | | We will no longer support full documentation generation from executables and will instead generate documentation with other tools. Disable (with a warning left behind) the command-line options: --copyright --help-compatcommands --help-full --help-html --help-man Drop supporting code. Drop manual sections generation from executables. Remove internal documentation construction APIs. Drop unused sections See Also, Author, Copyright, Compat Commands, Custom Modules.
* cmTarget: Deprecate the LOCATION target property with a policy.Stephen Kelly2013-10-111-0/+1
| | | | | | | | | | | | The final location and name of a build-target is not determined until generate-time. However, reading the LOCATION property from a target is currently allowed at configure time. Apart from creating possibly-erroneous results, this has an impact on the implementation of cmake itself, and prevents some major cleanups from being made. Disallow reading LOCATION from build-targets with a policy. Port some existing uses of it in CMake itself to use the TARGET_FILE generator expression.
* Add policy CMP0025 for Apple Clang compiler id compatibilityBrad King2013-10-081-0/+1
| | | | | | | | | | The parent commit introduced a separate "AppleClang" compiler id for Apple's Clang distribution. Add a policy in order to support projects that expect this compiler's id to be just "Clang". When the policy is OLD or not set, map AppleClang back to Clang. Continue to use the AppleClang id internally while enabling the language, but set the CMAKE_<LANG>_COMPILER_ID after project() or enable_language() to the compatible value for use by project code.
* export: Add policy CMP0024 to disallow include() of export filesStephen Kelly2013-10-071-0/+1
| | | | | | | | | | | | | | | | | Currently, export() is executed at configure-time. One problem with this is that certain exported properties like the link interface may not be complete at the point the export() is encountered leading to an incorrect or incomplete exported representation. Additionally, the generated IMPORTED_LOCATION property may even be incorrect if commands following the export() have an effect on it. Another problem is that it requires the C++ implementation of cmake to be capable of computing the exported information at configure time. This is a limitation on the cleanup and maintenance of the code. At some point in the future, this limitation will be dropped and more implementation will be moved from cmTarget to cmGeneratorTarget.
* target_link_libraries: Add PUBLIC/PRIVATE/INTERFACE keyword signatureStephen Kelly2013-07-241-0/+1
| | | | | | | Add a new signature to help populate INTERFACE_LINK_LIBRARIES and LINK_LIBRARIES cleanly in a single call. Add policy CMP0023 to control whether the keyword signatures can be mixed with uses of the plain signatures on the same target.
* Introduce the INTERFACE_LINK_LIBRARIES property.Stephen Kelly2013-07-081-0/+1
| | | | | | | | | | | | | | | | | | | | This property replaces the properties which match (IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)?, and is enabled for IMPORTED targets, and for non-IMPORTED targets only with a policy. For static libraries, the INTERFACE_LINK_LIBRARIES property is also used as the source of transitive usage requirements content. Static libraries still require users to link to all entries in their LINK_LIBRARIES, but usage requirements such as INCLUDE_DIRECTORIES COMPILE_DEFINITIONS and COMPILE_OPTIONS can be restricted to only certain interface libraries. Because the INTERFACE_LINK_LIBRARIES property is populated unconditionally, we need to compare the evaluated result of it with the link implementation to determine whether to issue the policy warning for static libraries. For shared libraries, the policy warning is issued if the contents of the INTERFACE_LINK_LIBRARIES property differs from the contents of the relevant config-specific old LINK_INTERFACE_LIBRARIES property.
* Error on relative path in INCLUDE_DIRECTORIES target property.Stephen Kelly2013-05-211-0/+2
| | | | | Add policy CMP0021 to preserve existing behavior in projects expecting it from earlier CMake versions.
* Automatically link to the qtmain library when linking to QtCore.Stephen Kelly2013-01-231-0/+1
| | | | | When using QAxServer, ensure that the qtmain library is excluded by reporting an error at CMake time if it is not.
* Add policy CMP0019 to skip include/link variable re-expansionBrad King2012-12-071-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | Historically CMake has always expanded ${} variable references in the values given to include_directories(), link_directories(), and link_libraries(). This has been unnecessary since general ${} evaluation syntax was added to the language a LONG time ago, but has remained for compatibility with VERY early CMake versions. For a long time the re-expansion was a lightweight operation because it was only processed once at the directory level and the fast-path of cmMakefile::ExpandVariablesInString was usually taken because values did not have any '$' in them. Then commit d899eb71 (Call ExpandVariablesInString for each target's INCLUDE_DIRECTORIES, 2012-02-22) made the operation a bit heavier because the expansion is now needed on a per-target basis. In the future we will support generator expressions in INCLUDE_DIRECTORIES with $<> syntax, so the fast-path in cmMakefile::ExpandVariablesInString will no longer be taken and re-expansion will be very expensive. Add policy CMP0019 to skip the re-expansion altogether in NEW behavior. In OLD behavior perform the expansion but improve the fast-path heuristic to match ${} but not $<>. If the policy is not set then warn if expansion actually does anything. We expect this to be encountered very rarely in practice.
* Refactor generation of shared library flagsStephen Kelly2012-06-121-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | CMAKE_SHARED_LIBRARY_<lang>_FLAGS has flags on various platforms for a variety of purposes that are correlated with shared libraries but not exclusive to them. Refactor generation of these flags to use new purpose-specific platform variables CMAKE_<lang>_COMPILE_OPTIONS_DLL CMAKE_<lang>_COMPILE_OPTIONS_PIC CMAKE_<lang>_COMPILE_OPTIONS_PIE Activate the DLL flags specifically for shared libraries. Add a new POSITION_INDEPENDENT_CODE target property to activate PIC/PIE flags, and default to true for shared libraries to preserve default behavior. Initialize the new property from CMAKE_POSITION_INDEPENDENT_CODE to allow easy global configuration in projects. Although the default behavior is unchanged by this refactoring, the new approach ignores CMAKE_SHARED_LIBRARY_<lang>_FLAGS completely. We must leave it set in case projects reference the value. Furthermore, if a project modifies CMAKE_SHARED_LIBRARY_<lang>_FLAGS it expects the new value to be used. Add policy CMP0018 to handle compatibility with projects that modify this platform variable. Add a PositionIndependentCode test on platforms where we can get meaningful results.
* doxygen: fix some comments in cmPolicies.hYury G. Kudryashov2012-02-291-24/+39
|
* Prefer files from CMAKE_ROOT when including from CMAKE_ROOTAlex Neundorf2011-01-041-0/+1
| | | | | | | | | | | | | | | This patch makes include() and find_package() prefer cmake files located in CMAKE_ROOT over those in CMAKE_MODULE_PATH. This makes sure that the including file gets that file included which it expects, i.e. the one from cmake with which it was tested. It only changes behaviour when such an included file exists both in CMAKE_MODULE_PATH and in CMAKE_ROOT. This comes together with a new policy CMP0017, with default behaviour it behaves as it always did, but warns. With NEW behaviour it includes the file from CMAKE_ROOT instead from CMAKE_MODULE_PATH. This fixes (if CMP0017 is set) building KDE 4.5 with cmake >= 2.8.3. Also a basic test for this policy in included.
* Allow users to specify defaults for unset policiesBrad King2011-01-041-0/+4
| | | | | | | | | | Check CMAKE_POLICY_DEFAULT_CMP<NNNN> for a default when policy CMP<NNNN> would otherwise be left unset. This allows users to set policies on the command line when the project does not set them. One may do this to quiet warnings or test whether a project will build with new behavior without modifying code. There may also be cases when users want to build an existing project release using new behavior for policies unknown to the project at the time of the release.
* New CMP0016 for deciding whether an unknown target in TLL() is an error.Alex Neundorf2010-08-281-0/+1
| | | | | | | | When set to OLD, target_link_libraries() silently accepts if it is called with only one argument and this one argument is not a target. When set to NEW, this is an error. By default it is a warning now. Alex
* Remove trailing whitespaceAlex Neundorf2010-08-281-3/+3
| | | | Alex