140 lines
6.8 KiB
CMake
140 lines
6.8 KiB
CMake
# 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 <https://www.gnu.org/licenses/>.
|
|
|
|
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_EFSW "Use a system-wide version of EFSW." 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_EFSW)
|
|
set(VERBOSE OFF CACHE BOOL "" FORCE)
|
|
set(BUILD_TEST_APP OFF CACHE BOOL "" FORCE)
|
|
set(EFSW_INSTALL OFF CACHE BOOL "" FORCE)
|
|
add_subdirectory(third-party/efsw EXCLUDE_FROM_ALL)
|
|
endif(NOT SAVETOOL_USE_SYSTEM_EFSW)
|
|
|
|
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)
|