summaryrefslogtreecommitdiffstats
path: root/Help/policy
Commit message (Collapse)AuthorAgeFilesLines
* Merge topic 'link-only-targets'Brad King2021-12-221-0/+2
|\ | | | | | | | | | | | | | | | | | | 37af6c3311 target_link_libraries: Optionally require only target names 5134f099a3 cmGeneratorTarget: Factor out message about reasons for a missing target 37a25072ea Tests: Rename RunCMake.{CMP0028 => LinkItemValidation} Acked-by: Kitware Robot <kwrobot@kitware.com> Tested-by: buildbot <buildbot@kitware.com> Merge-request: !6821
| * target_link_libraries: Optionally require only target namesBrad King2021-12-201-0/+2
| | | | | | | | | | | | | | | | | | | | Optionally verify that items in `LINK_LIBRARIES` and `INTERFACE_LINK_LIBRARIES` that can be target names are actually target names. Add a `LINK_LIBRARIES_ONLY_TARGETS` target property and corresponding `CMAKE_LINK_LIBRARIES_ONLY_TARGETS` variable to enable this new check. Fixes: #22858
* | Help: Clarify CMP0126 OLD behavior for FORCE and INTERNALCraig Scott2021-12-201-0/+3
|/ | | Fixes: #23022
* Merge topic 'doc-policy-default'Brad King2021-11-232-2/+7
|\ | | | | | | | | | | | | | | | | 69b70968bd Help: Suggest CMAKE_POLICY_DEFAULT_CMP0126 in CMP0126 docs 5b1c24255f Help: Suggest CMAKE_POLICY_DEFAULT_CMP0077 in CMP0077 docs c44636a89b Help: Document more use cases for CMAKE_POLICY_DEFAULT_CMPNNNN Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !6756
| * Help: Suggest CMAKE_POLICY_DEFAULT_CMP0126 in CMP0126 docsBrad King2021-11-221-1/+4
| |
| * Help: Suggest CMAKE_POLICY_DEFAULT_CMP0077 in CMP0077 docsBrad King2021-11-221-1/+3
| | | | | | | | Issue: #20490
* | Merge topic 'cmp0128-fixup'Brad King2021-11-121-22/+13
|\ \ | |/ | | | | | | | | | | | | e47dfce75d CMP0128: Enable/disable extensions if standard same as default Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: buildbot <buildbot@kitware.com> Merge-request: !6723
| * CMP0128: Enable/disable extensions if standard same as defaultRaul Tambre2021-11-111-22/+13
| | | | | | | | | | | | | | | | | | | | | | This was intended to be part of the initial MR (!6177), but accidentally went missing when debugging nightly failures on less common systems. Noticed during !6711 review as the comment about this behaviour didn't match the code. Documentation for CMP0128 is updated to remove a false case and note the two cases related to this. Fixes #22224.
* | Merge topic 'doc-CMP0128'Craig Scott2021-11-101-1/+3
|\ \ | |/ | | | | | | | | | | | | 8371056fbb Help: Correct inaccuracies in wording for CMP0128 Acked-by: Kitware Robot <kwrobot@kitware.com> Reviewed-by: Raul Tambre <raul@tambre.ee> Merge-request: !6711
| * Help: Correct inaccuracies in wording for CMP0128Craig Scott2021-11-081-1/+3
| |
* | LCC: Add policy CMP0129 regarding interpreting LCC as GNUmakise-homura2021-10-211-0/+34
|/ | | | | | | | | | Due to MCST LCC compiler identification is now changed to LCC, there should be a way for old projects to still identify it as GNU, as it was before. This commits adds the policy: CMP0129: Compiler id for MCST LCC compilers is now LCC, not GNU. This policy controls such a behavior. OLD behaivior is to treat LCC as GNU, NEW is to treat is as LCC.
* Help: Update Sphinx versionadded directives for 3.22 releaseBrad King2021-10-071-0/+2
| | | | | | | | | Run the script: Utilities/Sphinx/update_versions.py --since v3.21.0 --overwrite Manually select updates that really belong to the 3.22 release, as against adding documentation for previously-existing entities.
* cmStandardLevelResolver: Avoid unnecessary flags, fix unset level logicRaul Tambre2021-09-291-0/+78
| | | | | | | | | | | | | | | | | | The changes are part of CMP0128. When the standard level is unset: * Flags are added if extension mode doesn't match the compiler's default. Previously logic only worked if LANG_EXTENSIONS was ON. Fixes #22224. * The full flag is used. Previously CMAKE_LANG_EXTENSION_COMPILE_OPTION was used. This was only supported for IAR. Otherwise: * Avoid adding flags if not necessary per the detected compiler defaults. * Fixed check for when the requested standard is older. It now matches the nearby comments. I reworded the fallback comment as its logic was a bit difficult to wrap my head around.
* CMakeDependentOption: Introduce policy CMP0127 for full Condition SyntaxDaniel Schürmann2021-09-101-0/+32
| | | | Fixes: #22303
* Help: Make policy CMP0126 wording more accurate Craig Scott2021-07-172-7/+20
| | | | | | | | | The OLD behavior only removes a non-cache variable of the same name in specific circumstances. The previous wording implied that it would always occur. Also add a note about the behavior compared to the analogous CMP0077 policy, which affects the option() command in a similar but subtly different way.
* Help: Explain policy CMP0125 in more detailCraig Scott2021-07-171-12/+29
|
* Help: Clarify wording of CMP0124Craig Scott2021-07-171-7/+5
|
* CMP0126: Add control for warningsMarc Chevrier2021-06-291-1/+3
| | | | Fixes: #22353
* Help/CMP0102: mention the varible that controls CMP0102 warningsBen Boeckel2021-06-281-1/+3
| | | | | This was missed in the review of !4150, but was noticed during discussion of #22353.
* set(CACHE): do not remove normal variableMarc Chevrier2021-05-201-0/+20
| | | | Fixes: #22038
* find_*: ensure consistent behavior for cache variablesMarc Chevrier2021-05-121-0/+25
| | | | Fixes: #22121
* Help: Fix typos and spelling in documentationJosef Angstenberger2021-05-072-4/+4
|
* foreach(): loop variables are only available in the loop scopeMarc Chevrier2021-04-281-0/+20
| | | | Fixes: #20553
* ARMClang: Do not automatically add cpu/arch compile or link optionsLingkai Dong2021-04-271-0/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | The compile options `--march=<arch>` and `--mcpu=<cpu>` and the link option `--cpu=<cpu>` are automatically added by CMake based on `CMAKE_SYSTEM_PROCESSOR` or `CMAKE_SYSTEM_ARCH`. But this is not sufficient, because armclang also supports enabling or disabling features using `+<feature>`: -mcpu=<name>[+[no]<feature>+...] For example: -mcpu=cortex-a57+nocrypto+nofp+nosimd+crc (Reference: https://developer.arm.com/documentation/dui0774/k/Compiler-Command-line-Options/-mcpu?lang=en) The problem is, even if a project adds a flag with features it needs, CMake still adds flags, resulting in code that is compiled with wrong CPU features and unable to run. Add policy `CMP0123` to not automatically add compile or link options, and let projects set them instead. Co-Author: Brad King <brad.king@kitware.com> Fixes: #21173
* Help: Demonstrate using set_target_properties with CUDA architecturesRobert Maynard2021-04-201-1/+1
| | | | | | | | A common anti-pattern is to copy from the `CUDA_ARCHITECTURES` documentation. If at any point the user tries to simplify by changin `set_property` to `set_target_properties` the code breaks. To better train users, provide and example of how to set multiple CUDA architectures with `set_target_properties`.
* UseSWIG: Use standard library name conventions for csharp languageMarc Chevrier2021-03-261-0/+17
| | | | Fixes: #21542
* Merge topic 'fix-CMP0118-NEW'Brad King2021-03-191-2/+8
|\ | | | | | | | | | | | | | | 17eb610a31 Help: Document CMP0118 requirement for boolean values 06feb845aa CMP0118: Fix NEW behavior when looking up target sources Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !5921
| * Help: Document CMP0118 requirement for boolean valuesBrad King2021-03-181-2/+8
| |
* | Merge topic 'autogen-cmp0116-fix'Brad King2021-02-241-1/+4
|\ \ | |/ | | | | | | | | | | | | | | | | | | 339dbc901f Help: Note that CMP0116 is recorded at the time of CC creation e3740e020e Tests: Test Qt autogen target with CMP0116 set to WARN cf34011ce7 Tests: Test per-CC behavior of CMP0116 3a95503512 Ninja: Use CMP0116 status recorded at time of custom command's creation f01f10e8fb cmCustomCommand: Record value of CMP0116 at time of creation Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !5848
| * Help: Note that CMP0116 is recorded at the time of CC creationKyle Edwards2021-02-231-1/+4
| |
* | cmListCommand: add a policy for failing on invalid indiciesBen Boeckel2021-02-181-0/+21
|/
* Help: Update Sphinx versionadded directives for 3.20 releaseBrad King2021-02-101-0/+2
| | | | | | | | | Run the script: Utilities/Sphinx/update_versions.py --since v3.19.0 --overwrite Manually restore the 3.20 version for `cmake_path`, which was originally part of 3.19 but reverted and restored in 3.20.
* Help: Convert some genex names to explicit cross-referencesBrad King2021-02-052-3/+3
| | | | | | | | | Since commit c2dc7e0f53 (Help: Convert genex documentation to sphinx domain objects, 2021-01-15) we can use `:genex:` cross-references to link to named generator expressions. Update some places to do this. This is meant to demonstrate the capability, not as a comprehensive sweep.
* Merge topic 'update_cmp112'Brad King2020-12-081-0/+1
|\ | | | | | | | | | | | | cf0c71dae3 Document CMP0112 covers $<TARGET_FILE_NAME,tgt> Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !5582
| * Document CMP0112 covers $<TARGET_FILE_NAME,tgt>Robert Maynard2020-12-071-0/+1
| | | | | | | | Fixes #21559
* | WriteCompilerDetectionHeader: Add policy to remove moduleBrad King2020-12-051-0/+47
| | | | | | | | | | | | See justification in the policy documentation. Closes: #17842
* | Compile with explicit language flag when source LANGUAGE property is setBrad King2020-12-021-0/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change was originally made by commit 74b1c9fc8e (Explicitly specify language flag when source LANGUAGE property is set, 2020-06-01, v3.19.0-rc1~722^2), but it was reverted by commit 30aa715fac (Revert "specify language flag when source LANGUAGE property is set", 2020-11-19) to restore compatibility with pre-3.19 behavior. Implement the change again, but add policy CMP0119 to make this change while preserving compatibility with existing projects. Note that the `Compiler/{Clang,Intel,MSVC}-CXX` modules do not need to specify `-TP` for their MSVC-like variants because we already use the flag in `CMAKE_CXX_COMPILE_OBJECT`. Similarly for `Compiler/XL-CXX` and `Platform/Windows-Embarcadero`. Note also that this does not seem possible to implement for XL C. Even with `-qsourcetype=c`, `xlc` complains about an unknown suffix: `1501-218 (W) file /.../AltExtC.zzz contains an incorrect file suffix`. It returns non-zero even with `-qsuppress=1501-218`. Co-Author: Robert Maynard <robert.maynard@kitware.com> Fixes: #14516, #20716
* | GENERATED prop: Introducing policy CMP0118 and its documentationDeniz Bahadir2020-11-241-0/+17
| | | | | | | | | | Note: This is currently only defining the CMP0118 policy and providing its documentation, however, the implementation is still not using it.
* | MSVC: Do not add /GR to CMAKE_CXX_FLAGS by defaultBrad King2020-11-131-0/+43
| | | | | | | | | | | | | | | | | | | | | | | | The `/GR` flag has been on by default since MSVC cl 14.0 from VS 2005. Remove it from the default flags to make it easier for projects to pass `/GR-` themselves to turn it off. Projects may be using string processing to replace `/GR` with another flag, so we cannot simply drop it. Add a policy to drop it in a compatible way. Fixes: #21428
* | Merge topic 'docs-cleanup-3.19'Craig Scott2020-10-262-4/+4
|\ \ | |/ | | | | | | | | | | 95c14579f2 Help: Cleanup typos and grammar for the 3.19 release Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !5419
| * Help: Cleanup typos and grammar for the 3.19 releaseCraig Scott2020-10-242-4/+4
| |
* | Merge topic 'doc-CMP0111'Brad King2020-10-191-3/+10
|\ \ | |/ | | | | | | | | | | | | 5c3a91c808 CMP0111: Clarify that the new error is on a missing property setting Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: Alex Reinking <alex_reinking@berkeley.edu> Merge-request: !5385
| * CMP0111: Clarify that the new error is on a missing property settingBrad King2020-10-161-3/+10
| | | | | | | | The previous wording could be confused with the file missing on disk.
* | Ninja: Transform DEPFILEs with policy CMP0116Kyle Edwards2020-10-131-0/+38
| | | | | | | | Fixes: #21267
* | CMP0115: Require source file extensions to be explicitKyle Edwards2020-10-131-0/+34
|/
* Help: Update Sphinx versionadded directives for 3.19 releaseBrad King2020-10-081-0/+2
| | | | | | Run the script: Utilities/Sphinx/update_versions.py --since v3.18.0 --overwrite
* ExternalProject: Add policy CMP0114 to refine step target dependenciesBrad King2020-09-141-0/+85
| | | | | | | | | | | | | | | | | | | | | | | | `ExternalProject_Add_StepTargets` and `INDEPENDENT_STEP_TARGETS` have some limitations and lack some sanity checks. They can cause confusing build systems to be generated. The basic problems are: * The notion of step independence is attached to the step target rather than the step itself. * The custom commands implementing the steps are duplicated in the step targets and the primary targets. This can cause races. It is also incompatible with the Xcode "new build system". Fix this by introducing policy CMP0114 to change the way step target dependencies are handled. Define independence from external dependencies as a property of each individual step regardless of whether there is a target for it. Add dependencies among the primary target and the step targets such that each custom command only appears in one target. When some steps are disconnected from the primary target, add step targets for the steps commonly depended upon so that there is a place to hold their custom commands uniquely. Fixes: #18663
* Makefile: Add policy CMP0113 to avoid duplication of custom commandsBrad King2020-09-081-0/+43
| | | | | | | | | | | | | | | | | Do not attach a custom command to a target if it is already attached to one of the target's dependencies. The command's output will be available by the time the target needs it because the dependency containing the command will have already been built. This may break existing projects that do not properly mark non-created outputs with the `SYMBOLIC` property. Previously a chain of two custom commands whose intermediate dependency is not created would put both commands in a dependent project's Makefile even if the first command is also in its dependency's Makefile. The first command would run twice but the build would work. Now the second command needs an explicit `SYMBOLIC` mark on its input to tell CMake that it is not expected to exist. To maintain compatibility with projects that left out the mark, add a policy activating the behavior.
* GenEx: Remove unneeded dependencies from target info queriesRobert Maynard2020-09-011-0/+39
| | | | | | | | | | Only generate a graph dependency between a custom command and a target when the custom command queries for the file path of an artifact of the target. This makes generator expressions such as `TARGET_FILE_DIR` behave the same way as `TARGET_PROPERTY` which never generated a graph dependency.
* cmTarget: Raise error if imported target location is not setRaul Tambre2020-08-211-0/+20
| | | | | | | | Previously we would synthesize <TARGET_NAME>-NOTFOUND as the location. This would then end up on the link line and cause build failures. Policy CMP0110 is added to control this behaviour. Fixes #19080, #19943.