From ab22dc4ea9995c772dc84b7c785b02aa4e0afbbc Mon Sep 17 00:00:00 2001 From: beaglejoe Date: Thu, 26 Nov 2020 02:41:07 +0000 Subject: [PATCH] Added thirdpartydownloader.cmake - a cmake script to download the dependencies git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@7211 30fe4595-0a0c-4342-8851-515496e4dcbd Former-commit-id: dc5bd1f067a79d4a130301ef6c7676c8e36c805b Former-commit-id: f2e2ec2bbb032224b7fab4973500ce9c9be554bd --- .../3rdParty-devel/thirdpartydownloader.cmake | 154 ++++++++++++++++++ 1 file changed, 154 insertions(+) create mode 100644 packaging/3rdParty-devel/thirdpartydownloader.cmake diff --git a/packaging/3rdParty-devel/thirdpartydownloader.cmake b/packaging/3rdParty-devel/thirdpartydownloader.cmake new file mode 100644 index 00000000..3af97f23 --- /dev/null +++ b/packaging/3rdParty-devel/thirdpartydownloader.cmake @@ -0,0 +1,154 @@ +# +#============================================================================== +# +# file : thirdpartydownloader.cmake +# created : June 22 2020 +# copyright : (C) 2020 Joe Thompson +# email : beaglejoe@users.sourceforge.net +# version : $Id: $ +# +#============================================================================== +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +#============================================================================== +# +# (hashtag) starts a comment +#cmake_minimum_required(VERSION 3.14.0 FATAL_ERROR) + +# Make DOWNLOAD_DIRECTORY absolute before use +set(DOWNLOAD_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/downloads" CACHE PATH "Location for downloaded files") +set(CACHED_URL "" CACHE STRING "Preferred url form which to download") +#message(STATUS "DOWNLOAD_DIRECTORY : " ${DOWNLOAD_DIRECTORY}) +#message(STATUS "CACHED_URL = " ${CACHED_URL}) +#message(STATUS "CMAKE_CURRENT_BINARY_DIR : " ${CMAKE_CURRENT_BINARY_DIR}) +#message(STATUS "CMAKE_SOURCE_DIR : " ${CMAKE_SOURCE_DIR}) +#message(STATUS "CMAKE_CURRENT_LIST_DIR : " ${CMAKE_CURRENT_LIST_DIR}) + +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_LIST_DIR}") + +#include(${CMAKE_CURRENT_LIST_DIR}/3rdPartyDefinitions.cmake) +include(thirdpartydefinitions) + +set(IS_FILE_URL False) +if(NOT CACHED_URL STREQUAL "") + string(SUBSTRING ${CACHED_URL} 0 5 _WORSTR) + string(TOLOWER ${_WORSTR} _WORSTR) + if(_WORSTR STREQUAL "file:") + set(IS_FILE_URL True) + endif() + + if(IS_FILE_URL) + set(SDL_1_URL "${CACHED_URL}/${SDL1_FILE}") + set(SDL_2_URL "${CACHED_URL}/${SDL2_FILE}") + set(OPENAL_URL "${CACHED_URL}/${OPENAL_FILE}") + set(OPENAL_C11_URL "${CACHED_URL}/${OPENAL_C11_FILE}") + set(OPENAL_LEGACY_URL "${CACHED_URL}/${OPENAL_LEGACY_FILE}") + set(PLIB_HEAD_URL "${CACHED_URL}/${PLIB_HEAD_FILE}") + set(PLIB_URL "${CACHED_URL}/${PLIB_FILE}") + set(JPEG_URL "${CACHED_URL}/${JPEG_FILE}") + set(FREESOLID_URL "${CACHED_URL}/${FREESOLID_FILE}") + set(ENET_URL "${CACHED_URL}/${ENET_FILE}") + set(OGG_URL "${CACHED_URL}/${OGG_FILE}") + set(VORBIS_URL "${CACHED_URL}/${VORBIS_FILE}") + set(EXPAT_URL "${CACHED_URL}/${EXPAT_FILE}") + set(ZLIB_URL "${CACHED_URL}/${ZLIB_FILE}") + set(PNG_URL "${CACHED_URL}/${PNG_FILE}") + set(FREETYPE_URL "${CACHED_URL}/${FREETYPE_FILE}") + set(CURL_URL "${CACHED_URL}/${CURL_FILE}") + set(OSG_URL "${CACHED_URL}/${OSG_FILE}") + set(SQLITE3_URL "${CACHED_URL}/${SQLITE3_FILE}") + else() + set(SDL_1_URL "${CACHED_URL}/${SDL1_FILE} ${SDL_1_URL}") + set(SDL_2_URL "${CACHED_URL}/${SDL2_FILE} ${SDL_2_URL}") + set(OPENAL_URL "${CACHED_URL}/${OPENAL_FILE} ${OPENAL_URL}") + set(OPENAL_C11_URL "${CACHED_URL}/${OPENAL_C11_FILE} ${OPENAL_C11_URL}") + set(OPENAL_LEGACY_URL "${CACHED_URL}/${OPENAL_LEGACY_FILE} ${OPENAL_LEGACY_URL}") + set(PLIB_HEAD_URL "${CACHED_URL}/${PLIB_HEAD_FILE} ${PLIB_HEAD_URL}") + set(PLIB_URL "${CACHED_URL}/${PLIB_FILE} ${PLIB_URL}") + set(JPEG_URL "${CACHED_URL}/${JPEG_FILE} ${JPEG_URL}") + set(FREESOLID_URL "${CACHED_URL}/${FREESOLID_FILE} ${FREESOLID_URL}") + set(ENET_URL "${CACHED_URL}/${ENET_FILE} ${ENET_URL}") + set(OGG_URL "${CACHED_URL}/${OGG_FILE} ${OGG_URL}") + set(VORBIS_URL "${CACHED_URL}/${VORBIS_FILE} ${VORBIS_URL}") + set(EXPAT_URL "${CACHED_URL}/${EXPAT_FILE} ${EXPAT_URL}") + set(ZLIB_URL "${CACHED_URL}/${ZLIB_FILE} ${ZLIB_URL}") + set(PNG_URL "${CACHED_URL}/${PNG_FILE} ${PNG_URL}") + set(FREETYPE_URL "${CACHED_URL}/${FREETYPE_FILE} ${FREETYPE_URL}") + set(CURL_URL "${CACHED_URL}/${CURL_FILE} ${CURL_URL}") + set(OSG_URL "${CACHED_URL}/${OSG_FILE} ${OSG_URL}") + set(SQLITE3_URL "${CACHED_URL}/${SQLITE3_FILE} ${SQLITE3_URL}") + endif() +endif() + +################################################ +function(SD_DownloadIfNeeded FILE_DESTINATION SRC_URL) + if(EXISTS ${FILE_DESTINATION}) + if(NOT ${CMAKE_VERSION} VERSION_LESS "3.14.0") + file(SIZE ${FILE_DESTINATION} _filesize) + message(STATUS ${FILE_DESTINATION} " Exists and size = " ${_filesize}) + if(_filesize EQUAL 0) + file(DOWNLOAD ${SRC_URL} ${FILE_DESTINATION} SHOW_PROGRESS STATUS DL_STATUS LOG DL_LOG) + endif() + endif() + else() + file(DOWNLOAD ${SRC_URL} ${FILE_DESTINATION} SHOW_PROGRESS STATUS DL_STATUS LOG DL_LOG) + endif() + if(DL_STATUS) + list(GET DL_STATUS 0 STAT_NUM) + list(GET DL_STATUS 1 STAT_STRING) + if(NOT STAT_NUM EQUAL 0) + message("Failed Download of ${SRC_URL}") + message("DL_STATUS number = " ${STAT_NUM}) + message("DL_STATUS = " ${STAT_STRING}) + message("DL_LOG = ${DL_LOG}") + message("") + message(SEND_ERROR "Failed Download of ${SRC_URL}") + endif() + endif() +endfunction() + +################################################ + +SD_DownloadIfNeeded(${DOWNLOAD_DIRECTORY}/${SDL1_FILE} ${SDL_1_URL}) +SD_DownloadIfNeeded(${DOWNLOAD_DIRECTORY}/${SDL2_FILE} ${SDL_2_URL}) +SD_DownloadIfNeeded(${DOWNLOAD_DIRECTORY}/${OPENAL_LEGACY_FILE} ${OPENAL_LEGACY_URL}) +SD_DownloadIfNeeded(${DOWNLOAD_DIRECTORY}/${OPENAL_C11_FILE} ${OPENAL_C11_URL}) +SD_DownloadIfNeeded(${DOWNLOAD_DIRECTORY}/${OPENAL_FILE} ${OPENAL_URL}) +SD_DownloadIfNeeded(${DOWNLOAD_DIRECTORY}/${PLIB_HEAD_FILE} ${PLIB_HEAD_URL}) +SD_DownloadIfNeeded(${DOWNLOAD_DIRECTORY}/${PLIB_FILE} ${PLIB_URL}) +SD_DownloadIfNeeded(${DOWNLOAD_DIRECTORY}/${JPEG_FILE} ${JPEG_URL}) +SD_DownloadIfNeeded(${DOWNLOAD_DIRECTORY}/${FREESOLID_FILE} ${FREESOLID_URL}) +SD_DownloadIfNeeded(${DOWNLOAD_DIRECTORY}/${ENET_FILE} ${ENET_URL}) +SD_DownloadIfNeeded(${DOWNLOAD_DIRECTORY}/${OGG_FILE} ${OGG_URL}) +SD_DownloadIfNeeded(${DOWNLOAD_DIRECTORY}/${VORBIS_FILE} ${VORBIS_URL}) +SD_DownloadIfNeeded(${DOWNLOAD_DIRECTORY}/${EXPAT_FILE} ${EXPAT_URL}) +SD_DownloadIfNeeded(${DOWNLOAD_DIRECTORY}/${ZLIB_FILE} ${ZLIB_URL}) +SD_DownloadIfNeeded(${DOWNLOAD_DIRECTORY}/${PNG_FILE} ${PNG_URL}) +SD_DownloadIfNeeded(${DOWNLOAD_DIRECTORY}/${FREETYPE_FILE} ${FREETYPE_URL}) +SD_DownloadIfNeeded(${DOWNLOAD_DIRECTORY}/${CURL_FILE} ${CURL_URL}) +SD_DownloadIfNeeded(${DOWNLOAD_DIRECTORY}/${OSG_FILE} ${OSG_URL}) +SD_DownloadIfNeeded(${DOWNLOAD_DIRECTORY}/${SQLITE3_FILE} ${SQLITE3_URL}) + + +message(STATUS "DOWNLOAD_DIRECTORY = " ${DOWNLOAD_DIRECTORY}) +file(GLOB FLIST RELATIVE ${DOWNLOAD_DIRECTORY} ${DOWNLOAD_DIRECTORY}/*.*) + +file(WRITE ${DOWNLOAD_DIRECTORY}/sha256.txt "") +foreach(_file ${FLIST}) + file(SHA256 ${DOWNLOAD_DIRECTORY}/${_file} _HASH) + #message(STATUS ${_HASH} " : " ${_file}) + set(_ENTRY "${_HASH} : ${_file}\n") + file(APPEND ${DOWNLOAD_DIRECTORY}/sha256.txt ${_ENTRY}) +endforeach()