From 398566348eefdab4eb97628ff28b9aac925de86e Mon Sep 17 00:00:00 2001 From: jonathanspw Date: Mon, 12 Dec 2022 13:23:53 -0600 Subject: [PATCH] update to 1.51.08, remove meson build --- .gitignore | 1 + ...tements-accidentally-committed-with-.patch | 83 - 0001-add-meson-buildsystem-definitions.patch | 1652 ----------------- 0002-chmod-x-xml-rpc-api2txt.patch | 16 - sources | 2 +- xmlrpc-c.spec | 51 +- 6 files changed, 27 insertions(+), 1778 deletions(-) delete mode 100644 0001-Remove-trace-statements-accidentally-committed-with-.patch delete mode 100644 0001-add-meson-buildsystem-definitions.patch delete mode 100644 0002-chmod-x-xml-rpc-api2txt.patch diff --git a/.gitignore b/.gitignore index a581549..58aac05 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ /xmlrpc-c-1.48.0.tar.xz /xmlrpc-c-1.49.02.tar.xz /xmlrpc-c-1.51.0.tar.xz +/xmlrpc-1.51.08.tgz diff --git a/0001-Remove-trace-statements-accidentally-committed-with-.patch b/0001-Remove-trace-statements-accidentally-committed-with-.patch deleted file mode 100644 index 6609b32..0000000 --- a/0001-Remove-trace-statements-accidentally-committed-with-.patch +++ /dev/null @@ -1,83 +0,0 @@ -From 78e995f9f2958fc54e2a559a52c81684dc3460cf Mon Sep 17 00:00:00 2001 -From: giraffedata -Date: Sun, 21 Jan 2018 22:27:31 +0000 -Subject: [PATCH] Remove trace statements accidentally committed with 2977 - -git-svn-id: https://svn.code.sf.net/p/xmlrpc-c/code/trunk@2981 98333e67-4a24-44d7-a75c-e53540dd3050 ---- - src/cpp/value.cpp | 8 -------- - src/xmlrpc_string.c | 5 ----- - 2 files changed, 13 deletions(-) - -diff --git a/src/cpp/value.cpp b/src/cpp/value.cpp -index e2c12372..b319430e 100644 ---- a/src/cpp/value.cpp -+++ b/src/cpp/value.cpp -@@ -1,4 +1,3 @@ --#include - /***************************************************************************** - value.cpp - ****************************************************************************** -@@ -622,13 +621,9 @@ public: - - switch (nlCode) { - case value_string::nlCode_all: -- cerr << "Going to call xmlrpc_string_new_lp" << endl; -- cerr << "length = " << cppvalue.length() << ", value = " -- << cppvalue.c_str() << endl; - this->valueP = xmlrpc_string_new_lp(&env.env_c, - cppvalue.length(), - cppvalue.c_str()); -- cerr << "Back from xmlrpc_string_new_lp" << endl; - break; - case value_string::nlCode_lf: - this->valueP = xmlrpc_string_new_lp_cr(&env.env_c, -@@ -661,12 +656,9 @@ value_string::value_string(std::string const& cppvalue, - - value_string::value_string(std::string const& cppvalue) { - -- cerr << "value_string constructor entered" << endl; - cNewStringWrapper wrapper(cppvalue, nlCode_all); -- cerr << "wrapper constructed" << endl; - - this->instantiate(wrapper.valueP); -- cerr << "value_string constructor exiting" << endl; - } - - -diff --git a/src/xmlrpc_string.c b/src/xmlrpc_string.c -index 2da61e4e..e6e00716 100644 ---- a/src/xmlrpc_string.c -+++ b/src/xmlrpc_string.c -@@ -1,4 +1,3 @@ --#include - /*============================================================================= - xmlrpc_string - =============================================================================== -@@ -746,15 +745,12 @@ stringNew(xmlrpc_env * const envP, - enum crTreatment const crTreatment, - xmlrpc_value ** const valPP) { - -- fprintf(stderr, "stringNew entered\n"); - xmlrpc_value * valP; - - xmlrpc_validate_utf8(envP, value, length); - - if (!envP->fault_occurred) { -- fprintf(stderr, "Going to xmlrpc_createXmlrpcValue\n"); - xmlrpc_createXmlrpcValue(envP, &valP); -- fprintf(stderr, "Back from createXmlrpcValue\n"); - - if (!envP->fault_occurred) { - valP->_type = XMLRPC_TYPE_STRING; -@@ -774,7 +770,6 @@ stringNew(xmlrpc_env * const envP, - *valPP = valP; - } - } -- fprintf(stderr, "stringNew exiting\n"); - } - - --- -2.17.0 - diff --git a/0001-add-meson-buildsystem-definitions.patch b/0001-add-meson-buildsystem-definitions.patch deleted file mode 100644 index 5271b55..0000000 --- a/0001-add-meson-buildsystem-definitions.patch +++ /dev/null @@ -1,1652 +0,0 @@ -From 0fa42d185e8770a49df5c0820159a25cb402a0b8 Mon Sep 17 00:00:00 2001 -From: Igor Gnatenko -Date: Sun, 18 Dec 2016 10:24:31 +0100 -Subject: [PATCH 1/2] add meson buildsystem definitions - -Signed-off-by: Igor Gnatenko ---- - include/meson.build | 3 + - include/xmlrpc-c/config.h.in | 41 +++++++ - include/xmlrpc-c/lnsfr.sh | 9 ++ - include/xmlrpc-c/meson.build | 87 ++++++++++++++ - lib/abyss++/meson.build | 43 +++++++ - lib/abyss/meson.build | 1 + - lib/abyss/src/meson.build | 66 +++++++++++ - lib/curl_transport/meson.build | 16 +++ - lib/expat/gennmtab/meson.build | 4 + - lib/expat/meson.build | 15 +++ - lib/expat/xmlparse/meson.build | 21 ++++ - lib/expat/xmltok/meson.build | 32 ++++++ - lib/libutil++/meson.build | 28 +++++ - lib/libutil/meson.build | 41 +++++++ - lib/meson.build | 27 +++++ - lib/openssl/meson.build | 27 +++++ - lib/util/meson.build | 20 ++++ - meson.build | 209 +++++++++++++++++++++++++++++++++ - meson_options.txt | 13 +++ - src/cpp/meson.build | 223 ++++++++++++++++++++++++++++++++++++ - src/meson.build | 190 ++++++++++++++++++++++++++++++ - tools/lib/meson.build | 5 + - tools/meson.build | 17 +++ - tools/xml-rpc-api2cpp/meson.build | 21 ++++ - tools/xml-rpc-api2txt/meson.build | 2 + - tools/xml/meson.build | 15 +++ - tools/xmlrpc/meson.build | 20 ++++ - tools/xmlrpc_cpp_proxy/meson.build | 19 +++ - tools/xmlrpc_dumpserver/meson.build | 23 ++++ - tools/xmlrpc_pstream/meson.build | 21 ++++ - tools/xmlrpc_transport/meson.build | 18 +++ - transport_config.h.in | 4 + - xmlrpc-c-config | 114 ++++++++++++++++++ - 33 files changed, 1395 insertions(+) - create mode 100644 include/meson.build - create mode 100644 include/xmlrpc-c/config.h.in - create mode 100755 include/xmlrpc-c/lnsfr.sh - create mode 100644 include/xmlrpc-c/meson.build - create mode 100644 lib/abyss++/meson.build - create mode 100644 lib/abyss/meson.build - create mode 100644 lib/abyss/src/meson.build - create mode 100644 lib/curl_transport/meson.build - create mode 100644 lib/expat/gennmtab/meson.build - create mode 100644 lib/expat/meson.build - create mode 100644 lib/expat/xmlparse/meson.build - create mode 100644 lib/expat/xmltok/meson.build - create mode 100644 lib/libutil++/meson.build - create mode 100644 lib/libutil/meson.build - create mode 100644 lib/meson.build - create mode 100644 lib/openssl/meson.build - create mode 100644 lib/util/meson.build - create mode 100644 meson.build - create mode 100644 meson_options.txt - create mode 100644 src/cpp/meson.build - create mode 100644 src/meson.build - create mode 100644 tools/lib/meson.build - create mode 100644 tools/meson.build - create mode 100644 tools/xml-rpc-api2cpp/meson.build - create mode 100644 tools/xml-rpc-api2txt/meson.build - create mode 100644 tools/xml/meson.build - create mode 100644 tools/xmlrpc/meson.build - create mode 100644 tools/xmlrpc_cpp_proxy/meson.build - create mode 100644 tools/xmlrpc_dumpserver/meson.build - create mode 100644 tools/xmlrpc_pstream/meson.build - create mode 100644 tools/xmlrpc_transport/meson.build - create mode 100644 transport_config.h.in - create mode 100755 xmlrpc-c-config - -diff --git a/include/meson.build b/include/meson.build -new file mode 100644 -index 00000000..ec0964c0 ---- /dev/null -+++ b/include/meson.build -@@ -0,0 +1,3 @@ -+hdr_incdir = include_directories('.') -+ -+subdir('xmlrpc-c') -diff --git a/include/xmlrpc-c/config.h.in b/include/xmlrpc-c/config.h.in -new file mode 100644 -index 00000000..e8a633e7 ---- /dev/null -+++ b/include/xmlrpc-c/config.h.in -@@ -0,0 +1,41 @@ -+#ifndef XMLRPC_C_CONFIG_H_INCULDED -+#define XMLRPC_C_CONFIG_H_INCLUDED -+ -+/* This file, part of XML-RPC For C/C++, is meant to -+ define characteristics of this particular installation -+ that the other header files need in -+ order to compile correctly when #included in Xmlrpc-c -+ user code. -+ -+ Those header files #include this one. -+*/ -+#define XMLRPC_HAVE_WCHAR @HAVE_WCHAR_H_DEFINE@ -+#ifdef _WIN32 -+ /* SOCKET is a type defined by . Anyone who -+ uses XMLRPC_SOCKET on a WIN32 system must #include -+ -+ */ -+ #define XMLRPC_SOCKET SOCKET -+ #define XMLRPC_HAVE_TIMEVAL 0 -+ #define XMLRPC_HAVE_TIMESPEC 0 -+ #define XMLRPC_HAVE_PTHREAD 0 -+ #define XMLRPC_HAVE_WINTHREAD 1 -+#else -+ #define XMLRPC_SOCKET int -+ #define XMLRPC_HAVE_TIMEVAL 1 -+ #define XMLRPC_HAVE_TIMESPEC 1 -+ #define XMLRPC_HAVE_PTHREAD 1 -+ #define XMLRPC_HAVE_WINTHREAD 0 -+#endif -+ -+#if defined(_MSC_VER) -+ /* Newer MSVC has long long, but MSVC 6 does not */ -+ #define XMLRPC_INT64 __int64 -+ #define XMLRPC_PRId64 "I64" -+ #define XMLRPC_INT32 __int32 -+#else -+ #define XMLRPC_INT64 long long -+ #define XMLRPC_PRId64 "lld" -+ #define XMLRPC_INT32 int -+#endif -+#endif -diff --git a/include/xmlrpc-c/lnsfr.sh b/include/xmlrpc-c/lnsfr.sh -new file mode 100755 -index 00000000..83f231b7 ---- /dev/null -+++ b/include/xmlrpc-c/lnsfr.sh -@@ -0,0 +1,9 @@ -+#!/bin/sh -efu -+ -+if [ "$#" != 2 ]; then -+ exit 1 -+fi -+ -+tgt="$1"; shift -+src="$1"; shift -+ln -sfr "${DESTDIR}${tgt}" "${DESTDIR}${src}" -diff --git a/include/xmlrpc-c/meson.build b/include/xmlrpc-c/meson.build -new file mode 100644 -index 00000000..761acfd4 ---- /dev/null -+++ b/include/xmlrpc-c/meson.build -@@ -0,0 +1,87 @@ -+config_h = configure_file(input : 'config.h.in', -+ output : 'config.h', -+ configuration : conf) -+ -+compat_links = [ -+ [ 'oldxmlrpc.h', 'xmlrpc.h' ], -+ [ 'server.h', 'xmlrpc_server.h' ], -+ [ 'server_abyss.h', 'xmlrpc_abyss.h' ], -+ [ 'server_w32httpsys.h', 'xmlrpc_server_w32httpsys.h' ], -+] -+ -+hdrs = [ -+ join_paths(meson.current_build_dir(), 'config.h'), # config_h, -+ 'inttypes.h', -+ 'c_util.h', -+ 'util.h', -+ 'base.h', -+ 'json.h', -+ 'abyss.h', -+ 'abyss_unixsock.h', -+ 'abyss_winsock.h', -+ 'server.h', -+ 'server_abyss.h', -+ 'server_w32httpsys.h', -+ 'oldxmlrpc.h', -+] -+if get_option('cplusplus') -+ hdrs += [ -+ 'oldcppwrapper.hpp', -+ 'girerr.hpp', -+ 'girmem.hpp', -+ 'base.hpp', -+ 'base64.hpp', -+ 'timeout.hpp', -+ 'xml.hpp', -+ 'registry.hpp', -+ 'server_abyss.hpp', -+ 'packetsocket.hpp', -+ 'server_pstream.hpp', -+ 'AbyssEnvironment.hpp', -+ 'AbyssServer.hpp', -+ 'abyss_reqhandler_xmlrpc.hpp', -+ 'AbyssChanSwitch.hpp', -+ 'AbyssChanSwitchUnix.hpp', -+ ] -+ compat_links += [ -+ ['oldcppwrapper.hpp', 'XmlRpcCpp.h'], -+ ] -+endif -+if build_client -+ hdrs += [ -+ 'client.h', -+ 'transport.h', -+ 'client_global.h', -+ ] -+ compat_links += [ -+ ['client.h', 'xmlrpc_client.h'], -+ ] -+ if get_option('cplusplus') -+ hdrs += [ -+ 'client.hpp', -+ 'client_transport.hpp', -+ 'client_simple.hpp', -+ ] -+ endif -+endif -+if get_option('cgi-server') -+ hdrs += [ -+ 'server_cgi.h', -+ ] -+ compat_links += [ -+ ['server_cgi.h', 'xmlrpc_cgi.h'], -+ ] -+endif -+if get_option('abyss-openssl') -+ hdrs += [ -+ 'openssl_thread.h', -+ ] -+endif -+ -+install_headers(hdrs, subdir : meson.project_name()) -+# Install old names of header files for backward compatibility -+foreach compat_link : compat_links -+ tgt = join_paths(get_option('prefix'), get_option('includedir'), meson.project_name(), compat_link[0]) -+ src = join_paths(get_option('prefix'), get_option('includedir'), compat_link[1]) -+ meson.add_install_script('lnsfr.sh', tgt, src) -+endforeach -diff --git a/lib/abyss++/meson.build b/lib/abyss++/meson.build -new file mode 100644 -index 00000000..19f04cc3 ---- /dev/null -+++ b/lib/abyss++/meson.build -@@ -0,0 +1,42 @@ -+if host_machine.system() == 'windows' -+ abysspp_chan_switch = 'AbyssChanSwitchWin.cpp' -+else -+ abysspp_chan_switch = ['AbyssChanSwitchUnix.cpp'] -+ if get_option('abyss-openssl') -+ abysspp_chan_switch += ['AbyssChanSwitchOpenSsl.cpp'] -+ endif -+endif -+ -+libxmlrpc_abysspp = library( -+ 'xmlrpc_abyss++', -+ sources : [ -+ 'AbyssServer.cpp', -+ 'AbyssChanSwitch.cpp', -+ 'AbyssEnvironment.cpp', -+ abysspp_chan_switch, -+ ], -+ include_directories : [ -+ top_incdir, -+ hdr_incdir, -+ util_incdir, -+ ], -+ link_with : [ -+ libxmlrpc_abyss, -+ libxmlrpc_util, -+ libxmlrpc_utilpp, -+ ], -+ dependencies : [ -+ socket, -+ ], -+ soversion : 8, -+ version : '8.@0@'.format(version_minor), -+ install : true, -+) -+ -+pkgg.generate( -+ name : 'xmlrpc_abyss++', -+ description : 'Xmlrpc-c Abyss HTTP C++ library', -+ version : meson.project_version(), -+ requires_private : ['xmlrpc_abyss', 'xmlrpc_util', 'xmlrpc_util++'], -+ libraries : libxmlrpc_abysspp, -+) -diff --git a/lib/abyss/meson.build b/lib/abyss/meson.build -new file mode 100644 -index 00000000..9537275d ---- /dev/null -+++ b/lib/abyss/meson.build -@@ -0,0 +1 @@ -+subdir('src') -diff --git a/lib/abyss/src/meson.build b/lib/abyss/src/meson.build -new file mode 100644 -index 00000000..daa91fce ---- /dev/null -+++ b/lib/abyss/src/meson.build -@@ -0,0 +1,65 @@ -+abyss_deps = [socket] -+if host_machine.system() == 'windows' -+ abyss_socket = 'socket_win.c' -+ abyss_thread = 'thread_windows.c' -+ abyss_deps += [threads] -+else -+ abyss_socket = ['socket_unix.c'] -+ if get_option('abyss-openssl') -+ abyss_socket += ['socket_openssl.c'] -+ abyss_deps += [openssl] -+ endif -+ abyss_socket += ['sockutil.c'] -+ -+ if get_option('abyss-threads') -+ abyss_thread = 'thread_pthread.c' -+ abyss_deps += [threads] -+ else -+ abyss_thread = 'thread_fork.c' -+ endif -+endif -+ -+libxmlrpc_abyss = library( -+ 'xmlrpc_abyss', -+ sources : [ -+ 'channel.c', -+ 'chanswitch.c', -+ 'conf.c', -+ 'conn.c', -+ 'data.c', -+ 'date.c', -+ 'file.c', -+ 'handler.c', -+ 'http.c', -+ 'init.c', -+ 'response.c', -+ 'server.c', -+ 'session.c', -+ 'sessionReadRequest.c', -+ 'socket.c', -+ abyss_socket, -+ 'token.c', -+ abyss_thread, -+ 'trace.c', -+ ], -+ include_directories : [ -+ top_incdir, -+ hdr_incdir, -+ util_incdir, -+ ], -+ link_with : [ -+ libxmlrpc_util, -+ ], -+ dependencies : abyss_deps, -+ soversion : 3, -+ version : '3.@0@'.format(version_minor), -+ install : true, -+) -+ -+pkgg.generate( -+ name : 'xmlrpc_abyss', -+ description : 'Xmlrpc-c Abyss HTTP C library', -+ version : meson.project_version(), -+ libraries : libxmlrpc_abyss, -+ requires_private : 'xmlrpc_util', -+) -diff --git a/lib/curl_transport/meson.build b/lib/curl_transport/meson.build -new file mode 100644 -index 00000000..f5ff3040 ---- /dev/null -+++ b/lib/curl_transport/meson.build -@@ -0,0 +1,16 @@ -+libcurl = dependency('libcurl') -+if libcurl.version().version_compare('<7.16.0') -+ xmlrpc_curl_cargs = ['-DNEED_CURL_TYPES_H'] -+else -+ xmlrpc_curl_cargs = [] -+endif -+xmlrpc_curl_transport = declare_dependency( -+ include_directories : include_directories('.'), -+ sources : [ -+ 'xmlrpc_curl_transport.c', -+ 'curltransaction.c', -+ 'curlmulti.c', -+ ], -+ compile_args : xmlrpc_curl_cargs, -+ dependencies : libcurl, -+) -diff --git a/lib/expat/gennmtab/meson.build b/lib/expat/gennmtab/meson.build -new file mode 100644 -index 00000000..94764c22 ---- /dev/null -+++ b/lib/expat/gennmtab/meson.build -@@ -0,0 +1,4 @@ -+gennmtab = executable( -+ 'gennmtab', 'gennmtab.c', -+ include_directories : top_incdir, -+) -diff --git a/lib/expat/meson.build b/lib/expat/meson.build -new file mode 100644 -index 00000000..df9ca84c ---- /dev/null -+++ b/lib/expat/meson.build -@@ -0,0 +1,14 @@ -+subdir('gennmtab') -+subdir('xmltok') -+subdir('xmlparse') -+ -+pkgg.generate( -+ name : 'xmlrpc_expat', -+ description : 'Xmlrpc-c XML parsing library', -+ version : meson.project_version(), -+ requires_private: 'xmlrpc_util', -+ libraries : [ -+ libxmlrpc_xmlparse, -+ libxmlrpc_xmltok, -+ ], -+) -diff --git a/lib/expat/xmlparse/meson.build b/lib/expat/xmlparse/meson.build -new file mode 100644 -index 00000000..39c0bf26 ---- /dev/null -+++ b/lib/expat/xmlparse/meson.build -@@ -0,0 +1,21 @@ -+xmlparse_incdir = include_directories('.') -+ -+libxmlrpc_xmlparse = library( -+ 'xmlrpc_xmlparse', -+ sources : [ -+ 'xmlparse.c', -+ ], -+ include_directories : [ -+ top_incdir, -+ hdr_incdir, -+ util_incdir, -+ xmltok_incdir, -+ ], -+ link_with : [ -+ libxmlrpc_util, -+ libxmlrpc_xmltok, -+ ], -+ soversion : '3', -+ version : '3.@0@'.format(version_minor), -+ install : true, -+) -diff --git a/lib/expat/xmltok/meson.build b/lib/expat/xmltok/meson.build -new file mode 100644 -index 00000000..6629719c ---- /dev/null -+++ b/lib/expat/xmltok/meson.build -@@ -0,0 +1,32 @@ -+nametab = custom_target( -+ 'nametab.h', -+ output : 'nametab.h', -+ command : gennmtab, -+ capture : true, -+) -+ -+if host_machine.endian() == 'big' -+ xmltok_endian_flag = '-DXML_BYTE_ORDER=21' -+else -+ xmltok_endian_flag = '-DXML_BYTE_ORDER=12' -+endif -+ -+libxmlrpc_xmltok = library( -+ 'xmlrpc_xmltok', -+ sources : [ -+ 'xmltok.c', -+ 'xmlrole.c', -+ nametab, -+ ], -+ include_directories : [ -+ top_incdir, -+ hdr_incdir, -+ util_incdir, -+ ], -+ c_args : [xmltok_endian_flag], -+ soversion : '3', -+ version : '3.@0@'.format(version_minor), -+ install : true, -+) -+ -+xmltok_incdir = include_directories('.') -diff --git a/lib/libutil++/meson.build b/lib/libutil++/meson.build -new file mode 100644 -index 00000000..9764c08d ---- /dev/null -+++ b/lib/libutil++/meson.build -@@ -0,0 +1,27 @@ -+libxmlrpc_utilpp = library( -+ 'xmlrpc_util++', -+ sources : [ -+ 'Lock.cpp', -+ 'base64.cpp', -+ 'env_wrap.cpp', -+ 'girerr.cpp', -+ 'girmem.cpp', -+ ], -+ include_directories : [ -+ top_incdir, -+ hdr_incdir, -+ util_incdir, -+ ], -+ link_with : libxmlrpc_util, -+ soversion : '8', -+ version : '8.@0@'.format(version_minor), -+ install : true, -+) -+ -+pkgg.generate( -+ name : 'xmlrpc_util++', -+ description : 'Xmlrpc-c C++ utility functions library', -+ version : meson.project_version(), -+ requires_private : 'xmlrpc_util', -+ libraries : libxmlrpc_utilpp, -+) -diff --git a/lib/libutil/meson.build b/lib/libutil/meson.build -new file mode 100644 -index 00000000..bb1cc67d ---- /dev/null -+++ b/lib/libutil/meson.build -@@ -0,0 +1,40 @@ -+# FIXME: it's default already to 1 in xmlrpc_config.h -+util_lock_pthread = ['lock_pthread.c'] -+# TODO: handle mscvrt.dll properly -+util_lock_windows = [] # lock_windows.c -+ -+libxmlrpc_util = library( -+ 'xmlrpc_util', -+ sources : [ -+ 'asprintf.c', -+ 'base64.c', -+ 'error.c', -+ 'lock_platform.c', -+ util_lock_pthread, -+ util_lock_windows, -+ 'lock_none.c', -+ 'make_printable.c', -+ 'memblock.c', -+ 'mempool.c', -+ 'select.c', -+ 'sleep.c', -+ 'string_number.c', -+ 'time.c', -+ 'utf8.c', -+ ], -+ include_directories : [ -+ top_incdir, -+ hdr_incdir, -+ util_incdir, -+ ], -+ soversion : 4, -+ version : '4.@0@'.format(version_minor), -+ install : true, -+) -+ -+pkgg.generate( -+ name : 'xmlrpc_util', -+ description : 'Xmlrpc-c utility functions library', -+ version : meson.project_version(), -+ libraries : libxmlrpc_util, -+) -diff --git a/lib/meson.build b/lib/meson.build -new file mode 100644 -index 00000000..e78c1f83 ---- /dev/null -+++ b/lib/meson.build -@@ -0,0 +1,27 @@ -+subdir('util') -+subdir('libutil') -+if get_option('cplusplus') -+ subdir('libutil++') -+endif -+if get_option('abyss-server') -+ subdir('abyss') -+ if get_option('cplusplus') -+ subdir('abyss++') -+ endif -+endif -+if get_option('wininet-client') -+ subdir('wininet_transport') -+endif -+if get_option('curl-client') -+ subdir('curl_transport') -+endif -+if get_option('libwww-client') -+ subdir('libwww_transport') -+endif -+if not get_option('libxml2-backend') -+ subdir('expat') -+endif -+ -+if openssl.found() -+ subdir('openssl') -+endif -diff --git a/lib/openssl/meson.build b/lib/openssl/meson.build -new file mode 100644 -index 00000000..f65a4dc1 ---- /dev/null -+++ b/lib/openssl/meson.build -@@ -0,0 +1,26 @@ -+libxmlrpc_openssl = library( -+ 'xmlrpc_openssl', -+ sources : [ -+ 'xmlrpc_openssl_thread.c', -+ ], -+ include_directories : [ -+ top_incdir, -+ hdr_incdir, -+ util_incdir, -+ ], -+ link_with : [ -+ libxmlrpc_util, -+ ], -+ dependencies : openssl, -+ soversion : '1', -+ version : '1.@0@'.format(version_minor), -+ install : true, -+) -+ -+pkgg.generate( -+ name : 'xmlrpc_openssl', -+ description : 'Openssl convenience function from Xmlrpc-c package', -+ version : meson.project_version(), -+ requires_private : 'xmlrpc_util', -+ libraries : libxmlrpc_openssl, -+) -diff --git a/lib/util/meson.build b/lib/util/meson.build -new file mode 100644 -index 00000000..4cae4926 ---- /dev/null -+++ b/lib/util/meson.build -@@ -0,0 +1,20 @@ -+util_incdir = include_directories('include') -+util_casprintf_dep = declare_dependency( -+ include_directories : util_incdir, -+ sources : 'casprintf.c', -+) -+util_dep = declare_dependency( -+ dependencies : util_casprintf_dep, -+ sources : [ -+ 'cmdline_parser.c', -+ 'getoptx.c', -+ 'string_parser.c', -+ 'stripcaseeq.c', -+ ], -+) -+if get_option('cplusplus') -+ util_cpp_dep = declare_dependency( -+ dependencies : util_dep, -+ sources : 'cmdline_parser_cpp.cpp', -+ ) -+endif -diff --git a/meson.build b/meson.build -new file mode 100644 -index 00000000..52a0f0eb ---- /dev/null -+++ b/meson.build -@@ -0,0 +1,209 @@ -+project('xmlrpc-c', 'c', -+ version : '1.51.0', -+ default_options : [ -+ 'b_asneeded=true', -+ 'b_lundef=true', -+ 'warning_level=1', -+ ], -+ meson_version : '>=0.36.0') -+ -+version_array = meson.project_version().split('.') -+version_major = version_array[0].to_int() -+version_minor = version_array[1].to_int() -+version_point = version_array[2].to_int() -+ -+# version.h -+version_conf = configuration_data() -+version_conf.set_quoted('XMLRPC_C_VERSION', meson.project_version()) -+version_conf.set('XMLRPC_VERSION_MAJOR', version_major) -+version_conf.set('XMLRPC_VERSION_MINOR', version_minor) -+version_conf.set('XMLRPC_VERSION_POINT', version_point) -+configure_file(output : 'version.h', configuration : version_conf) -+ -+if get_option('wininet-client') or get_option('libwww-client') -+ error('only curl-client is implemented yet') -+endif -+ -+if get_option('cplusplus') -+ add_languages('cpp') -+endif -+ -+cc = meson.get_compiler('c') -+cxx = meson.get_compiler('cpp') -+ -+optflags = [ -+ '-Wno-uninitialized', -+ '-Wundef', -+ '-Wno-unknown-pragmas', -+] -+cflags = [ -+ '-Wmissing-declarations', -+ '-Wstrict-prototypes', -+ '-Wmissing-prototypes', -+ '-Wimplicit', -+] + optflags -+cxxflags = [ -+ '-Wsynth', -+] + optflags -+foreach cflag : cflags -+ if cc.has_argument(cflag) -+ add_project_arguments(cflag, language : 'c') -+ endif -+endforeach -+foreach cxxflag : cxxflags -+ if cxx.has_argument(cxxflag) -+ add_project_arguments(cxxflag, language : 'cpp') -+ endif -+endforeach -+ -+pkgg = import('pkgconfig') -+ -+if not cc.has_function('vsnprintf') -+ error('your C library does not provide vsnprintf') -+endif -+if not cc.has_header('stdarg.h') -+ error('stdarg.h is required to build this library') -+endif -+ -+conf = configuration_data() -+ -+check_headers = [ -+ 'wchar.h', -+ 'sys/filio.h', # Needed by Abyss on Solaris -+ 'sys/ioctl.h', # Needed by Abyss on Solaris -+ 'sys/select.h', -+] -+check_functions = [ -+ 'wcsncmp', # Unicode function needed by test suites -+ 'setgroups', # CygWin doesn't provide setgroups -+ 'asprintf', -+ 'setenv', -+ 'strtoll', -+ 'strtoull', -+ 'strtoq', -+ 'strtouq', -+ '__strtoll', -+ '__strtoull', -+ '_strtoui64', -+ 'pselect', # uclib doesn't have pselect -+ 'gettimeofday', # Windows doesn't have gettimeofday -+ 'localtime_r', # Windows doesn't have localtime_r -+ 'gmtime_r', # Windows doesn't have gmtime_r -+ 'strcasecmp', # Windows doesn't have strcasecmp -+ 'stricmp', -+ '_stricmp', -+] -+ -+foreach hdr : check_headers -+ if cc.has_header(hdr) -+ conf.set('HAVE_@0@_DEFINE'.format(hdr.to_upper().underscorify()), 1) -+ else -+ conf.set('HAVE_@0@_DEFINE'.format(hdr.to_upper().underscorify()), 0) -+ endif -+endforeach -+foreach func : check_functions -+ if cc.has_function(func) -+ conf.set('HAVE_@0@_DEFINE'.format(func.to_upper()), 1) -+ else -+ conf.set('HAVE_@0@_DEFINE'.format(func.to_upper()), 0) -+ endif -+endforeach -+ -+if not cc.compiles(''' -+#include -+ -+int -+main () -+{ -+ va_list list1, list2; -+ list1 = list2; -+ return 0; -+} -+ ''') -+ conf.set('VA_LIST_IS_ARRAY_DEFINE', 1) -+else -+ conf.set('VA_LIST_IS_ARRAY_DEFINE', 0) -+endif -+ -+if cc.compiles('int x __attribute__((__unused__));') -+ conf.set('ATTR_UNUSED', '__attribute__((__unused__))') -+else -+ conf.set('ATTR_UNUSED', '') -+endif -+ -+if host_machine.system() == 'windows' -+ conf.set('DIRECTORY_SEPARATOR', '\\') -+else -+ conf.set('DIRECTORY_SEPARATOR', '/') -+endif -+ -+openssl = dependency('openssl', required : get_option('abyss-openssl')) -+if get_option('abyss-openssl') -+ conf.set('HAVE_ABYSS_OPENSSL_DEFINE', 1) -+else -+ conf.set('HAVE_ABYSS_OPENSSL_DEFINE', 0) -+endif -+ -+if get_option('libwww-ssl') -+ conf.set('HAVE_LIBWWW_SSL_DEFINE', 1) -+else -+ conf.set('HAVE_LIBWWW_SSL_DEFINE', 0) -+endif -+ -+configure_file(input : 'xmlrpc_config.h.in', output : 'xmlrpc_config.h', configuration : conf) -+ -+ncurses = cc.find_library('ncurses', required : false) -+readline = cc.find_library('readline', required : false) -+ -+build_xmlrpc_pstream = false -+ -+if not get_option('wininet-client') and not get_option('curl-client') and not get_option('libwww-client') -+ build_client = false -+ build_tools = false -+ message('We are not building any client XML transport, therefore WE WILL NOT BUILD THE CLIENT LIBRARY') -+else -+ build_client = true -+ if ncurses.found() and readline.found() -+ build_xmlrpc_pstream = true -+ endif -+ build_tools = true -+ # transport_config.h -+ transport_conf = configuration_data() -+ if get_option('wininet-client') -+ transport_conf.set('MUST_BUILD_WININET_CLIENT', 1) -+ transport_conf.set_quoted('XMLRPC_DEFAULT_TRANSPORT', 'wininet') -+ else -+ transport_conf.set('MUST_BUILD_WININET_CLIENT', 0) -+ endif -+ if get_option('curl-client') -+ transport_conf.set('MUST_BUILD_CURL_CLIENT', 1) -+ transport_conf.set_quoted('XMLRPC_DEFAULT_TRANSPORT', 'curl') -+ else -+ transport_conf.set('MUST_BUILD_CURL_CLIENT', 0) -+ endif -+ if get_option('libwww-client') -+ transport_conf.set('MUST_BUILD_LIBWWW_CLIENT', 1) -+ transport_conf.set_quoted('XMLRPC_DEFAULT_TRANSPORT', 'libwww') -+ else -+ transport_conf.set('MUST_BUILD_LIBWWW_CLIENT', 0) -+ endif -+ configure_file(input : 'transport_config.h.in', output : 'transport_config.h', configuration : transport_conf) -+endif -+ -+threads = dependency('threads') -+socket = cc.find_library('socket', required : false) -+ -+if get_option('libxml2-backend') -+ libxml2 = dependency('libxml-2.0') -+endif -+ -+top_incdir = include_directories('.') -+ -+subdir('include') -+subdir('lib') -+subdir('src') -+if build_tools -+ subdir('tools') -+endif -+ -+install_data('xmlrpc-c-config', install_dir : get_option('bindir')) -diff --git a/meson_options.txt b/meson_options.txt -new file mode 100644 -index 00000000..4e2c1607 ---- /dev/null -+++ b/meson_options.txt -@@ -0,0 +1,13 @@ -+option('wininet-client', type : 'boolean', value : false, description : 'Build the Wininet client XML transport') -+option('curl-client', type : 'boolean', value : true, description : 'Build the Curl client XML transport') -+option('libwww-client', type : 'boolean', value : false, description : 'Build the Libwww client XML transport') -+ -+option('abyss-server', type : 'boolean', value : true, description : 'Build the Abyss server module') -+option('abyss-threads', type: 'boolean', value : true, description : 'Use fork in Abyss instead of pthreads') -+option('abyss-openssl', type: 'boolean', value : true, description : 'Build Abyss Openssl channel function') -+option('cgi-server', type : 'boolean', value : true, description : 'Build the CGI server module') -+ -+option('cplusplus', type : 'boolean', value : true, description : 'Build the C++ wrapper classes or tools') -+ -+option('libwww-ssl', type : 'boolean', value : false, description : 'Use SSL with libwww') -+option('libxml2-backend', type : 'boolean', value : false, description : 'Use libxml2 instead of built-in expat') -diff --git a/src/cpp/meson.build b/src/cpp/meson.build -new file mode 100644 -index 00000000..f0fd74f6 ---- /dev/null -+++ b/src/cpp/meson.build -@@ -0,0 +1,218 @@ -+libxmlrpc_cpp = library( -+ 'xmlrpc_cpp', -+ sources : [ -+ 'XmlRpcCpp.cpp', -+ ], -+ include_directories : [ -+ hdr_incdir, -+ ], -+ link_with : [ -+ libxmlrpc, -+ libxmlrpc_util, -+ libxmlrpc_server, -+ ], -+ soversion : 8, -+ version : '8.@0@'.format(version_minor), -+ install : true, -+) -+ -+libxmlrpcpp = library( -+ 'xmlrpc++', -+ sources : [ -+ 'fault.cpp', -+ 'global.cpp', -+ 'outcome.cpp', -+ 'param_list.cpp', -+ 'value.cpp', -+ 'xml.cpp', -+ ], -+ include_directories : [ -+ top_incdir, -+ hdr_incdir, -+ util_incdir, -+ ], -+ link_with : [ -+ libxmlrpc, -+ libxmlrpc_util, -+ libxmlrpc_utilpp, -+ ], -+ soversion : 8, -+ version : '8.@0@'.format(version_minor), -+ install : true, -+) -+pkgg.generate( -+ name : 'xmlrpc++', -+ description : 'Xmlrpc-c basic XML-RPC C++ library', -+ version : meson.project_version(), -+ requires_private : ['xmlrpc', 'xmlrpc_util', 'xmlrpc_util++'], -+ libraries : libxmlrpcpp, -+) -+ -+libxmlrpc_serverpp = library( -+ 'xmlrpc_server++', -+ sources : [ -+ 'registry.cpp', -+ ], -+ include_directories : [ -+ hdr_incdir, -+ ], -+ link_with : [ -+ libxmlrpc, -+ libxmlrpcpp, -+ libxmlrpc_server, -+ libxmlrpc_util, -+ libxmlrpc_utilpp, -+ ], -+ soversion : 8, -+ version : '8.@0@'.format(version_minor), -+ install : true, -+) -+pkgg.generate( -+ name : 'xmlrpc_server++', -+ description : 'Xmlrpc-c XML-RPC server C++ library', -+ version : meson.project_version(), -+ requires_private : ['xmlrpc', 'xmlrpc++', 'xmlrpc_server', 'xmlrpc_util', 'xmlrpc_util++'], -+ libraries : libxmlrpc_serverpp, -+) -+ -+if get_option('abyss-server') -+ libxmlrpc_server_abysspp = library( -+ 'xmlrpc_server_abyss++', -+ sources : [ -+ 'server_abyss.cpp', -+ 'abyss_reqhandler_xmlrpc.cpp', -+ ], -+ include_directories : [ -+ top_incdir, -+ hdr_incdir, -+ util_incdir, -+ ], -+ link_with : [ -+ libxmlrpc_abyss, -+ libxmlrpc_abysspp, -+ libxmlrpc_serverpp, -+ libxmlrpc_server_abyss, -+ libxmlrpc_util, -+ libxmlrpc_utilpp, -+ ], -+ soversion : 8, -+ version : '8.@0@'.format(version_minor), -+ install : true, -+ ) -+ pkgg.generate( -+ name : 'xmlrpc_server_abyss++', -+ description : 'Xmlrpc-c Abyss XML-RPC server C++ library', -+ version : meson.project_version(), -+ requires_private : ['xmlrpc_abyss', 'xmlrpc_abyss++', 'xmlrpc_server++', 'xmlrpc_server_abyss', 'xmlrpc_util', 'xmlrpc_util++'], -+ libraries : libxmlrpc_server_abysspp, -+ ) -+endif -+ -+if get_option('cgi-server') -+ libxmlrpc_server_cgipp = library( -+ 'xmlrpc_server_cgi++', -+ sources : [ -+ 'server_cgi.cpp', -+ ], -+ include_directories : [ -+ top_incdir, -+ hdr_incdir, -+ ], -+ link_with : [ -+ libxmlrpc, -+ libxmlrpcpp, -+ libxmlrpc_serverpp, -+ libxmlrpc_utilpp, -+ ], -+ soversion : 8, -+ version : '8.@0@'.format(version_minor), -+ install : true, -+ ) -+endif -+ -+libxmlrpc_packetsocket = library( -+ 'xmlrpc_packetsocket', -+ sources : [ -+ 'packetsocket.cpp', -+ ], -+ include_directories : [ -+ top_incdir, -+ hdr_incdir, -+ util_incdir, -+ ], -+ link_with : [ -+ libxmlrpcpp, -+ libxmlrpc_utilpp, -+ ], -+ soversion : 8, -+ version : '8.@0@'.format(version_minor), -+ install : true, -+) -+ -+if build_xmlrpc_pstream -+ libxmlrpc_server_pstreampp = library( -+ 'xmlrpc_server_pstream++', -+ sources : [ -+ 'server_pstream_conn.cpp', -+ 'server_pstream.cpp', -+ ], -+ include_directories : [ -+ top_incdir, -+ hdr_incdir, -+ ], -+ link_with : [ -+ libxmlrpcpp, -+ libxmlrpc_serverpp, -+ libxmlrpc_packetsocket, -+ libxmlrpc_utilpp, -+ ], -+ soversion : 8, -+ version : '8.@0@'.format(version_minor), -+ install : true, -+ ) -+ pkgg.generate( -+ name : 'xmlrpc_server_pstream', -+ description : 'Xmlrpc-c packet-stream XML-RPC server library', -+ version : meson.project_version(), -+ requires_private : ['xmlrpc++', 'xmlrpc_server++', 'xmlrpc_util++'], -+ libraries : [libxmlrpc_server_pstreampp, libxmlrpc_packetsocket], -+ ) -+endif -+ -+if build_client -+ libxmlrpc_clientpp = library( -+ 'xmlrpc_client++', -+ sources : [ -+ 'client.cpp', -+ 'client_simple.cpp', -+ 'curl.cpp', -+ 'libwww.cpp', -+ 'wininet.cpp', -+ 'pstream.cpp', -+ ], -+ include_directories : [ -+ top_incdir, -+ hdr_incdir, -+ util_incdir, -+ ], -+ link_with : [ -+ libxmlrpc, -+ libxmlrpcpp, -+ libxmlrpc_client, -+ libxmlrpc_packetsocket, -+ libxmlrpc_util, -+ libxmlrpc_utilpp, -+ ], -+ soversion : 8, -+ version : '8.@0@'.format(version_minor), -+ install : true, -+ ) -+ pkgg.generate( -+ name : 'xmlrpc_client++', -+ description : 'Xmlrpc-c XML-RPC client C++ library', -+ version : meson.project_version(), -+ requires_private : ['xmlrpc', 'xmlrpc++', 'xmlrpc_client', 'xmlrpc_util', 'xmlrpc_util++'], -+ libraries : libxmlrpc_clientpp, -+ libraries_private : libxmlrpc_packetsocket, -+ ) -+endif -diff --git a/src/meson.build b/src/meson.build -new file mode 100644 -index 00000000..8dd22486 ---- /dev/null -+++ b/src/meson.build -@@ -0,0 +1,185 @@ -+xmlrpc_deps = [] -+xmlrpc_incs = [] -+xmlrpc_libs = [libxmlrpc_util] -+xmlrpc_pkgconfig_req = ['xmlrpc_util'] -+# TODO: handle clients -+ -+if get_option('libxml2-backend') -+ xmlrpc_xml_parser = 'xmlrpc_libxml2.c' -+ xmlrpc_deps += [libxml2] -+ xmlrpc_pkgconfig_req += ['libxml-2.0'] -+else -+ xmlrpc_xml_parser = 'xmlrpc_expat.c' -+ xmlrpc_incs += [xmlparse_incdir] -+ xmlrpc_libs += [libxmlrpc_xmlparse] -+ xmlrpc_pkgconfig_req += ['xmlrpc_expat'] -+endif -+ -+libxmlrpc = library( -+ 'xmlrpc', -+ sources : [ -+ 'base_global.c', -+ 'double.c', -+ 'json.c', -+ 'parse_datetime.c', -+ 'parse_value.c', -+ 'resource.c', -+ 'trace.c', -+ 'version.c', -+ 'xmlrpc_data.c', -+ 'xmlrpc_datetime.c', -+ 'xmlrpc_string.c', -+ 'xmlrpc_array.c', -+ 'xmlrpc_struct.c', -+ 'xmlrpc_build.c', -+ 'xmlrpc_decompose.c', -+ xmlrpc_xml_parser, -+ 'xmlrpc_parse.c', -+ 'xmlrpc_serialize.c', -+ 'xmlrpc_authcookie.c', -+ ], -+ include_directories : [ -+ top_incdir, -+ hdr_incdir, -+ util_incdir, -+ ] + xmlrpc_incs, -+ link_with : xmlrpc_libs, -+ dependencies : xmlrpc_deps, -+ soversion : 3, -+ version : '3.@0@'.format(version_minor), -+ install : true, -+) -+pkgg.generate( -+ name : 'xmlrpc', -+ description : 'Xmlrpc-c basic XML-RPC library', -+ version : meson.project_version(), -+ requires_private : xmlrpc_pkgconfig_req, -+ libraries : libxmlrpc, -+) -+ -+libxmlrpc_server = library( -+ 'xmlrpc_server', -+ sources : [ -+ 'registry.c', -+ 'method.c', -+ 'system_method.c', -+ ], -+ include_directories : [ -+ top_incdir, -+ hdr_incdir, -+ util_incdir, -+ ], -+ link_with : [ -+ libxmlrpc, -+ libxmlrpc_util, -+ ], -+ soversion : 3, -+ version : '3.@0@'.format(version_minor), -+ install : true, -+) -+pkgg.generate( -+ name : 'xmlrpc_server', -+ description : 'Xmlrpc-c XML-RPC server library', -+ version : meson.project_version(), -+ requires_private : ['xmlrpc', 'xmlrpc_util'], -+ libraries : libxmlrpc_server, -+) -+ -+if get_option('abyss-server') -+ libxmlrpc_server_abyss = library( -+ 'xmlrpc_server_abyss', -+ sources : [ -+ 'xmlrpc_server_abyss.c', -+ 'abyss_handler.c', -+ ], -+ include_directories : [ -+ top_incdir, -+ hdr_incdir, -+ util_incdir, -+ ], -+ link_with : [ -+ libxmlrpc, -+ libxmlrpc_server, -+ libxmlrpc_abyss, -+ libxmlrpc_util, -+ ], -+ soversion : 3, -+ version : '3.@0@'.format(version_minor), -+ install : true, -+ ) -+ pkgg.generate( -+ name : 'xmlrpc_server_abyss', -+ description : 'Xmlrpc-c Abyss XML-RPC server library', -+ version : meson.project_version(), -+ requires_private : ['xmlrpc', 'xmlrpc_server', 'xmlrpc_abyss', 'xmlrpc_util'], -+ libraries : libxmlrpc_server_abyss, -+ ) -+endif -+ -+if get_option('cgi-server') -+ libxmlrpc_server_cgi = library( -+ 'xmlrpc_server_cgi', -+ sources : [ -+ 'xmlrpc_server_cgi.c', -+ ], -+ include_directories : [ -+ top_incdir, -+ hdr_incdir, -+ util_incdir, -+ ], -+ link_with : [ -+ libxmlrpc, -+ libxmlrpc_server, -+ libxmlrpc_util, -+ ], -+ soversion : 3, -+ version : '3.@0@'.format(version_minor), -+ install : true, -+ ) -+ pkgg.generate( -+ name : 'xmlrpc_server_cgi', -+ description : 'Xmlrpc-c CGI XML-RPC server library', -+ version : meson.project_version(), -+ requires_private : ['xmlrpc', 'xmlrpc_server', 'xmlrpc_util'], -+ libraries : libxmlrpc_server_cgi, -+ ) -+endif -+ -+if build_client -+ xmlrpc_client_transports = [] -+ if get_option('curl-client') -+ xmlrpc_client_transports += [xmlrpc_curl_transport] -+ endif -+ libxmlrpc_client = library( -+ 'xmlrpc_client', -+ sources : [ -+ 'xmlrpc_client.c', -+ 'xmlrpc_client_global.c', -+ 'xmlrpc_server_info.c', -+ ], -+ include_directories : [ -+ top_incdir, -+ hdr_incdir, -+ util_incdir, -+ ], -+ link_with : [ -+ libxmlrpc, -+ libxmlrpc_util, -+ ], -+ dependencies : xmlrpc_client_transports, -+ soversion : 3, -+ version : '3.@0@'.format(version_minor), -+ install : true, -+ ) -+ pkgg.generate( -+ name : 'xmlrpc_client', -+ description : 'Xmlrpc-c XML-RPC client library', -+ version : meson.project_version(), -+ requires_private : ['xmlrpc', 'xmlrpc_util'], -+ libraries : libxmlrpc_client, -+ ) -+endif -+ -+if get_option('cplusplus') -+ subdir('cpp') -+endif -diff --git a/tools/lib/meson.build b/tools/lib/meson.build -new file mode 100644 -index 00000000..fc6929b8 ---- /dev/null -+++ b/tools/lib/meson.build -@@ -0,0 +1,5 @@ -+dumpvalue = declare_dependency( -+ include_directories : include_directories('include'), -+ sources : 'dumpvalue.c', -+ link_with : [libxmlrpc_util, libxmlrpc], -+) -diff --git a/tools/meson.build b/tools/meson.build -new file mode 100644 -index 00000000..f48a28f9 ---- /dev/null -+++ b/tools/meson.build -@@ -0,0 +1,17 @@ -+subdir('lib') -+subdir('xml') -+if build_client -+ subdir('xmlrpc') -+ subdir('xmlrpc_transport') -+ if get_option('cplusplus') -+ subdir('xml-rpc-api2cpp') -+ subdir('xml-rpc-api2txt') -+ subdir('xmlrpc_cpp_proxy') -+ if build_xmlrpc_pstream -+ subdir('xmlrpc_pstream') -+ endif -+ endif -+endif -+if get_option('cplusplus') -+ subdir('xmlrpc_dumpserver') -+endif -diff --git a/tools/xml-rpc-api2cpp/meson.build b/tools/xml-rpc-api2cpp/meson.build -new file mode 100644 -index 00000000..ec01212f ---- /dev/null -+++ b/tools/xml-rpc-api2cpp/meson.build -@@ -0,0 +1,21 @@ -+executable( -+ 'xml-rpc-api2cpp', -+ sources : [ -+ 'xml-rpc-api2cpp.cpp', -+ 'DataType.cpp', -+ 'XmlRpcFunction.cpp', -+ 'XmlRpcClass.cpp', -+ 'SystemProxy.cpp', -+ ], -+ include_directories : [ -+ hdr_incdir, -+ ], -+ link_with : [ -+ libxmlrpc, -+ libxmlrpc_client, -+ libxmlrpc_cpp, -+ libxmlrpc_util, -+ ], -+ install : true, -+) -+install_man('xml-rpc-api2cpp.1') -diff --git a/tools/xml-rpc-api2txt/meson.build b/tools/xml-rpc-api2txt/meson.build -new file mode 100644 -index 00000000..2a0a61e8 ---- /dev/null -+++ b/tools/xml-rpc-api2txt/meson.build -@@ -0,0 +1,2 @@ -+install_data('xml-rpc-api2txt', install_dir : get_option('bindir')) -+install_man('xml-rpc-api2txt.1') -diff --git a/tools/xml/meson.build b/tools/xml/meson.build -new file mode 100644 -index 00000000..2d856c60 ---- /dev/null -+++ b/tools/xml/meson.build -@@ -0,0 +1,15 @@ -+executable( -+ 'xmlrpc_parsecall', -+ sources : [ -+ 'xmlrpc_parsecall.c', -+ ], -+ dependencies : [ -+ util_casprintf_dep, -+ dumpvalue, -+ ], -+ include_directories : [ -+ top_incdir, -+ hdr_incdir, -+ ], -+ install : true, -+) -diff --git a/tools/xmlrpc/meson.build b/tools/xmlrpc/meson.build -new file mode 100644 -index 00000000..e1e8d552 ---- /dev/null -+++ b/tools/xmlrpc/meson.build -@@ -0,0 +1,20 @@ -+executable( -+ 'xmlrpc', -+ sources : [ -+ 'xmlrpc.c', -+ ], -+ dependencies : [ -+ dumpvalue, -+ util_dep, -+ ], -+ include_directories : [ -+ top_incdir, -+ hdr_incdir, -+ util_incdir, -+ ], -+ link_with : [ -+ libxmlrpc, -+ libxmlrpc_client, -+ ], -+ install : true, -+) -diff --git a/tools/xmlrpc_cpp_proxy/meson.build b/tools/xmlrpc_cpp_proxy/meson.build -new file mode 100644 -index 00000000..f3fc9988 ---- /dev/null -+++ b/tools/xmlrpc_cpp_proxy/meson.build -@@ -0,0 +1,19 @@ -+executable( -+ 'xmlrpc_cpp_proxy', -+ sources : [ -+ 'xmlrpc_cpp_proxy.cpp', -+ 'xmlrpcMethod.cpp', -+ 'xmlrpcType.cpp', -+ 'proxyClass.cpp', -+ 'systemProxy.cpp', -+ ], -+ include_directories : [ -+ hdr_incdir, -+ ], -+ link_with : [ -+ libxmlrpcpp, -+ libxmlrpc_clientpp, -+ libxmlrpc_utilpp, -+ ], -+ install : true, -+) -diff --git a/tools/xmlrpc_dumpserver/meson.build b/tools/xmlrpc_dumpserver/meson.build -new file mode 100644 -index 00000000..b7aa7cfc ---- /dev/null -+++ b/tools/xmlrpc_dumpserver/meson.build -@@ -0,0 +1,23 @@ -+executable( -+ 'xmlrpc_dumpserver', -+ sources : [ -+ 'xmlrpc_dumpserver.c', -+ ], -+ include_directories : [ -+ top_incdir, -+ hdr_incdir, -+ util_incdir, -+ ], -+ link_with : [ -+ libxmlrpc, -+ libxmlrpc_server, -+ libxmlrpc_server_abyss, -+ libxmlrpc_util, -+ ], -+ dependencies : [ -+ util_dep, -+ util_casprintf_dep, -+ dumpvalue, -+ ], -+ install : true, -+) -diff --git a/tools/xmlrpc_pstream/meson.build b/tools/xmlrpc_pstream/meson.build -new file mode 100644 -index 00000000..9cd3eb85 ---- /dev/null -+++ b/tools/xmlrpc_pstream/meson.build -@@ -0,0 +1,21 @@ -+executable( -+ 'xmlrpc_pstream', -+ sources : [ -+ 'xmlrpc_pstream.cpp', -+ ], -+ dependencies : [ -+ dumpvalue, -+ util_cpp_dep, -+ readline, -+ ], -+ include_directories : [ -+ top_incdir, -+ hdr_incdir, -+ ], -+ link_with : [ -+ libxmlrpcpp, -+ libxmlrpc_clientpp, -+ libxmlrpc_utilpp, -+ ], -+ install : true, -+) -diff --git a/tools/xmlrpc_transport/meson.build b/tools/xmlrpc_transport/meson.build -new file mode 100644 -index 00000000..cbb6f835 ---- /dev/null -+++ b/tools/xmlrpc_transport/meson.build -@@ -0,0 +1,18 @@ -+executable( -+ 'xmlrpc_transport', -+ sources : [ -+ 'xmlrpc_transport.c', -+ ], -+ dependencies : [ -+ util_dep, -+ ], -+ include_directories : [ -+ top_incdir, -+ hdr_incdir, -+ ], -+ link_with : [ -+ libxmlrpc_client, -+ libxmlrpc_util, -+ ], -+ install : true, -+) -diff --git a/transport_config.h.in b/transport_config.h.in -new file mode 100644 -index 00000000..687fdaf2 ---- /dev/null -+++ b/transport_config.h.in -@@ -0,0 +1,4 @@ -+#define MUST_BUILD_WININET_CLIENT @MUST_BUILD_WININET_CLIENT@ -+#define MUST_BUILD_CURL_CLIENT @MUST_BUILD_CURL_CLIENT@ -+#define MUST_BUILD_LIBWWW_CLIENT @MUST_BUILD_LIBWWW_CLIENT@ -+static const char * const XMLRPC_DEFAULT_TRANSPORT = @XMLRPC_DEFAULT_TRANSPORT@; -diff --git a/xmlrpc-c-config b/xmlrpc-c-config -new file mode 100755 -index 00000000..25f95194 ---- /dev/null -+++ b/xmlrpc-c-config -@@ -0,0 +1,114 @@ -+#!/bin/sh -+ -+comp= -+ -+need_cxx= -+need_client= -+need_server= -+need_abyss_server= -+need_pstream= -+need_packetsocket= -+need_cgi= -+need_abyss= -+need_openssl= -+ -+show_help() { -+ cat < ...