summaryrefslogtreecommitdiffstats
path: root/Modules/ExternalProject.cmake
diff options
context:
space:
mode:
authorDavid Cole <david.cole@kitware.com>2010-05-31 18:22:24 (GMT)
committerDavid Cole <david.cole@kitware.com>2010-05-31 18:30:22 (GMT)
commit2deba1b9119e6a3dd40931606e08b70744735650 (patch)
tree2853890ef662d7af306773376ff737182da338ea /Modules/ExternalProject.cmake
parente6efd9ac0a0e38208162d32e5d45849337ab39e4 (diff)
downloadCMake-2deba1b9119e6a3dd40931606e08b70744735650.zip
CMake-2deba1b9119e6a3dd40931606e08b70744735650.tar.gz
CMake-2deba1b9119e6a3dd40931606e08b70744735650.tar.bz2
Add .zip and .tar.bz2 extraction to ExternalProject.
Add archives of these file types and add to the test cases covered in the ExternalProject test. Also add an "Example" directory in the Tests/ExternalProject directory containing the canonical simplest example of ExternalProject usage.
Diffstat (limited to 'Modules/ExternalProject.cmake')
-rw-r--r--Modules/ExternalProject.cmake18
1 files changed, 9 insertions, 9 deletions
diff --git a/Modules/ExternalProject.cmake b/Modules/ExternalProject.cmake
index 0302d5c..c926ef1 100644
--- a/Modules/ExternalProject.cmake
+++ b/Modules/ExternalProject.cmake
@@ -246,20 +246,16 @@ endfunction(_ep_write_downloadfile_script)
function(_ep_write_extractfile_script script_filename filename tmp directory)
set(args "")
- if(filename MATCHES ".tar$")
- set(args xf)
- endif()
-
- if(filename MATCHES ".tgz$")
+ if(filename MATCHES "(\\.bz2|\\.tar\\.gz|\\.tgz|\\.zip)$")
set(args xfz)
endif()
- if(filename MATCHES ".tar.gz$")
- set(args xfz)
+ if(filename MATCHES "\\.tar$")
+ set(args xf)
endif()
if(args STREQUAL "")
- message(SEND_ERROR "error: do not know how to extract '${filename}' -- known types are .tar, .tgz and .tar.gz")
+ message(SEND_ERROR "error: do not know how to extract '${filename}' -- known types are .bz2, .tar, .tar.gz, .tgz and .zip")
return()
endif()
@@ -274,6 +270,10 @@ message(STATUS \"extracting...
src='\${filename}'
dst='\${directory}'\")
+if(NOT EXISTS \"\${filename}\")
+ message(FATAL_ERROR \"error: file to extract does not exist: '\${filename}'\")
+endif()
+
# Prepare a space for extracting:
#
set(i 1)
@@ -696,7 +696,7 @@ function(_ep_add_download_command name)
if("${url}" MATCHES "^[a-z]+://")
# TODO: Should download and extraction be different steps?
string(REGEX MATCH "[^/]*$" fname "${url}")
- if(NOT "${fname}" MATCHES "\\.(tar|tgz|tar\\.gz)$")
+ if(NOT "${fname}" MATCHES "\\.(bz2|tar|tgz|tar\\.gz|zip)$")
message(FATAL_ERROR "Could not extract tarball filename from url:\n ${url}")
endif()
set(file ${download_dir}/${fname})