mirror of
https://github.com/Kitware/CMake.git
synced 2025-12-31 19:00:54 -06:00
The known keywords for each function are obtained by scraping the
documentation for lines matching a particular regular expression. In
commit 8842a027 (ExternalProject: Improve documentation, 2017-07-09),
the docs were overhauled and the COMMAND docs subsequently matched the
regular expression when they shouldn't have. This made COMMAND appear as
a true keyword, which thwarted the special handling logic elsewhere for
the intended use of COMMAND arguments.
This commit contains a workaround for issue #17229 to force a dependency
of the patch step on the update step to ensure a predictable step order.
Fixes: #17198
31 lines
1.4 KiB
CMake
31 lines
1.4 KiB
CMake
cmake_minimum_required(VERSION 3.9)
|
|
|
|
include(ExternalProject)
|
|
|
|
# Verify COMMAND keyword is recognised after various *_COMMAND options
|
|
ExternalProject_Add(multiCommand
|
|
DOWNLOAD_COMMAND "${CMAKE_COMMAND}" -E echo "download 1"
|
|
COMMAND "${CMAKE_COMMAND}" -E echo "download 2"
|
|
UPDATE_COMMAND "${CMAKE_COMMAND}" -E echo "update 1"
|
|
COMMAND "${CMAKE_COMMAND}" -E echo "update 2"
|
|
PATCH_COMMAND "${CMAKE_COMMAND}" -E echo "patch 1"
|
|
COMMAND "${CMAKE_COMMAND}" -E echo "patch 2"
|
|
CONFIGURE_COMMAND "${CMAKE_COMMAND}" -E echo "configure 1"
|
|
COMMAND "${CMAKE_COMMAND}" -E echo "configure 2"
|
|
BUILD_COMMAND "${CMAKE_COMMAND}" -E echo "build 1"
|
|
COMMAND "${CMAKE_COMMAND}" -E echo "build 2"
|
|
TEST_COMMAND "${CMAKE_COMMAND}" -E echo "test 1"
|
|
COMMAND "${CMAKE_COMMAND}" -E echo "test 2"
|
|
INSTALL_COMMAND "${CMAKE_COMMAND}" -E echo "install 1"
|
|
COMMAND "${CMAKE_COMMAND}" -E echo "install 2"
|
|
)
|
|
|
|
# Workaround for issue 17229 (missing dependency between update and patch steps)
|
|
ExternalProject_Add_StepTargets(multiCommand NO_DEPENDS update)
|
|
ExternalProject_Add_StepDependencies(multiCommand patch multiCommand-update)
|
|
|
|
# Force all steps to be re-run by removing timestamps from any previous run
|
|
ExternalProject_Get_Property(multiCommand STAMP_DIR)
|
|
file(REMOVE_RECURSE "${STAMP_DIR}")
|
|
file(MAKE_DIRECTORY "${STAMP_DIR}")
|