mirror of
https://github.com/OpenRCT2/OpenRCT2.git
synced 2024-09-04 16:41:10 +02:00
52 lines
2.1 KiB
CMake
52 lines
2.1 KiB
CMake
function(download_openrct2_zip)
|
|
set(oneValueArgs ZIP_VERSION DOWNLOAD_DIR ZIP_URL SHA1)
|
|
set(multiValueArgs SKIP_IF_EXISTS)
|
|
cmake_parse_arguments(DOWNLOAD_OPENRCT2 "${options}" "${oneValueArgs}"
|
|
"${multiValueArgs}" ${ARGN} )
|
|
|
|
get_filename_component(ZIP_FILE_NAME ${DOWNLOAD_OPENRCT2_ZIP_URL} NAME)
|
|
|
|
if (NOT EXISTS ${DOWNLOAD_OPENRCT2_DOWNLOAD_DIR})
|
|
set(DOWNLOAD_ZIP 1)
|
|
else ()
|
|
if (EXISTS "${DOWNLOAD_OPENRCT2_DOWNLOAD_DIR}/zipversion")
|
|
file(READ "${DOWNLOAD_OPENRCT2_DOWNLOAD_DIR}/zipversion" DOWNLOAD_OPENRCT2_CACHED_VERSION)
|
|
if (NOT ${DOWNLOAD_OPENRCT2_CACHED_VERSION} STREQUAL ${DOWNLOAD_OPENRCT2_ZIP_VERSION})
|
|
message("Cache ${DOWNLOAD_OPENRCT2_DOWNLOAD_DIR} not up to date")
|
|
set(DOWNLOAD_ZIP 1)
|
|
endif ()
|
|
else ()
|
|
set(DOWNLOAD_ZIP 1)
|
|
endif ()
|
|
endif ()
|
|
|
|
foreach(check_exist_dir ${DOWNLOAD_OPENRCT2_SKIP_IF_EXISTS})
|
|
if (EXISTS ${check_exist_dir})
|
|
message("${check_exist_dir} exists, skipping download")
|
|
set(DOWNLOAD_ZIP 0)
|
|
break()
|
|
endif ()
|
|
endforeach(check_exist_dir)
|
|
|
|
if (DOWNLOAD_ZIP)
|
|
message("Downloading ${DOWNLOAD_OPENRCT2_DOWNLOAD_DIR}")
|
|
file(DOWNLOAD
|
|
"${DOWNLOAD_OPENRCT2_ZIP_URL}" "${DOWNLOAD_OPENRCT2_DOWNLOAD_DIR}/${ZIP_FILE_NAME}"
|
|
EXPECTED_HASH SHA1=${DOWNLOAD_OPENRCT2_SHA1} SHOW_PROGRESS)
|
|
if(${CMAKE_VERSION} VERSION_LESS "3.18.0")
|
|
execute_process(COMMAND ${CMAKE_COMMAND} -E chdir ${DOWNLOAD_OPENRCT2_DOWNLOAD_DIR} ${CMAKE_COMMAND} -E tar xf ${ZIP_FILE_NAME})
|
|
else()
|
|
file(ARCHIVE_EXTRACT
|
|
INPUT "${DOWNLOAD_OPENRCT2_DOWNLOAD_DIR}/${ZIP_FILE_NAME}"
|
|
DESTINATION "${DOWNLOAD_OPENRCT2_DOWNLOAD_DIR}"
|
|
)
|
|
endif()
|
|
file(WRITE
|
|
"${DOWNLOAD_OPENRCT2_DOWNLOAD_DIR}/zipversion"
|
|
"${DOWNLOAD_OPENRCT2_ZIP_VERSION}"
|
|
)
|
|
file(REMOVE "${DOWNLOAD_OPENRCT2_DOWNLOAD_DIR}/${ZIP_FILE_NAME}")
|
|
endif ()
|
|
|
|
endfunction ()
|