e494763997
Added new USES_TERMINAL option to the ExternalProject_Add_Step function. This option passes USES_TERMINAL to the underlying add_custom_command call so that the Ninja console pool is used. Also, corresponding new USES_TERMINAL_<step> options were added to the ExternalProject_Add function. Justification: if using Ninja with a CMake superbuild, it's often desirable to limit the superbuild to ONE sub-Ninja process at a time to avoid oversubscribing the CPU. Using the console pool also makes it easy to monitor the progress of the sub-Ninja process. Independent USES_TERMINAL_<step> arguments are passed to ExternalProject_Add instead of one USES_TERMINAL argument that controls everything. Users may wish to run some steps in parallel but not others (e.g. parallelize configure but not build).
46 lines
1.2 KiB
CMake
46 lines
1.2 KiB
CMake
if(NOT CMAKE_CONFIGURATION_TYPES)
|
|
set(CMAKE_BUILD_TYPE Debug)
|
|
endif()
|
|
include(ExternalProject)
|
|
|
|
# Test various combinations of USES_TERMINAL with ExternalProject_Add.
|
|
|
|
macro(DoTerminalTest _target)
|
|
ExternalProject_Add(${_target}
|
|
DOWNLOAD_COMMAND "${CMAKE_COMMAND}" -E echo "download"
|
|
UPDATE_COMMAND "${CMAKE_COMMAND}" -E echo "update"
|
|
CONFIGURE_COMMAND "${CMAKE_COMMAND}" -E echo "configure"
|
|
BUILD_COMMAND "${CMAKE_COMMAND}" -E echo "build"
|
|
TEST_COMMAND "${CMAKE_COMMAND}" -E echo "test"
|
|
INSTALL_COMMAND "${CMAKE_COMMAND}" -E echo "install"
|
|
${ARGN}
|
|
)
|
|
endmacro()
|
|
|
|
# USES_TERMINAL on all steps
|
|
DoTerminalTest(TerminalTest1
|
|
USES_TERMINAL_DOWNLOAD 1
|
|
USES_TERMINAL_UPDATE 1
|
|
USES_TERMINAL_CONFIGURE 1
|
|
USES_TERMINAL_BUILD 1
|
|
USES_TERMINAL_TEST 1
|
|
USES_TERMINAL_INSTALL 1
|
|
)
|
|
|
|
# USES_TERMINAL on every other step, starting with download
|
|
DoTerminalTest(TerminalTest2
|
|
USES_TERMINAL_DOWNLOAD 1
|
|
USES_TERMINAL_CONFIGURE 1
|
|
USES_TERMINAL_TEST 1
|
|
)
|
|
|
|
# USES_TERMINAL on every other step, starting with update
|
|
DoTerminalTest(TerminalTest3
|
|
USES_TERMINAL_UPDATE 1
|
|
USES_TERMINAL_BUILD 1
|
|
USES_TERMINAL_INSTALL 1
|
|
)
|
|
|
|
# USES_TERMINAL on no step
|
|
DoTerminalTest(TerminalTest4)
|