summaryrefslogtreecommitdiffstats
path: root/Help/release/dev/ExternalProject-steps-refinement.rst
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2020-09-10 14:56:32 (GMT)
committerBrad King <brad.king@kitware.com>2020-09-14 14:48:16 (GMT)
commitb4fc4da903ad5c69cfbf693839ee5020c3f2ede6 (patch)
treed473e70256a9f5ec5dd34149bf3c1463f6c51de3 /Help/release/dev/ExternalProject-steps-refinement.rst
parentf5791e24c63617901ae033c14d99c0e02d402b05 (diff)
downloadCMake-b4fc4da903ad5c69cfbf693839ee5020c3f2ede6.zip
CMake-b4fc4da903ad5c69cfbf693839ee5020c3f2ede6.tar.gz
CMake-b4fc4da903ad5c69cfbf693839ee5020c3f2ede6.tar.bz2
ExternalProject: Add policy CMP0114 to refine step target dependencies
`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
Diffstat (limited to 'Help/release/dev/ExternalProject-steps-refinement.rst')
-rw-r--r--Help/release/dev/ExternalProject-steps-refinement.rst5
1 files changed, 5 insertions, 0 deletions
diff --git a/Help/release/dev/ExternalProject-steps-refinement.rst b/Help/release/dev/ExternalProject-steps-refinement.rst
new file mode 100644
index 0000000..9762927
--- /dev/null
+++ b/Help/release/dev/ExternalProject-steps-refinement.rst
@@ -0,0 +1,5 @@
+ExternalProject-steps-refinement
+--------------------------------
+
+* The :module:`ExternalProject` module handling of step target dependencies
+ has been revised. See policy :policy:`CMP0114`.