diff options
author | Daniele E. Domenichelli <daniele.domenichelli@iit.it> | 2015-05-20 13:14:17 (GMT) |
---|---|---|
committer | Daniele E. Domenichelli <daniele.domenichelli@iit.it> | 2015-05-20 13:43:15 (GMT) |
commit | a0d620de829b09c0edf594b2578cfa47e855f695 (patch) | |
tree | 78c7bf0feff4fc00a106bef33e68fd5a6cf99543 | |
parent | e6fac4f8d941507eebfae799f00ab0065ba5e348 (diff) | |
download | CMake-a0d620de829b09c0edf594b2578cfa47e855f695.zip CMake-a0d620de829b09c0edf594b2578cfa47e855f695.tar.gz CMake-a0d620de829b09c0edf594b2578cfa47e855f695.tar.bz2 |
ExternalProject: Fix log when the first arg of commands is "COMMAND" (#15567)
-rw-r--r-- | Modules/ExternalProject.cmake | 6 | ||||
-rw-r--r-- | Tests/ExternalProject/CMakeLists.txt | 35 |
2 files changed, 39 insertions, 2 deletions
diff --git a/Modules/ExternalProject.cmake b/Modules/ExternalProject.cmake index 7cf9d79..11a24b8 100644 --- a/Modules/ExternalProject.cmake +++ b/Modules/ExternalProject.cmake @@ -1282,7 +1282,7 @@ endif() # Wrap multiple 'COMMAND' lines up into a second-level wrapper # script so all output can be sent to one log file. - if(command MATCHES ";COMMAND;") + if(command MATCHES "(^|;)COMMAND;") set(code_execute_process " ${code_cygpath_make} execute_process(COMMAND \${command} RESULT_VARIABLE result) @@ -1299,7 +1299,9 @@ endif() set(sep "") foreach(arg IN LISTS command) if("x${arg}" STREQUAL "xCOMMAND") - set(code "${code}set(command \"${cmd}\")${code_execute_process}") + if(NOT "x${cmd}" STREQUAL "x") + set(code "${code}set(command \"${cmd}\")${code_execute_process}") + endif() set(cmd "") set(sep "") else() diff --git a/Tests/ExternalProject/CMakeLists.txt b/Tests/ExternalProject/CMakeLists.txt index d2fa86a..de62ce7 100644 --- a/Tests/ExternalProject/CMakeLists.txt +++ b/Tests/ExternalProject/CMakeLists.txt @@ -492,3 +492,38 @@ message(STATUS "do_cvs_tests='${do_cvs_tests}'") message(STATUS "do_svn_tests='${do_svn_tests}'") message(STATUS "do_git_tests='${do_git_tests}' GIT_EXECUTABLE='${GIT_EXECUTABLE}'") message(STATUS "do_hg_tests='${do_hg_tests}' HG_EXECUTABLE='${HG_EXECUTABLE}'") + + +# Test if log works when the first arguments of *_COMMAND is "COMMAND". +set(proj ExternalProject-no-log) +set(download_cmd "") +set(patch_cmd "") +set(update_cmd "") +set(configure_cmd "") +set(build_cmd "") +set(install_cmd "") + +ExternalProject_Add(${proj} + DOWNLOAD_COMMAND "${download_cmd}" COMMAND "${CMAKE_COMMAND}" -E echo "download" + PATCH_COMMAND "${patch_cmd}" COMMAND "${CMAKE_COMMAND}" -E echo "patch" + UPDATE_COMMAND "${update_cmd}" COMMAND "${CMAKE_COMMAND}" -E echo "update" + CONFIGURE_COMMAND "${configure_cmd}" COMMAND "${CMAKE_COMMAND}" -E echo "configure" + BUILD_COMMAND "${build_cmd}" COMMAND "${CMAKE_COMMAND}" -E echo "build" + INSTALL_COMMAND "${install_cmd}" COMMAND "${CMAKE_COMMAND}" -E echo "install" + ) + +set(proj ExternalProject-log) +ExternalProject_Add(${proj} + DOWNLOAD_COMMAND "${download_cmd}" COMMAND "${CMAKE_COMMAND}" -E echo "download" + PATCH_COMMAND "${patch_cmd}" COMMAND "${CMAKE_COMMAND}" -E echo "patch" + UPDATE_COMMAND "${update_cmd}" COMMAND "${CMAKE_COMMAND}" -E echo "update" + CONFIGURE_COMMAND "${configure_cmd}" COMMAND "${CMAKE_COMMAND}" -E echo "configure" + BUILD_COMMAND "${build_cmd}" COMMAND "${CMAKE_COMMAND}" -E echo "build" + INSTALL_COMMAND "${install_cmd}" COMMAND "${CMAKE_COMMAND}" -E echo "install" + LOG_DOWNLOAD 1 + LOG_PATCH 1 + LOG_UPDATE 1 + LOG_CONFIGURE 1 + LOG_BUILD 1 + LOG_INSTALL 1 + ) |