Merge branch 'more-formats-in-ExternalProject'

This commit is contained in:
Brad King 2010-06-07 14:22:26 -04:00
commit 79f01660c9
7 changed files with 75 additions and 12 deletions

View File

@ -249,20 +249,16 @@ endfunction(_ep_write_downloadfile_script)
function(_ep_write_extractfile_script script_filename filename directory)
set(args "")
if(filename MATCHES ".tar$")
if(filename MATCHES "(\\.bz2|\\.tar\\.gz|\\.tgz|\\.zip)$")
set(args xfz)
endif()
if(filename MATCHES "\\.tar$")
set(args xf)
endif()
if(filename MATCHES ".tgz$")
set(args xfz)
endif()
if(filename MATCHES ".tar.gz$")
set(args xfz)
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()
@ -276,6 +272,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 1234)
@ -703,7 +703,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})

View File

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 2.6)
cmake_minimum_required(VERSION 2.8)
project(ExternalProjectTest NONE)
include(ExternalProject)
@ -139,6 +139,56 @@ ExternalProject_Add(${proj}
)
# Local BZ2:
#
# (The bz2 tests are here just to verify that the bz2 decompression is executed
# during a test suite run... The configure and build commands are set to
# nothing to make the test quicker. To make this more complete, I should add
# a diff between this and the TGZ source tree since that one does build...)
#
set(proj TutorialStep1-LocalBZ2)
ExternalProject_Add(${proj}
URL "${CMAKE_CURRENT_SOURCE_DIR}/Step1.tar.bz2"
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
)
set(proj TutorialStep1-LocalNoDirBZ2)
ExternalProject_Add(${proj}
URL "${CMAKE_CURRENT_SOURCE_DIR}/Step1NoDir.tar.bz2"
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
)
# Local ZIP:
#
# (The zip tests are here just to verify that the zip decompression is executed
# during a test suite run... The configure and build commands are set to
# nothing to make the test quicker. To make this more complete, I should add
# a diff between this and the TGZ source tree since that one does build...)
#
set(proj TutorialStep1-LocalZIP)
ExternalProject_Add(${proj}
URL "${CMAKE_CURRENT_SOURCE_DIR}/Step1.zip"
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
)
set(proj TutorialStep1-LocalNoDirZIP)
ExternalProject_Add(${proj}
URL "${CMAKE_CURRENT_SOURCE_DIR}/Step1NoDir.zip"
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
)
# CVS-based tests:
#
set(do_cvs_tests 0)
if(CVS_EXECUTABLE)
@ -215,6 +265,8 @@ if(do_cvs_tests)
endif()
# SVN-based tests:
#
set(do_svn_tests 0)
if(Subversion_SVN_EXECUTABLE)

View File

@ -0,0 +1,11 @@
# This is the canonical simplest ExternalProject example CMakeLists.txt file:
cmake_minimum_required(VERSION 2.8)
project(ExternalProjectExample NONE)
include(ExternalProject)
ExternalProject_Add(
cmake281
URL http://www.cmake.org/files/v2.8/cmake-2.8.1.tar.gz
CMAKE_ARGS -D CMAKE_INSTALL_PREFIX=<INSTALL_DIR>
BUILD_COMMAND ""
)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.