ExternalProject: Factor out an internal helper to add a step target

This commit is contained in:
Brad King
2020-09-09 15:29:34 -04:00
parent 48ed3bae58
commit b637ef494c
2 changed files with 31 additions and 22 deletions

View File

@@ -1990,30 +1990,38 @@ function(_ep_get_complete_stampfile name stampfile_var)
endfunction()
function(_ep_step_add_target name step no_deps)
_ep_get_step_stampfile(${name} ${step} stamp_file)
add_custom_target(${name}-${step}
DEPENDS ${stamp_file})
set_property(TARGET ${name}-${step} PROPERTY _EP_IS_EXTERNAL_PROJECT_STEP 1)
set_property(TARGET ${name}-${step} PROPERTY LABELS ${name})
set_property(TARGET ${name}-${step} PROPERTY FOLDER "ExternalProjectTargets/${name}")
if(no_deps AND "${step}" MATCHES "^(configure|build|install|test)$")
message(AUTHOR_WARNING "Using NO_DEPENDS for \"${step}\" step might break parallel builds")
endif()
# Depend on other external projects (target-level).
if(NOT no_deps)
get_property(deps TARGET ${name} PROPERTY _EP_DEPENDS)
foreach(arg IN LISTS deps)
add_dependencies(${name}-${step} ${arg})
endforeach()
endif()
endfunction()
function(ExternalProject_Add_StepTargets name)
set(steps ${ARGN})
if(ARGC GREATER 1 AND "${ARGV1}" STREQUAL "NO_DEPENDS")
set(no_deps 1)
list(REMOVE_AT steps 0)
else()
set(no_deps 0)
endif()
foreach(step ${steps})
if(no_deps AND "${step}" MATCHES "^(configure|build|install|test)$")
message(AUTHOR_WARNING "Using NO_DEPENDS for \"${step}\" step might break parallel builds")
endif()
_ep_get_step_stampfile(${name} ${step} stamp_file)
add_custom_target(${name}-${step}
DEPENDS ${stamp_file})
set_property(TARGET ${name}-${step} PROPERTY _EP_IS_EXTERNAL_PROJECT_STEP 1)
set_property(TARGET ${name}-${step} PROPERTY LABELS ${name})
set_property(TARGET ${name}-${step} PROPERTY FOLDER "ExternalProjectTargets/${name}")
# Depend on other external projects (target-level).
if(NOT no_deps)
get_property(deps TARGET ${name} PROPERTY _EP_DEPENDS)
foreach(arg IN LISTS deps)
add_dependencies(${name}-${step} ${arg})
endforeach()
endif()
_ep_step_add_target("${name}" "${step}" "${no_deps}")
endforeach()
endfunction()
@@ -2148,7 +2156,7 @@ function(ExternalProject_Add_Step name step)
endif()
foreach(st ${step_targets})
if("${st}" STREQUAL "${step}")
ExternalProject_Add_StepTargets(${name} ${step})
_ep_step_add_target("${name}" "${step}" "FALSE")
break()
endif()
endforeach()
@@ -2159,7 +2167,7 @@ function(ExternalProject_Add_Step name step)
endif()
foreach(st ${independent_step_targets})
if("${st}" STREQUAL "${step}")
ExternalProject_Add_StepTargets(${name} NO_DEPENDS ${step})
_ep_step_add_target("${name}" "${step}" "TRUE")
break()
endif()
endforeach()

View File

@@ -1,7 +1,7 @@
CMake Warning \(dev\) at .*/Modules/ExternalProject.cmake:[0-9]+. \(message\):
Using NO_DEPENDS for "configure" step might break parallel builds
Call Stack \(most recent call first\):
.*/Modules/ExternalProject.cmake:[0-9]+ \(ExternalProject_Add_StepTargets\)
.*/Modules/ExternalProject.cmake:[0-9]+ \(_ep_step_add_target\)
.*/Modules/ExternalProject.cmake:[0-9]+:EVAL:2 \(ExternalProject_Add_Step\)
.*/Modules/ExternalProject.cmake:[0-9]+ \(_ep_add_configure_command\)
NO_DEPENDS.cmake:[0-9]+ \(ExternalProject_Add\)
@@ -11,7 +11,7 @@ This warning is for project developers. Use -Wno-dev to suppress it.
CMake Warning \(dev\) at .*/Modules/ExternalProject.cmake:[0-9]+. \(message\):
Using NO_DEPENDS for "build" step might break parallel builds
Call Stack \(most recent call first\):
.*/Modules/ExternalProject.cmake:[0-9]+ \(ExternalProject_Add_StepTargets\)
.*/Modules/ExternalProject.cmake:[0-9]+ \(_ep_step_add_target\)
.*/Modules/ExternalProject.cmake:[0-9]+:EVAL:2 \(ExternalProject_Add_Step\)
.*/Modules/ExternalProject.cmake:[0-9]+ \(_ep_add_build_command\)
NO_DEPENDS.cmake:[0-9]+ \(ExternalProject_Add\)
@@ -21,7 +21,7 @@ This warning is for project developers. Use -Wno-dev to suppress it.
CMake Warning \(dev\) at .*/Modules/ExternalProject.cmake:[0-9]+. \(message\):
Using NO_DEPENDS for "install" step might break parallel builds
Call Stack \(most recent call first\):
.*/Modules/ExternalProject.cmake:[0-9]+ \(ExternalProject_Add_StepTargets\)
.*/Modules/ExternalProject.cmake:[0-9]+ \(_ep_step_add_target\)
.*/Modules/ExternalProject.cmake:[0-9]+:EVAL:2 \(ExternalProject_Add_Step\)
.*/Modules/ExternalProject.cmake:[0-9]+ \(_ep_add_install_command\)
NO_DEPENDS.cmake:[0-9]+ \(ExternalProject_Add\)
@@ -31,6 +31,7 @@ This warning is for project developers. Use -Wno-dev to suppress it.
CMake Warning \(dev\) at .*/Modules/ExternalProject.cmake:[0-9]+. \(message\):
Using NO_DEPENDS for "test" step might break parallel builds
Call Stack \(most recent call first\):
.*/Modules/ExternalProject.cmake:[0-9]+ \(_ep_step_add_target\)
NO_DEPENDS.cmake:[0-9]+ \(ExternalProject_Add_StepTargets\)
CMakeLists.txt:[0-9]+ \(include\)
This warning is for project developers. Use -Wno-dev to suppress it.