summaryrefslogtreecommitdiffstats
path: root/Help/policy
Commit message (Collapse)AuthorAgeFilesLines
* CMP0065: Restrict the use of CMAKE_SHARED_LIBRARY_LINK_<LANG>_FLAGSChuck Atkins2015-09-211-0/+27
| | | | | This new policy restricts the addition of the shared library link flags to executables only when the ENABLE_EXPORTS property is set to True.
* if: Add "TEST <test>" conditionMatt McCormick2015-08-031-0/+17
| | | | | | | | if(TEST TestNameThatExists) will return true if a test with the name TestNameThatExists has been added with add_test. The syntax is similar to if(TARGET TargetName). Since use of "TEST" as an argument to if() could previously be interpreted as a non-keyword argument, add policy CMP0064 to treat it as a keyword as NEW behavior.
* Help: Document explicitly that policy OLD behavior is deprecatedBrad King2015-06-0965-0/+132
| | | | | | | | | | | The most likely documentation page a project author will read in response to a policy warning is the page for the policy itself. Add to every policy documentation page a note explicitly stating that the OLD behavior is deprecated. Also mention this in the cmake_policy() command documentation that explains how to set a policy to OLD. Suggested-by: Fraser Hutchison <fraser.hutchison@gmail.com>
* Honor visibility properties for all target types (#15556)Brad King2015-05-261-0/+26
| | | | | | | | | | | | | | | | The <LANG>_VISIBILITY_PRESET and VISIBILITY_INLINES_HIDDEN were first merged in commit v2.8.12~322 (Merge topic 'VISIBILITY_PRESET-property', 2013-06-05) but worked only for shared libraries and executables with exports. Prior to commit v3.0.0-rc1~581^2 (GenerateExportHeader: Deprecate add_compiler_export_flags function., 2013-09-02) the add_compiler_export_flags function was used to add visibility flags to all targets. The visibility flags are useful for sources in all target types because they may be later linked into shared libraries or executables with exports. Introduce policy CMP0063 to enable them for all target types while preserving compatibility with existing projects that do not expect this.
* install: Disallow installing export() result.Stephen Kelly2015-05-141-0/+27
|
* CTest: Stop telling 'make' to ignore errors with -iBrad King2015-05-121-0/+24
| | | | Add policy CMP0061 to maintain compatibility for existing projects.
* Merge topic 'if-IN_LIST'Brad King2015-04-301-1/+11
|\ | | | | | | | | aed6239e if: Implement new IN_LIST operator
| * if: Implement new IN_LIST operatorNils Gladitz2015-04-301-1/+11
| |
* | Merge topic 'revert-CMP0057'Brad King2015-04-301-18/+1
|\ \ | |/ | | | | | | 32a2f414 Revert "add_custom_command: Diagnose MAIN_DEPENDENCY limitation."
| * Revert "add_custom_command: Diagnose MAIN_DEPENDENCY limitation."Nils Gladitz2015-04-301-18/+1
| | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 242c3966 (add_custom_command: Diagnose MAIN_DEPENDENCY limitation, 2015-03-09) and the follow up commit b372a99a (UseSWIG: Do not use MAIN_DEPENDENCY on custom commands, 2015-03-26). I misdiagnosed the underlying issue that prompted creation of policy CMP0057. The actual issue surfaces when a single custom command's MAIN_DEPENDENCY is listed in more than one target; this issue will have to be addressed independently.
* | Help: Replace CMP0054 example to show when it makes a differenceTamás Kenéz2015-04-291-6/+10
| | | | | | | | | | | | The previous example for CMP0054 did not show how critical the policy is since the result is the same in both cases (NEW and OLD behavior). Instead show an example when the policy does make a difference.
* | Help: Clarify policy CMP0026 titleNils Gladitz2015-04-281-1/+1
|/ | | | | | | Clarify that the policy only applies to build targets and not e.g. imported targets. Suggested-by: Alan W. Irwin
* Link libraries by full path even in implicit directoriesBrad King2015-04-091-0/+63
| | | | | | | | | | | | | | | | | | | | | | When CMP0003 was first introduced we wanted to link all libraries by full path. However, some projects had problems on platforms where find_library would find /usr/lib/libfoo.so when the project really wanted to link to /usr/lib/<arch>/libfoo.so and had been working by accident because pre-CMP0003 behavior used -lfoo to link. We first tried to address that in commit v2.6.0~440 (Teach find_library to avoid returning library paths in system directories, 2008-01-23) by returning just "foo" for libraries in implicit link directories. This caused problems for projects expecting find_library to always return a full path. We ended up using the solution in commit v2.6.0~366 (... switch library paths found in implicit link directories to use -l, 2008-01-31). However, the special case for libraries in implicit link directories has also proven problematic and confusing. Introduce policy CMP0060 to switch to linking all libraries by full path even if they are in implicit link directories. Explain in the policy documentation the factors that led to the original approach and now to this approach.
* Do not treat DEFINITIONS as a built-in directory propertyStephen Kelly2015-04-021-0/+17
| | | | | | | | Add policy CMP0059 to cover this change. The property has been deprecated since CMake 2.4 anyway. This will help clean up cmMakefile -- the DefineFlagsOrig member should not need to exist.
* Ninja: Add policy to require explicit custom command byproductsBrad King2015-03-201-0/+108
| | | | | | | | | | | | 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/+21
| | | | | The new policy CMP0057 diagnoses reuse of the same MAIN_DEPENDENCY across multiple custom commands.
* Merge topic 'doc-CMP0054-example'Brad King2014-12-121-3/+31
|\ | | | | | | | | f2f1c95d Help: Extend policy CMP0054 documentation with an example
| * Help: Extend policy CMP0054 documentation with an exampleNils Gladitz2014-12-121-3/+31
| |
* | try_compile: Pass linker flags into test project (#14066)Brad King2014-12-031-0/+32
| | | | | | | | | | | | | | | | | | | | | | | | 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.
* | Merge topic 'doc-CMP0053-dedup-char'Brad King2014-12-011-1/+1
|\ \ | |/ | | | | | | 191d2b20 Help: Remove duplicate '#' in CMP0053 valid character list
| * Help: Remove duplicate '#' in CMP0053 valid character listChristoph Grüninger2014-12-011-1/+1
| |
* | break: Add policy CMP0055 to check calls strictlyGregor Jasny2014-11-251-0/+17
|/ | | | | | 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/+18
|
* Merge topic 'doc-CMP0022-compat-version-typo'Brad King2014-08-131-1/+1
|\ | | | | | | | | 91857e04 CMP0022: Fix version documented to support LINK_PUBLIC/LINK_PRIVATE
| * CMP0022: Fix version documented to support LINK_PUBLIC/LINK_PRIVATEBrad King2014-08-131-1/+1
| | | | | | | | These have been available since 2.8.7, not 2.8.9 as the docs said.
* | Help: Add missing space in policy CMP0020 descriptionPeter Kümmel2014-05-301-1/+1
| |
* | EVIS: Add policy CMP0053Ben Boeckel2014-05-082-0/+47
| | | | | | | | | | This policy switches between the old EVIS parser and the new, faster parser.
* | Help: Link to cmake-buildsystem from CMP0052 docs.Stephen Kelly2014-04-171-0/+3
| |
* | Help: Fix typo in CMP0051.Stephen Kelly2014-04-141-1/+1
| | | | | | | | STRIP_GENEX -> GENEX_STRIP.
* | Export: Disallow exported interface includes in src/build tree (#14592).Stephen Kelly2014-04-091-0/+21
| | | | | | | | | | | | | | | | | | | | | | 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.
* | Merge topic 'target-sources-refactor'Brad King2014-04-031-0/+24
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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. ...
| * cmTarget: Include TARGET_OBJECTS genex in target SOURCES property.Stephen Kelly2014-04-021-0/+24
| | | | | | | | Add policy CMP0051 to control this behavior.
* | Do not warn by default when policy CMP0025 or CMP0047 is not setBrad King2014-04-022-7/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | Help: Revise and format policy CMP0025 and CMP0047 docsBrad King2014-04-022-20/+31
|/ | | | | | 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.
* cmTarget: Restore <CONFIG>_LOCATION to CMP0026 OLD behavior (#14808)Stephen Kelly2014-03-171-3/+4
| | | | | | | 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.
* CMP0043: Document old and new interfaces for setting directory property.Stephen Kelly2014-03-031-1/+7
|
* add_custom_command: Disallow use of SOURCE signatures.Stephen Kelly2014-02-121-0/+18
| | | | Add CMP0050 to control this behavior.
* Add policy CMP0049 to avoid variable expansion in source listsStephen Kelly2014-02-121-0/+23
|
* Merge topic 'doc-policy-version-3.0'Brad King2014-02-1025-29/+29
|\ | | | | | | | | aab11bca Help: Change version 3.0.0 -> 3.0 in policy docs
| * Help: Change version 3.0.0 -> 3.0 in policy docsBrad King2014-02-1025-29/+29
| | | | | | | | | | | | 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.
* | Help: Fix typo.Stephen Kelly2014-02-071-1/+1
|/ | | | 'to not to' -> 'not to'
* project: Manage VERSION variablesBrad King2014-01-291-0/+22
| | | | | | | | | | | | | | | | 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/+16
| | | | | | | | | | | | | | | | | | | | | | | | 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/+17
| | | | | Added new policy CMP0046 which requires dependencies added by add_dependencies() to actually exist.
* Merge topic 'policies'Brad King2014-01-093-0/+75
|\ | | | | | | | | | | | | | | | | 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.
| * get_target_property: Error on non-existent target.Stephen Kelly2014-01-081-0/+17
| | | | | | | | Introduce policy CMP0045 to control this behavior.
| * Genex: Use case-sensitive comparison for COMPILER_ID.Stephen Kelly2014-01-081-0/+19
| |
| * cmTarget: Deprecate COMPILE_DEFINITIONS_ properties with a policy.Stephen Kelly2014-01-081-0/+39
| |
* | Note how to write CMP0022 compatible code with CMake 2.8.9.Stephen Kelly2014-01-081-0/+4
|/ | | | This has come up on the mailing list, and various other places.
* Merge topic 'rpath-default'Brad King2014-01-021-0/+19
|\ | | | | | | | | d25ad48 OS X: Add CMP0042 to enable MACOSX_RPATH by default