diff --git a/CMakeLists.txt b/CMakeLists.txt index 51c3e72..c260e84 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,23 +23,21 @@ set(ZLIB_USE_STATIC_LIBS ON CACHE BOOL "" FORCE) # Required on setups where zlib 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) # 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(NOT SAVETOOL_USE_SYSTEM_LIBS) - 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) - +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) @@ -55,6 +53,19 @@ if(NOT SAVETOOL_USE_SYSTEM_LIBS) 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) @@ -85,7 +96,9 @@ if(NOT SAVETOOL_USE_SYSTEM_LIBS) 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) @@ -99,12 +112,16 @@ if(NOT SAVETOOL_USE_SYSTEM_LIBS) 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) @@ -118,6 +135,6 @@ if(NOT SAVETOOL_USE_SYSTEM_LIBS) 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_LIBS) +endif(NOT SAVETOOL_USE_SYSTEM_LIBCURL) add_subdirectory(src) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 970fcfb..bbe0045 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -26,11 +26,18 @@ if(CORRADE_TARGET_WINDOWS) endif() find_package(Magnum REQUIRED GL Sdl2Application) find_package(MagnumIntegration REQUIRED ImGui) -if(SAVETOOL_USE_SYSTEM_LIBS) + +if(SAVETOOL_USE_SYSTEM_LIBZIP) find_package(libzip REQUIRED) +endif(SAVETOOL_USE_SYSTEM_LIBZIP) + +if(SAVETOOL_USE_SYSTEM_EFSW) find_package(efsw REQUIRED) +endif(SAVETOOL_USE_SYSTEM_EFSW) + +if(SAVETOOL_USE_SYSTEM_LIBCURL) find_package(CURL REQUIRED HTTPS) -endif() +endif(SAVETOOL_USE_SYSTEM_LIBCURL) set_directory_properties(PROPERTIES CORRADE_USE_PEDANTIC_FLAGS ON) @@ -247,10 +254,16 @@ target_link_libraries(MassBuilderSaveTool PRIVATE CURL::libcurl_static ) -if(SAVETOOL_USE_SYSTEM_LIBS) - target_link_libraries(MassBuilderSaveTool PRIVATE libzip::zip efsw::efsw) +if(SAVETOOL_USE_SYSTEM_LIBZIP) + target_link_libraries(MassBuilderSaveTool PRIVATE libzip::zip) else() - target_link_libraries(MassBuilderSaveTool PRIVATE zip efsw) + target_link_libraries(MassBuilderSaveTool PRIVATE zip) +endif() + +if(SAVETOOL_USE_SYSTEM_EFSW) + target_link_libraries(MassBuilderSaveTool PRIVATE efsw::efsw) +else() + target_link_libraries(MassBuilderSaveTool PRIVATE efsw) endif() if(CORRADE_TARGET_WINDOWS)