86 lines
4.0 KiB
CMake
86 lines
4.0 KiB
CMake
# cmake/FetchDependencies.cmake
|
|
|
|
set(THIRDPARTY_DIR "${CMAKE_CURRENT_LIST_DIR}/../thirdparty")
|
|
|
|
if(NOT EXISTS "${THIRDPARTY_DIR}")
|
|
file(MAKE_DIRECTORY "${THIRDPARTY_DIR}")
|
|
endif()
|
|
|
|
macro(check_and_download URL ARCHIVE_NAME EXTRACTED_DIR_NAME CHECK_FILE)
|
|
set(ARCHIVE_PATH "${THIRDPARTY_DIR}/${ARCHIVE_NAME}")
|
|
set(SRC_PATH "${THIRDPARTY_DIR}/${EXTRACTED_DIR_NAME}")
|
|
|
|
if(NOT EXISTS "${ARCHIVE_PATH}")
|
|
message(STATUS "Downloading ${ARCHIVE_NAME}...")
|
|
file(DOWNLOAD "${URL}" "${ARCHIVE_PATH}" SHOW_PROGRESS)
|
|
endif()
|
|
|
|
if(NOT EXISTS "${SRC_PATH}/${CHECK_FILE}")
|
|
message(STATUS "Extracting ${ARCHIVE_NAME}...")
|
|
execute_process(
|
|
COMMAND ${CMAKE_COMMAND} -E tar xvf "${ARCHIVE_PATH}"
|
|
WORKING_DIRECTORY "${THIRDPARTY_DIR}"
|
|
)
|
|
endif()
|
|
endmacro()
|
|
|
|
# 1) ZLIB (Нужна только для инклудов, если не используете emscripten порты)
|
|
check_and_download("https://github.com/madler/zlib/releases/download/v1.3.2/zlib132.zip" "zlib132.zip" "zlib-1.3.2" "CMakeLists.txt")
|
|
|
|
# 2) SDL2
|
|
check_and_download("https://github.com/libsdl-org/SDL/archive/refs/tags/release-2.32.10.zip" "release-2.32.10.zip" "SDL-release-2.32.10" "CMakeLists.txt")
|
|
|
|
# 3) LibPNG
|
|
check_and_download("https://github.com/pnggroup/libpng/archive/refs/tags/v1.6.51.zip" "v1.6.51.zip" "libpng-1.6.51" "CMakeLists.txt")
|
|
|
|
# 4) LibZip
|
|
check_and_download("https://github.com/nih-at/libzip/archive/refs/tags/v1.11.4.zip" "v1.11.4.zip" "libzip-1.11.4" "CMakeLists.txt")
|
|
|
|
# 5) Eigen
|
|
check_and_download("https://gitlab.com/libeigen/eigen/-/archive/5.0.0/eigen-5.0.0.zip" "eigen-5.0.0.zip" "eigen-5.0.0" "signature_of_eigen3_matrix_library")
|
|
|
|
# 6) Boost
|
|
check_and_download("https://archives.boost.io/release/1.90.0/source/boost_1_90_0.zip" "boost_1_90_0.zip" "boost_1_90_0" "boost")
|
|
|
|
# 7) FreeType
|
|
check_and_download("https://download.savannah.gnu.org/releases/freetype/freetype-2.14.1.tar.gz" "freetype-2.14.1.tar.gz" "freetype-2.14.1" "CMakeLists.txt")
|
|
|
|
# 8) SDL_ttf
|
|
check_and_download("https://github.com/libsdl-org/SDL_ttf/archive/refs/tags/release-2.24.0.zip" "release-2.24.0.zip" "SDL_ttf-release-2.24.0" "CMakeLists.txt")
|
|
|
|
# 9) Lua
|
|
check_and_download("https://github.com/lua/lua/archive/refs/tags/v5.4.8.zip" "lua-v5.4.8.zip" "lua-5.4.8" "lapi.c")
|
|
|
|
# 10) sol2 (header-only C++ bindings for Lua)
|
|
check_and_download("https://github.com/ThePhD/sol2/archive/refs/tags/v3.3.0.zip" "sol2-v3.3.0.zip" "sol2-3.3.0" "include/sol/sol.hpp")
|
|
|
|
# 11) SDL2_mixer
|
|
check_and_download("https://github.com/libsdl-org/SDL_mixer/archive/refs/tags/release-2.8.0.zip" "SDL_mixer-release-2.8.0.zip" "SDL_mixer-release-2.8.0" "CMakeLists.txt")
|
|
|
|
# 12) OpenSSL (TLS for wss://) and a native Windows Perl needed to build it
|
|
if(WIN32)
|
|
check_and_download("https://github.com/openssl/openssl/releases/download/openssl-3.4.1/openssl-3.4.1.tar.gz" "openssl-3.4.1.tar.gz" "openssl-3.4.1" "Configure")
|
|
|
|
# Strawberry Perl portable. The zip has no top-level folder, so it is
|
|
# extracted into its own directory. (Git's MSYS perl cannot build OpenSSL.)
|
|
set(STRAWBERRY_PERL_DIR "${THIRDPARTY_DIR}/strawberry-perl")
|
|
set(STRAWBERRY_PERL_ARCHIVE "${THIRDPARTY_DIR}/strawberry-perl-5.42.3.1-64bit-portable.zip")
|
|
if(NOT EXISTS "${STRAWBERRY_PERL_DIR}/perl/bin/perl.exe")
|
|
if(NOT EXISTS "${STRAWBERRY_PERL_ARCHIVE}")
|
|
message(STATUS "Downloading Strawberry Perl...")
|
|
file(DOWNLOAD
|
|
"https://github.com/StrawberryPerl/Perl-Dist-Strawberry/releases/download/SP_54231_64bit/strawberry-perl-5.42.3.1-64bit-portable.zip"
|
|
"${STRAWBERRY_PERL_ARCHIVE}" SHOW_PROGRESS)
|
|
endif()
|
|
message(STATUS "Extracting Strawberry Perl...")
|
|
file(MAKE_DIRECTORY "${STRAWBERRY_PERL_DIR}")
|
|
execute_process(
|
|
COMMAND ${CMAKE_COMMAND} -E tar xf "${STRAWBERRY_PERL_ARCHIVE}"
|
|
WORKING_DIRECTORY "${STRAWBERRY_PERL_DIR}"
|
|
)
|
|
if(NOT EXISTS "${STRAWBERRY_PERL_DIR}/perl/bin/perl.exe")
|
|
message(FATAL_ERROR "Strawberry Perl extraction failed")
|
|
endif()
|
|
endif()
|
|
endif()
|