# MassBuilderSaveTool # Copyright (C) 2021-2024 Guillaume Jacquemin # # 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 3 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 . cmake_minimum_required(VERSION 3.24) project(MassBuilderSaveTool) set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/modules/" ${CMAKE_MODULE_PATH}) set(ZLIB_USE_STATIC_LIBS ON CACHE BOOL "" FORCE) # Required on setups where zlib is available as both dynamic and static libs. Which is pretty much everywhere, actually. option(SAVETOOL_USE_SYSTEM_LIBS "Use system-wide versions of the dependencies instead of the versions provided by submodules." OFF) include(CMakeDependentOption) cmake_dependent_option(SAVETOOL_USE_SYSTEM_CORRADE_MAGNUM "Use system-wide versions of Corrade and Magnum." ON "SAVETOOL_USE_SYSTEM_LIBS" OFF) cmake_dependent_option(SAVETOOL_USE_SYSTEM_SDL2 "Use a system-wide version of SDL2." ON "SAVETOOL_USE_SYSTEM_LIBS" OFF) cmake_dependent_option(SAVETOOL_USE_SYSTEM_LIBZIP "Use a system-wide version of libzip." ON "SAVETOOL_USE_SYSTEM_LIBS" OFF) cmake_dependent_option(SAVETOOL_USE_SYSTEM_LIBCURL "Use a system-wide version of libcurl." ON "SAVETOOL_USE_SYSTEM_LIBS" OFF) if(NOT SAVETOOL_USE_SYSTEM_LIBS OR NOT (SAVETOOL_USE_SYSTEM_CORRADE_MAGNUM AND SAVETOOL_USE_SYSTEM_SDL2 AND SAVETOOL_USE_SYSTEM_LIBZIP AND SAVETOOL_USE_SYSTEM_EFSW AND SAVETOOL_USE_SYSTEM_LIBCURL)) # Generic variables shared by multiple libs that don't provide their own. set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE) set(BUILD_STATIC_LIBS ON CACHE BOOL "" FORCE) set(BUILD_TESTING OFF CACHE BOOL "" FORCE) endif() if(NOT SAVETOOL_USE_SYSTEM_SDL2) set(DIRECTX OFF CACHE BOOL "" FORCE) # We use OpenGL. set(SDL_ATOMIC OFF CACHE BOOL "" FORCE) set(SDL_CPUINFO OFF CACHE BOOL "" FORCE) set(SDL_EVENTS ON CACHE BOOL "" FORCE) set(SDL_FILE OFF CACHE BOOL "" FORCE) set(SDL_FILESYSTEM OFF CACHE BOOL "" FORCE) set(SDL_HAPTIC OFF CACHE BOOL "" FORCE) set(SDL_LOCALE OFF CACHE BOOL "" FORCE) set(SDL_POWER OFF CACHE BOOL "" FORCE) set(SDL_RENDER OFF CACHE BOOL "" FORCE) set(SDL_SENSOR OFF CACHE BOOL "" FORCE) set(SDL_THREADS ON CACHE BOOL "" FORCE) set(SDL_TIMERS ON CACHE BOOL "" FORCE) set(SDL_SHARED OFF CACHE BOOL "" FORCE) add_subdirectory(third-party/SDL EXCLUDE_FROM_ALL) endif(NOT SAVETOOL_USE_SYSTEM_SDL2) if(NOT SAVETOOL_USE_SYSTEM_CORRADE_MAGNUM) set(CORRADE_BUILD_DEPRECATED OFF CACHE BOOL "" FORCE) set(CORRADE_BUILD_STATIC ON CACHE BOOL "" FORCE) set(CORRADE_BUILD_STATIC_PIC ON CACHE BOOL "" FORCE) set(CORRADE_BUILD_STATIC_UNIQUE_GLOBALS OFF CACHE BOOL "" FORCE) set(CORRADE_BUILD_TESTS OFF CACHE BOOL "" FORCE) set(CORRADE_WITH_INTERCONNECT OFF CACHE BOOL "" FORCE) set(CORRADE_WITH_PLUGINMANAGER OFF CACHE BOOL "" FORCE) set(CORRADE_WITH_TESTSUITE OFF CACHE BOOL "" FORCE) set(CORRADE_WITH_MAIN ON CACHE BOOL "" FORCE) add_subdirectory(third-party/corrade EXCLUDE_FROM_ALL) set(MAGNUM_BUILD_STATIC ON CACHE BOOL "" FORCE) set(MAGNUM_BUILD_STATIC_PIC ON CACHE BOOL "" FORCE) set(MAGNUM_BUILD_STATIC_UNIQUE_GLOBALS OFF CACHE BOOL "" FORCE) set(MAGNUM_BUILD_DEPRECATED OFF CACHE BOOL "" FORCE) set(MAGNUM_BUILD_TESTS OFF CACHE BOOL "" FORCE) set(MAGNUM_TARGET_GL ON CACHE BOOL "" FORCE) set(MAGNUM_TARGET_GLES OFF CACHE BOOL "" FORCE) set(MAGNUM_TARGET_VK OFF CACHE BOOL "" FORCE) set(MAGNUM_WITH_AUDIO OFF CACHE BOOL "" FORCE) set(MAGNUM_WITH_DEBUGTOOLS OFF CACHE BOOL "" FORCE) set(MAGNUM_WITH_GL ON CACHE BOOL "" FORCE) set(MAGNUM_WITH_MATERIALTOOLS OFF CACHE BOOL "" FORCE) set(MAGNUM_WITH_MESHTOOLS OFF CACHE BOOL "" FORCE) set(MAGNUM_WITH_PRIMITIVES OFF CACHE BOOL "" FORCE) set(MAGNUM_WITH_SCENEGRAPH OFF CACHE BOOL "" FORCE) set(MAGNUM_WITH_SCENETOOLS OFF CACHE BOOL "" FORCE) set(MAGNUM_WITH_SHADERS ON CACHE BOOL "" FORCE) set(MAGNUM_WITH_SHADERTOOLS OFF CACHE BOOL "" FORCE) set(MAGNUM_WITH_TEXT OFF CACHE BOOL "" FORCE) set(MAGNUM_WITH_TEXTURETOOLS OFF CACHE BOOL "" FORCE) set(MAGNUM_WITH_TRADE OFF CACHE BOOL "" FORCE) set(MAGNUM_WITH_VK OFF CACHE BOOL "" FORCE) set(MAGNUM_WITH_SDL2APPLICATION ON CACHE BOOL "" FORCE) add_subdirectory(third-party/magnum EXCLUDE_FROM_ALL) set(IMGUI_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third-party/imgui) set(MAGNUM_WITH_IMGUI ON CACHE BOOL "" FORCE) add_subdirectory(third-party/magnum-integration EXCLUDE_FROM_ALL) endif(NOT SAVETOOL_USE_SYSTEM_CORRADE_MAGNUM) if(NOT SAVETOOL_USE_SYSTEM_LIBZIP) set(ENABLE_COMMONCRYPTO OFF CACHE BOOL "" FORCE) set(ENABLE_GNUTLS OFF CACHE BOOL "" FORCE) set(ENABLE_MBEDTLS OFF CACHE BOOL "" FORCE) set(ENABLE_OPENSSL OFF CACHE BOOL "" FORCE) set(ENABLE_WINDOWS_CRYPTO OFF CACHE BOOL "" FORCE) set(ENABLE_BZIP2 OFF CACHE BOOL "" FORCE) set(ENABLE_LZMA OFF CACHE BOOL "" FORCE) set(ENABLE_ZSTD OFF CACHE BOOL "" FORCE) set(BUILD_TOOLS OFF CACHE BOOL "" FORCE) set(BUILD_REGRESS OFF CACHE BOOL "" FORCE) set(BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) set(BUILD_DOC OFF CACHE BOOL "" FORCE) add_subdirectory(third-party/libzip EXCLUDE_FROM_ALL) endif(NOT SAVETOOL_USE_SYSTEM_LIBZIP) if(NOT SAVETOOL_USE_SYSTEM_LIBCURL) set(BUILD_CURL_EXE OFF CACHE BOOL "" FORCE) set(ENABLE_UNICODE ON CACHE BOOL "" FORCE) set(ENABLE_INET_PTON OFF CACHE BOOL "" FORCE) set(ENABLE_DEBUG OFF CACHE BOOL "" FORCE) set(ENABLE_THREADED_RESOLVER OFF CACHE BOOL "" FORCE) set(HTTP_ONLY ON CACHE BOOL "" FORCE) set(USE_LIBIDN2 OFF CACHE BOOL "" FORCE) set(USE_WIN32_IDN ON CACHE BOOL "" FORCE) set(CURL_USE_LIBPSL OFF CACHE BOOL "" FORCE) set(CURL_STATIC_CRT OFF CACHE BOOL "" FORCE) set(CURL_USE_SCHANNEL ON CACHE BOOL "" FORCE) set(CURL_USE_LIBSSH2 OFF CACHE BOOL "" FORCE) # For some reason, even when HTTP_ONLY is set to ON, libcurl will try to link to libssh2. add_subdirectory(third-party/curl EXCLUDE_FROM_ALL) endif(NOT SAVETOOL_USE_SYSTEM_LIBCURL) add_subdirectory(src)