You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
3.2 KiB
86 lines
3.2 KiB
2 years ago
|
From c8d1cd6465d8d64a23a111edb5fba67565660fe8 Mon Sep 17 00:00:00 2001
|
||
|
From: James Le Cuirot <chewi@gentoo.org>
|
||
|
Date: Sun, 27 Feb 2022 22:51:18 +0000
|
||
|
Subject: [PATCH 2/3] Allow building against the system JsonCpp library
|
||
|
|
||
|
`USE_INTERNAL_JSONCPP` defaults to true and ignores `USE_INTERNAL_LIBS`
|
||
|
because users are unlikely to have it installed.
|
||
|
|
||
|
More recent versions of JsonCpp require C++11, but Odamex targets C++98
|
||
|
for compatibility with older platforms. The standard is therefore only
|
||
|
changed to C++11 when `USE_INTERNAL_JSONCPP` is false, and only for the
|
||
|
server where JsonCpp is used. Note that C++11 still works when building
|
||
|
against an older JsonCpp version.
|
||
|
|
||
|
Tested against JsonCpp 1.9.5 on Gentoo Linux.
|
||
|
|
||
|
Closes: https://github.com/odamex/odamex/issues/261
|
||
|
(cherry picked from commit 5162c6297c7177af907e5e0502eac9d59ffcc22b)
|
||
|
---
|
||
|
CMakeLists.txt | 1 +
|
||
|
libraries/CMakeLists.txt | 2 +-
|
||
|
server/CMakeLists.txt | 15 ++++++++++++++-
|
||
|
3 files changed, 16 insertions(+), 2 deletions(-)
|
||
|
|
||
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||
|
index c43c9f111..9353d0c6b 100644
|
||
|
--- a/CMakeLists.txt
|
||
|
+++ b/CMakeLists.txt
|
||
|
@@ -42,6 +42,7 @@ option(USE_INTERNAL_DEUTEX "Use internal DeuTex" ${USE_INTERNAL_LIBS})
|
||
|
cmake_dependent_option( USE_INTERNAL_ZLIB "Use internal zlib" ${USE_INTERNAL_LIBS} BUILD_CLIENT 0 )
|
||
|
cmake_dependent_option( USE_INTERNAL_PNG "Use internal libpng" ${USE_INTERNAL_LIBS} BUILD_CLIENT 0 )
|
||
|
cmake_dependent_option( USE_INTERNAL_CURL "Use internal libcurl" ${USE_INTERNAL_LIBS} BUILD_CLIENT 0 )
|
||
|
+cmake_dependent_option( USE_INTERNAL_JSONCPP "Use internal JsonCpp" 1 BUILD_SERVER 0 )
|
||
|
cmake_dependent_option( USE_INTERNAL_WXWIDGETS "Use internal wxWidgets" ${USE_INTERNAL_LIBS} BUILD_LAUNCHER 0 )
|
||
|
cmake_dependent_option( ENABLE_PORTMIDI "Enable portmidi support" 1 BUILD_CLIENT 0 )
|
||
|
cmake_dependent_option( USE_MINIUPNP "Build with UPnP support" 1 BUILD_SERVER 0 )
|
||
|
diff --git a/libraries/CMakeLists.txt b/libraries/CMakeLists.txt
|
||
|
index ae7db4c86..493d8f12b 100644
|
||
|
--- a/libraries/CMakeLists.txt
|
||
|
+++ b/libraries/CMakeLists.txt
|
||
|
@@ -295,7 +295,7 @@ endif()
|
||
|
|
||
|
### JsonCpp ###
|
||
|
|
||
|
-if(BUILD_SERVER)
|
||
|
+if(BUILD_SERVER AND USE_INTERNAL_JSONCPP)
|
||
|
message(STATUS "Compiling JsonCpp...")
|
||
|
|
||
|
# Figure out the correct library path to attach to our imported target
|
||
|
diff --git a/server/CMakeLists.txt b/server/CMakeLists.txt
|
||
|
index 32297080f..a9bf8c44d 100644
|
||
|
--- a/server/CMakeLists.txt
|
||
|
+++ b/server/CMakeLists.txt
|
||
|
@@ -45,7 +45,12 @@ endif()
|
||
|
add_executable(odasrv
|
||
|
${COMMON_SOURCES} ${SERVER_SOURCES} ${SERVER_WIN32_SOURCES})
|
||
|
odamex_target_settings(odasrv)
|
||
|
-set_property(TARGET odasrv PROPERTY CXX_STANDARD 98)
|
||
|
+
|
||
|
+if(USE_INTERNAL_JSONCPP)
|
||
|
+ set_property(TARGET odasrv PROPERTY CXX_STANDARD 98)
|
||
|
+else()
|
||
|
+ set_property(TARGET odasrv PROPERTY CXX_STANDARD 11)
|
||
|
+endif()
|
||
|
|
||
|
target_include_directories(odasrv PRIVATE src)
|
||
|
if(WIN32)
|
||
|
@@ -53,6 +58,14 @@ if(WIN32)
|
||
|
endif()
|
||
|
target_link_libraries(odasrv ZLIB::ZLIB jsoncpp odamex-common odaproto)
|
||
|
|
||
|
+if(USE_INTERNAL_JSONCPP)
|
||
|
+ target_link_libraries(odasrv jsoncpp)
|
||
|
+else()
|
||
|
+ find_package(PkgConfig REQUIRED)
|
||
|
+ pkg_check_modules(JSONCPP jsoncpp REQUIRED IMPORTED_TARGET)
|
||
|
+ target_link_libraries(odasrv PkgConfig::JSONCPP)
|
||
|
+endif()
|
||
|
+
|
||
|
if(USE_MINIUPNP)
|
||
|
if(USE_INTERNAL_MINIUPNP)
|
||
|
target_link_libraries(odasrv upnpc-static)
|
||
|
--
|
||
|
2.34.1
|
||
|
|