summaryrefslogtreecommitdiff
path: root/games-engines/odamex/files/odamex-10.0.0-unbundle-jsoncpp.patch
diff options
context:
space:
mode:
Diffstat (limited to 'games-engines/odamex/files/odamex-10.0.0-unbundle-jsoncpp.patch')
-rw-r--r--games-engines/odamex/files/odamex-10.0.0-unbundle-jsoncpp.patch85
1 files changed, 85 insertions, 0 deletions
diff --git a/games-engines/odamex/files/odamex-10.0.0-unbundle-jsoncpp.patch b/games-engines/odamex/files/odamex-10.0.0-unbundle-jsoncpp.patch
new file mode 100644
index 000000000000..9b0d3284dc48
--- /dev/null
+++ b/games-engines/odamex/files/odamex-10.0.0-unbundle-jsoncpp.patch
@@ -0,0 +1,85 @@
+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
+