summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Cole <david.cole@kitware.com>2010-06-09 22:22:58 (GMT)
committerDavid Cole <david.cole@kitware.com>2010-06-09 22:22:58 (GMT)
commitcd3d60b8b5ae89b9c352b9ba022ae04ab97ea0e4 (patch)
treeac4bf8d2ab25373b9f4ffa21823703dcf933aade
parent86de1d6504737510e2107aa0323ec761d666bfaa (diff)
downloadCMake-cd3d60b8b5ae89b9c352b9ba022ae04ab97ea0e4.zip
CMake-cd3d60b8b5ae89b9c352b9ba022ae04ab97ea0e4.tar.gz
CMake-cd3d60b8b5ae89b9c352b9ba022ae04ab97ea0e4.tar.bz2
Fix issue #10346. Error if SOURCE_DIR is empty.
See http://public.kitware.com/Bug/view.php?id=10346. The proposed patch for the issue could not be applied as is because the SOURCE_DIR always exists for an ExternalProject_Add call by the time we get to the place to emit the potential error. The fix is to emit the error only if the source dir is empty. By which, I mean devoid of files and subdirectories. If SOURCE_DIR is used by itself, without any DOWNLOAD_COMMAND or repository info, then it implies that the SOURCE_DIR is ready to build as-is without need for a download step. Clearly, if it is empty, then it is not ready to build as is. So complain if the SOURCE_DIR is empty.
-rw-r--r--Modules/ExternalProject.cmake15
1 files changed, 14 insertions, 1 deletions
diff --git a/Modules/ExternalProject.cmake b/Modules/ExternalProject.cmake
index 15749f2..d0845e6 100644
--- a/Modules/ExternalProject.cmake
+++ b/Modules/ExternalProject.cmake
@@ -738,6 +738,16 @@ function(_ep_get_git_version git_EXECUTABLE git_version_var)
endfunction()
+function(_ep_is_dir_empty dir empty_var)
+ file(GLOB gr "${dir}/*")
+ if("${gr}" STREQUAL "")
+ set(${empty_var} 1 PARENT_SCOPE)
+ else()
+ set(${empty_var} 0 PARENT_SCOPE)
+ endif()
+endfunction()
+
+
function(_ep_add_download_command name)
ExternalProject_Get_Property(${name} source_dir stamp_dir download_dir tmp_dir)
@@ -890,7 +900,10 @@ function(_ep_add_download_command name)
list(APPEND cmd ${CMAKE_COMMAND} -P ${stamp_dir}/extract-${name}.cmake)
endif()
else()
- message(SEND_ERROR "error: no download info for '${name}' -- please specify existing SOURCE_DIR or one of URL, CVS_REPOSITORY and CVS_MODULE, SVN_REPOSITORY or DOWNLOAD_COMMAND")
+ _ep_is_dir_empty("${source_dir}" empty)
+ if(${empty})
+ message(SEND_ERROR "error: no download info for '${name}' -- please specify existing/non-empty SOURCE_DIR or one of URL, CVS_REPOSITORY and CVS_MODULE, SVN_REPOSITORY, GIT_REPOSITORY or DOWNLOAD_COMMAND")
+ endif()
endif()
ExternalProject_Add_Step(${name} download