ExternalProject: Add DOWNLOAD_NAME option
Some download URLs do not have the filename embedded in the url. Add an interface to specify the local filename explicitly. Suggested-by: James Goppert <james.goppert@gmail.com>
This commit is contained in:
parent
70169ec1bf
commit
8da0fe4b53
|
@ -9,6 +9,7 @@
|
||||||
# [TMP_DIR dir] # Directory to store temporary files
|
# [TMP_DIR dir] # Directory to store temporary files
|
||||||
# [STAMP_DIR dir] # Directory to store step timestamps
|
# [STAMP_DIR dir] # Directory to store step timestamps
|
||||||
# #--Download step--------------
|
# #--Download step--------------
|
||||||
|
# [DOWNLOAD_NAME fname] # File name to store (if not end of URL)
|
||||||
# [DOWNLOAD_DIR dir] # Directory to store downloaded files
|
# [DOWNLOAD_DIR dir] # Directory to store downloaded files
|
||||||
# [DOWNLOAD_COMMAND cmd...] # Command to download source tree
|
# [DOWNLOAD_COMMAND cmd...] # Command to download source tree
|
||||||
# [CVS_REPOSITORY cvsroot] # CVSROOT of CVS repository
|
# [CVS_REPOSITORY cvsroot] # CVSROOT of CVS repository
|
||||||
|
@ -1092,6 +1093,7 @@ function(_ep_add_download_command name)
|
||||||
get_property(git_repository TARGET ${name} PROPERTY _EP_GIT_REPOSITORY)
|
get_property(git_repository TARGET ${name} PROPERTY _EP_GIT_REPOSITORY)
|
||||||
get_property(hg_repository TARGET ${name} PROPERTY _EP_HG_REPOSITORY )
|
get_property(hg_repository TARGET ${name} PROPERTY _EP_HG_REPOSITORY )
|
||||||
get_property(url TARGET ${name} PROPERTY _EP_URL)
|
get_property(url TARGET ${name} PROPERTY _EP_URL)
|
||||||
|
get_property(fname TARGET ${name} PROPERTY _EP_DOWNLOAD_NAME)
|
||||||
|
|
||||||
# TODO: Perhaps file:// should be copied to download dir before extraction.
|
# TODO: Perhaps file:// should be copied to download dir before extraction.
|
||||||
string(REGEX REPLACE "^file://" "" url "${url}")
|
string(REGEX REPLACE "^file://" "" url "${url}")
|
||||||
|
@ -1272,7 +1274,9 @@ function(_ep_add_download_command name)
|
||||||
else()
|
else()
|
||||||
if("${url}" MATCHES "^[a-z]+://")
|
if("${url}" MATCHES "^[a-z]+://")
|
||||||
# TODO: Should download and extraction be different steps?
|
# TODO: Should download and extraction be different steps?
|
||||||
string(REGEX MATCH "[^/\\?]*$" fname "${url}")
|
if("x${fname}" STREQUAL "x")
|
||||||
|
string(REGEX MATCH "[^/\\?]*$" fname "${url}")
|
||||||
|
endif()
|
||||||
if(NOT "${fname}" MATCHES "(\\.|=)(bz2|tar|tgz|tar\\.gz|zip)$")
|
if(NOT "${fname}" MATCHES "(\\.|=)(bz2|tar|tgz|tar\\.gz|zip)$")
|
||||||
string(REGEX MATCH "([^/\\?]+(\\.|=)(bz2|tar|tgz|tar\\.gz|zip))/.*$" match_result "${url}")
|
string(REGEX MATCH "([^/\\?]+(\\.|=)(bz2|tar|tgz|tar\\.gz|zip))/.*$" match_result "${url}")
|
||||||
set(fname "${CMAKE_MATCH_1}")
|
set(fname "${CMAKE_MATCH_1}")
|
||||||
|
|
Loading…
Reference in New Issue