From defd3caeb6a05017e0bdadff90278c978a5cccf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Trung=20L=C3=AA?= <8@tle.id.au> Date: Wed, 27 Mar 2024 22:07:37 +1100 Subject: [PATCH] Add option to compile against shared lib cURL --- CMakeLists.txt | 1 + extern/CMakeLists.txt | 43 +++++++++++++++++++++++-------------------- src/CMakeLists.txt | 13 +++++++++---- 3 files changed, 33 insertions(+), 24 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5306f2825..28cead2a0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,6 +41,7 @@ ENDIF() OPTION(CONFIG_BUILD_GLSLANG "Build glslangValidator from source instead of using the SDK" ${DEFAULT_BUILD_GLSLANG}) OPTION(CONFIG_BUILD_IPO "Enable interprocedural optimizations" OFF) OPTION(CONFIG_BUILD_SHADER_DEBUG_INFO "Build shaders with debug info" OFF) +OPTION(USE_SYSTEM_CURL "Prefer system cURL instead of the bundled one" OFF) set_property(GLOBAL PROPERTY USE_FOLDERS ON) include(CheckIPOSupported) diff --git a/extern/CMakeLists.txt b/extern/CMakeLists.txt index 9f188b3d3..d92e658df 100644 --- a/extern/CMakeLists.txt +++ b/extern/CMakeLists.txt @@ -59,29 +59,32 @@ endif() # if(CONFIG_USE_CURL) - - option(BUILD_CURL_EXE "" OFF) - option(BUILD_SHARED_LIBS "" OFF) - option(CURL_STATICLIB "" ON) - option(BUILD_TESTING "" OFF) - option(ENABLE_MANUAL "" OFF) - option(ENABLE_DOCS "" OFF) - option(HTTP_ONLY "" ON) - option(CURL_ZLIB "" OFF) - option(CMAKE_USE_OPENSSL "" OFF) - set(CURL_CA_PATH "none" CACHE PATH "") - - set(CMAKE_DEBUG_POSTFIX "" CACHE STRING "Override CMAKE_DEBUG_POSTFIX, which curl sets to '-d'") + if(USE_SYSTEM_CURL) + find_package(CURL REQUIRED) + else() + option(BUILD_CURL_EXE "" OFF) + option(BUILD_SHARED_LIBS "" OFF) + option(CURL_STATICLIB "" ON) + option(BUILD_TESTING "" OFF) + option(ENABLE_MANUAL "" OFF) + option(ENABLE_DOCS "" OFF) + option(HTTP_ONLY "" ON) + option(CURL_ZLIB "" OFF) + option(CMAKE_USE_OPENSSL "" OFF) + set(CURL_CA_PATH "none" CACHE PATH "") + + set(CMAKE_DEBUG_POSTFIX "" CACHE STRING "Override CMAKE_DEBUG_POSTFIX, which curl sets to '-d'") - set(ZLIB_DIR "{CMAKE_CURRENT_SOURCE_DIR}/zlib") + set(ZLIB_DIR "{CMAKE_CURRENT_SOURCE_DIR}/zlib") - add_subdirectory(curl) + add_subdirectory(curl) - set_target_properties(libcurl_static PROPERTIES FOLDER extern) - if (TARGET libcurl_object) - set_target_properties(libcurl_object PROPERTIES FOLDER extern) + set_target_properties(libcurl_static PROPERTIES FOLDER extern) + if (TARGET libcurl_object) + set_target_properties(libcurl_object PROPERTIES FOLDER extern) + endif() + set_target_properties(curl_uninstall PROPERTIES FOLDER extern) endif() - set_target_properties(curl_uninstall PROPERTIES FOLDER extern) endif() @@ -111,4 +114,4 @@ if (IS_64_BIT) set_target_properties(OpenAL PROPERTIES FOLDER extern/openal-soft) set_target_properties(common PROPERTIES FOLDER extern/openal-soft) set_target_properties(ex-common PROPERTIES FOLDER extern/openal-soft) -endif() \ No newline at end of file +endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index f6908ca5b..54b88a323 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -379,7 +379,7 @@ ADD_DEFINITIONS(-DVERSION_POINT=${Q2RTX_VERSION_POINT}) ADD_DEFINITIONS(-DVERSION_SHA=${Q2RTX_VERSION_SHA}) ADD_DEFINITIONS(-DVERSION_BRANCH=${Q2RTX_VERSION_BRANCH}) -ADD_DEFINITIONS(-DHAVE_CONFIG_H=1 -DCURL_STATICLIB -DAL_LIBTYPE_STATIC) +ADD_DEFINITIONS(-DHAVE_CONFIG_H=1 -DAL_LIBTYPE_STATIC) IF(WIN32) ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS) @@ -473,9 +473,14 @@ IF (TARGET client) TARGET_COMPILE_DEFINITIONS(client PRIVATE USE_CLIENT=1 USE_SAVEGAMES=1 USE_FIXED_LIBAL=1 USE_SDL=1) IF(CONFIG_USE_CURL) - TARGET_SOURCES(client PRIVATE ${SRC_CLIENT_HTTP}) - TARGET_COMPILE_DEFINITIONS(client PRIVATE USE_CURL=1) - TARGET_LINK_LIBRARIES(client libcurl) + IF(USE_SYSTEM_CURL) + TARGET_LINK_LIBRARIES(client curl) + ELSE() + ADD_DEFINITIONS(-DCURL_STATICLIB) + TARGET_SOURCES(client PRIVATE ${SRC_CLIENT_HTTP}) + TARGET_COMPILE_DEFINITIONS(client PRIVATE USE_CURL=1) + TARGET_LINK_LIBRARIES(client libcurl) + ENDIF() ENDIF() add_dependencies(client shaders)