From: Maksym Mamontov <madf@madf.info>
Date: Mon, 22 Aug 2022 14:44:46 +0000 (+0300)
Subject: Check if we can use C++17 with XMLRPC-C.
X-Git-Url: https://git.stg.codes/stg.git/commitdiff_plain/e6c0bd53164bd30bbe038c80a370707847fc266c?ds=inline

Check if we can use C++17 with XMLRPC-C.
---

diff --git a/checks/xmlrpc-c-auto_ptr.cpp b/checks/xmlrpc-c-auto_ptr.cpp
new file mode 100644
index 00000000..b47c9e6c
--- /dev/null
+++ b/checks/xmlrpc-c-auto_ptr.cpp
@@ -0,0 +1,6 @@
+#include <xmlrpc-c/girmem.hpp>
+
+int main()
+{
+    return 0;
+}
diff --git a/projects/stargazer/plugins/CMakeLists.txt b/projects/stargazer/plugins/CMakeLists.txt
index 2b5c0467..8adb6c5f 100644
--- a/projects/stargazer/plugins/CMakeLists.txt
+++ b/projects/stargazer/plugins/CMakeLists.txt
@@ -138,7 +138,12 @@ if ( BUILD_MOD_SGCONFIG )
 endif ( BUILD_MOD_SGCONFIG )
 
 if ( BUILD_MOD_RPCCONFIG )
-    find_package ( XMLRPC 1.54 REQUIRED c++ abyss-server )
+    find_package ( XMLRPC 1.58.0 REQUIRED c++2 abyss-server )
+    try_compile ( XMLRPC_C_NO_AUTO_PTR ${CMAKE_CURRENT_BINARY_DIR} "${PROJECT_SOURCE_DIR}/checks/xmlrpc-c-auto_ptr.cpp" CMAKE_FLAGS -DINCLUDE_DIRECTORIES=${XMLRPC_INCLUDE_DIRS} LINK_LIBRARIES ${XMLRPC_LIBRARIES} OUTPUT_VARIABLE TRY_COMPILE_OUTPUT )
+    if ( NOT XMLRPC_C_NO_AUTO_PTR )
+        message ( WARNING ${TRY_COMPILE_OUTPUT} )
+        message ( FATAL_ERROR "Your version of XMLRPC-C library can not be used with C++17. Try upgrading to at least 1.58.0." )
+    endif ()
     include_directories ( ${XMLRPC_INCLUDE_DIRS} )
     add_library ( mod_conf_rpc MODULE configuration/rpcconfig/rpcconfig.cpp
                                       configuration/rpcconfig/user_helper.cpp