function for downloading object/sequence/dependency zips

This commit is contained in:
adam-bloom 2021-03-13 22:43:32 -07:00
parent 911ec9f97b
commit 77ea64a5ef
3 changed files with 78 additions and 42 deletions

View File

@ -42,10 +42,12 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(ROOT_DIR "${CMAKE_CURRENT_LIST_DIR}")
set(TITLE_SEQUENCE_URL "https://github.com/OpenRCT2/title-sequences/releases/download/v0.1.2c/title-sequences.zip")
set(TITLE_SEQUENCE_VERSION "0.1.2c")
set(TITLE_SEQUENCE_URL "https://github.com/OpenRCT2/title-sequences/releases/download/v${TITLE_SEQUENCE_VERSION}/title-sequences.zip")
set(TITLE_SEQUENCE_SHA1 "304d13a126c15bf2c86ff13b81a2f2cc1856ac8d")
set(OBJECTS_URL "https://github.com/OpenRCT2/objects/releases/download/v1.0.21/objects.zip")
set(OBJECTS_VERSION "1.0.21")
set(OBJECTS_URL "https://github.com/OpenRCT2/objects/releases/download/v${OBJECTS_VERSION}/objects.zip")
set(OBJECTS_SHA1 "c38af45d51a6e440386180feacf76c64720b6ac5")
set(REPLAYS_URL "https://github.com/OpenRCT2/replays/releases/download/v0.0.37/replays.zip")
@ -105,34 +107,20 @@ endif ()
if (APPLE AND MACOS_USE_DEPENDENCIES)
# if we're building on macOS, then we need the dependencies
# update dylibs
include(cmake/download.cmake)
set(MACOS_DYLIBS_VERSION "28")
set(MACOS_DYLIBS_ZIPFILE "openrct2-libs-v${MACOS_DYLIBS_VERSION}-x64-macos-dylibs.zip")
set(MACOS_DYLIBS_SHA1 "29e5480376cf4ac5943f114387e32685204c8b78")
set(MACOS_DYLIBS_DIR "${ROOT_DIR}/lib/macos")
set(MACOS_DYLIBS_URL "https://github.com/OpenRCT2/Dependencies/releases/download/v${MACOS_DYLIBS_VERSION}/${MACOS_DYLIBS_ZIPFILE}")
if (NOT EXISTS ${MACOS_DYLIBS_DIR})
set(DOWNLOAD_DYLIBS 1)
else ()
file(READ "${MACOS_DYLIBS_DIR}/libversion" MACOS_DYLIBS_CACHED_VERSION)
if (NOT ${MACOS_DYLIBS_CACHED_VERSION} STREQUAL ${MACOS_DYLIBS_VERSION})
message("Cached macOS dylibs out of date")
set(DOWNLOAD_DYLIBS 1)
endif ()
endif ()
if (DOWNLOAD_DYLIBS)
message("Downloading macOS dylibs")
file(DOWNLOAD "${MACOS_DYLIBS_URL}" "${MACOS_DYLIBS_DIR}/${MACOS_DYLIBS_ZIPFILE}")
file(ARCHIVE_EXTRACT
INPUT "${MACOS_DYLIBS_DIR}/${MACOS_DYLIBS_ZIPFILE}"
DESTINATION "${MACOS_DYLIBS_DIR}"
)
file(WRITE
"${MACOS_DYLIBS_DIR}/libversion"
"${MACOS_DYLIBS_VERSION}"
)
file(REMOVE "${MACOS_DYLIBS_DIR}/${MACOS_DYLIBS_ZIPFILE}")
endif ()
# TODO: make the above routine a function, use it for objects, title sequences, and languages
download_openrct2_zip(
ZIP_VERSION ${MACOS_DYLIBS_VERSION}
DOWNLOAD_DIR ${MACOS_DYLIBS_DIR}
ZIP_URL ${MACOS_DYLIBS_URL}
SHA1 ${MACOS_DYLIBS_SHA1}
)
set(CMAKE_MACOSX_RPATH 1)
list(APPEND CMAKE_PREFIX_PATH "${MACOS_DYLIBS_DIR}")

37
cmake/download.cmake Normal file
View File

@ -0,0 +1,37 @@
function(download_openrct2_zip)
set(oneValueArgs ZIP_VERSION DOWNLOAD_DIR ZIP_URL SHA1)
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 ()
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)
file(ARCHIVE_EXTRACT
INPUT "${DOWNLOAD_OPENRCT2_DOWNLOAD_DIR}/${ZIP_FILE_NAME}"
DESTINATION "${DOWNLOAD_OPENRCT2_DOWNLOAD_DIR}"
)
file(WRITE
"${DOWNLOAD_OPENRCT2_DOWNLOAD_DIR}/zipversion"
"${DOWNLOAD_OPENRCT2_ZIP_VERSION}"
)
file(REMOVE "${DOWNLOAD_OPENRCT2_DOWNLOAD_DIR}/${ZIP_FILE_NAME}")
endif ()
endfunction ()

View File

@ -139,24 +139,18 @@ if(MACOS_BUNDLE)
# Add distribution sources
target_sources(${PROJECT_NAME}
PUBLIC distribution/readme.txt
PUBLIC distribution/changelog.txt
PUBLIC g2.dat
PUBLIC resources/mac/openrct2.icns
PUBLIC ${SOURCE_DATA_DIR}/language
PUBLIC ${SOURCE_DATA_DIR}/object
PUBLIC ${SOURCE_DATA_DIR}/sequence
PUBLIC ${ROOT_DIR}/distribution/readme.txt
PUBLIC ${ROOT_DIR}/distribution/changelog.txt
PUBLIC ${CMAKE_BINARY_DIR}/g2.dat
PUBLIC ${ROOT_DIR}/resources/mac/openrct2.icns
)
# Specify the resources to move to the bundle
set(BUNDLE_RESOURCES
distribution/readme.txt
distribution/changelog.txt
g2.dat
resources/mac/openrct2.icns
${SOURCE_DATA_DIR}/language
${SOURCE_DATA_DIR}/object
${SOURCE_DATA_DIR}/sequence
${ROOT_DIR}/distribution/readme.txt
${ROOT_DIR}/distribution/changelog.txt
${CMAKE_BINARY_DIR}/g2.dat
${ROOT_DIR}/resources/mac/openrct2.icns
)
@ -174,8 +168,26 @@ if(MACOS_BUNDLE)
# copy data
file(COPY ${SOURCE_DATA_DIR}/language DESTINATION "${BUNDLE_RESOURCE_DIR}")
file(COPY ${SOURCE_DATA_DIR}/object DESTINATION "${BUNDLE_RESOURCE_DIR}")
file(COPY ${SOURCE_DATA_DIR}/sequence DESTINATION "${BUNDLE_RESOURCE_DIR}")
# download objects and sequences
set(OBJECTS_DIR ${CMAKE_BINARY_DIR}/object)
set(TITLE_SEQUENCE_DIR ${CMAKE_BINARY_DIR}/sequence)
download_openrct2_zip(
ZIP_VERSION ${OBJECTS_VERSION}
DOWNLOAD_DIR ${OBJECTS_DIR}
ZIP_URL ${OBJECTS_URL}
SHA1 ${OBJECTS_SHA1}
)
download_openrct2_zip(
ZIP_VERSION ${TITLE_SEQUENCE_VERSION}
DOWNLOAD_DIR ${TITLE_SEQUENCE_DIR}
ZIP_URL ${TITLE_SEQUENCE_URL}
SHA1 ${TITLE_SEQUENCE_SHA1}
)
file(COPY ${OBJECTS_DIR} DESTINATION "${BUNDLE_RESOURCE_DIR}")
file(COPY ${TITLE_SEQUENCE_DIR} DESTINATION "${BUNDLE_RESOURCE_DIR}")
# Create as a bundle
set_target_properties(${PROJECT_NAME} PROPERTIES
@ -191,5 +203,4 @@ if(MACOS_BUNDLE)
verify_app(${CMAKE_BINARY_DIR}/${MACOS_APP_NAME})
" BUNDLE DESTINATION ${CMAKE_BINARY_DIR}
)
endif ()