diff options
author | Brad King <brad.king@kitware.com> | 2016-07-06 13:36:13 (GMT) |
---|---|---|
committer | CMake Topic Stage <kwrobot@kitware.com> | 2016-07-06 13:36:13 (GMT) |
commit | 7e53e6c9cc1b8266ccc06aca8184612256a3669d (patch) | |
tree | 64081981993edacd6e91fa98b20cfdae249dfbb0 | |
parent | 7c8c07d03c26304ea023b3d7ce828996088d49bd (diff) | |
parent | 57c337e2ef358c5eae2b2e364065e93bf58f0f64 (diff) | |
download | CMake-7e53e6c9cc1b8266ccc06aca8184612256a3669d.zip CMake-7e53e6c9cc1b8266ccc06aca8184612256a3669d.tar.gz CMake-7e53e6c9cc1b8266ccc06aca8184612256a3669d.tar.bz2 |
Merge topic 'ExternalProject-more-url-filenames'
57c337e2 ExternalProject: Match filenames in URLs with query strings and anchors
-rw-r--r-- | Modules/ExternalProject.cmake | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/Modules/ExternalProject.cmake b/Modules/ExternalProject.cmake index 2ff18fc..ee517f6 100644 --- a/Modules/ExternalProject.cmake +++ b/Modules/ExternalProject.cmake @@ -1871,15 +1871,13 @@ function(_ep_add_download_command name) if("${url}" MATCHES "^[a-z]+://") # TODO: Should download and extraction be different steps? if("x${fname}" STREQUAL "x") - string(REGEX MATCH "[^/\\?]*$" fname "${url}") + set(fname "${url}") endif() - if(NOT "${fname}" MATCHES "(\\.|=)(7z|tar|tar\\.bz2|tar\\.gz|tar\\.xz|tbz2|tgz|txz|zip)$") - string(REGEX MATCH "([^/\\?]+(\\.|=)(7z|tar|tar\\.bz2|tar\\.gz|tar\\.xz|tbz2|tgz|txz|zip))/.*$" match_result "${url}") + if("${fname}" MATCHES [[([^/\?#]+(\.|=)(7z|tar|tar\.bz2|tar\.gz|tar\.xz|tbz2|tgz|txz|zip))([/?#].*)?$]]) set(fname "${CMAKE_MATCH_1}") - endif() - if (no_extract) - get_filename_component(fname "${url}" NAME) - elseif(NOT "${fname}" MATCHES "(\\.|=)(7z|tar|tar\\.bz2|tar\\.gz|tar\\.xz|tbz2|tgz|txz|zip)$") + elseif(no_extract) + get_filename_component(fname "${fname}" NAME) + else() message(FATAL_ERROR "Could not extract tarball filename from url:\n ${url}") endif() string(REPLACE ";" "-" fname "${fname}") |