ExternalProject: Add HTTP_HEADER

This commit is contained in:
Ruslan Baratov 2016-09-19 15:41:00 +03:00
parent c7b312cf13
commit 0f424c3d07
3 changed files with 18 additions and 3 deletions

View File

@ -44,7 +44,7 @@ syn keyword cmakeModule
\ contained \ contained
syn keyword cmakeKWExternalProject syn keyword cmakeKWExternalProject
\ ALGO ALWAYS BINARY_DIR BUILD_ALWAYS BUILD_BYPRODUCTS BUILD_COMMAND BUILD_IN_SOURCE BYPRODUCTS CMAKE_ARGS CMAKE_CACHE_ARGS CMAKE_CACHE_DEFAULT_ARGS COMMAND COMMENT CONFIGURE_COMMAND CVS CVSROOT CVS_ CVS_MODULE CVS_REPOSITORY CVS_TAG DEPENDEES DEPENDERS DEPENDS DIRECTORY DOWNLOAD_COMMAND DOWNLOAD_DIR DOWNLOAD_NAME DOWNLOAD_NO_PROGRESS EP_BASE EP_INDEPENDENT_STEP_TARGETS EP_PREFIX EP_STEP_TARGETS EP_UPDATE_DISCONNECTED EXCLUDE_FROM_ALL EXCLUDE_FROM_MAIN FORCE GIT_REMOTE_NAME GIT_REPOSITORY GIT_SUBMODULES GIT_TAG HG_REPOSITORY HG_TAG INDEPENDENT INDEPENDENT_STEP_TARGETS INSTALL_COMMAND INSTALL_DIR JOB_POOLS LIST_SEPARATOR LOG LOG_BUILD LOG_CONFIGURE LOG_DOWNLOAD LOG_INSTALL LOG_TEST LOG_UPDATE NO_DEPENDS PATCH_COMMAND PREFIX PROPERTY SOURCE_DIR STAMP_DIR STEP_TARGETS SVN_ SVN_PASSWORD SVN_REPOSITORY SVN_REVISION SVN_TRUST_CERT SVN_USERNAME TEST_AFTER_INSTALL TEST_BEFORE_INSTALL TEST_COMMAND TEST_EXCLUDE_FROM_MAIN TIMEOUT TLS_CAINFO TLS_VERIFY TMP_DIR UPDATE_COMMAND UPDATE_DISCONNECTED URL URL_HASH HTTP_USERNAME HTTP_PASSWORD USES_TERMINAL USES_TERMINAL_BUILD USES_TERMINAL_CONFIGURE USES_TERMINAL_DOWNLOAD USES_TERMINAL_INSTALL USES_TERMINAL_TEST USES_TERMINAL_UPDATE WORKING_DIRECTORY _COMMAND _DIR \ ALGO ALWAYS BINARY_DIR BUILD_ALWAYS BUILD_BYPRODUCTS BUILD_COMMAND BUILD_IN_SOURCE BYPRODUCTS CMAKE_ARGS CMAKE_CACHE_ARGS CMAKE_CACHE_DEFAULT_ARGS COMMAND COMMENT CONFIGURE_COMMAND CVS CVSROOT CVS_ CVS_MODULE CVS_REPOSITORY CVS_TAG DEPENDEES DEPENDERS DEPENDS DIRECTORY DOWNLOAD_COMMAND DOWNLOAD_DIR DOWNLOAD_NAME DOWNLOAD_NO_PROGRESS EP_BASE EP_INDEPENDENT_STEP_TARGETS EP_PREFIX EP_STEP_TARGETS EP_UPDATE_DISCONNECTED EXCLUDE_FROM_ALL EXCLUDE_FROM_MAIN FORCE GIT_REMOTE_NAME GIT_REPOSITORY GIT_SUBMODULES GIT_TAG HG_REPOSITORY HG_TAG INDEPENDENT INDEPENDENT_STEP_TARGETS INSTALL_COMMAND INSTALL_DIR JOB_POOLS LIST_SEPARATOR LOG LOG_BUILD LOG_CONFIGURE LOG_DOWNLOAD LOG_INSTALL LOG_TEST LOG_UPDATE NO_DEPENDS PATCH_COMMAND PREFIX PROPERTY SOURCE_DIR STAMP_DIR STEP_TARGETS SVN_ SVN_PASSWORD SVN_REPOSITORY SVN_REVISION SVN_TRUST_CERT SVN_USERNAME TEST_AFTER_INSTALL TEST_BEFORE_INSTALL TEST_COMMAND TEST_EXCLUDE_FROM_MAIN TIMEOUT TLS_CAINFO TLS_VERIFY TMP_DIR UPDATE_COMMAND UPDATE_DISCONNECTED URL URL_HASH HTTP_USERNAME HTTP_PASSWORD HTTP_HEADER USES_TERMINAL USES_TERMINAL_BUILD USES_TERMINAL_CONFIGURE USES_TERMINAL_DOWNLOAD USES_TERMINAL_INSTALL USES_TERMINAL_TEST USES_TERMINAL_UPDATE WORKING_DIRECTORY _COMMAND _DIR
\ contained \ contained
syn keyword cmakeKWadd_compile_options syn keyword cmakeKWadd_compile_options

View File

@ -136,6 +136,7 @@ foreach(i RANGE ${retry_number})
STATUS status STATUS status
LOG log LOG log
@USERPWD_ARGS@ @USERPWD_ARGS@
@HTTP_HEADERS_ARGS@
) )
list(GET status 0 status_code) list(GET status 0 status_code)

View File

@ -79,6 +79,8 @@ Create custom targets to build projects in external trees
Username for download operation Username for download operation
``HTTP_PASSWORD <username>`` ``HTTP_PASSWORD <username>``
Password for download operation Password for download operation
``HTTP_HEADER <header>``
HTTP header for download operation. Suboption can be repeated several times.
``TLS_VERIFY <bool>`` ``TLS_VERIFY <bool>``
Should certificate for https be checked Should certificate for https be checked
``TLS_CAINFO <file>`` ``TLS_CAINFO <file>``
@ -862,7 +864,7 @@ endif()
endfunction(_ep_write_gitupdate_script) endfunction(_ep_write_gitupdate_script)
function(_ep_write_downloadfile_script script_filename REMOTE LOCAL timeout no_progress hash tls_verify tls_cainfo userpwd) function(_ep_write_downloadfile_script script_filename REMOTE LOCAL timeout no_progress hash tls_verify tls_cainfo userpwd http_headers)
if(timeout) if(timeout)
set(TIMEOUT_ARGS TIMEOUT ${timeout}) set(TIMEOUT_ARGS TIMEOUT ${timeout})
set(TIMEOUT_MSG "${timeout} seconds") set(TIMEOUT_MSG "${timeout} seconds")
@ -916,6 +918,16 @@ function(_ep_write_downloadfile_script script_filename REMOTE LOCAL timeout no_p
set(USERPWD_ARGS USERPWD "${userpwd}") set(USERPWD_ARGS USERPWD "${userpwd}")
endif() endif()
set(HTTP_HEADERS_ARGS "")
if(NOT http_headers STREQUAL "")
foreach(header ${http_headers})
set(
HTTP_HEADERS_ARGS
"HTTPHEADER \"${header}\"\n ${HTTP_HEADERS_ARGS}"
)
endforeach()
endif()
# Used variables: # Used variables:
# * TLS_VERIFY_CODE # * TLS_VERIFY_CODE
# * TLS_CAINFO_CODE # * TLS_CAINFO_CODE
@ -927,6 +939,7 @@ function(_ep_write_downloadfile_script script_filename REMOTE LOCAL timeout no_p
# * TIMEOUT_ARGS # * TIMEOUT_ARGS
# * TIMEOUT_MSG # * TIMEOUT_MSG
# * USERPWD_ARGS # * USERPWD_ARGS
# * HTTP_HEADERS_ARGS
configure_file( configure_file(
"${_ExternalProject_SELF_DIR}/ExternalProject-download.cmake.in" "${_ExternalProject_SELF_DIR}/ExternalProject-download.cmake.in"
"${script_filename}" "${script_filename}"
@ -1932,8 +1945,9 @@ function(_ep_add_download_command name)
get_property(tls_cainfo TARGET ${name} PROPERTY _EP_TLS_CAINFO) get_property(tls_cainfo TARGET ${name} PROPERTY _EP_TLS_CAINFO)
get_property(http_username TARGET ${name} PROPERTY _EP_HTTP_USERNAME) get_property(http_username TARGET ${name} PROPERTY _EP_HTTP_USERNAME)
get_property(http_password TARGET ${name} PROPERTY _EP_HTTP_PASSWORD) get_property(http_password TARGET ${name} PROPERTY _EP_HTTP_PASSWORD)
get_property(http_headers TARGET ${name} PROPERTY _EP_HTTP_HEADER)
set(download_script "${stamp_dir}/download-${name}.cmake") set(download_script "${stamp_dir}/download-${name}.cmake")
_ep_write_downloadfile_script("${download_script}" "${url}" "${file}" "${timeout}" "${no_progress}" "${hash}" "${tls_verify}" "${tls_cainfo}" "${http_username}:${http_password}") _ep_write_downloadfile_script("${download_script}" "${url}" "${file}" "${timeout}" "${no_progress}" "${hash}" "${tls_verify}" "${tls_cainfo}" "${http_username}:${http_password}" "${http_headers}")
set(cmd ${CMAKE_COMMAND} -P "${download_script}" set(cmd ${CMAKE_COMMAND} -P "${download_script}"
COMMAND) COMMAND)
if (no_extract) if (no_extract)