diff --git a/.xmlrpc-c.metadata b/.xmlrpc-c.metadata
new file mode 100644
index 0000000..aaa00db
--- /dev/null
+++ b/.xmlrpc-c.metadata
@@ -0,0 +1 @@
+962990f129e1ab7686c984fbf53c6caf2e945324 SOURCES/xmlrpc-c-1.32.5.tar.xz
diff --git a/README.md b/README.md
deleted file mode 100644
index 0e7897f..0000000
--- a/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-The master branch has no content
- 
-Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6
- 
-If you find this file in a distro specific branch, it means that no content has been checked in yet
diff --git a/SOURCES/dfs.cc b/SOURCES/dfs.cc
new file mode 100644
index 0000000..c7d9535
--- /dev/null
+++ b/SOURCES/dfs.cc
@@ -0,0 +1,104 @@
+/*	--*- c++ -*--
+ * Copyright (C) 2010 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 3 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include <string>
+#include <list>
+#include <map>
+#include <iostream>
+
+class node {
+    public:
+	node(std::string const &name) : name_(name) {}
+	void	add_child(class node *n)
+	{
+		children_.push_back(n);
+	}
+
+	void	dfs(std::list<std::string> &res);
+	bool				visited;
+
+    private:
+	std::string const		name_;
+	std::list<class node *>		children_;
+};
+
+void node::dfs(std::list<std::string> &res)
+{
+	std::list<class node *>::iterator	i;
+
+	visited = true;
+
+	for (i = children_.begin(); i != children_.end(); ++i) {
+		if ((*i)->visited)
+			continue;
+
+		(*i)->dfs(res);
+	}
+
+	res.push_front(name_);
+}
+
+int main(void)
+{
+	std::map<std::string, class node *>		nodes;
+
+	for (;;) {
+		std::string		name;
+		class node		*cur_node;
+
+		std::cin >> name;
+		if (!std::cin.good())
+			break;
+
+		if (nodes.find(name) == nodes.end())
+			nodes[name] = new node(name);
+
+		cur_node = nodes[name];
+
+		while (std::cin.good()) {
+			std::cin >> name;
+
+			if (name == "##")
+				break;
+
+			if (nodes.find(name) == nodes.end())
+				nodes[name] = new node(name);
+
+			cur_node->add_child(nodes[name]);
+		}
+	}
+
+	typedef std::map<std::string, class node *>::iterator	node_iterator;
+
+	for (node_iterator n = nodes.begin(); n != nodes.end(); ++n) {
+		for (node_iterator m = nodes.begin();
+		     m != nodes.end(); ++m)
+			m->second->visited = false;
+
+		std::list<std::string>		res(nodes.size());
+		n->second->dfs(res);
+
+		for (std::list<std::string>::const_iterator i = res.begin();
+		     i != res.end(); ++i)
+			std::cout << *i << " ";
+
+		std::cout << std::endl;
+	}
+}
diff --git a/SOURCES/dso-fixup b/SOURCES/dso-fixup
new file mode 100755
index 0000000..4045bf0
--- /dev/null
+++ b/SOURCES/dso-fixup
@@ -0,0 +1,57 @@
+#! /bin/bash
+# Copyright (C) 2010 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 3 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+
+## Usage: dso-fixup <build-root> <libdir> <pattern> <libs>*
+
+BR=$1
+LIBDIR=$2
+PATTERN=$3
+shift 3
+
+for i; do
+    echo -n $(basename "$i")' '
+    readelf -d $i | sed "\\!(NEEDED).*${PATTERN}!"'s/[^:]\+: \[\(.*\)\]/\1/p;d' | xargs echo -n
+    echo " ##"
+done | ./depsort | while read lib deps; do
+      link=$BR$LIBDIR/${lib%.so.*}.so
+      test -L "$link" || {
+	echo "bad file '$link'" >&2
+	exit 1
+      }
+
+      set -- $deps
+      test $# -ne 0 || continue
+
+      rm -f $link
+
+
+      {
+	echo '/* GNU ld script */'
+	echo -n "INPUT($LIBDIR/$lib"
+	d=
+	if test "$#" -gt 0; then
+	    echo -n " AS_NEEDED("
+	    for i; do
+		echo -n "$d$LIBDIR/$i"
+		d=' '
+	    done
+	    echo -n ")"
+	fi
+	echo ")"
+      } > "$link"
+
+      chmod 0644 "$link"
+done
diff --git a/SOURCES/xmlrpc-c-30x-redirect.patch b/SOURCES/xmlrpc-c-30x-redirect.patch
new file mode 100644
index 0000000..a2d4446
--- /dev/null
+++ b/SOURCES/xmlrpc-c-30x-redirect.patch
@@ -0,0 +1,27 @@
+From 255ebf4b1204124123971a3bb27741cccbb51692 Mon Sep 17 00:00:00 2001
+From: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+Date: Thu, 29 Jul 2010 19:25:32 +0200
+Subject: [PATCH 5/8] allow 30x redirections
+
+---
+ lib/curl_transport/curltransaction.c |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/lib/curl_transport/curltransaction.c b/lib/curl_transport/curltransaction.c
+index 0f76fc2..6292aee 100644
+--- a/lib/curl_transport/curltransaction.c
++++ b/lib/curl_transport/curltransaction.c
+@@ -600,6 +600,10 @@ setupCurlSession(xmlrpc_env *               const envP,
+     curl_easy_setopt(curlSessionP, CURLOPT_POST, 1);
+     curl_easy_setopt(curlSessionP, CURLOPT_URL, transP->serverUrl);
+ 
++    curl_easy_setopt(curlSessionP, CURLOPT_FOLLOWLOCATION, 1);
++    curl_easy_setopt(curlSessionP, CURLOPT_MAXREDIRS, (long)10);
++    curl_easy_setopt(curlSessionP, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL);
++
+     XMLRPC_MEMBLOCK_APPEND(char, envP, transP->postDataP, "\0", 1);
+     if (!envP->fault_occurred) {
+         curl_easy_setopt(curlSessionP, CURLOPT_POSTFIELDS, 
+-- 
+1.7.10.4
+
diff --git a/SOURCES/xmlrpc-c-check-vasprintf-return-value.patch b/SOURCES/xmlrpc-c-check-vasprintf-return-value.patch
new file mode 100644
index 0000000..cfc7f45
--- /dev/null
+++ b/SOURCES/xmlrpc-c-check-vasprintf-return-value.patch
@@ -0,0 +1,41 @@
+From 80047d74644eeda55c451aea59951eb502649cf4 Mon Sep 17 00:00:00 2001
+From: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+Date: Thu, 29 Jul 2010 19:43:08 +0200
+Subject: [PATCH 7/8] check vasprintf return value
+
+---
+ lib/libutil/asprintf.c |    3 ++-
+ lib/util/casprintf.c   |    3 ++-
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/lib/libutil/asprintf.c b/lib/libutil/asprintf.c
+index a79cd81..5a06f0f 100644
+--- a/lib/libutil/asprintf.c
++++ b/lib/libutil/asprintf.c
+@@ -121,7 +121,8 @@ xmlrpc_vasprintf(const char ** const retvalP,
+     char * string;
+ 
+ #if HAVE_ASPRINTF
+-    vasprintf(&string, fmt, varargs);
++    if (vasprintf(&string, fmt, varargs) < 0)
++        string = NULL;
+ #else
+     simpleVasprintf(&string, fmt, varargs);
+ #endif
+diff --git a/lib/util/casprintf.c b/lib/util/casprintf.c
+index 643f145..9139253 100644
+--- a/lib/util/casprintf.c
++++ b/lib/util/casprintf.c
+@@ -99,7 +99,8 @@ cvasprintf(const char ** const retvalP,
+     char * string;
+ 
+ #if HAVE_ASPRINTF
+-    vasprintf(&string, fmt, varargs);
++    if (vasprintf(&string, fmt, varargs) < 0)
++        string = NULL;
+ #else
+     simpleVasprintf(&string, fmt, varargs);
+ #endif
+-- 
+1.7.3.4
+
diff --git a/SOURCES/xmlrpc-c-cmake.patch b/SOURCES/xmlrpc-c-cmake.patch
new file mode 100644
index 0000000..6d544fb
--- /dev/null
+++ b/SOURCES/xmlrpc-c-cmake.patch
@@ -0,0 +1,2128 @@
+From 26a4d5168bb69474c3cc304f90592d37bf0be8fe Mon Sep 17 00:00:00 2001
+From: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+Date: Sat, 5 Apr 2008 10:55:02 +0200
+Subject: [PATCH 1/8] make -> cmake transition
+
+cmake: updated
+---
+ CMakeLists.txt                              |  290 +++++++++++++++++++++++++++
+ cmake/try-attr.cc                           |    3 +
+ cmake/va-list-is-array.c                    |    9 +
+ examples/CMakeLists.txt                     |   68 +++++++
+ examples/config.h                           |    1 +
+ examples/cpp/CMakeLists.txt                 |   34 ++++
+ include/CMakeLists.txt                      |    3 +
+ include/xmlrpc-c/CMakeLists.txt             |   74 +++++++
+ include/xmlrpc-c/config.h.cmake             |   34 ++++
+ lib/CMakeLists.txt                          |   12 ++
+ lib/abyss/CMakeLists.txt                    |    3 +
+ lib/abyss/src/CMakeLists.txt                |   70 +++++++
+ lib/abyss/src/xmlrpc_abyss.pc.cmake         |   12 ++
+ lib/curl_transport/CMakeLists.txt           |   20 ++
+ lib/expat/CMakeLists.txt                    |    9 +
+ lib/expat/gennmtab/CMakeLists.txt           |    3 +
+ lib/expat/xmlparse/CMakeLists.txt           |    7 +
+ lib/expat/xmlparse/xmlrpc_xmlparse.pc.cmake |   12 ++
+ lib/expat/xmltok/CMakeLists.txt             |   23 +++
+ lib/expat/xmltok/xmlrpc_xmltok.pc.cmake     |    9 +
+ lib/libutil/CMakeLists.txt                  |   26 +++
+ lib/libutil/xmlrpc_util.pc.cmake            |   10 +
+ lib/libwww_transport/CMakeLists.txt         |    7 +
+ lib/util/CMakeLists.txt                     |   17 ++
+ lib/wininet_transport/CMakeLists.txt        |    7 +
+ src/CMakeLists.txt                          |  121 +++++++++++
+ src/cpp/CMakeLists.txt                      |   70 +++++++
+ src/cpp/test/CMakeLists.txt                 |   18 ++
+ src/cpp/xmlrpc++.pc.cmake                   |   12 ++
+ src/cpp/xmlrpc_client++.pc.cmake            |   12 ++
+ src/cpp/xmlrpc_cpp.pc.cmake                 |   12 ++
+ src/cpp/xmlrpc_packetsocket.pc.cmake        |   12 ++
+ src/cpp/xmlrpc_server++.pc.cmake            |   12 ++
+ src/cpp/xmlrpc_server_abyss++.pc.cmake      |   12 ++
+ src/cpp/xmlrpc_server_cgi++.pc.cmake        |   12 ++
+ src/cpp/xmlrpc_server_pstream++.pc.cmake    |   12 ++
+ src/xmlrpc.pc.cmake                         |   12 ++
+ src/xmlrpc_client.pc.cmake                  |   12 ++
+ src/xmlrpc_server.pc.cmake                  |   12 ++
+ src/xmlrpc_server_abyss.pc.cmake            |   12 ++
+ src/xmlrpc_server_cgi.pc.cmake              |   12 ++
+ test/CMakeLists.txt                         |   41 ++++
+ test/cpp/CMakeLists.txt                     |   34 ++++
+ tools/CMakeLists.txt                        |   22 ++
+ tools/binmode-rpc-kit/CMakeLists.txt        |    1 +
+ tools/lib/CMakeLists.txt                    |    1 +
+ tools/turbocharger/CMakeLists.txt           |    1 +
+ tools/xml-rpc-api2cpp/CMakeLists.txt        |   15 ++
+ tools/xml-rpc-api2txt/CMakeLists.txt        |    7 +
+ tools/xml/CMakeLists.txt                    |   16 ++
+ tools/xmlrpc/CMakeLists.txt                 |   17 ++
+ tools/xmlrpc/config.h                       |    1 +
+ tools/xmlrpc_cpp_proxy/CMakeLists.txt       |   17 ++
+ tools/xmlrpc_pstream/CMakeLists.txt         |   16 ++
+ tools/xmlrpc_transport/CMakeLists.txt       |    9 +
+ tools/xmlrpc_transport/config.h             |    1 +
+ transport_config.h.cmake                    |   16 ++
+ version.h.cmake                             |    5 +
+ xmlrpc-c-config                             |  105 ++++++++++
+ xmlrpc_config.h.cmake                       |  183 +++++++++++++++++
+ 60 files changed, 1636 insertions(+)
+ create mode 100644 CMakeLists.txt
+ create mode 100644 cmake/try-attr.cc
+ create mode 100644 cmake/va-list-is-array.c
+ create mode 100644 examples/CMakeLists.txt
+ create mode 100644 examples/config.h
+ create mode 100644 examples/cpp/CMakeLists.txt
+ create mode 100644 include/CMakeLists.txt
+ create mode 100644 include/xmlrpc-c/CMakeLists.txt
+ create mode 100644 include/xmlrpc-c/config.h.cmake
+ create mode 100644 lib/CMakeLists.txt
+ create mode 100644 lib/abyss/CMakeLists.txt
+ create mode 100644 lib/abyss/src/CMakeLists.txt
+ create mode 100644 lib/abyss/src/xmlrpc_abyss.pc.cmake
+ create mode 100644 lib/curl_transport/CMakeLists.txt
+ create mode 100644 lib/expat/CMakeLists.txt
+ create mode 100644 lib/expat/gennmtab/CMakeLists.txt
+ create mode 100644 lib/expat/xmlparse/CMakeLists.txt
+ create mode 100644 lib/expat/xmlparse/xmlrpc_xmlparse.pc.cmake
+ create mode 100644 lib/expat/xmltok/CMakeLists.txt
+ create mode 100644 lib/expat/xmltok/xmlrpc_xmltok.pc.cmake
+ create mode 100644 lib/libutil/CMakeLists.txt
+ create mode 100644 lib/libutil/xmlrpc_util.pc.cmake
+ create mode 100644 lib/libwww_transport/CMakeLists.txt
+ create mode 100644 lib/util/CMakeLists.txt
+ create mode 100644 lib/wininet_transport/CMakeLists.txt
+ create mode 100644 src/CMakeLists.txt
+ create mode 100644 src/cpp/CMakeLists.txt
+ create mode 100644 src/cpp/test/CMakeLists.txt
+ create mode 100644 src/cpp/xmlrpc++.pc.cmake
+ create mode 100644 src/cpp/xmlrpc_client++.pc.cmake
+ create mode 100644 src/cpp/xmlrpc_cpp.pc.cmake
+ create mode 100644 src/cpp/xmlrpc_packetsocket.pc.cmake
+ create mode 100644 src/cpp/xmlrpc_server++.pc.cmake
+ create mode 100644 src/cpp/xmlrpc_server_abyss++.pc.cmake
+ create mode 100644 src/cpp/xmlrpc_server_cgi++.pc.cmake
+ create mode 100644 src/cpp/xmlrpc_server_pstream++.pc.cmake
+ create mode 100644 src/xmlrpc.pc.cmake
+ create mode 100644 src/xmlrpc_client.pc.cmake
+ create mode 100644 src/xmlrpc_server.pc.cmake
+ create mode 100644 src/xmlrpc_server_abyss.pc.cmake
+ create mode 100644 src/xmlrpc_server_cgi.pc.cmake
+ create mode 100644 test/CMakeLists.txt
+ create mode 100644 test/cpp/CMakeLists.txt
+ create mode 100644 tools/CMakeLists.txt
+ create mode 100644 tools/binmode-rpc-kit/CMakeLists.txt
+ create mode 100644 tools/lib/CMakeLists.txt
+ create mode 100644 tools/turbocharger/CMakeLists.txt
+ create mode 100644 tools/xml-rpc-api2cpp/CMakeLists.txt
+ create mode 100644 tools/xml-rpc-api2txt/CMakeLists.txt
+ create mode 100644 tools/xml/CMakeLists.txt
+ create mode 100644 tools/xmlrpc/CMakeLists.txt
+ create mode 100644 tools/xmlrpc/config.h
+ create mode 100644 tools/xmlrpc_cpp_proxy/CMakeLists.txt
+ create mode 100644 tools/xmlrpc_pstream/CMakeLists.txt
+ create mode 100644 tools/xmlrpc_transport/CMakeLists.txt
+ create mode 100644 tools/xmlrpc_transport/config.h
+ create mode 100644 transport_config.h.cmake
+ create mode 100644 version.h.cmake
+ create mode 100755 xmlrpc-c-config
+ create mode 100644 xmlrpc_config.h.cmake
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+new file mode 100644
+index 0000000..2876dea
+--- /dev/null
++++ b/CMakeLists.txt
+@@ -0,0 +1,290 @@
++## -*- cmake -*-
++project(xmlrpc-c)
++include(FindPkgConfig)
++include(CheckIncludeFile)
++include(CheckFunctionExists)
++
++cmake_minimum_required(VERSION 2.4)
++
++if(COMMAND cmake_policy)
++  cmake_policy(SET CMP0003 NEW)
++endif()
++
++
++set(XMLRPC_C_VERSION_MAJOR "1"  CACHE STRING "Version (major) of xmlrpc-c")
++set(XMLRPC_C_VERSION_MINOR "32" CACHE STRING "Version (minor) of xmlrpc-c")
++set(XMLRPC_C_VERSION_POINT "5"  CACHE STRING "Version (point) of xmlrpc-c")
++
++set(XMLRPC_C_VERSION
++  "${XMLRPC_C_VERSION_MAJOR}.${XMLRPC_C_VERSION_MINOR}.${XMLRPC_C_VERSION_POINT}"
++  CACHE STRING "Version of xmlrpc-c")
++
++set(XMLRPC_C_LIBVERSION "3.${XMLRPC_C_VERSION_MINOR}")
++set(XMLRPC_C_SOVERSION  "3")
++
++set(XMLRPC_CXX_LIBVERSION "8.${XMLRPC_C_VERSION_MINOR}")
++set(XMLRPC_CXX_SOVERSION  "8")
++
++string(REGEX REPLACE "^0+" "" XMLRPC_C_VERSION_MAJOR_NUM "${XMLRPC_C_VERSION_MAJOR}")
++string(REGEX REPLACE "^0+" "" XMLRPC_C_VERSION_MINOR_NUM "${XMLRPC_C_VERSION_MINOR}")
++string(REGEX REPLACE "^0+(.)" "\\1" XMLRPC_C_VERSION_POINT_NUM "${XMLRPC_C_VERSION_POINT}")
++
++
++macro(ensc_set_bool NAME VALUE DESC)
++  set(${NAME} ${VALUE} CACHE BOOL ${DESC})
++  if(${NAME})
++    set(_${NAME} 1)
++  else(${NAME})
++    set(_${NAME} 0)
++  endif(${NAME})
++endmacro(ensc_set_bool)
++
++macro(ensc_pkgconfig COMP)
++  configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${COMP}.pc.cmake
++    ${CMAKE_CURRENT_BINARY_DIR}/${COMP}.pc
++    @ONLY)
++  install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${COMP}.pc
++    DESTINATION ${pkgconfdir})
++endmacro(ensc_pkgconfig)
++
++macro(ensc_pkgconfig_lib TARGET LIBS)
++  get_target_property(libtype ${TARGET} TYPE)
++  if("${libtype}" STREQUAL "STATIC_LIBRARY")
++    list(APPEND ${TARGET}_pkgconfig_libs "${LIBS}")
++  endif("${libtype}" STREQUAL "STATIC_LIBRARY")
++endmacro(ensc_pkgconfig_lib)
++
++macro(ensc_set_link_exe_flags)
++  ## HACK: libwww has broken inter-lib dependencies and '-Wl,--as-needed' fails with it
++  if(NOT MUST_BUILD_LIBWWW_CLIENT)
++    set_target_properties(${ARGV}
++      PROPERTIES
++      LINK_FLAGS ${XMLRPC_LINKER_FLAGS})
++  endif(NOT MUST_BUILD_LIBWWW_CLIENT)
++endmacro(ensc_set_link_exe_flags)
++
++###########
++if(WIN32)
++  find_program(WININET_CONFIG_EXECUTABLE wininet-config)
++
++  if(DEFINED MUST_BUILD_WININET_CLIENT)
++    set(tmp ${MUST_BUILD_WININET_CLIENT})
++  else(DEFINED MUST_BUILD_WININET_CLIENT)
++    if(WININET_CONFIG_EXECUTABLE)
++      set(tmp 1)
++    else(WININET_CONFIG_EXECUTABLE)
++      set(tmp 0)
++    endif(WININET_CONFIG_EXECUTABLE)
++  endif(DEFINED MUST_BUILD_WININET_CLIENT)
++
++  set(MSVCRT yes)
++else(WIN32)
++  set(tmp 0)
++endif(WIN32)
++
++if(tmp)
++  set(MUST_BUILD_CLIENT 1)
++  exec_program(${WININET_CONFIG_EXECUTABLE} ARGS --version OUTPUT_VARIABLE WININET_VERSION)
++  exec_program(${WININET_CONFIG_EXECUTABLE} ARGS --cflags  OUTPUT_VARIABLE WININET_CFLAGS)
++  exec_program(${WININET_CONFIG_EXECUTABLE} ARGS --libs    OUTPUT_VARIABLE WININET_LDADD)
++  message(STATUS "Using WinInet ${WININET_VERSION} transport")
++endif(tmp)
++
++ensc_set_bool(MUST_BUILD_WININET_CLIENT ${tmp} "Set iff WinInet client transport shall be built")
++set(wininet_srcdir ${xmlrpc-c_SOURCE_DIR}/lib/wininet_transport)
++
++###########
++if(DEFINED MUST_BUILD_CURL_CLIENT)
++  set(tmp REQUIRED)
++else(DEFINED MUST_BUILD_CURL_CLIENT)
++  set(tmp)
++endif(DEFINED MUST_BUILD_CURL_CLIENT)
++
++pkg_check_modules(CURL ${tmp} libcurl)
++
++ensc_set_bool(MUST_BUILD_CURL_CLIENT ${CURL_FOUND} "Set iff Curl client transport shall be built")
++set(curl_srcdir ${xmlrpc-c_SOURCE_DIR}/lib/curl_transport)
++
++if(MUST_BUILD_CURL_CLIENT)
++  set(MUST_BUILD_CLIENT 1)
++endif(MUST_BUILD_CURL_CLIENT)
++
++###########
++find_program(LIBWWW_CONFIG_EXECUTABLE libwww-config)
++if(DEFINED MUST_BUILD_LIBWWW_CLIENT)
++  set(tmp ${MUST_BUILD_LIBWWW_CLIENT})
++else(DEFINED MUST_BUILD_LIBWWW_CLIENT)
++  if(LIBWWW_CONFIG_EXECUTABLE)
++    set(tmp 1)
++  else(LIBWWW_CONFIG_EXECUTABLE)
++    set(tmp 0)
++  endif(LIBWWW_CONFIG_EXECUTABLE)
++endif(DEFINED MUST_BUILD_LIBWWW_CLIENT)
++
++if(tmp)
++  set(MUST_BUILD_CLIENT 1)
++  exec_program(${LIBWWW_CONFIG_EXECUTABLE} ARGS --version OUTPUT_VARIABLE LIBWWW_VERSION)
++  exec_program(${LIBWWW_CONFIG_EXECUTABLE} ARGS --libs    OUTPUT_VARIABLE LIBWWW_LIBS)
++  exec_program(${LIBWWW_CONFIG_EXECUTABLE} ARGS --cflags  OUTPUT_VARIABLE LIBWWW_CFLAGS)
++  message(STATUS "Using libwww ${LIBWWW_VERSION} transport")
++endif(tmp)
++ensc_set_bool(MUST_BUILD_LIBWWW_CLIENT ${tmp} "Set iff LibWWW client transport shall be built")
++set(libwww_srcdir ${xmlrpc-c_SOURCE_DIR}/lib/libwww_transport)
++
++############
++
++set(ENABLE_CGI_SERVER      1 CACHE BOOL "Set iff CGI server shall be enabled")
++set(ENABLE_CPLUSPLUS       1 CACHE BOOL "Set iff C++ part shall be enabled")
++set(ENABLE_ABYSS_SERVER    1 CACHE BOOL "Set iff Abyss server shall be enabled")
++set(ENABLE_LIBXML2_BACKEND 1 CACHE BOOL "Set iff libxml2 backend shall be used")
++set(ENABLE_ABYSS_SERVER    1 CACHE BOOL "Set iff abyss server shall be enabled")
++set(ENABLE_ABYSS_THREADS   1 CACHE BOOL "Use pthread")
++
++if(ENABLE_LIBXML2_BACKEND)
++  pkg_check_modules(LIBXML2 libxml-2.0)
++
++  if(LIBXML2_FOUND)
++    set(libxml_pkgconfig libxml-2.0)  # TODO: add more alternative modules
++  endif(LIBXML2_FOUND)
++endif(ENABLE_LIBXML2_BACKEND)
++
++###########
++
++pkg_check_modules(NCURSES ncurses)
++find_library(READLINE readline)
++
++if (MUST_BUILD_LIBWWW_CLIENT OR MUST_BUILD_WININET_CLIENT OR MUST_BUILD_CURL_CLIENT)
++  if (NCURSES_FOUND AND READLINE)
++    set(BUILD_XMLRPC_PSTREAM 1)
++    message(STATUS "Building xmlrpc_pstream tool")
++  endif()
++  message(STATUS "Tools will be built")
++  set(BUILD_TOOLS 1)
++else()
++  message(STATUS "Tools will not be built")
++  set(BUILD_TOOLS 0)
++endif()
++
++####  <wchar.h> tests
++check_include_file(wchar.h _have_wchar_h)
++if(_have_wchar_h)
++  set(HAVE_WCHAR_H 1)
++else(_have_wchar_h)
++  set(HAVE_WCHAR_H 1)
++endif(_have_wchar_h)
++set(XMLRPC_HAVE_WCHAR   ${HAVE_WCHAR_H})
++set(HAVE_WCHAR_H_DEFINE ${HAVE_WCHAR_H})
++
++
++#######
++set(LINKER_AS_NEEDED  1 CACHE BOOL "Use the --as-needed linker option")
++if(LINKER_AS_NEEDED)
++  set(XMLRPC_LINKER_FLAGS "-Wl,--as-needed")
++endif(LINKER_AS_NEEDED)
++
++
++try_compile(HAVE_ATTR_UNUSED
++  ${CMAKE_BINARY_DIR}/
++  ${xmlrpc-c_SOURCE_DIR}/cmake/try-attr.cc
++  CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=-DCMAKE_TEST_ATTR=__unused__)
++
++try_compile(VA_LIST_IS_NOT_ARRAY
++  ${CMAKE_BINARY_DIR}/
++  ${xmlrpc-c_SOURCE_DIR}/cmake/va-list-is-array.c)
++
++if(VA_LIST_IS_NOT_ARRAY)
++  set(VA_LIST_IS_ARRAY 0)
++  message(STATUS "va_list is not an array")
++else(VA_LIST_IS_NOT_ARRAY)
++  set(VA_LIST_IS_ARRAY 1)
++  message(STATUS "va_list is an array")
++endif(VA_LIST_IS_NOT_ARRAY)
++
++
++if(HAVE_ATTR_UNUSED)
++  set(ATTR_UNUSED "__attribute__((__unused__))")
++endif(HAVE_ATTR_UNUSED)
++
++if(WIN32)
++  set(DIRECTORY_SEPARATOR "\\")
++  set(THREAD_LIBS "")
++else(WIN32)
++  set(DIRECTORY_SEPARATOR "/")
++  set(THREAD_LIBS "pthread")
++  set(THREAD_LIBS_PKGCONFIG "-lpthread")
++endif(WIN32)
++
++check_include_file(sys/filio.h  HAVE_SYS_FILIO_H)
++check_include_file(sys/ioctl.h  HAVE_SYS_IOCTL_H)
++check_include_file(sys/select.h HAVE_SYS_SELECT_H)
++check_function_exists(setenv		HAVE_SETENV)
++check_function_exists(strcasecmp	HAVE_STRCASECMP)
++check_function_exists(_stricmp		HAVE__STRICMP)
++check_function_exists(stricmp		HAVE_STRICMP)
++check_function_exists(strtoll		HAVE_STRTOLL)
++check_function_exists(__strtoll		HAVE___STRTOLL)
++check_function_exists(strtoull		HAVE_STRTOULL)
++check_function_exists(__strtoull	HAVE___STRTOULL)
++check_function_exists(strtoq		HAVE_STRTOQ)
++check_function_exists(strtouq		HAVE_STRTOUQ)
++check_function_exists(gettimeofday	HAVE_GETTIMEOFDAY)
++check_function_exists(setgroups		HAVE_SETGROUPS)
++check_function_exists(asprintf		HAVE_ASPRINTF)
++check_function_exists(pselect		HAVE_PSELECT)
++check_function_exists(wcsncmp		HAVE_WCSNCMP)
++check_function_exists(localtime_r	HAVE_LOCALTIME_R)
++check_function_exists(gmtime_r		HAVE_GMTIME_R)
++
++
++configure_file(${xmlrpc-c_SOURCE_DIR}/xmlrpc_config.h.cmake
++               ${xmlrpc-c_BINARY_DIR}/xmlrpc_config.h
++	       ESCAPE_QUOTES @ONLY)
++
++configure_file(${xmlrpc-c_SOURCE_DIR}/version.h.cmake
++               ${xmlrpc-c_BINARY_DIR}/version.h
++	       ESCAPE_QUOTES @ONLY)
++
++configure_file(${xmlrpc-c_SOURCE_DIR}/transport_config.h.cmake
++               ${xmlrpc-c_BINARY_DIR}/transport_config.h
++	       ESCAPE_QUOTES @ONLY)
++
++configure_file(${xmlrpc-c_SOURCE_DIR}/include/xmlrpc-c/config.h.cmake
++               ${xmlrpc-c_BINARY_DIR}/include/xmlrpc-c/config.h
++	       ESCAPE_QUOTES @ONLY)
++
++
++include_directories(${xmlrpc-c_SOURCE_DIR}/include)
++include_directories(${xmlrpc-c_BINARY_DIR}/include)
++include_directories(${xmlrpc-c_SOURCE_DIR}/lib/util/include)
++include_directories(${xmlrpc-c_BINARY_DIR})
++
++add_custom_target(dist
++  rm -rf _dist && mkdir -p _dist/xmlrpc-c-${XMLRPC_C_VERSION}
++  COMMAND cp -a ${xmlrpc-c_SOURCE_DIR}/* _dist/xmlrpc-c-${XMLRPC_C_VERSION}/
++  COMMAND cd _dist && tar cjf ../xmlrpc-c-${XMLRPC_C_VERSION}.tar.bz2 xmlrpc-c-${XMLRPC_C_VERSION} --exclude=.git --exclude=CVS --exclude=.svn
++  )
++
++set(_lib       lib CACHE STRING "Basename of the library-directory; usually 'lib' or 'lib64' (on multilib archs)")
++set(_bin       bin CACHE STRING "Basename of the bin-directory; usually 'bin'")
++set(prefix     ${CMAKE_INSTALL_PREFIX})
++set(libdir     "${prefix}/${_lib}")
++set(bindir     "${prefix}/${_bin}")
++set(mandir     "${prefix}/share/man")
++set(pkgconfdir "${libdir}/pkgconfig")
++set(includedir "${prefix}/include")
++
++#############
++
++install(PROGRAMS xmlrpc-c-config DESTINATION ${_bin})
++
++enable_testing()
++
++add_subdirectory(test)
++add_subdirectory(lib)
++add_subdirectory(examples)
++add_subdirectory(include)
++add_subdirectory(src)
++
++if (BUILD_TOOLS)
++  add_subdirectory(tools)
++endif()
+diff --git a/cmake/try-attr.cc b/cmake/try-attr.cc
+new file mode 100644
+index 0000000..4668c5b
+--- /dev/null
++++ b/cmake/try-attr.cc
+@@ -0,0 +1,3 @@
++int x __attribute__((CMAKE_TEST_ATTR));
++
++int main() {}
+diff --git a/cmake/va-list-is-array.c b/cmake/va-list-is-array.c
+new file mode 100644
+index 0000000..1ad0bab
+--- /dev/null
++++ b/cmake/va-list-is-array.c
+@@ -0,0 +1,9 @@
++#include <stdarg.h>
++
++void foo()
++{
++  va_list list1, list2;
++  list1 = list2;
++}
++
++int main() {}
+diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
+new file mode 100644
+index 0000000..1535adf
+--- /dev/null
++++ b/examples/CMakeLists.txt
+@@ -0,0 +1,68 @@
++# -*- cmake -*-
++
++include_directories(${CMAKE_CURRENT_BINARY_DIR})
++
++macro(ensc_add_example name ext class)
++  # HACK: avoid name collision of c and c++ program
++  if("${ext}" STREQUAL "cpp")
++    set(_target ${name}++)
++  else("${ext}" STREQUAL "cpp")
++    set(_target ${name})
++  endif("${ext}" STREQUAL "cpp")
++
++  add_executable(${_target} ${name}.${ext})
++  target_link_libraries(${_target} ${${class}_LIBS})
++  list(APPEND ${class}_TARGETS ${_target})
++  list(APPEND example_TARGETS ${_target})
++endmacro(ensc_add_example)
++
++if(ENABLE_CPLUSPLUS)
++  add_subdirectory(cpp)
++endif(ENABLE_CPLUSPLUS)
++
++
++set(base_LIBS xmlrpc)
++ensc_add_example(json               c base)
++ensc_add_example(gen_sample_add_xml c base)
++ensc_add_example(parse_xml          c base)
++
++if(MUST_BUILD_CLIENT)
++  set(client_LIBS xmlrpc_client)
++
++  ensc_add_example(auth_client              c client)
++  ensc_add_example(compound_value_client    c client)
++  ensc_add_example(synch_client             c client)
++  ensc_add_example(xmlrpc_sample_add_client c client)
++  ensc_add_example(xmlrpc_asynch_client     c client)
++endif(MUST_BUILD_CLIENT)
++
++if(MUST_BUILD_CURL_CLIENT)
++  set(client_LIBS xmlrpc_client)
++
++  if(NOT DEFINED MSVCRT)
++    ensc_add_example(interrupted_client       c client)
++  endif(NOT DEFINED MSVCRT)
++endif(MUST_BUILD_CURL_CLIENT)
++
++if(ENABLE_CGI_SERVER)
++  set(cgi_server_LIBS xmlrpc_server_cgi)
++
++  ensc_add_example(xmlrpc_sample_add_server_cgi c cgi_server)
++endif(ENABLE_CGI_SERVER)
++
++if(ENABLE_ABYSS_SERVER)
++  set(abyss_server_LIBS xmlrpc_server_abyss)
++
++  ensc_add_example(compound_value_server    c abyss_server)
++  ensc_add_example(xmlrpc_inetd_server      c abyss_server)
++  ensc_add_example(xmlrpc_socket_server     c abyss_server)
++  ensc_add_example(xmlrpc_loop_server       c abyss_server)
++  ensc_add_example(xmlrpc_sample_add_server c abyss_server)
++  ensc_add_example(xmlrpc_server_validatee  c abyss_server)
++
++  if(NOT DEFINED MSVCRT)
++    ensc_add_example(interrupted_server       c abyss_server)
++  endif(NOT DEFINED MSVCRT)
++endif(ENABLE_ABYSS_SERVER)
++
++ensc_set_link_exe_flags(${example_TARGETS})
+diff --git a/examples/config.h b/examples/config.h
+new file mode 100644
+index 0000000..31d5f9b
+--- /dev/null
++++ b/examples/config.h
+@@ -0,0 +1 @@
++#include "../xmlrpc_config.h"
+diff --git a/examples/cpp/CMakeLists.txt b/examples/cpp/CMakeLists.txt
+new file mode 100644
+index 0000000..093a75d
+--- /dev/null
++++ b/examples/cpp/CMakeLists.txt
+@@ -0,0 +1,34 @@
++# -*- cmake -*-
++
++if(ENABLE_ABYSS_SERVER)
++  set(abyss_serverxx_LIBS xmlrpc_server_abyss++)
++
++  ensc_add_example(xmlrpc_inetd_server cpp abyss_serverxx)
++  ensc_add_example(xmlrpc_loop_server  cpp abyss_serverxx)
++  ensc_add_example(xmlrpc_sample_add_server cpp abyss_serverxx)
++  ensc_add_example(callinfo_abyss_server    cpp abyss_serverxx)
++endif(ENABLE_ABYSS_SERVER)
++
++if (ENABLE_CGI_SERVER)
++  set(cgi_serverxx_LIBS xmlrpc_server_cgi++)
++
++  ensc_add_example(xmlrpc_sample_add_server_cgi cpp cgi_serverxx)
++endif(ENABLE_CGI_SERVER)
++
++if(MUST_BUILD_CLIENT)
++  set(abyss_clientxx_LIBS        xmlrpc_client++)
++
++  ensc_add_example(xmlrpc_sample_add_client  cpp abyss_clientxx)
++  ensc_add_example(sample_add_client_complex cpp abyss_clientxx)
++  ensc_add_example(asynch_client             cpp abyss_clientxx)
++
++  ensc_add_example(pstream_client            cpp abyss_clientxx)
++endif(MUST_BUILD_CLIENT)
++
++set(pstream_serverxx_LIBS	xmlrpc_server_pstream++)
++ensc_add_example(pstream_inetd_server  cpp pstream_serverxx)
++ensc_add_example(pstream_serial_server cpp pstream_serverxx)
++
++
++
++ensc_set_link_exe_flags(${example_TARGETS})
+diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt
+new file mode 100644
+index 0000000..ebfdba5
+--- /dev/null
++++ b/include/CMakeLists.txt
+@@ -0,0 +1,3 @@
++# -*- cmake -*-
++
++add_subdirectory(xmlrpc-c)
+diff --git a/include/xmlrpc-c/CMakeLists.txt b/include/xmlrpc-c/CMakeLists.txt
+new file mode 100644
+index 0000000..b9386b8
+--- /dev/null
++++ b/include/xmlrpc-c/CMakeLists.txt
+@@ -0,0 +1,74 @@
++# -*- cmake -*-
++
++macro(ensc_install_symlink src dst)
++  install(CODE "EXECUTE_PROCESS(COMMAND ln -s xmlrpc-c/${src} \$ENV{DESTDIR}${includedir}/${dst})")
++endmacro(ensc_install_symlink)
++
++list(APPEND headers
++  ${CMAKE_CURRENT_BINARY_DIR}/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)
++
++list(APPEND compat_links "oldxmlrpc.h         xmlrpc.h")
++list(APPEND compat_links "server.h            xmlrpc_server.h")
++list(APPEND compat_links "server_abyss.h      xmlrpc_abyss.h")
++list(APPEND compat_links "server_w32httpsys.h xmlrpc_server_w32httpsys.h")
++
++
++if(ENABLE_CPLUSPLUS)
++  list(APPEND headers
++    oldcppwrapper.hpp
++    girerr.hpp
++    girmem.hpp
++    base.hpp
++    timeout.hpp
++    xml.hpp
++    registry.hpp
++    server_abyss.hpp
++    packetsocket.hpp
++    server_pstream.hpp)
++
++  list(APPEND compat_links "oldcppwrapper.hpp XmlRpcCpp.h")
++endif(ENABLE_CPLUSPLUS)
++
++if(MUST_BUILD_CLIENT)
++  list(APPEND headers
++    client.h
++    transport.h
++    client_global.h)
++
++  list(APPEND compat_links "client.h xmlrpc_client.h")
++
++  if(ENABLE_CPLUSPLUS)
++    list(APPEND headers
++      client.hpp
++      client_transport.hpp
++      client_simple.hpp)
++  endif(ENABLE_CPLUSPLUS)
++endif(MUST_BUILD_CLIENT)
++
++if(ENABLE_CGI_SERVER)
++  list(APPEND headers
++    server_cgi.h)
++
++  list(APPEND compat_links "server_cgi.h xmlrpc_cgi.h")
++endif(ENABLE_CGI_SERVER)
++
++install(FILES
++  ${headers}
++  DESTINATION ${includedir}/xmlrpc-c)
++
++foreach (ln ${compat_links})
++  separate_arguments(ln)
++  ensc_install_symlink(${ln})
++endforeach(ln)
+diff --git a/include/xmlrpc-c/config.h.cmake b/include/xmlrpc-c/config.h.cmake
+new file mode 100644
+index 0000000..48f64be
+--- /dev/null
++++ b/include/xmlrpc-c/config.h.cmake
+@@ -0,0 +1,34 @@
++/* --*- c -*-- */
++#ifndef XMLRPC_C_CONFIG_H_INCLUDED
++#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 <xmlrpc-c/...> header files need in
++   order to compile correctly when #included in Xmlrpc-c
++   user code.
++
++   Those header files #include this one.
++
++   This file was created by a make rule.
++*/
++#define XMLRPC_HAVE_WCHAR		@HAVE_WCHAR_H@
++#ifdef _WIN32
++  /* SOCKET is a type defined by <winsock.h>.  Anyone who
++     uses XMLRPC_SOCKET on a WIN32 system must #include
++     <winsock.h>
++  */
++  #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
++
++#endif
+diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
+new file mode 100644
+index 0000000..7f8f912
+--- /dev/null
++++ b/lib/CMakeLists.txt
+@@ -0,0 +1,12 @@
++## -*- cmake -*-
++
++add_subdirectory(abyss)
++add_subdirectory(libutil)
++add_subdirectory(util)
++add_subdirectory(curl_transport)
++add_subdirectory(libwww_transport)
++add_subdirectory(wininet_transport)
++
++if(NOT ENABLE_LIBXML2_BACKEND)
++  add_subdirectory(expat)
++endif(NOT ENABLE_LIBXML2_BACKEND)
+diff --git a/lib/abyss/CMakeLists.txt b/lib/abyss/CMakeLists.txt
+new file mode 100644
+index 0000000..2358061
+--- /dev/null
++++ b/lib/abyss/CMakeLists.txt
+@@ -0,0 +1,3 @@
++## -*- cmake -*-
++
++SUBDIRS(src)
+diff --git a/lib/abyss/src/CMakeLists.txt b/lib/abyss/src/CMakeLists.txt
+new file mode 100644
+index 0000000..b1813bb
+--- /dev/null
++++ b/lib/abyss/src/CMakeLists.txt
+@@ -0,0 +1,70 @@
++## -*- cmake -*-
++
++set(xmlrpc_abyss_SOURCES
++  abyss_info.h
++  channel.c
++  channel.h
++  chanswitch.c
++  chanswitch.h
++  conf.c
++  conn.c
++  conn.h
++  data.c
++  data.h
++  date.c
++  date.h
++  file.c
++  file.h
++  handler.c
++  handler.h
++  http.c
++  http.h
++  init.c
++  response.c
++  server.c
++  server.h
++  session.c
++  session.h
++  socket.c
++  socket.h
++  thread.h
++  token.c
++  token.h
++  trace.c
++  trace.h)
++
++add_definitions(-D_UNIX)
++
++if(WIN32)
++  list(APPEND xmlrpc_abyss_SOURCES thread_windows.c)
++else(WIN32)
++  list(APPEND xmlrpc_abyss_SOURCES socket_unix.c socket_unix.h)
++
++  if(ENABLE_ABYSS_THREADS)
++    list(APPEND xmlrpc_abyss_SOURCES thread_pthread.c)
++  else(ENABLE_ABYSS_THREADS)
++    list(APPEND xmlrpc_abyss_SOURCES thread_fork.c)
++  endif(ENABLE_ABYSS_THREADS)
++endif(WIN32)
++
++add_library(xmlrpc_abyss SHARED ${xmlrpc_abyss_SOURCES})
++target_link_libraries(xmlrpc_abyss xmlrpc_util)
++
++if(ENABLE_ABYSS_THREADS)
++  set_target_properties(xmlrpc_abyss PROPERTIES DEFINE_SYMBOL _THREAD)
++  target_link_libraries(xmlrpc_abyss ${THREAD_LIBS})
++  ensc_pkgconfig_lib(xmlrpc_abyss "${THREAD_LIBS_PKGCONFIG}")
++endif(ENABLE_ABYSS_THREADS)
++
++install(TARGETS xmlrpc_abyss
++  RUNTIME DESTINATION ${_bin}
++  LIBRARY DESTINATION ${_lib}
++  ARCHIVE DESTINATION ${_lib})
++
++set_target_properties(xmlrpc_abyss
++  PROPERTIES
++  LINK_FLAGS ${XMLRPC_LINKER_FLAGS}
++  VERSION    ${XMLRPC_C_LIBVERSION}
++  SOVERSION  ${XMLRPC_C_SOVERSION})
++
++ensc_pkgconfig(xmlrpc_abyss)
+diff --git a/lib/abyss/src/xmlrpc_abyss.pc.cmake b/lib/abyss/src/xmlrpc_abyss.pc.cmake
+new file mode 100644
+index 0000000..b0dbcc9
+--- /dev/null
++++ b/lib/abyss/src/xmlrpc_abyss.pc.cmake
+@@ -0,0 +1,12 @@
++bindir=@bindir@
++prefix=@prefix@
++libdir=@libdir@
++includedir=@includedir@
++
++Name:	     xmlrpc_abyss
++Description: XMLRPC Abyss base library
++Version:     @XMLRPC_C_VERSION@
++
++Requires.private:	xmlrpc_util
++Libs:			-L${libdir} -lxmlrpc_abyss @xmlrpc_abyss_pkgconfig_libs@
++Cflags:
+diff --git a/lib/curl_transport/CMakeLists.txt b/lib/curl_transport/CMakeLists.txt
+new file mode 100644
+index 0000000..4224a13
+--- /dev/null
++++ b/lib/curl_transport/CMakeLists.txt
+@@ -0,0 +1,20 @@
++# -*- cmake -*-
++
++if(MUST_BUILD_CURL_CLIENT)
++  list(APPEND transport_SOURCES
++    ${CMAKE_CURRENT_SOURCE_DIR}/xmlrpc_curl_transport.c
++
++    ${CMAKE_CURRENT_SOURCE_DIR}/curltransaction.c
++    ${CMAKE_CURRENT_SOURCE_DIR}/curltransaction.h
++
++    ${CMAKE_CURRENT_SOURCE_DIR}/curlmulti.c
++    ${CMAKE_CURRENT_SOURCE_DIR}/curlmulti.h
++
++    ${CMAKE_CURRENT_SOURCE_DIR}/lock.h
++
++    ${CMAKE_CURRENT_SOURCE_DIR}/lock_pthread.c
++    ${CMAKE_CURRENT_SOURCE_DIR}/lock_pthread.h
++
++    ${CMAKE_CURRENT_SOURCE_DIR}/curlversion.h
++    )
++endif(MUST_BUILD_CURL_CLIENT)
+diff --git a/lib/expat/CMakeLists.txt b/lib/expat/CMakeLists.txt
+new file mode 100644
+index 0000000..7397f52
+--- /dev/null
++++ b/lib/expat/CMakeLists.txt
+@@ -0,0 +1,9 @@
++# -*- cmake -*-
++
++
++INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/xmltok)
++
++add_subdirectory(gennmtab)
++add_subdirectory(xmlparse)
++add_subdirectory(xmltok)
++add_subdirectory(xmlwf)
+diff --git a/lib/expat/gennmtab/CMakeLists.txt b/lib/expat/gennmtab/CMakeLists.txt
+new file mode 100644
+index 0000000..48a44da
+--- /dev/null
++++ b/lib/expat/gennmtab/CMakeLists.txt
+@@ -0,0 +1,3 @@
++# -*- cmake -*-
++
++ADD_EXECUTABLE(gennmtab gennmtab.c)
+diff --git a/lib/expat/xmlparse/CMakeLists.txt b/lib/expat/xmlparse/CMakeLists.txt
+new file mode 100644
+index 0000000..f87008a
+--- /dev/null
++++ b/lib/expat/xmlparse/CMakeLists.txt
+@@ -0,0 +1,7 @@
++# -*- cmake -*-
++
++add_library(xmlrpc_xmlparse STATIC
++  xmlparse.c)
++target_link_libraries(xmlrpc_xmlparse xmlrpc_xmltok)
++
++ensc_pkgconfig(xmlrpc_xmlparse)
+diff --git a/lib/expat/xmlparse/xmlrpc_xmlparse.pc.cmake b/lib/expat/xmlparse/xmlrpc_xmlparse.pc.cmake
+new file mode 100644
+index 0000000..5b2a7e4
+--- /dev/null
++++ b/lib/expat/xmlparse/xmlrpc_xmlparse.pc.cmake
+@@ -0,0 +1,12 @@
++bindir=@bindir@
++prefix=@prefix@
++libdir=@libdir@
++includedir=@includedir@
++
++Name:        xmlrpc_xmlparse
++Description: XMLRPC xmlparse library
++Version:     @XMLRPC_C_VERSION@
++
++Requires.private:	xmlrpc_xmltok
++Libs:   		-L${libdir} -lxmlrpc_xmlparse
++Cflags:
+diff --git a/lib/expat/xmltok/CMakeLists.txt b/lib/expat/xmltok/CMakeLists.txt
+new file mode 100644
+index 0000000..42406fb
+--- /dev/null
++++ b/lib/expat/xmltok/CMakeLists.txt
+@@ -0,0 +1,23 @@
++# -*- cmake -*-
++
++include_directories(${CMAKE_CURRENT_BINARY_DIR})
++
++add_definitions(-DXML_BYTE_ORDER=0)
++
++add_library(xmlrpc_xmltok STATIC
++  xmltok.c xmlrole.c xmltok_impl.c
++  ${CMAKE_CURRENT_BINARY_DIR}/nametab.h)
++
++set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/nametab.h
++  PROPERTIES
++  OBJECT_DEPENDS gennmtab
++  GENERATED true)
++
++
++get_target_property(GENNMTAB_EXECUTABLE gennmtab LOCATION)
++add_custom_command(
++  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/nametab.h
++  COMMAND ${GENNMTAB_EXECUTABLE} >nametab.h || { rm -f nametab.h\; false\; }
++  DEPENDS gennmtab)
++
++ensc_pkgconfig(xmlrpc_xmltok)
+diff --git a/lib/expat/xmltok/xmlrpc_xmltok.pc.cmake b/lib/expat/xmltok/xmlrpc_xmltok.pc.cmake
+new file mode 100644
+index 0000000..88e7ad8
+--- /dev/null
++++ b/lib/expat/xmltok/xmlrpc_xmltok.pc.cmake
+@@ -0,0 +1,9 @@
++prefix=@prefix@
++libdir=@libdir@
++
++Name:        xmlrpc_xmltok
++Description: XMLRPC xmltok library
++Version:     @XMLRPC_C_VERSION@
++
++Libs:   	-L${libdir}
++Cflags:
+diff --git a/lib/libutil/CMakeLists.txt b/lib/libutil/CMakeLists.txt
+new file mode 100644
+index 0000000..25ba487
+--- /dev/null
++++ b/lib/libutil/CMakeLists.txt
+@@ -0,0 +1,26 @@
++# -*- cmake -*-
++
++add_library(xmlrpc_util SHARED
++  asprintf.c
++  base64.c
++  error.c
++  make_printable.c
++  memblock.c
++  select.c
++  sleep.c
++  string_number.c
++  time.c
++  utf8.c)
++
++set_target_properties(xmlrpc_util
++  PROPERTIES
++  LINK_FLAGS ${XMLRPC_LINKER_FLAGS}
++  VERSION    ${XMLRPC_C_LIBVERSION}
++  SOVERSION  ${XMLRPC_C_SOVERSION})
++
++install(TARGETS xmlrpc_util
++  RUNTIME DESTINATION ${_bin}
++  LIBRARY DESTINATION ${_lib}
++  ARCHIVE DESTINATION ${_lib})
++
++ensc_pkgconfig(xmlrpc_util)
+diff --git a/lib/libutil/xmlrpc_util.pc.cmake b/lib/libutil/xmlrpc_util.pc.cmake
+new file mode 100644
+index 0000000..d4e01bf
+--- /dev/null
++++ b/lib/libutil/xmlrpc_util.pc.cmake
+@@ -0,0 +1,10 @@
++prefix=@prefix@
++libdir=@libdir@
++includedir=@includedir@
++
++Name:	     xmlrpc_util
++Description: XMLRPC utility library
++Version:     @XMLRPC_C_VERSION@
++
++Libs:		-L${libdir} -lxmlrpc_util
++Cflags:		-I${includedir}
+diff --git a/lib/libwww_transport/CMakeLists.txt b/lib/libwww_transport/CMakeLists.txt
+new file mode 100644
+index 0000000..aa52d9e
+--- /dev/null
++++ b/lib/libwww_transport/CMakeLists.txt
+@@ -0,0 +1,7 @@
++# -*- cmake -*-
++
++if(MUST_BUILD_LIBWWW_CLIENT)
++  list(APPEND transport_SOURCES
++    ${CMAKE_CURRENT_SOURCE_DIR}/xmlrpc_libwww_transport.c
++    ${CMAKE_CURRENT_SOURCE_DIR}/xmlrpc_libwww_transport.h)
++endif(MUST_BUILD_LIBWWW_CLIENT)
+diff --git a/lib/util/CMakeLists.txt b/lib/util/CMakeLists.txt
+new file mode 100644
+index 0000000..80696d9
+--- /dev/null
++++ b/lib/util/CMakeLists.txt
+@@ -0,0 +1,17 @@
++## -*- cmake -*-
++
++set(util_SOURCES
++  casprintf.c
++  cmdline_parser.c
++  cmdline_parser_cpp.cpp
++  getoptx.c
++  getoptx.h
++  stripcaseeq.c
++  string_parser.c
++)
++
++if(WIN32)
++  list(APPEND util_SOURCES pthreadx_win32.c)
++endif(WIN32)
++
++add_library(util STATIC ${util_SOURCES})
+diff --git a/lib/wininet_transport/CMakeLists.txt b/lib/wininet_transport/CMakeLists.txt
+new file mode 100644
+index 0000000..17535ab
+--- /dev/null
++++ b/lib/wininet_transport/CMakeLists.txt
+@@ -0,0 +1,7 @@
++# -*- cmake -*-
++
++if(MUST_BUILD_WININET_CLIENT)
++  list(APPEND transport_SOURCES
++    ${CMAKE_CURRENT_SOURCE_DIR}/xmlrpc_wininet_transport.c
++    ${CMAKE_CURRENT_SOURCE_DIR}/xmlrpc_wininet_transport.h)
++endif(MUST_BUILD_WININET_CLIENT)
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+new file mode 100644
+index 0000000..f51e15b
+--- /dev/null
++++ b/src/CMakeLists.txt
+@@ -0,0 +1,121 @@
++# -*- cmake -*-
++
++if(ENABLE_LIBXML2_BACKEND)
++  set(xmlrpc_xml_parser xmlrpc_libxml2.c)
++  set(libxml_INCLUDES ${LIBXML2_CFLAGS})
++  set(libxml_LIBS     ${LIBXML2_LDFLAGS})
++  set(xmlrpc_pkgconfig_req ${libxml_pkgconfig})
++else(ENABLE_LIBXML2_BACKEND)
++  set(xmlrpc_xml_parser xmlrpc_expat.c)
++  set(libxml_INCLUDES -I${xmlrpc-c_SOURCE_DIR}/lib/expat/xmlparse)
++  set(libxml_LIBS xmlrpc_xmlparse)
++  set(xmlrpc_pkgconfig_req xmlrpc_xmlparse)
++endif(ENABLE_LIBXML2_BACKEND)
++
++if(MUST_BUILD_WININET_CLIENT)
++  set(client_wininet_CFLAGS "")
++  set(client_wininet_LIBS   "${WININET_LDADD}" pthread)
++  list(APPEND transport_SOURCES
++    ${wininet_srcdir}/xmlrpc_wininet_transport.c ${wininet_srcdir}/xmlrpc_wininet_transport.h)
++endif(MUST_BUILD_WININET_CLIENT)
++
++if(MUST_BUILD_LIBWWW_CLIENT)
++  set(client_libwww_CFLAGS "${LIBWWW_CFLAGS}")
++  set(client_libwww_LIBS   "${LIBWWW_LIBS}")
++  list(APPEND transport_SOURCES ${libwww_srcdir}/xmlrpc_libwww_transport.c ${libwww_srcdir}/xmlrpc_libwww_transport.h)
++endif(MUST_BUILD_LIBWWW_CLIENT)
++
++if(MUST_BUILD_CURL_CLIENT)
++  set(client_curl_CFLAGS ${CURL_CFLAGS})
++  set(client_curl_LIBS   ${CURL_LDFLAGS} pthread)
++  set(xmlrpc_client_pkgconfig_req libcurl)
++  list(APPEND transport_SOURCES
++    ${curl_srcdir}/xmlrpc_curl_transport.c
++    ${curl_srcdir}/curltransaction.c
++    ${curl_srcdir}/curltransaction.h
++    ${curl_srcdir}/curlmulti.c
++    ${curl_srcdir}/curlmulti.h
++    ${curl_srcdir}/lock.h
++    ${curl_srcdir}/lock_pthread.c
++    ${curl_srcdir}/lock_pthread.h
++    ${curl_srcdir}/curlversion.h
++    )
++endif(MUST_BUILD_CURL_CLIENT)
++
++set(client_CFLAGS "-I${wininet_srcdir} -I${libwww_srcdir} -I${curl_srcdir} ${client_wininet_CFLAGS} ${client_libwww_CFLAGS} ${client_curl_CFLAGS}")
++set(client_LIBS   ${client_wininet_LIBS} ${client_libwww_LIBS} ${client_curl_LIBS})
++
++
++add_subdirectory(cpp)
++
++
++
++### libxmlrpc.so
++add_library(xmlrpc SHARED
++  double.c parse_datetime.c parse_value.c resource.c trace.c version.c
++  json.c
++  ${xmlrpc_xml_parser}
++  xmlrpc_data.c xmlrpc_datetime.c xmlrpc_string.c
++  xmlrpc_array.c xmlrpc_struct.c
++  xmlrpc_build.c xmlrpc_decompose.c xmlrpc_parse.c xmlrpc_serialize.c
++  xmlrpc_authcookie.c)
++
++set_target_properties(xmlrpc
++  PROPERTIES
++  COMPILE_FLAGS ${libxml_INCLUDES})
++
++ensc_pkgconfig(xmlrpc)
++target_link_libraries(xmlrpc ${libxml_LIBS} xmlrpc_util)
++list(APPEND lib_TARGETS xmlrpc)
++
++### libxmlrpc_client.so
++add_library(xmlrpc_client SHARED
++  xmlrpc_client.c xmlrpc_client_global.c xmlrpc_server_info.c ${transport_SOURCES})
++
++target_link_libraries(xmlrpc_client xmlrpc ${client_LIBS})
++set_target_properties(xmlrpc_client
++  PROPERTIES
++  COMPILE_FLAGS "${client_CFLAGS}")
++list(APPEND lib_TARGETS xmlrpc_client)
++ensc_pkgconfig(xmlrpc_client)
++
++### libxmlrpc_server.so
++add_library(xmlrpc_server SHARED
++  registry.c method.c system_method.c)
++target_link_libraries(xmlrpc_server xmlrpc)
++list(APPEND lib_TARGETS xmlrpc_server)
++ensc_pkgconfig(xmlrpc_server)
++
++
++### libxmlrpc_server_abyss.so
++if(ENABLE_ABYSS_SERVER)
++  add_library(xmlrpc_server_abyss SHARED
++    xmlrpc_server_abyss.c abyss_handler.c)
++  target_link_libraries(xmlrpc_server_abyss xmlrpc_abyss xmlrpc_server)
++  list(APPEND lib_TARGETS xmlrpc_server_abyss)
++  ensc_pkgconfig(xmlrpc_server_abyss)
++endif(ENABLE_ABYSS_SERVER)
++
++
++
++### libxmlrpc_server_cgi.so
++if(ENABLE_CGI_SERVER)
++  add_library(xmlrpc_server_cgi SHARED
++    xmlrpc_server_cgi)
++  target_link_libraries(xmlrpc_server_cgi xmlrpc_server)
++  list(APPEND lib_TARGETS xmlrpc_server_cgi)
++  ensc_pkgconfig(xmlrpc_server_cgi)
++endif(ENABLE_CGI_SERVER)
++
++install(TARGETS ${lib_TARGETS}
++  RUNTIME DESTINATION ${_bin}
++  LIBRARY DESTINATION ${_lib})
++
++set_target_properties(${lib_TARGETS}
++  PROPERTIES
++  LINK_FLAGS ${XMLRPC_LINKER_FLAGS}
++  VERSION    ${XMLRPC_C_LIBVERSION}
++  SOVERSION  ${XMLRPC_C_SOVERSION})
++
++
++enable_testing()
+diff --git a/src/cpp/CMakeLists.txt b/src/cpp/CMakeLists.txt
+new file mode 100644
+index 0000000..3171156
+--- /dev/null
++++ b/src/cpp/CMakeLists.txt
+@@ -0,0 +1,70 @@
++# -*- cmake -*-
++
++####### libxmlrpc++.so
++add_library(xmlrpc++ SHARED
++  base64.cpp env_wrap.cpp fault.cpp girerr.cpp girmem.cpp
++  outcome.cpp param_list.cpp value.cpp xml.cpp)
++target_link_libraries(xmlrpc++ xmlrpc pthread)
++list(APPEND lib_TARGETS xmlrpc++)
++ensc_pkgconfig(xmlrpc++)
++
++####### libxmlrpc_cpp.so
++add_library(xmlrpc_cpp            SHARED XmlRpcCpp)
++target_link_libraries(xmlrpc_cpp xmlrpc xmlrpc_server xmlrpc_client)
++list(APPEND lib_TARGETS xmlrpc_cpp)
++ensc_pkgconfig(xmlrpc_cpp)
++
++####### libxmlrpc_server++.so
++add_library(xmlrpc_server++       SHARED registry.cpp)
++target_link_libraries(xmlrpc_server++ xmlrpc++ xmlrpc_server)
++list(APPEND lib_TARGETS xmlrpc_server++)
++ensc_pkgconfig(xmlrpc_server++)
++
++####### libxmlrpc_server_abyss++.so
++if(ENABLE_ABYSS_SERVER)
++  add_library(xmlrpc_server_abyss++ SHARED server_abyss.cpp)
++  target_link_libraries(xmlrpc_server_abyss++ xmlrpc_server++ xmlrpc_server_abyss)
++  list(APPEND lib_TARGETS xmlrpc_server_abyss++)
++  ensc_pkgconfig(xmlrpc_server_abyss++)
++endif(ENABLE_ABYSS_SERVER)
++
++####### libxmlrpc_server_cgi++.so
++if(ENABLE_CGI_SERVER)
++  add_library(xmlrpc_server_cgi++ SHARED server_cgi.cpp)
++  target_link_libraries(xmlrpc_server_cgi++ xmlrpc_server++)
++  list(APPEND lib_TARGETS xmlrpc_server_cgi++)
++  ensc_pkgconfig(xmlrpc_server_cgi++)
++endif(ENABLE_CGI_SERVER)
++
++####### libxmlrpc_server_pstream++.so
++add_library(xmlrpc_server_pstream++ SHARED server_pstream.cpp server_pstream_conn)
++target_link_libraries(xmlrpc_server_pstream++ xmlrpc_server++ xmlrpc_packetsocket)
++list(APPEND lib_TARGETS xmlrpc_server_pstream++)
++ensc_pkgconfig(xmlrpc_server_pstream++)
++
++####### libxmlrpc_packetsocket.so
++add_library(xmlrpc_packetsocket SHARED packetsocket.cpp)
++target_link_libraries(xmlrpc_packetsocket xmlrpc++)
++list(APPEND lib_TARGETS xmlrpc_packetsocket)
++ensc_pkgconfig(xmlrpc_packetsocket)
++
++####### libxmlrpc_client++.so
++add_library(xmlrpc_client++       SHARED
++  client.cpp client_simple.cpp curl.cpp libwww.cpp wininet.cpp pstream.cpp)
++set_target_properties(xmlrpc_client++
++  PROPERTIES
++  COMPILE_FLAGS "-I${wininet_srcdir} -I${libwww_srcdir} -I${curl_srcdir}")
++target_link_libraries(xmlrpc_client++ xmlrpc++ xmlrpc_client xmlrpc_packetsocket)
++list(APPEND lib_TARGETS xmlrpc_client++)
++ensc_pkgconfig(xmlrpc_client++)
++
++
++install(TARGETS ${lib_TARGETS}
++  RUNTIME DESTINATION ${_bin}
++  LIBRARY DESTINATION ${_lib})
++
++set_target_properties(${lib_TARGETS}
++  PROPERTIES
++  LINK_FLAGS ${XMLRPC_LINKER_FLAGS}
++  VERSION    ${XMLRPC_CXX_LIBVERSION}
++  SOVERSION  ${XMLRPC_CXX_SOVERSION})
+diff --git a/src/cpp/test/CMakeLists.txt b/src/cpp/test/CMakeLists.txt
+new file mode 100644
+index 0000000..dffd36c
+--- /dev/null
++++ b/src/cpp/test/CMakeLists.txt
+@@ -0,0 +1,18 @@
++# -*- cmake -*-
++
++set(test_SOURCES
++  test.cpp base64.cpp registry.cpp server_abyss.cpp
++  server_pstream.cpp tools.cpp value.cpp xml.cpp )
++
++if(MUST_BUILD_CLIENT)
++  list(APPEND test_SOURCES testclient.cpp)
++  list(APPEND test_LIBS    xmlrpc_client++)
++else(MUST_BUILD_CLIENT)
++  list(APPEND test_SOURCES testclient_dummy.c)
++endif(MUST_BUILD_CLIENT)
++
++add_executable(src-test ${test_SOURCES})
++target_link_libraries(src-test xmlrpc_server_abyss++ util ${test_LIBS})
++
++enable_testing()
++add_test(runtests src-test)
+diff --git a/src/cpp/xmlrpc++.pc.cmake b/src/cpp/xmlrpc++.pc.cmake
+new file mode 100644
+index 0000000..e99d81e
+--- /dev/null
++++ b/src/cpp/xmlrpc++.pc.cmake
+@@ -0,0 +1,12 @@
++bindir=@bindir@
++prefix=@prefix@
++libdir=@libdir@
++includedir=@includedir@
++
++Name:	     xmlrpc++
++Description: XMLRPC C++ Base library
++Version:     @XMLRPC_C_VERSION@
++
++Requires.private:	xmlrpc xmlrpc_util
++Libs:			-L${libdir} -lxmlrpc++
++Cflags:			-I${includedir}
+diff --git a/src/cpp/xmlrpc_client++.pc.cmake b/src/cpp/xmlrpc_client++.pc.cmake
+new file mode 100644
+index 0000000..fe1f835
+--- /dev/null
++++ b/src/cpp/xmlrpc_client++.pc.cmake
+@@ -0,0 +1,12 @@
++bindir=@bindir@
++prefix=@prefix@
++libdir=@libdir@
++includedir=@includedir@
++
++Name:	     xmlrpc_client++
++Description: XMLRPC C++ Client library
++Version:     @XMLRPC_C_VERSION@
++
++Requires.private:	xmlrpc++ xmlrpc_client xmlrpc_packetsocket xmlrpc xmlrpc_util
++Libs:			-L${libdir} -lxmlrpc_client++
++Cflags:			-I${includedir}
+diff --git a/src/cpp/xmlrpc_cpp.pc.cmake b/src/cpp/xmlrpc_cpp.pc.cmake
+new file mode 100644
+index 0000000..9f94252
+--- /dev/null
++++ b/src/cpp/xmlrpc_cpp.pc.cmake
+@@ -0,0 +1,12 @@
++bindir=@bindir@
++prefix=@prefix@
++libdir=@libdir@
++includedir=@includedir@
++
++Name:	     xmlrpc_cpp
++Description: XMLRPC CPP library
++Version:     @XMLRPC_C_VERSION@
++
++Requires.private:	xmlrpc xmlrpc_server xmlrpc_util
++Libs:			-L${libdir} -lxmlrpc_cpp
++Cflags:			-I${includedir}
+diff --git a/src/cpp/xmlrpc_packetsocket.pc.cmake b/src/cpp/xmlrpc_packetsocket.pc.cmake
+new file mode 100644
+index 0000000..e168da3
+--- /dev/null
++++ b/src/cpp/xmlrpc_packetsocket.pc.cmake
+@@ -0,0 +1,12 @@
++bindir=@bindir@
++prefix=@prefix@
++libdir=@libdir@
++includedir=@includedir@
++
++Name:	     xmlrpc_packetsocket
++Description: XMLRPC C++ packsetsocket library
++Version:     @XMLRPC_C_VERSION@
++
++Requires.private:	xmlrpc++
++Libs:			-L${libdir} -lxmlrpc_packetsocket
++Cflags:			-I${includedir}
+diff --git a/src/cpp/xmlrpc_server++.pc.cmake b/src/cpp/xmlrpc_server++.pc.cmake
+new file mode 100644
+index 0000000..5080b63
+--- /dev/null
++++ b/src/cpp/xmlrpc_server++.pc.cmake
+@@ -0,0 +1,12 @@
++bindir=@bindir@
++prefix=@prefix@
++libdir=@libdir@
++includedir=@includedir@
++
++Name:	     xmlrpc_server++
++Description: XMLRPC C++ Server library
++Version:     @XMLRPC_C_VERSION@
++
++Requires.private:	xmlrpc++ xmlrpc_server xmlrpc xmlrpc_util
++Libs:			-L${libdir} -lxmlrpc_server++
++Cflags:			-I${includedir}
+diff --git a/src/cpp/xmlrpc_server_abyss++.pc.cmake b/src/cpp/xmlrpc_server_abyss++.pc.cmake
+new file mode 100644
+index 0000000..f1d2198
+--- /dev/null
++++ b/src/cpp/xmlrpc_server_abyss++.pc.cmake
+@@ -0,0 +1,12 @@
++bindir=@bindir@
++prefix=@prefix@
++libdir=@libdir@
++includedir=@includedir@
++
++Name:	     xmlrpc_server_abyss++
++Description: XMLRPC C++ Abyss-Server library
++Version:     @XMLRPC_C_VERSION@
++
++Requires.private:	xmlrpc_server++ xmlrpc_server_abyss xmlrpc++ xmlrpc_abyss xmlrpc_util
++Libs:			-L${libdir} -lxmlrpc_server_abyss++
++Cflags:			-I${includedir}
+diff --git a/src/cpp/xmlrpc_server_cgi++.pc.cmake b/src/cpp/xmlrpc_server_cgi++.pc.cmake
+new file mode 100644
+index 0000000..9021564
+--- /dev/null
++++ b/src/cpp/xmlrpc_server_cgi++.pc.cmake
+@@ -0,0 +1,12 @@
++bindir=@bindir@
++prefix=@prefix@
++libdir=@libdir@
++includedir=@includedir@
++
++Name:	     xmlrpc_server_cgi++
++Description: XMLRPC C++ CGI-Server library
++Version:     @XMLRPC_C_VERSION@
++
++Requires.private:	xmlrpc_server++ xmlrpc++ xmlrpc
++Libs:			-L${libdir} -lxmlrpc_server_cgi++
++Cflags:			-I${includedir}
+diff --git a/src/cpp/xmlrpc_server_pstream++.pc.cmake b/src/cpp/xmlrpc_server_pstream++.pc.cmake
+new file mode 100644
+index 0000000..9b4819f
+--- /dev/null
++++ b/src/cpp/xmlrpc_server_pstream++.pc.cmake
+@@ -0,0 +1,12 @@
++bindir=@bindir@
++prefix=@prefix@
++libdir=@libdir@
++includedir=@includedir@
++
++Name:	     xmlrpc_server_pstream++
++Description: XMLRPC C++ pstream-Server library
++Version:     @XMLRPC_C_VERSION@
++
++Requires.private:	xmlrpc_server++ xmlrpc_packetsocket xmlrpc++
++Libs:			-L${libdir} -lxmlrpc_server_pstream++
++Cflags:			-I${includedir}
+diff --git a/src/xmlrpc.pc.cmake b/src/xmlrpc.pc.cmake
+new file mode 100644
+index 0000000..7c098b8
+--- /dev/null
++++ b/src/xmlrpc.pc.cmake
+@@ -0,0 +1,12 @@
++bindir=@bindir@
++prefix=@prefix@
++libdir=@libdir@
++includedir=@includedir@
++
++Name:	     xmlrpc
++Description: XMLRPC base library
++Version:     @XMLRPC_C_VERSION@
++
++Requires.private:	@xmlrpc_pkgconfig_req@ xmlrpc_util
++Libs:			-L${libdir} -lxmlrpc @xmlrpc_pkgconfig_libs@
++Cflags:			-I${includedir}
+diff --git a/src/xmlrpc_client.pc.cmake b/src/xmlrpc_client.pc.cmake
+new file mode 100644
+index 0000000..61543d4
+--- /dev/null
++++ b/src/xmlrpc_client.pc.cmake
+@@ -0,0 +1,12 @@
++bindir=@bindir@
++prefix=@prefix@
++libdir=@libdir@
++includedir=@includedir@
++
++Name:	     xmlrpc_client
++Description: XMLRPC client library
++Version:     @XMLRPC_C_VERSION@
++
++Requires.private:	xmlrpc @xmlrpc_client_pkgconfig_req@ xmlrpc_util
++Libs:			-L${libdir} -lxmlrpc_client @client_libwww_LIBS@ @client_wininet_LIBS@
++Cflags:			-I${includedir}
+diff --git a/src/xmlrpc_server.pc.cmake b/src/xmlrpc_server.pc.cmake
+new file mode 100644
+index 0000000..cade53d
+--- /dev/null
++++ b/src/xmlrpc_server.pc.cmake
+@@ -0,0 +1,12 @@
++bindir=@bindir@
++prefix=@prefix@
++libdir=@libdir@
++includedir=@includedir@
++
++Name:	     xmlrpc_server
++Description: XMLRPC Server library
++Version:     @XMLRPC_C_VERSION@
++
++Requires.private:	xmlrpc xmlrpc_util
++Libs:			-L${libdir} -lxmlrpc_server
++Cflags:			-I${includedir}
+diff --git a/src/xmlrpc_server_abyss.pc.cmake b/src/xmlrpc_server_abyss.pc.cmake
+new file mode 100644
+index 0000000..198c780
+--- /dev/null
++++ b/src/xmlrpc_server_abyss.pc.cmake
+@@ -0,0 +1,12 @@
++bindir=@bindir@
++prefix=@prefix@
++libdir=@libdir@
++includedir=@includedir@
++
++Name:	     xmlrpc_server_abyss
++Description: XMLRPC Server Abyss library
++Version:     @XMLRPC_C_VERSION@
++
++Requires.private:	xmlrpc_server xmlrpc_abyss xmlrpc xmlrpc_util
++Libs:			-L${libdir} -lxmlrpc_server_abyss
++Cflags:			-I${includedir}
+diff --git a/src/xmlrpc_server_cgi.pc.cmake b/src/xmlrpc_server_cgi.pc.cmake
+new file mode 100644
+index 0000000..748b550
+--- /dev/null
++++ b/src/xmlrpc_server_cgi.pc.cmake
+@@ -0,0 +1,12 @@
++bindir=@bindir@
++prefix=@prefix@
++libdir=@libdir@
++includedir=@includedir@
++
++Name:	     xmlrpc_server_cgi
++Description: XMLRPC CGI-Server library
++Version:     @XMLRPC_C_VERSION@
++
++Requires.private:	xmlrpc_server xmlrpc xmlrpc_util
++Libs:			-L${libdir} -lxmlrpc_server_cgi
++Cflags:			-I${includedir}
+diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
+new file mode 100644
+index 0000000..e712382
+--- /dev/null
++++ b/test/CMakeLists.txt
+@@ -0,0 +1,41 @@
++# -*- cmake -*-
++
++set(test_SOURCES
++  abyss.c
++  abyss.h
++  test.c
++  cgi.c
++  method_registry.c
++  parse_xml.c
++  serialize.c
++  serialize_value.c
++  server_abyss.c
++  testtool.c
++  testtool.h
++  value.c
++  value_datetime.c
++  xml_data.c)
++
++if(MUST_BUILD_CLIENT)
++  list(APPEND test_SOURCES client.c)
++  list(APPEND test_LIBS xmlrpc_client)
++else(MUST_BUILD_CLIENT)
++  list(APPEND test_SOURCES client_dummy.c)
++endif(MUST_BUILD_CLIENT)
++
++
++add_executable(src-test ${test_SOURCES})
++target_link_libraries(src-test xmlrpc_server_abyss util ${test_LIBS})
++
++add_executable(src-cgitest1 cgitest1.c testtool.c testtool.h)
++target_link_libraries(src-cgitest1 xmlrpc_server_cgi)
++
++add_custom_command(TARGET src-test
++  POST_BUILD
++  COMMAND rm -f ${CMAKE_CURRENT_BINARY_DIR}/data
++  COMMAND ln -s ${CMAKE_CURRENT_SOURCE_DIR}/data ${CMAKE_CURRENT_BINARY_DIR})
++
++enable_testing()
++add_test(runtests src-test)
++
++add_subdirectory(cpp)
+diff --git a/test/cpp/CMakeLists.txt b/test/cpp/CMakeLists.txt
+new file mode 100644
+index 0000000..15a7c3a
+--- /dev/null
++++ b/test/cpp/CMakeLists.txt
+@@ -0,0 +1,34 @@
++# -*- cmake -*-
++
++set(testcpp_SOURCES
++  test.cpp
++  base64.cpp
++  registry.cpp
++  server_abyss.cpp
++  server_pstream.cpp
++  tools.cpp
++  value.cpp
++  xml.cpp)
++
++if(MUST_BUILD_CLIENT)
++  list(APPEND testcpp_SOURCES testclient.cpp)
++  list(APPEND testcpp_LIBS xmlrpc_client++)
++else(MUST_BUILD_CLIENT)
++  list(APPEND testcpp_SOURCES testclient_dummy.c)
++endif(MUST_BUILD_CLIENT)
++
++if(DEFINED MSVCRT)
++  list(APPEND testcpp_SOURCES ${CMAKE_SOURCE_DIR}/Windows/socketpair.cpp)
++endif(DEFINED MSVCRT)
++
++add_executable(src-testcpp ${testcpp_SOURCES})
++target_link_libraries(src-testcpp
++  xmlrpc++
++  xmlrpc_server++
++  xmlrpc_server_abyss++
++  xmlrpc_server_pstream++
++  xmlrpc_cpp
++  util ${testcpp_LIBS})
++
++enable_testing()
++add_test(runtests src-testcpp)
+diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
+new file mode 100644
+index 0000000..cd2a6d7
+--- /dev/null
++++ b/tools/CMakeLists.txt
+@@ -0,0 +1,22 @@
++# -*- cmake -*-
++
++add_subdirectory(lib)
++add_subdirectory(binmode-rpc-kit)
++add_subdirectory(turbocharger)
++add_subdirectory(xml)
++
++if (MUST_BUILD_CLIENT)
++  add_subdirectory(xmlrpc)
++  add_subdirectory(xmlrpc_transport)
++
++
++  if (ENABLE_CPLUSPLUS)
++    add_subdirectory(xml-rpc-api2cpp)
++    add_subdirectory(xml-rpc-api2txt)
++    add_subdirectory(xmlrpc_cpp_proxy)
++
++    if (BUILD_XMLRPC_PSTREAM AND ENABLE_CGI_SERVER)
++      add_subdirectory(xmlrpc_pstream)
++    endif()
++  endif()
++endif()
+diff --git a/tools/binmode-rpc-kit/CMakeLists.txt b/tools/binmode-rpc-kit/CMakeLists.txt
+new file mode 100644
+index 0000000..342423d
+--- /dev/null
++++ b/tools/binmode-rpc-kit/CMakeLists.txt
+@@ -0,0 +1 @@
++# -*- cmake -*-
+diff --git a/tools/lib/CMakeLists.txt b/tools/lib/CMakeLists.txt
+new file mode 100644
+index 0000000..342423d
+--- /dev/null
++++ b/tools/lib/CMakeLists.txt
+@@ -0,0 +1 @@
++# -*- cmake -*-
+diff --git a/tools/turbocharger/CMakeLists.txt b/tools/turbocharger/CMakeLists.txt
+new file mode 100644
+index 0000000..342423d
+--- /dev/null
++++ b/tools/turbocharger/CMakeLists.txt
+@@ -0,0 +1 @@
++# -*- cmake -*-
+diff --git a/tools/xml-rpc-api2cpp/CMakeLists.txt b/tools/xml-rpc-api2cpp/CMakeLists.txt
+new file mode 100644
+index 0000000..1e9134a
+--- /dev/null
++++ b/tools/xml-rpc-api2cpp/CMakeLists.txt
+@@ -0,0 +1,15 @@
++# -*- cmake -*-
++
++add_executable(xml-rpc-api2cpp
++  xml-rpc-api2cpp.cpp
++  DataType.cpp
++  XmlRpcFunction.cpp
++  XmlRpcClass.cpp
++  SystemProxy.cpp)
++target_link_libraries(xml-rpc-api2cpp xmlrpc_cpp xmlrpc_client)
++
++install(TARGETS xml-rpc-api2cpp
++  RUNTIME DESTINATION bin)
++
++install(FILES xml-rpc-api2cpp.1
++  DESTINATION ${mandir}/man1)
+diff --git a/tools/xml-rpc-api2txt/CMakeLists.txt b/tools/xml-rpc-api2txt/CMakeLists.txt
+new file mode 100644
+index 0000000..5b01824
+--- /dev/null
++++ b/tools/xml-rpc-api2txt/CMakeLists.txt
+@@ -0,0 +1,7 @@
++# -*- cmake -*-
++
++install(PROGRAMS xml-rpc-api2txt
++  DESTINATION ${bindir})
++
++install(FILES xml-rpc-api2txt.1
++  DESTINATION ${mandir}/man1)
+diff --git a/tools/xml/CMakeLists.txt b/tools/xml/CMakeLists.txt
+new file mode 100644
+index 0000000..0bab80c
+--- /dev/null
++++ b/tools/xml/CMakeLists.txt
+@@ -0,0 +1,16 @@
++# -*- cmake -*-
++
++add_executable(xmlrpc_parsecall
++  xmlrpc_parsecall.c
++  ../lib/dumpvalue.c)
++
++target_link_libraries(xmlrpc_parsecall
++  xmlrpc
++  util)
++
++install(TARGETS xmlrpc_parsecall
++  DESTINATION ${_bin})
++
++include_directories(../lib/include)
++
++ensc_set_link_exe_flags(xmlrpc_parsecall)
+diff --git a/tools/xmlrpc/CMakeLists.txt b/tools/xmlrpc/CMakeLists.txt
+new file mode 100644
+index 0000000..da01ec3
+--- /dev/null
++++ b/tools/xmlrpc/CMakeLists.txt
+@@ -0,0 +1,17 @@
++# -*- cmake -*-
++
++#set_directory_properties(PROPERTIES INCLUDE_DIRECTORIES ../lib/include)
++
++include_directories(../lib/include)
++add_executable(tool-xmlrpc
++  xmlrpc.c
++  ../lib/dumpvalue.c)
++target_link_libraries(tool-xmlrpc xmlrpc_client util)
++
++set_target_properties(tool-xmlrpc
++  PROPERTIES OUTPUT_NAME xmlrpc)
++
++install(TARGETS tool-xmlrpc
++  DESTINATION ${_bin})
++
++ensc_set_link_exe_flags(tool-xmlrpc)
+diff --git a/tools/xmlrpc/config.h b/tools/xmlrpc/config.h
+new file mode 100644
+index 0000000..7409aed
+--- /dev/null
++++ b/tools/xmlrpc/config.h
+@@ -0,0 +1 @@
++#include <xmlrpc_config.h>
+diff --git a/tools/xmlrpc_cpp_proxy/CMakeLists.txt b/tools/xmlrpc_cpp_proxy/CMakeLists.txt
+new file mode 100644
+index 0000000..4166023
+--- /dev/null
++++ b/tools/xmlrpc_cpp_proxy/CMakeLists.txt
+@@ -0,0 +1,17 @@
++# -*- cmake -*-
++
++add_executable(xmlrpc_cpp_proxy
++  proxyClass.cpp
++  proxyClass.hpp
++  systemProxy.cpp
++  systemProxy.hpp
++  xmlrpcMethod.cpp
++  xmlrpcMethod.hpp
++  xmlrpcType.cpp
++  xmlrpcType.hpp
++  xmlrpc_cpp_proxy.cpp
++)
++target_link_libraries(xmlrpc_cpp_proxy xmlrpc_client++)
++
++install(TARGETS xmlrpc_cpp_proxy
++  RUNTIME DESTINATION bin)
+diff --git a/tools/xmlrpc_pstream/CMakeLists.txt b/tools/xmlrpc_pstream/CMakeLists.txt
+new file mode 100644
+index 0000000..b277bc8
+--- /dev/null
++++ b/tools/xmlrpc_pstream/CMakeLists.txt
+@@ -0,0 +1,16 @@
++# -*- cmake -*-
++
++add_executable(xmlrpc_pstream
++  xmlrpc_pstream.cpp
++  ../lib/dumpvalue.c)
++
++target_link_libraries(xmlrpc_pstream
++  ${READLINE}
++  ${NCURSES_LIBRARIES}
++  xmlrpc_client++
++  util)
++
++include_directories(../lib/include)
++
++install(TARGETS xmlrpc_pstream
++  RUNTIME DESTINATION bin)
+diff --git a/tools/xmlrpc_transport/CMakeLists.txt b/tools/xmlrpc_transport/CMakeLists.txt
+new file mode 100644
+index 0000000..b73d7c0
+--- /dev/null
++++ b/tools/xmlrpc_transport/CMakeLists.txt
+@@ -0,0 +1,9 @@
++# -*- cmake -*-
++
++add_executable(xmlrpc_transport xmlrpc_transport.c)
++target_link_libraries(xmlrpc_transport xmlrpc_client util)
++
++install(TARGETS xmlrpc_transport
++  DESTINATION ${_bin})
++
++ensc_set_link_exe_flags(xmlrpc_transport)
+diff --git a/tools/xmlrpc_transport/config.h b/tools/xmlrpc_transport/config.h
+new file mode 100644
+index 0000000..7409aed
+--- /dev/null
++++ b/tools/xmlrpc_transport/config.h
+@@ -0,0 +1 @@
++#include <xmlrpc_config.h>
+diff --git a/transport_config.h.cmake b/transport_config.h.cmake
+new file mode 100644
+index 0000000..1ec3cf6
+--- /dev/null
++++ b/transport_config.h.cmake
+@@ -0,0 +1,16 @@
++/* -*- c -*- */
++#define MUST_BUILD_WININET_CLIENT	@_MUST_BUILD_WININET_CLIENT@
++#define MUST_BUILD_LIBWWW_CLIENT	@_MUST_BUILD_LIBWWW_CLIENT@
++#define MUST_BUILD_CURL_CLIENT		@_MUST_BUILD_CURL_CLIENT@
++
++static char const * const XMLRPC_DEFAULT_TRANSPORT =
++#if MUST_BUILD_LIBWWW_CLIENT
++  "libwww"
++#elif MUST_BUILD_CURL_CLIENT
++  "curl"
++#elif MUST_BUILD_WININET_CLIENT
++  "wininet"
++#else
++#  error "no client XML transport configured"
++#endif
++  ;
+diff --git a/version.h.cmake b/version.h.cmake
+new file mode 100644
+index 0000000..0c964a3
+--- /dev/null
++++ b/version.h.cmake
+@@ -0,0 +1,5 @@
++/* This file was generated by a make rule */
++#define XMLRPC_C_VERSION	"@XMLRPC_C_VERSION@"
++#define XMLRPC_VERSION_MAJOR	@XMLRPC_C_VERSION_MAJOR_NUM@
++#define XMLRPC_VERSION_MINOR	@XMLRPC_C_VERSION_MINOR_NUM@
++#define XMLRPC_VERSION_POINT	@XMLRPC_C_VERSION_POINT_NUM@
+diff --git a/xmlrpc-c-config b/xmlrpc-c-config
+new file mode 100755
+index 0000000..50577fd
+--- /dev/null
++++ b/xmlrpc-c-config
+@@ -0,0 +1,105 @@
++#! /bin/sh
++
++comp=
++
++need_cxx=
++need_client=
++need_server=
++need_abyss=
++need_pstream=
++need_packetsocket=
++need_cgi=
++
++show_help() {
++    cat <<EOF
++Usage: xmlrpc-c-config <feature> ... <option> ...
++
++The features are:
++  c++            legacy C++ wrapper API
++  c++2           modern C++ API
++  client         client functions
++  cgi-server     CGI-based server functions
++  abyss-server   ABYSS-based server functions
++  pstream-server pstream-based server functions
++  server-util    basic server functions (implied by *-server)
++
++Options are:
++  --version      The version number of the package
++  --features     List all features (aka modules) currently installed
++  --cflags       C compiler flags to use when '#include'ing package headers
++  --libs         Libraries and flags to use when linking programs normally
++  --ldadd        Libraries to use with automake
++  --ldflags      Flags to use with automake & libtool
++  --prefix       The prefix under which the package was installed
++EOF
++    exit $1
++}
++
++test $# -ne 0 || show_help 1 >&2
++
++while test $# -gt 0; do
++    case $1 in
++      (c++)			comp="$comp xmlrpc_cpp";;
++      (server-util)		need_server=1;;
++      (cgi-server)		need_cgi=1;;
++      (c++2)			need_cxx=1;;
++      (abyss-server)		need_abyss=1;;
++      (pstream-server)		need_pstream=1;;
++      (packetsocket)		need_packetsocket=1;;
++      (client|libwww-client)	need_client=1;;
++      (--help)			show_help 0;;
++      (--) shift; break;;
++      (--*) break;;
++      (*)
++      echo "Unrecognized token '$1'"
++      exit 1
++      ;;
++    esac
++    shift
++done
++
++if test -z "$need_cxx"; then
++    test -z "$need_client" || comp="$comp xmlrpc_client"
++    test -z "$need_abyss"  || comp="$comp xmlrpc_server_abyss"
++    test -z "$need_server" || comp="$comp xmlrpc_server"
++    test -z "$need_cgi"    || comp="$comp xmlrpc_server_cgi"
++else
++    test -z "$need_client" || comp="$comp xmlrpc_client++"
++    test -z "$need_abyss"  || comp="$comp xmlrpc_server_abyss++"
++    test -z "$need_server" || comp="$comp xmlrpc_server++"
++    test -z "$need_cgi"    || comp="$comp xmlrpc_server_cgi++"
++fi
++
++test -z "$need_pstream"      || comp="$comp xmlrpc_server_pstream++"
++test -z "$need_packetsocket" || comp="$comp xmlrpc_packetsocket"
++test -n "$comp"              || comp="xmlrpc xmlrpc_util"
++
++case $1 in
++  (--features|--modules)
++  echo "c++ abyss-server curl-client"
++  exit 0
++  ;;
++  (--version)
++  comp=xmlrpc
++  set -- --modversion
++  ;;
++  (--exec-prefix)
++  comp=xmlrpc
++  set -- --variable=prefix
++  ;;
++  (--*dir|--prefix)
++  comp=xmlrpc
++  set -- --variable=${1##--}
++  ;;
++  (--ldflags)
++  set -- --libs-only-L
++  ;;
++  (--ldadd)
++  set -- --libs-only-l
++  ;;
++  (--cflags)
++  set -- "$1"
++  ;;
++esac
++
++exec pkg-config "$@" $comp
+diff --git a/xmlrpc_config.h.cmake b/xmlrpc_config.h.cmake
+new file mode 100644
+index 0000000..9eff724
+--- /dev/null
++++ b/xmlrpc_config.h.cmake
+@@ -0,0 +1,183 @@
++/* -*- c -*- */
++
++#ifndef H_XMLRPC_C_CONFIG_H
++
++#define HAVE_SYS_IOCTL_H		0@HAVE_SYS_IOCTL_H@
++#define HAVE_SYS_SELECT_H_DEFINE	0@HAVE_SYS_IOCTL_H@
++
++#define VA_LIST_IS_ARRAY	@VA_LIST_IS_ARRAY@
++#define XMLRPC_HAVE_WCHAR	@XMLRPC_HAVE_WCHAR@
++#define ATTR_UNUSED		@ATTR_UNUSED@
++#define DIRECTORY_SEPARATOR	"@DIRECTORY_SEPARATOR@"
++
++#cmakedefine HAVE_SYS_SELECT_H	1
++#cmakedefine HAVE_WCHAR_H	1
++#cmakedefine HAVE_SETENV	1
++#cmakedefine HAVE_STRCASECMP	1
++#cmakedefine HAVE__STRICMP	1
++#cmakedefine HAVE_STRICMP	1
++#cmakedefine HAVE_GETTIMEOFDAY	1
++#cmakedefine HAVE_SETGROUPS	1
++#cmakedefine HAVE_ASPRINTF	1
++#cmakedefine HAVE_PSELECT	1
++#cmakedefine HAVE_WCSNCMP	1
++#cmakedefine HAVE_LOCALTIME_R	1
++#cmakedefine HAVE_GMTIME_R	1
++#cmakedefine HAVE_STRTOLL	1
++#cmakedefine HAVE___STRTOLL	1
++#cmakedefine HAVE_STRTOULL	1
++#cmakedefine HAVE___STRTOULL	1
++#cmakedefine HAVE_STRTOQ	1
++#cmakedefine HAVE_STRTOUQ	1
++
++#define HAVE_UNICODE_WCHAR	HAVE_WCHAR_H
++
++/*  Xmlrpc-c code uses __inline__ to declare functions that should
++    be compiled as inline code.  GNU C recognizes the __inline__ keyword.
++    Others recognize 'inline' or '__inline' or nothing at all to say
++    a function should be inlined.
++
++    We could make 'configure' simply do a trial compile to figure out
++    which one, but for now, this approximation is easier:
++*/
++#if (!defined(__GNUC__))
++  #if (!defined(__inline__))
++    #if (defined(__sgi) || defined(_AIX) || defined(_MSC_VER))
++      #define __inline__ __inline
++    #else
++      #define __inline__
++    #endif
++  #endif
++#endif
++
++/* MSVCRT means we're using the Microsoft Visual C++ runtime library */
++
++#if defined(_MSC_VER)
++  /* The compiler is Microsoft Visual C++ */
++  #define MSVCRT _MSC_VER
++#elif defined(__MINGW32__)
++  /* The compiler is Mingw, which is the Windows version of the GNU
++     compiler. Programs built with this normally use the Microsoft Visual
++     C++ runtime library.
++  */
++  #define MSVCRT 1
++#else
++  #define MSVCRT 0
++#endif
++
++#if MSVCRT
++  /* The MSVC runtime library _does_ have a 'struct timeval', but it is
++     part of the Winsock interface (along with select(), which is probably
++     its intended use), so isn't intended for use for general timekeeping.
++  */
++  #define HAVE_TIMEVAL 0
++  #define HAVE_TIMESPEC 0
++#else
++  #define HAVE_TIMEVAL 1
++  /* timespec is Posix.1b.  If we need to work on a non-Posix.1b non-Windows
++     system, we'll have to figure out how to make Configure determine this.
++  */
++  #define HAVE_TIMESPEC 1
++#endif
++
++#if MSVCRT
++  #define HAVE_WINDOWS_THREAD 1
++#else
++  #define HAVE_WINDOWS_THREAD 0
++#endif
++
++#define HAVE_PTHREAD 1
++
++/* Note that the return value of XMLRPC_VSNPRINTF is int on Windows,
++   ssize_t on POSIX.
++*/
++#if MSVCRT
++  #define XMLRPC_VSNPRINTF _vsnprintf
++#else
++  #define XMLRPC_VSNPRINTF vsnprintf
++#endif
++
++#if MSVCRT
++  #define HAVE_REGEX 0
++#else
++  #define HAVE_REGEX 1
++#endif
++
++#if MSVCRT
++  #define XMLRPC_SOCKETPAIR xmlrpc_win32_socketpair
++  #define XMLRPC_CLOSESOCKET closesocket
++#else
++  #define XMLRPC_SOCKETPAIR socketpair
++  #define XMLRPC_CLOSESOCKET close
++#endif
++
++#if defined(_MSC_VER) && (_MSC_VER >= 1400)
++/* Starting with MSVC 8, the runtime library defines various POSIX functions
++   such as strdup() whose names violate the ISO C standard (the standard
++   says the strXXX names are reserved for the standard), but warns you of
++   the standards violation.  That warning is 4996, along with other warnings
++   that tell you you're using a function that Microsoft thinks you
++   shouldn't.
++
++   Well, POSIX is more important than that element of ISO C, so we disable
++   that warning.
++
++   FYI, msvcrt also defines _strdup(), etc, which doesn't violate the
++   naming standard.  But since other environments don't define _strdup(),
++   we can't use it in portable code.
++*/
++#pragma warning(disable:4996)
++#endif
++
++#if HAVE_STRTOLL
++  # define XMLRPC_STRTOLL strtoll
++#elif HAVE_STRTOQ
++  # define XMLRPC_STRTOLL strtoq /* Interix */
++#elif HAVE___STRTOLL
++  # define XMLRPC_STRTOLL __strtoll /* HP-UX <= 11.11 */
++#elif HAVE__STRTOUI64
++  #define XMLRPC_STRTOLL _strtoui64  /* Windows MSVC */
++#endif
++
++#if HAVE_STRTOULL
++  # define XMLRPC_STRTOULL strtoull
++#elif HAVE_STRTOUQ
++  # define XMLRPC_STRTOULL strtouq /* Interix */
++#elif HAVE___STRTOULL
++  # define XMLRPC_STRTOULL __strtoull /* HP-UX <= 11.11 */
++#elif HAVE__STRTOUI64
++  #define XMLRPC_STRTOULL _strtoui64  /* Windows MSVC */
++#endif
++
++#if MSVCRT
++  #define snprintf _snprintf
++  #define popen _popen
++#endif
++
++#define XMLRPC_INT64  int64_t
++#define XMLRPC_PRId64 PRId64
++
++/* S_IRUSR is POSIX, defined in <sys/stat.h> Some old BSD systems and Windows
++   systems have S_IREAD instead.  Most Unix today (2011) has both.  In 2011,
++   Android has S_IRUSR and not S_IREAD.
++
++   Some Windows has _S_IREAD.
++
++   We're ignoring S_IREAD now to see if anyone misses it.  If there are still
++   users that need it, we can handle it here.
++*/
++#if MSVCRT
++  #define XMLRPC_S_IWUSR _S_IWRITE
++  #define XMLRPC_S_IRUSR _S_IREAD
++#else
++  #define XMLRPC_S_IWUSR S_IWUSR
++  #define XMLRPC_S_IRUSR S_IRUSR
++#endif
++
++#if MSVCRT
++  #define XMLRPC_CHDIR _chdir
++#else
++  #define XMLRPC_CHDIR chdir
++#endif
++
++#endif
+-- 
+1.7.10.4
+
diff --git a/SOURCES/xmlrpc-c-include-string_int.h.patch b/SOURCES/xmlrpc-c-include-string_int.h.patch
new file mode 100644
index 0000000..3a4ef8e
--- /dev/null
+++ b/SOURCES/xmlrpc-c-include-string_int.h.patch
@@ -0,0 +1,32 @@
+From df68067713ab58bf14ac1e75eace9fac45dba7d9 Mon Sep 17 00:00:00 2001
+From: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+Date: Thu, 30 Dec 2010 20:44:06 +0100
+Subject: [PATCH 8/8] include missing <xmlrpc-c/string_int.h>
+
+gives
+
+| /tmp/xmlrpc-c/src/xmlrpc_libxml2.c: In function 'end_element':
+| /tmp/xmlrpc-c/src/xmlrpc_libxml2.c:303:2: warning: implicit declaration of function 'xmlrpc_streq'
+| ...
+| ../src/libxmlrpc.so.3.25: undefined reference to `xmlrpc_streq'
+
+else.
+---
+ src/xmlrpc_libxml2.c |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/src/xmlrpc_libxml2.c b/src/xmlrpc_libxml2.c
+index 57ae06b..ef073d4 100644
+--- a/src/xmlrpc_libxml2.c
++++ b/src/xmlrpc_libxml2.c
+@@ -38,6 +38,7 @@
+ 
+ #include "xmlrpc-c/base.h"
+ #include "xmlrpc-c/base_int.h"
++#include "xmlrpc-c/string_int.h"
+ #include "xmlrpc-c/xmlparser.h"
+ 
+ /* Define the contents of our internal structure. */
+-- 
+1.7.3.4
+
diff --git a/SOURCES/xmlrpc-c-longlong.patch b/SOURCES/xmlrpc-c-longlong.patch
new file mode 100644
index 0000000..8f2f06e
--- /dev/null
+++ b/SOURCES/xmlrpc-c-longlong.patch
@@ -0,0 +1,98 @@
+From 4d3bbc5d59418666a5fc91c8fe3e301ee9c89b32 Mon Sep 17 00:00:00 2001
+From: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+Date: Sat, 5 Apr 2008 11:41:34 +0200
+Subject: [PATCH 3/8] Use proper datatypes for 'long long'
+
+xmlrpc-c uses 'long long' at some places (e.g. in printf
+statements with PRId64) under the assumption that it has a
+width of exactly 64 bits.
+
+On 64 bit machines 'long long' has a width of 128 bit and
+will cause overhead both in memory and cpu usage there. As
+'long long' is used only to handle <i8> datatypes, the patch
+uses a plain 64 integer type there.
+
+It is arguable whether 'int_least64_t' (and 'int_least32_t')
+would be a better choice for 'int64_t' (and 'int32_t'), but
+for now, the patch uses datatypes with exact widths.
+---
+ include/xmlrpc-c/base.h     |    7 ++++---
+ lib/libutil/string_number.c |    1 +
+ src/cpp/param_list.cpp      |    8 ++++----
+ 3 files changed, 9 insertions(+), 7 deletions(-)
+
+diff --git a/include/xmlrpc-c/base.h b/include/xmlrpc-c/base.h
+index cdc9161..cbdf3d0 100644
+--- a/include/xmlrpc-c/base.h
++++ b/include/xmlrpc-c/base.h
+@@ -5,6 +5,7 @@
+ 
+ #include <stddef.h>
+ #include <stdarg.h>
++#include <stdint.h>
+ #include <time.h>
+ #include <xmlrpc-c/c_util.h>
+ #include <xmlrpc-c/util.h>
+@@ -50,9 +51,9 @@ xmlrpc_version(unsigned int * const majorP,
+ 
+ typedef signed int xmlrpc_int;  
+     /* An integer of the type defined by XML-RPC <int>; i.e. 32 bit */
+-typedef XMLRPC_INT32 xmlrpc_int32;
++typedef int32_t xmlrpc_int32;
+     /* An integer of the type defined by XML-RPC <i4>; i.e. 32 bit */
+-typedef XMLRPC_INT64 xmlrpc_int64;
++typedef int64_t xmlrpc_int64;
+     /* An integer of the type defined by "XML-RPC" <i8>; i.e. 64 bit */
+ typedef int xmlrpc_bool;
+     /* A boolean (of the type defined by XML-RPC <boolean>, but there's
+@@ -89,7 +90,7 @@ typedef int xmlrpc_socket;
+ #define XMLRPC_INT32_MAX 0x7fffffff
+ #define XMLRPC_INT32_MIN (-XMLRPC_INT32_MAX - 1)
+ 
+-#define XMLRPC_INT64_MAX 0x7fffffffffffffffll
++#define XMLRPC_INT64_MAX ((xmlrpc_int64)0x7fffffffffffffffll)
+ #define XMLRPC_INT64_MIN (-XMLRPC_INT64_MAX - 1)
+ 
+ 
+diff --git a/lib/libutil/string_number.c b/lib/libutil/string_number.c
+index 1c284af..a7e78ad 100644
+--- a/lib/libutil/string_number.c
++++ b/lib/libutil/string_number.c
+@@ -6,6 +6,7 @@
+ ============================================================================*/
+ #include <stdlib.h>
+ #include <string.h>
++#include <inttypes.h>
+ #include <errno.h>
+ 
+ #include <xmlrpc-c/base.h>
+diff --git a/src/cpp/param_list.cpp b/src/cpp/param_list.cpp
+index 67c636b..60f7df9 100644
+--- a/src/cpp/param_list.cpp
++++ b/src/cpp/param_list.cpp
+@@ -265,10 +265,10 @@ paramList::getNil(unsigned int const paramNumber) const {
+ 
+ 
+ 
+-long long
++xmlrpc_int64
+ paramList::getI8(unsigned int const paramNumber,
+-                 long long    const minimum,
+-                 long long    const maximum) const {
++                 xmlrpc_int64 const minimum,
++                 xmlrpc_int64 const maximum) const {
+ 
+     if (paramNumber >= this->paramVector.size())
+         throw(fault("Not enough parameters", fault::CODE_TYPE));
+@@ -277,7 +277,7 @@ paramList::getI8(unsigned int const paramNumber,
+         throw(fault("Parameter that is supposed to be 64-bit integer is not", 
+                     fault::CODE_TYPE));
+ 
+-    long long const longlongvalue(static_cast<long long>(
++    xmlrpc_int64 const longlongvalue(static_cast<xmlrpc_int64>(
+         value_i8(this->paramVector[paramNumber])));
+ 
+     if (longlongvalue < minimum)
+-- 
+1.7.4
+
diff --git a/SOURCES/xmlrpc-c-printf-size_t.patch b/SOURCES/xmlrpc-c-printf-size_t.patch
new file mode 100644
index 0000000..420b213
--- /dev/null
+++ b/SOURCES/xmlrpc-c-printf-size_t.patch
@@ -0,0 +1,48 @@
+From 25a777bb0ee2e2ee17d87006f76b3cea5d15a9f7 Mon Sep 17 00:00:00 2001
+From: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+Date: Mon, 25 Feb 2008 17:48:25 +0100
+Subject: [PATCH 2/9] fixed broken format string modifiers
+
+---
+ examples/json.c      |    4 ++--
+ examples/parse_xml.c |    2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/examples/json.c b/examples/json.c
+index 89fe82b..91ea50d 100644
+--- a/examples/json.c
++++ b/examples/json.c
+@@ -41,7 +41,7 @@ printAsXml(xmlrpc_value * const valP) {
+     printf("XML-RPC XML:\n");
+ 
+     printf("%.*s\n",
+-           XMLRPC_MEMBLOCK_SIZE(char, &out),
++           (int)XMLRPC_MEMBLOCK_SIZE(char, &out),
+            XMLRPC_MEMBLOCK_CONTENTS(char, &out));
+ 
+     XMLRPC_MEMBLOCK_CLEAN(char, &out);
+@@ -70,7 +70,7 @@ printAsJson(xmlrpc_value * const valP) {
+     printf("JSON:\n");
+ 
+     printf("%.*s\n",
+-           XMLRPC_MEMBLOCK_SIZE(char, &out),
++           (int)XMLRPC_MEMBLOCK_SIZE(char, &out),
+            XMLRPC_MEMBLOCK_CONTENTS(char, &out));
+ 
+     XMLRPC_MEMBLOCK_CLEAN(char, &out);
+diff --git a/examples/parse_xml.c b/examples/parse_xml.c
+index 2e6c508..4f6c308 100644
+--- a/examples/parse_xml.c
++++ b/examples/parse_xml.c
+@@ -58,7 +58,7 @@ describeXmlElement(const xml_element * const elemP,
+     printf("%sXML element type:         '%s'\n",
+            prefix, xml_element_name(elemP));
+ 
+-    printf("%sNumber of child elements: %u\n",
++    printf("%sNumber of child elements: %zu\n",
+            prefix, xml_element_children_size(elemP));
+ 
+     for (i = 0; i < xml_element_children_size(elemP); ++i) {
+-- 
+1.7.6
+
diff --git a/SOURCES/xmlrpc-c-uninit-curl.patch b/SOURCES/xmlrpc-c-uninit-curl.patch
new file mode 100644
index 0000000..177f70b
--- /dev/null
+++ b/SOURCES/xmlrpc-c-uninit-curl.patch
@@ -0,0 +1,28 @@
+From 6affc342b968ec042d9efe84ca0ea40c8d88e8bf Mon Sep 17 00:00:00 2001
+From: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
+Date: Sat, 21 Nov 2009 14:12:41 +0100
+Subject: [PATCH 4/5] fixed unitialized variable
+
+Reported by Nikola Pajkovsky <npajkovs AT redhat.com>:
+
+  Problem shows up only when you compiled xmlrpc with nss and try to
+  connect to server with wrong certificate.
+---
+ lib/curl_transport/curltransaction.c |    1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/lib/curl_transport/curltransaction.c b/lib/curl_transport/curltransaction.c
+index 59cb6ab..3c75010 100644
+--- a/lib/curl_transport/curltransaction.c
++++ b/lib/curl_transport/curltransaction.c
+@@ -641,6 +641,7 @@ curlTransaction_create(xmlrpc_env *               const envP,
+         curlTransactionP->curlSessionP = curlSessionP;
+         curlTransactionP->userContextP = userContextP;
+         curlTransactionP->progress     = progress;
++	curlTransactionP->curlError[0] = '\0';
+ 
+         curlTransactionP->serverUrl = strdup(serverP->serverUrl);
+         if (curlTransactionP->serverUrl == NULL)
+-- 
+1.7.1.1
+
diff --git a/SPECS/xmlrpc-c.spec b/SPECS/xmlrpc-c.spec
new file mode 100644
index 0000000..03d3f81
--- /dev/null
+++ b/SPECS/xmlrpc-c.spec
@@ -0,0 +1,485 @@
+%global advanced_branch		1
+%global svnrev			2451
+
+%{!?release_func:%global release_func() %%{?prerelease:0.}%1%%{?prerelease:.%%prerelease}%%{?dist}}
+
+Summary:	A lightweight RPC library based on XML and HTTP
+Name:		xmlrpc-c
+Version:	1.32.5
+Release:	%release_func 1903.svn%svnrev
+# See COPYING for details.
+# The Python 1.5.2 license used by a few files is just BSD.
+# GPL+: lib/util/getoptx.{c,h}
+# Public Domain: grep -Ri "public domain" *
+License:	BSD and MIT and GPL+ and Public Domain
+Group:		System Environment/Libraries
+URL:		http://xmlrpc-c.sourceforge.net/
+%{!?advanced_branch:Source0:	http://dl.sourceforge.net/sourceforge/xmlrpc-c/xmlrpc-%version.tgz}
+# generated by 'make svn-sources [SVN_VER=%version SVN_REV=%svnrev]'. Unfortunately,
+# upstream does not tag versions so we must fetch from the branch and
+# check which version was used for it
+%{?advanced_branch:Source0:	xmlrpc-c-%version.tar.xz}
+
+Source100:	dfs.cc
+Source101:	dso-fixup
+
+Patch100:	xmlrpc-c-cmake.patch
+Patch102:	xmlrpc-c-printf-size_t.patch
+Patch105:	xmlrpc-c-longlong.patch
+Patch107:	xmlrpc-c-uninit-curl.patch
+Patch108:	xmlrpc-c-30x-redirect.patch
+Patch109:	xmlrpc-c-check-vasprintf-return-value.patch
+Patch110:	xmlrpc-c-include-string_int.h.patch
+
+
+BuildRoot:	%_tmppath/%name-%version-%release-root
+BuildRequires:	cmake
+BuildRequires:	curl-devel libxml2-devel readline-devel ncurses-devel
+
+%package c++
+Summary:	C++ libraries for xmlrpc-c
+Group:		System Environment/Libraries
+Requires:	%name%{?_isa} = %version-%release
+
+%package client
+Summary:	C client libraries for xmlrpc-c
+Group:		System Environment/Libraries
+Requires:	%name%{?_isa} = %version-%release
+
+%package client++
+Summary:	C++ client libraries for xmlrpc-c
+Group:		System Environment/Libraries
+Requires:	%name%{?_isa} = %version-%release
+Requires:	%name-c++%{?_isa} = %version-%release
+Requires:	%name-client%{?_isa} = %version-%release
+
+%package devel
+Summary:	Development files for xmlrpc-c based programs
+Group:		Development/Libraries
+Requires:	%name%{?_isa} = %version-%release
+Requires:	%name-c++%{?_isa} = %version-%release
+Requires:	%name-client%{?_isa} = %version-%release
+Requires:	%name-client++%{?_isa} = %version-%release
+
+%package apps
+Summary:	Sample XML-RPC applications
+Group:		Applications/Internet
+Requires:	%name%{?_isa} = %version-%release
+Requires:	%name-c++%{?_isa} = %version-%release
+Requires:	%name-client%{?_isa} = %version-%release
+Requires:	%name-client++%{?_isa} = %version-%release
+
+
+%description
+XML-RPC is a quick-and-easy way to make procedure calls over the
+Internet. It converts the procedure call into XML document, sends it
+to a remote server using HTTP, and gets back the response as XML.
+
+This library provides a modular implementation of XML-RPC for C.
+
+
+%description c++
+XML-RPC is a quick-and-easy way to make procedure calls over the
+Internet. It converts the procedure call into XML document, sends it
+to a remote server using HTTP, and gets back the response as XML.
+
+This library provides a modular implementation of XML-RPC for C++.
+
+
+%description client
+XML-RPC is a quick-and-easy way to make procedure calls over the
+Internet. It converts the procedure call into XML document, sends it
+to a remote server using HTTP, and gets back the response as XML.
+
+This library provides a modular implementation of XML-RPC for C
+clients.
+
+%description client++
+XML-RPC is a quick-and-easy way to make procedure calls over the
+Internet. It converts the procedure call into XML document, sends it
+to a remote server using HTTP, and gets back the response as XML.
+
+This library provides a modular implementation of XML-RPC for C++
+clients.
+
+
+%description devel
+Static libraries and header files for writing XML-RPC applications in
+C and C++.
+
+
+%description apps
+XML-RPC is a quick-and-easy way to make procedure calls over the
+Internet. It converts the procedure call into XML document, sends it
+to a remote server using HTTP, and gets back the response as XML.
+
+This package contains some handy XML-RPC demo applications.
+
+
+%prep
+%setup -q
+%patch100 -p1
+%patch102 -p1
+%patch105 -p1
+%patch107 -p1
+%patch108 -p1
+%patch109 -p1
+%patch110 -p1
+
+## not needed...
+rm doc/{INSTALL,configure_doc}
+
+
+%build
+mkdir -p build
+cd build
+export CFLAGS="$RPM_OPT_FLAGS -Wno-uninitialized -Wno-unknown-pragmas"
+export CXXFLAGS="$RPM_OPT_FLAGS"
+export LDFLAGS="-Wl,-as-needed"
+cmake .. \
+	-D_lib:STRING=%_lib			\
+	-DMUST_BUILD_CURL_CLIENT:BOOL=ON	\
+	-DMUST_BUILD_LIBWWW_CLIENT:BOOL=OFF	\
+        -DCMAKE_INSTALL_PREFIX:PATH=%_prefix	\
+        -DBUILD_SHARED_LIBS:BOOL=ON		\
+	-DENABLE_TOOLS:BOOL=ON
+make VERBOSE=1 %{?_smp_mflags}
+
+%__cxx $RPM_OPT_FLAGS %SOURCE100 -o depsort
+
+
+%install
+rm -rf $RPM_BUILD_ROOT
+cd build
+make install DESTDIR=$RPM_BUILD_ROOT
+
+chmod +x $RPM_BUILD_ROOT%_libdir/*.so
+
+%SOURCE101 "$RPM_BUILD_ROOT" "%_libdir" 'libxmlrpc' $RPM_BUILD_ROOT%_libdir/libxmlrpc*.so.[0-9]
+
+
+%check
+unset PKG_CONFIG_PATH
+export PKG_CONFIG_LIBDIR=$RPM_BUILD_ROOT%_libdir/pkgconfig:%_libdir/pkgconfig:%_datadir/pkgconfig
+PATH=$RPM_BUILD_ROOT%_bindir:$PATH
+
+_e() {
+     echo "\$ $@"
+     "$@"
+}
+
+set +x
+_e xmlrpc-c-config --help
+for comp in c++ cgi-server server-util abyss-server client libwww-client; do
+	for opt in '--version' '--libs' 'c++2 --libs' 'c++ --libs --static'; do
+		_e xmlrpc-c-config "$comp" $opt
+	done
+done
+set -x
+
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+
+%post   -p /sbin/ldconfig
+%postun -p /sbin/ldconfig
+
+%post client   -p /sbin/ldconfig
+%postun client -p /sbin/ldconfig
+
+%post c++   -p /sbin/ldconfig
+%postun c++ -p /sbin/ldconfig
+
+%post client++   -p /sbin/ldconfig
+%postun client++ -p /sbin/ldconfig
+
+
+
+%files
+%defattr(-,root,root,-)
+%doc doc/*
+%_libdir/*.so.3*
+%exclude %_libdir/libxmlrpc_client.so*
+
+
+%files client
+%defattr(-,root,root,-)
+%_libdir/libxmlrpc_client.so.*
+
+
+%files c++
+%defattr(-,root,root,-)
+%_libdir/*.so.8*
+%exclude %_libdir/libxmlrpc_client++.so*
+
+
+%files client++
+%defattr(-,root,root,-)
+%_libdir/libxmlrpc_client++.so.*
+
+
+%files devel
+%defattr(-,root,root,-)
+%_bindir/xmlrpc-c-config
+%_includedir/xmlrpc-c
+%_includedir/*.h
+%_libdir/pkgconfig/*.pc
+%_libdir/*.so
+
+
+%files apps
+%defattr(-,root,root,-)
+%doc tools/xmlrpc/xmlrpc.html
+%doc tools/xmlrpc_transport/xmlrpc_transport.html
+%_mandir/man1/*
+%_bindir/xmlrpc
+%_bindir/xmlrpc_transport
+%_bindir/xml-rpc-api2cpp
+%_bindir/xmlrpc_cpp_proxy
+%_bindir/xmlrpc_pstream
+%_bindir/xmlrpc_parsecall
+
+%exclude %_bindir/xml-rpc-api2txt
+
+
+%changelog
+* Wed Jul 31 2013 Michal Srb <msrb@redhat.com> - 1.32.5-1903.svn2451
+- Fix license tag
+
+* Thu Apr 25 2013 Mikolaj Izdebski <mizdebsk@redhat.com> - 1.32.5-1902.svn2451
+- Add missing inter-package dependencies
+- Rename fedora directory to build
+
+* Fri Feb 15 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.32.5-1901.svn2451
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
+
+* Sun Dec  9 2012 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.32.5-1900.svn2451
+- updated to 1.32.5
+
+* Sun Oct 21 2012 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.32.2-1900.svn2434
+- updated to 1.32.2
+
+* Sat Oct  6 2012 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.32.1-1900.svn2413
+- updated to 1.32.1
+
+* Sun Aug 26 2012 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.31.4-1900.svn2386
+- updated to 1.31.4
+
+* Sun Jul 22 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.31.0-1801.svn2365
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
+
+* Sun Jul  1 2012 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.31.0-1800.svn2365
+- updated to 1.31.0
+
+* Wed Jun  6 2012 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.30.6-1800.svn2328
+- updated to 1.30.6
+
+* Sat May 26 2012 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.30.5-1800.svn2324
+- updated to 1.30.5 (IPv6 server fixes)
+
+* Sat May 12 2012 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.30.4-1800.svn2318
+- updated to 1.30.4
+
+* Thu Apr  5 2012 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.30.1-1800.svn2298
+- updated to 1.30.1
+
+* Tue Feb 28 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.29.0-1701.svn2233
+- Rebuilt for c++ ABI breakage
+
+* Wed Jan  4 2012 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.29.0-1700.svn2233
+- updated to 1.29.0
+
+* Mon Oct  3 2011 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.28.1-1700.svn2203
+- updated to 1.28.1
+
+* Mon Oct  3 2011 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.27.5-1701.svn2185
+- fixed error handling when transfering too large files (#741980)
+
+* Sat Aug 27 2011 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.27.5-1700.svn2185
+- updated to 1.27.5
+
+* Sun Aug  7 2011 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.27.4-1700.svn2171
+- updated to 1.27.4
+
+* Sun Aug  7 2011 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.27.3-1700.svn2145
+- updated to 1.27.3
+
+* Mon Jun 27 2011 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.27.0-1600.svn2145
+- updated to 1.27.0
+- made it build with recent curl
+
+* Mon Jun 13 2011 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.26.3-1600.svn2134
+- updated to 1.26.3
+- removed default-constructor patch; issue is solved upstream
+
+* Sat Apr  2 2011 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.26.0-1600.svn2188
+- updated to 1.26.0
+
+* Mon Feb 07 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.25.1-1501.svn2077
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
+
+* Thu Jan  6 2011 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.25.1-1500.svn2077
+- updated to 1.25.1
+
+* Thu Dec 30 2010 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.25.0-1500.svn2074
+- updated to 1.25.0
+
+* Sun Nov  7 2010 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.24.4-1500.svn2042
+- updated to 1.24.4
+
+* Sat Oct  9 2010 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.24.1-1500.svn1987
+- updated to 1.24.1
+- set -Wno-uninitialized CFLAGS; code contains lot of constructs
+  triggering this warning and the 'int a=a' defeaters have been
+  removed in this version
+
+* Fri Aug 27 2010 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.23.02-1500.svn1968
+- updated to 1.23.02 (note: this breaks C++ ABI)
+- added vasprintf patch
+
+* Thu Jul 29 2010 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.23.01-1400.svn1958
+- updated to 1.23.01
+- added patch to make curl follow HTTP POST 301 redirects (#618504)
+
+* Sun Apr 18 2010 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.22.01-1400.svn1907
+- updated to 1.22.01 (svn 1907)
+
+* Tue Feb 23 2010 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.21.00-1401.1851
+- require the various subpackages explicitly for -devel; the ld linker
+  scripts broke rpm's autodetection (#567400)
+- removed -devel Requires: which are covered by pkgconfig autodeps
+- added %%{?_isa} annotations
+
+* Sun Feb 21 2010 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.21.00-1400.1851
+- made linker scripts more 'ldconfig' friendly
+
+* Mon Feb 15 2010 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.21.00-1301.1851
+- replaced .so symlinks by linker scripts which add all implicit
+  dependencies in AS_NEEDED() commands (#564607, #565577)
+
+* Thu Jan 14 2010 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.21.00-1300.1851
+- updated to 1.21.00 (rev 1851)
+- removed curl-trace patch as applied upstream
+- rediffed patches
+
+* Sat Nov 21 2009 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.20.3-1.1841
+- updated to rev1841
+- rediffed patches
+- added patch to fix handling of wrong certificates (Nikola Pajkovsky)
+- added support for $XMLRPC_TRACE_CURL env (John Dennis)
+
+* Mon Jul 27 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.16.6-3.1582
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
+
+* Thu Feb 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.16.6-2.1582
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
+
+* Thu Dec 11 2008 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.16.6-1.1582
+- updated to 1.16.6; rediffed patches
+- fixed client headers (bug #475887)
+
+* Sat Nov 15 2008 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.16.4.1567-2
+- updated to 1.16.4
+- rediffed/updated patches
+- splitted some subpackages (c++, client) out of main package as they
+  introduce additional dependencies (c++, curl)
+
+* Sat Sep  6 2008 Tom "spot" Callaway <tcallawa@redhat.com> - 1.14.8-2
+- fix license tag
+
+* Sat Jun 21 2008 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.14.8-1
+- updated to 1.14.8
+
+* Sun May 25 2008 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.14.6-1
+- updated to 1.14.6
+
+* Sat Apr 12 2008 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.14.2-1
+- updated to 1.14.2
+- rediffed patches
+- added patch to fix broken usage of 'long long' datatype
+
+* Mon Mar 17 2008 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.13.8-2
+- fixed cmake quoting so that pkgconfig files get correct version number
+- fixed handling of 'server-util' and '--cflags' within xmlrpc-c-config
+
+* Sun Mar 16 2008 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.13.8-1
+- updated to 1.13.8
+- removed some patches which were applied upstream
+
+* Tue Feb 26 2008 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.13.07-2
+- moved to advanced branched; rediffed/updated existing cmake patch
+  and fixed other compilation issues (#369841)
+
+* Mon Feb 18 2008 Fedora Release Engineering <rel-eng@fedoraproject.org> - 1.06.23-2
+- Autorebuild for GCC 4.3
+
+* Wed Jan  2 2008 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.06.23-1
+- use correct pkg-config script for 'xmlrpc-config abyss-server'
+  output (#355411)
+- updated to 1.06.23 (#355411)
+
+* Tue Sep  4 2007 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.06.18-1
+- updated to 1.06.18
+
+* Thu Aug 16 2007 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.06.17-1
+- updated to 1.06.17
+
+* Sun Jul 22 2007 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.06.16-1
+- updated to 1.06.16
+
+* Thu Jun 14 2007 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.06.14-1
+- updated to 1.06.14
+
+* Sun Apr  1 2007 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.06.11-2
+- rediffed cmake patch against current version
+- made the xmlrpc-c-config compatible to the upstream version
+- added compatibility symlinks for some header files (thx to Robert de
+  Vries for reporting these two issues)
+
+* Sat Mar 17 2007 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.06.11-1
+- updated to 1.06.11
+
+* Sat Feb  3 2007 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.06.09-1
+- updated to 1.06.09
+- removed -typo patch since applied upstream
+
+* Mon Nov  6 2006 Jindrich Novy <jnovy@redhat.com> - 1.06.05-3
+- rebuild against the new curl
+
+* Mon Oct  2 2006 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.06.05-2
+- updated cmake patch
+- strip installed libraries
+
+* Wed Sep 20 2006 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.06.05-1
+- updated to 1.06.05
+- merged + updated patches
+
+* Sat Sep 16 2006 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.06.04-1
+- updated to 1.06.04
+- patched the broken buildsystem
+- disabled libwww backend explicitely
+
+* Sun Jun  4 2006 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.05-1
+- updated to 1.05
+- updated patches
+
+* Sat Feb 18 2006 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.04-2
+- rebuilt for FC5
+
+* Sun Dec 18 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.04-1
+- added libxml2-devel and openssl-devel Requires: for the -devel
+  subpackage
+- ship doc/* instead of doc
+- initial Fedora Extras package (review 175840)
+
+* Thu Dec 15 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.04-0.1
+- disabled w3c-libwww because it does not exist anymore in FC5 and
+  seems to be unmaintained upstream
+- added missing libxml2-devel
+- cleaned up list of %%doc files
+- fixed gcc4.1 build issues
+- removed static libraries when there exists a corresponding dynamic one
+
+* Tue Aug  2 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 1.03.02-1
+- Initial build.