rpms/xmlrpc-c/devel xmlrpc-c-c++.patch, NONE, 1.1 xmlrpc-c-cmake.patch, NONE, 1.1 xmlrpc-c-longlong.patch, NONE, 1.1 xmlrpc-c-printf-size_t.patch, NONE, 1.1 xmlrpc-c-stdlib.patch, NONE, 1.1 xmlrpc-c-va_list.patch, NONE, 1.1 fixed-broken-format-string-modifiers-for-size_t-type.patch, 1.4, NONE make-cmake-transition.patch, 1.6, NONE use-proper-datatypes.patch, 1.1, NONE

Enrico Scholz ensc at fedoraproject.org
Sat Nov 15 13:43:43 UTC 2008


Author: ensc

Update of /cvs/extras/rpms/xmlrpc-c/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv26398/devel

Added Files:
	xmlrpc-c-c++.patch xmlrpc-c-cmake.patch 
	xmlrpc-c-longlong.patch xmlrpc-c-printf-size_t.patch 
	xmlrpc-c-stdlib.patch xmlrpc-c-va_list.patch 
Removed Files:
	fixed-broken-format-string-modifiers-for-size_t-type.patch 
	make-cmake-transition.patch use-proper-datatypes.patch 
Log Message:
renamed/updated patches


xmlrpc-c-c++.patch:

--- NEW FILE xmlrpc-c-c++.patch ---
>From 23e1abe53511c61f297a226c03ea9f09ff58c86a Mon Sep 17 00:00:00 2001
From: Enrico Scholz <enrico.scholz at informatik.tu-chemnitz.de>
Date: Sat, 15 Nov 2008 11:35:26 +0100
Subject: [PATCH] fixed c++ syntax

---
 src/cpp/server_cgi.cpp |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/cpp/server_cgi.cpp b/src/cpp/server_cgi.cpp
index da4152d..7b5baa2 100644
--- a/src/cpp/server_cgi.cpp
+++ b/src/cpp/server_cgi.cpp
@@ -37,7 +37,7 @@ public:
     bool authCookiePresent;
     string authCookie;
 
-    httpInfo::httpInfo() {
+    httpInfo() {
 
         const char * const requestMethodC = getenv("REQUEST_METHOD");
         const char * const contentTypeC   = getenv("CONTENT_TYPE");
-- 
1.5.6.5


xmlrpc-c-cmake.patch:

--- NEW FILE xmlrpc-c-cmake.patch ---
>From 01430cca6884e144cc196fc2120a3d3c11e6189b Mon Sep 17 00:00:00 2001
From: Enrico Scholz <enrico.scholz at informatik.tu-chemnitz.de>
Date: Sat, 5 Apr 2008 10:55:02 +0200
Subject: [PATCH] make -> cmake transition

---
 CMakeLists.txt                              |  249 +++++++++++++++++++++++++++
 cmake/try-attr.cc                           |    3 +
 cmake/va-list-is-array.c                    |    9 +
 examples/CMakeLists.txt                     |   57 ++++++
 examples/config.h                           |    1 +
 examples/cpp/CMakeLists.txt                 |   30 ++++
 include/CMakeLists.txt                      |    3 +
 include/xmlrpc-c/CMakeLists.txt             |   73 ++++++++
 include/xmlrpc-c/config.h.cmake             |   30 ++++
 lib/CMakeLists.txt                          |   12 ++
 lib/abyss/CMakeLists.txt                    |    3 +
 lib/abyss/src/CMakeLists.txt                |   64 +++++++
 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             |   20 ++
 lib/expat/xmltok/xmlrpc_xmltok.pc.cmake     |    9 +
 lib/libutil/CMakeLists.txt                  |   24 +++
 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                          |  118 +++++++++++++
 src/cpp/CMakeLists.txt                      |   66 +++++++
 src/cpp/test/CMakeLists.txt                 |   17 ++
 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/test/CMakeLists.txt                     |   37 ++++
 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 ++
 tools/CMakeLists.txt                        |   12 ++
 tools/binmode-rpc-kit/CMakeLists.txt        |    2 +
 tools/lib/CMakefiles.txt                    |    1 +
 tools/turbocharger/CMakeLists.txt           |    1 +
 tools/xml-rpc-api2cpp/CMakeLists.txt        |   15 ++
 tools/xmlrpc/CMakeLists.txt                 |   17 ++
 tools/xmlrpc/config.h                       |    1 +
 tools/xmlrpc_cpp_proxy/CMakeLists.txt       |   17 ++
 tools/xmlrpc_pstream/CMakefiles.txt         |    6 +
 tools/xmlrpc_transport/CMakeLists.txt       |    9 +
 tools/xmlrpc_transport/config.h             |    1 +
 transport_config.h.cmake                    |   16 ++
 version.h.cmake                             |    5 +
 xmlrpc-c-config                             |   80 +++++++++
 xmlrpc_config.h.cmake                       |   99 +++++++++++
 57 files changed, 1367 insertions(+), 0 deletions(-)
 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/test/CMakeLists.txt
 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 tools/CMakeLists.txt
 create mode 100644 tools/binmode-rpc-kit/CMakeLists.txt
 create mode 100644 tools/lib/CMakefiles.txt
 create mode 100644 tools/turbocharger/CMakeLists.txt
 create mode 100644 tools/xml-rpc-api2cpp/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/CMakefiles.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..25474f4
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,249 @@
+## -*- cmake -*-
+project(xmlrpc-c)
+include(FindPkgConfig)
+include(CheckIncludeFile)
+include(CheckFunctionExists)
+
+set(XMLRPC_C_VERSION_MAJOR "1"  CACHE STRING "Version (major) of xmlrpc-c")
+set(XMLRPC_C_VERSION_MINOR "16" CACHE STRING "Version (minor) of xmlrpc-c")
+set(XMLRPC_C_VERSION_POINT "4"  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 "4.${XMLRPC_C_VERSION_MINOR}")
+set(XMLRPC_CXX_SOVERSION  "4")
+
+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+" "" 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)
+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)
+
+###########
+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_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: enhance more alternative modules
+  endif(LIBXML2_FOUND)
+endif(ENABLE_LIBXML2_BACKEND)
+
+
+####  <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 "\\")
+else(WIN32)
+  set(DIRECTORY_SEPARATOR "/")
+endif(WIN32)
+
+check_include_file(sys/filio.h HAVE_SYS_FILIO_H)
+check_include_file(sys/ioctl.h HAVE_SYS_IOCTL_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(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(lib)
+add_subdirectory(Windows)
+add_subdirectory(doc)
+add_subdirectory(examples)
+add_subdirectory(include)
+add_subdirectory(src)
+add_subdirectory(tools)
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..6e18556
--- /dev/null
+++ b/examples/CMakeLists.txt
@@ -0,0 +1,57 @@
+# -*- 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)
+
+
+
+if(MUST_BUILD_CLIENT)
+  set(client_LIBS xmlrpc_client)
+
+  ensc_add_example(auth_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)
+
+  ensc_add_example(interrupted_client       c client)
+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(interrupted_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)
+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..f27edbb
--- /dev/null
+++ b/examples/cpp/CMakeLists.txt
@@ -0,0 +1,30 @@
+# -*- cmake -*-
+
+if(ENABLE_ABYSS_SERVER)
+  set(abyss_serverxx_LIBS xmlrpc_server_abyss++)
+
+  ensc_add_example(xmlrpc_inetd_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_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..2b305b7
--- /dev/null
+++ b/include/xmlrpc-c/CMakeLists.txt
@@ -0,0 +1,73 @@
+# -*- 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
+  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..b2d7373
--- /dev/null
+++ b/include/xmlrpc-c/config.h.cmake
@@ -0,0 +1,30 @@
+/* --*- 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
+#else
+  #define XMLRPC_SOCKET int
+  #define XMLRPC_HAVE_TIMEVAL 1
+  #define XMLRPC_HAVE_TIMESPEC 1
+#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..e0373e6
--- /dev/null
+++ b/lib/abyss/src/CMakeLists.txt
@@ -0,0 +1,64 @@
+## -*- 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
+  socket_unix.c
+  socket_unix.h
+  thread.h
+  token.c
+  token.h
+  trace.c
+  trace.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)
+
+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 pthread)
+  ensc_pkgconfig_lib(xmlrpc_abyss "-lpthread")
+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..fae7af3
--- /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..c3247ad
--- /dev/null
+++ b/lib/expat/xmltok/CMakeLists.txt
@@ -0,0 +1,20 @@
+# -*- cmake -*-
+
+include_directories(${CMAKE_CURRENT_BINARY_DIR})
+
+add_library(xmlrpc_xmltok STATIC
+  xmltok.c xmlrole.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..0f9a7f3
--- /dev/null
+++ b/lib/libutil/CMakeLists.txt
@@ -0,0 +1,24 @@
+# -*- cmake -*-
+
+add_library(xmlrpc_util SHARED
+  asprintf.c
+  error.c
+  make_printable.c
+  memblock.c
+  select.c
+  sleep.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..3d2968e
--- /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..80af5a6
--- /dev/null
+++ b/src/CMakeLists.txt
@@ -0,0 +1,118 @@
+# -*- 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}")
+  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})
+  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)
+add_subdirectory(test)
+
+
+
+### libxmlrpc.so
+add_library(xmlrpc SHARED
+  double.c parse_value.c resource.c trace.c version.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_base64.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
+add_library(xmlrpc_server_abyss SHARED
+  xmlrpc_server_abyss.c)
+target_link_libraries(xmlrpc_server_abyss xmlrpc_abyss xmlrpc_server)
+list(APPEND lib_TARGETS xmlrpc_server_abyss)
+ensc_pkgconfig(xmlrpc_server_abyss)
+
+
+
+### libxmlrpc_server_cgi.so
+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)
+
+
+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..6091e2b
--- /dev/null
+++ b/src/cpp/CMakeLists.txt
@@ -0,0 +1,66 @@
+# -*- 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)
+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
+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++)
+
+####### libxmlrpc_server_cgi++.so
+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++)
+
+####### libxmlrpc_server_pstream++.so
+add_library(xmlrpc_server_pstream++ SHARED server_pstream.cpp)
+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..5b046b4
--- /dev/null
+++ b/src/cpp/test/CMakeLists.txt
@@ -0,0 +1,17 @@
+# -*- cmake -*-
+
+set(test_SOURCES
+  test.cpp registry.cpp server_abyss.cpp server_pstream.cpp tools.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..3bfa992
--- /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..bd6766b
--- /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..8acc22f
--- /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..4a8aedc
--- /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..c769d54
--- /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..b325eff
--- /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..72a3726
--- /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..da5639d
--- /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/test/CMakeLists.txt b/src/test/CMakeLists.txt
new file mode 100644
index 0000000..0859ccc
--- /dev/null
+++ b/src/test/CMakeLists.txt
@@ -0,0 +1,37 @@
+# -*- 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
+  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(cgitest1 cgitest1.c)
+target_link_libraries(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)
diff --git a/src/xmlrpc.pc.cmake b/src/xmlrpc.pc.cmake
new file mode 100644
index 0000000..4c92f93
--- /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..7f28a15
--- /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..d5c334e
--- /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..48fa0b1
--- /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..4d174ef
--- /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/tools/CMakeLists.txt b/tools/CMakeLists.txt
new file mode 100644
index 0000000..750fed4
--- /dev/null
+++ b/tools/CMakeLists.txt
@@ -0,0 +1,12 @@
+# -*- cmake -*-
+
+add_subdirectory(lib)
+
+add_subdirectory(binmode-rpc-kit)
+add_subdirectory(turbocharger)
+
+add_subdirectory(xmlrpc)
+add_subdirectory(xmlrpc_transport)
+
+add_subdirectory(xmlrpc_cpp_proxy)
+add_subdirectory(xml-rpc-api2cpp )
diff --git a/tools/binmode-rpc-kit/CMakeLists.txt b/tools/binmode-rpc-kit/CMakeLists.txt
new file mode 100644
index 0000000..a707c75
--- /dev/null
+++ b/tools/binmode-rpc-kit/CMakeLists.txt
@@ -0,0 +1,2 @@
+# -*- cmake -*-
+
diff --git a/tools/lib/CMakefiles.txt b/tools/lib/CMakefiles.txt
new file mode 100644
index 0000000..342423d
--- /dev/null
+++ b/tools/lib/CMakefiles.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..c759dec
--- /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 xmlrpc_server)
+
+install(TARGETS xml-rpc-api2cpp
+  RUNTIME DESTINATION bin)
+
+install(FILES xml-rpc-api2cpp.1
+  DESTINATION ${mandir}/man1)
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/CMakefiles.txt b/tools/xmlrpc_pstream/CMakefiles.txt
new file mode 100644
index 0000000..67ae8c5
--- /dev/null
+++ b/tools/xmlrpc_pstream/CMakefiles.txt
@@ -0,0 +1,6 @@
+# -*- cmake -*-
+
+add_executable(xmlrpc_pstream
+  xmlrpc_pstream.cpp
+  ${tools_lib_SOURCES})
+target_link_libraries(xmlrpc_pstream readline util)
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..12ab86d
--- /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..c32555e
--- /dev/null
+++ b/xmlrpc-c-config
@@ -0,0 +1,80 @@
+#! /bin/sh
+
+comp=
+
+need_cxx=
+need_client=
+need_server=
+need_abyss=
+need_pstream=
+need_packetsocket=
+need_cgi=
+
+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;;
+      (--) 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"
+
+dummy_comp=xmlrpc_client
+
+case $1 in
+  (--features|--modules)
+  echo "c++ abyss-server curl-client"
+  exit 0
+  ;;
+  (--version)
+  set -- --modversion
+  ;;
+  (--exec-prefix)
+  set -- --variable=prefix
+  ;;
+  (--*dir|--prefix)
+  set -- --variable=${1##--}
+  ;;
+  (--ldflags)
+  set -- --libs-only-L
+  ;;
+  (--ldadd)
+  set -- --libs-only-l
+  ;;
+  (--cflags)
+  set -- "$1"
+  ;;
+  (*)
+  dummy_comp=
+  ;;
+esac
+
+test x"$comp" != x || comp=$dummy_comp
+
+exec pkg-config "$@" $comp
diff --git a/xmlrpc_config.h.cmake b/xmlrpc_config.h.cmake
new file mode 100644
index 0000000..1c9ece8
--- /dev/null
+++ b/xmlrpc_config.h.cmake
@@ -0,0 +1,99 @@
+/* -*- c -*- */
+
+#ifndef H_XMLRPC_C_CONFIG_H
+
+#define HAVE_SYS_IOCTL_H	0 at 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_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
+
+#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 */
+
+#ifdef _MSC_VER
+/* The compiler is Microsoft Visual C++. */
+  #define MSVCRT _MSC_VER
+#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 XMLRPC_VSNPRINTF _vsnprintf
+#else
+  #define XMLRPC_VSNPRINTF vsnprintf
+#endif
+
+#if MSVCRT
+  #define HAVE_REGEX 0
+#else
+  #define HAVE_REGEX 1
+#endif
+
+#if defined(_MSC_VER)
+/* 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
+
+#endif
-- 
1.5.6.5


xmlrpc-c-longlong.patch:

--- NEW FILE xmlrpc-c-longlong.patch ---
>From 57ba0a3556f5180f5c7b9d793672c055ec373eb5 Mon Sep 17 00:00:00 2001
From: Enrico Scholz <enrico.scholz at informatik.tu-chemnitz.de>
Date: Sat, 5 Apr 2008 11:41:34 +0200
Subject: [PATCH] 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 |   10 ++++++----
 src/cpp/param_list.cpp  |    8 ++++----
 src/cpp/value.cpp       |    2 +-
 3 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/include/xmlrpc-c/base.h b/include/xmlrpc-c/base.h
index 6cf1fc8..886d39b 100644
--- a/include/xmlrpc-c/base.h
+++ b/include/xmlrpc-c/base.h
@@ -5,7 +5,9 @@
 
 #include <stddef.h>
 #include <stdarg.h>
+#include <stdint.h>
 #include <time.h>
+#include <stdint.h>
 #include <xmlrpc-c/util.h>
 #include <xmlrpc-c/config.h>
   /* Defines XMLRPC_HAVE_WCHAR, XMLRPC_INT64 */
@@ -36,9 +38,9 @@ extern unsigned int const xmlrpc_version_point;
 
 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
@@ -113,7 +115,7 @@ extern xmlrpc_type xmlrpc_value_type (xmlrpc_value* const value);
 
 xmlrpc_value *
 xmlrpc_int_new(xmlrpc_env * const envP,
-               int          const intValue);
+               xmlrpc_int32 const intValue);
 
 xmlrpc_value *
 xmlrpc_i8_new(xmlrpc_env * const envP, 
@@ -122,7 +124,7 @@ xmlrpc_i8_new(xmlrpc_env * const envP,
 void 
 xmlrpc_read_int(xmlrpc_env *         const envP,
                 const xmlrpc_value * const valueP,
-                int *                const intValueP);
+                xmlrpc_int32 *       const intValueP);
 
 xmlrpc_value *
 xmlrpc_bool_new(xmlrpc_env * const envP,
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)
diff --git a/src/cpp/value.cpp b/src/cpp/value.cpp
index ff3a011..9f2f88e 100644
--- a/src/cpp/value.cpp
+++ b/src/cpp/value.cpp
@@ -265,7 +265,7 @@ value_int::value_int(xmlrpc_c::value const baseValue) {
 
 value_int::operator int() const {
 
-    int retval;
+    xmlrpc_int32 retval;
     env_wrap env;
 
     xmlrpc_read_int(&env.env_c, this->cValueP, &retval);
-- 
1.5.6.5


xmlrpc-c-printf-size_t.patch:

--- NEW FILE xmlrpc-c-printf-size_t.patch ---
>From 29df0db1c131eb08cfd745003116dc4b63c81ff4 Mon Sep 17 00:00:00 2001
From: Enrico Scholz <enrico.scholz at informatik.tu-chemnitz.de>
Date: Mon, 25 Feb 2008 17:48:25 +0100
Subject: [PATCH] fixed broken format string modifiers for size_t typed arguments

---
 lib/abyss/src/socket_unix.c |    4 ++--
 lib/libutil/memblock.c      |    2 +-
 src/cpp/server_cgi.cpp      |    2 +-
 src/xmlrpc_data.c           |    2 +-
 src/xmlrpc_datetime.c       |    2 +-
 src/xmlrpc_decompose.c      |    4 ++--
 src/xmlrpc_parse.c          |    8 ++++----
 src/xmlrpc_server_abyss.c   |    2 +-
 src/xmlrpc_string.c         |    8 ++++----
 tools/xmlrpc/xmlrpc.c       |    2 +-
 10 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/lib/abyss/src/socket_unix.c b/lib/abyss/src/socket_unix.c
index 3da48cc..51a32a7 100644
--- a/lib/abyss/src/socket_unix.c
+++ b/lib/abyss/src/socket_unix.c
@@ -193,8 +193,8 @@ channelWrite(TChannel *            const channelP,
                 fprintf(stderr, "Abyss channel: send() failed.  "
                         "Socket closed.\n");
             else
-                fprintf(stderr, "Abyss channel: sent %u bytes: '%.*s'\n",
-                        rc, rc, &buffer[len-bytesLeft]);
+                fprintf(stderr, "Abyss channel: sent %zu bytes: '%.*s'\n",
+                        rc, (int)rc, &buffer[len-bytesLeft]);
         }
         if (rc <= 0)
             /* 0 means connection closed; < 0 means severe error */
diff --git a/lib/libutil/memblock.c b/lib/libutil/memblock.c
index d79d4ca..25992e8 100644
--- a/lib/libutil/memblock.c
+++ b/lib/libutil/memblock.c
@@ -73,7 +73,7 @@ xmlrpc_mem_block_init(xmlrpc_env *       const envP,
 
     blockP->_block = (void*) malloc(blockP->_allocated);
     if (!blockP->_block)
-        xmlrpc_faultf(envP, "Can't allocate %u-byte memory block",
+        xmlrpc_faultf(envP, "Can't allocate %zu-byte memory block",
                       blockP->_allocated);
 }
 
diff --git a/src/cpp/server_cgi.cpp b/src/cpp/server_cgi.cpp
index 15d3df3..c8bb41d 100644
--- a/src/cpp/server_cgi.cpp
+++ b/src/cpp/server_cgi.cpp
@@ -240,7 +240,7 @@ writeNormalHttpResp(FILE * const  fileP,
         fprintf(fileP, "Set-Cookie: auth=%s\n", authCookie.c_str());
 
     fprintf(fileP, "Content-type: text/xml; charset=\"utf-8\"\n");
-    fprintf(fileP, "Content-length: %u\n", httpBody.size());
+    fprintf(fileP, "Content-length: %zu\n", httpBody.size());
     fprintf(fileP, "\n");
 
     // HTTP body
diff --git a/src/xmlrpc_data.c b/src/xmlrpc_data.c
index 28827fe..415dd6d 100644
--- a/src/xmlrpc_data.c
+++ b/src/xmlrpc_data.c
@@ -221,7 +221,7 @@ xmlrpc_read_base64(xmlrpc_env *           const envP,
         byteStringValue = malloc(size);
         if (byteStringValue == NULL)
             xmlrpc_env_set_fault_formatted(
-                envP, XMLRPC_INTERNAL_ERROR, "Unable to allocate %u bytes "
+                envP, XMLRPC_INTERNAL_ERROR, "Unable to allocate %zu bytes "
                 "for byte string.", size);
         else {
             memcpy(byteStringValue, contents, size);
diff --git a/src/xmlrpc_datetime.c b/src/xmlrpc_datetime.c
index a4b6454..b7a08e2 100644
--- a/src/xmlrpc_datetime.c
+++ b/src/xmlrpc_datetime.c
@@ -428,7 +428,7 @@ validateFormat(xmlrpc_env * const envP,
     if (strlen(dt) < 17)
         xmlrpc_env_set_fault_formatted(
             envP, XMLRPC_PARSE_ERROR, 
-            "Invalid length of %u of datetime.  "
+            "Invalid length of %zu of datetime.  "
             "Must be at least 17 characters",
             strlen(dt));
     else {
diff --git a/src/xmlrpc_decompose.c b/src/xmlrpc_decompose.c
index eeb3414..36e62f6 100644
--- a/src/xmlrpc_decompose.c
+++ b/src/xmlrpc_decompose.c
@@ -712,7 +712,7 @@ buildArrayDecompBranch(xmlrpc_env *            const envP,
         if (itemCnt >= ARRAY_SIZE(decompNodeP->store.Tarray.itemArray))
             xmlrpc_faultf(envP, "Too many array items in format string.  "
                           "The most items you can have for an array in "
-                          "a format string is %u.",
+                          "a format string is %zu.",
                           ARRAY_SIZE(decompNodeP->store.Tarray.itemArray));
         else {
             struct decompTreeNode * itemNodeP;
@@ -850,7 +850,7 @@ buildStructDecompBranch(xmlrpc_env *            const envP,
             xmlrpc_faultf(envP,
                           "Too many structure members in format string.  "
                           "The most members you can specify in "
-                          "a format string is %u.",
+                          "a format string is %zu.",
                           ARRAY_SIZE(decompNodeP->store.Tstruct.mbrArray));
         else {
             struct mbrDecomp * const mbrP =
diff --git a/src/xmlrpc_parse.c b/src/xmlrpc_parse.c
index 43d9d54..6638654 100644
--- a/src/xmlrpc_parse.c
+++ b/src/xmlrpc_parse.c
@@ -44,7 +44,7 @@
     do \
         if (xml_element_children_size(elem) != (count)) \
             XMLRPC_FAIL3(env, XMLRPC_PARSE_ERROR, \
-             "Expected <%s> to have %d children, found %d", \
+             "Expected <%s> to have %d children, found %zd", \
                          xml_element_name(elem), (count), \
                          xml_element_children_size(elem)); \
     while (0)
@@ -293,7 +293,7 @@ xmlrpc_parse_call(xmlrpc_env *    const envP,
     if (xmlLen > xmlrpc_limit_get(XMLRPC_XML_SIZE_LIMIT_ID))
         xmlrpc_env_set_fault_formatted(
             envP, XMLRPC_LIMIT_EXCEEDED_ERROR,
-            "XML-RPC request too large.  Max allowed is %u bytes",
+            "XML-RPC request too large.  Max allowed is %zu bytes",
             xmlrpc_limit_get(XMLRPC_XML_SIZE_LIMIT_ID));
     else {
         xml_element * callElemP;
@@ -545,8 +545,8 @@ xmlrpc_parse_response2(xmlrpc_env *    const envP,
     if (xmlDataLen > xmlrpc_limit_get(XMLRPC_XML_SIZE_LIMIT_ID))
         xmlrpc_env_set_fault_formatted(
             envP, XMLRPC_LIMIT_EXCEEDED_ERROR,
-            "XML-RPC response too large.  Our limit is %u characters.  "
-            "We got %u characters",
+            "XML-RPC response too large.  Our limit is %zu characters.  "
+            "We got %zu characters",
             xmlrpc_limit_get(XMLRPC_XML_SIZE_LIMIT_ID), xmlDataLen);
     else {
         xmlrpc_env env;
diff --git a/src/xmlrpc_server_abyss.c b/src/xmlrpc_server_abyss.c
index 64cd133..551298a 100644
--- a/src/xmlrpc_server_abyss.c
+++ b/src/xmlrpc_server_abyss.c
@@ -464,7 +464,7 @@ processCall(TSession *        const abyssSessionP,
     if (contentSize > xmlrpc_limit_get(XMLRPC_XML_SIZE_LIMIT_ID))
         xmlrpc_env_set_fault_formatted(
             &env, XMLRPC_LIMIT_EXCEEDED_ERROR,
-            "XML-RPC request too large (%d bytes)", contentSize);
+            "XML-RPC request too large (%zd bytes)", contentSize);
     else {
         xmlrpc_mem_block * body;
         /* Read XML data off the wire. */
diff --git a/src/xmlrpc_string.c b/src/xmlrpc_string.c
index 8bf299d..8354b42 100644
--- a/src/xmlrpc_string.c
+++ b/src/xmlrpc_string.c
@@ -141,7 +141,7 @@ xmlrpc_read_string(xmlrpc_env *         const envP,
         MALLOCARRAY(stringValue, length + 1);
         if (stringValue == NULL)
             xmlrpc_faultf(envP, "Unable to allocate space "
-                          "for %u-character string", length);
+                          "for %zu-character string", length);
         else {
             memcpy(stringValue, contents, length);
             stringValue[length] = '\0';
@@ -189,7 +189,7 @@ copyAndConvertLfToCrlf(xmlrpc_env *  const envP,
     MALLOCARRAY(dst, dstLen + 1);
     if (dst == NULL)
         xmlrpc_faultf(envP, "Unable to allocate space "
-                      "for %u-character string", dstLen + 1);
+                      "for %zu-character string", dstLen + 1);
     else {
         const char * p;  /* source pointer */
         char * q;        /* destination pointer */
@@ -370,7 +370,7 @@ xmlrpc_read_string_w(xmlrpc_env *     const envP,
         wchar_t * stringValue;
         MALLOCARRAY(stringValue, length + 1);
         if (stringValue == NULL)
-            xmlrpc_faultf(envP, "Unable to allocate space for %u-byte string", 
+            xmlrpc_faultf(envP, "Unable to allocate space for %zu-byte string",
                           length);
         else {
             memcpy(stringValue, wcontents, length * sizeof(wchar_t));
@@ -422,7 +422,7 @@ wCopyAndConvertLfToCrlf(xmlrpc_env *     const envP,
     MALLOCARRAY(dst, dstLen + 1);
     if (dst == NULL)
         xmlrpc_faultf(envP, "Unable to allocate space "
-                      "for %u-character string", dstLen + 1);
+                      "for %zu-character string", dstLen + 1);
     else {
         const wchar_t * p;  /* source pointer */
         wchar_t * q;        /* destination pointer */
diff --git a/tools/xmlrpc/xmlrpc.c b/tools/xmlrpc/xmlrpc.c
index 1bdc44c..c4e0618 100644
--- a/tools/xmlrpc/xmlrpc.c
+++ b/tools/xmlrpc/xmlrpc.c
@@ -268,7 +268,7 @@ buildBytestring(xmlrpc_env *    const envP,
 
     if (valueStringSize / 2 * 2 != valueStringSize)
         xmlrpc_faultf(envP, "Hexadecimal text is not an even "
-                      "number of characters (it is %u characters)",
+                      "number of characters (it is %zu characters)",
                       strlen(valueString));
     else {
         size_t const byteStringSize = strlen(valueString)/2;
-- 
1.5.6.5


xmlrpc-c-stdlib.patch:

--- NEW FILE xmlrpc-c-stdlib.patch ---
>From fbab59e1bc20b9ae885c5cfe2f5c4e9b083ae5bc Mon Sep 17 00:00:00 2001
From: Enrico Scholz <enrico.scholz at informatik.tu-chemnitz.de>
Date: Sat, 15 Nov 2008 11:34:53 +0100
Subject: [PATCH] include missing <stdlib.h>

---
 src/cpp/server_cgi.cpp |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/src/cpp/server_cgi.cpp b/src/cpp/server_cgi.cpp
index c8bb41d..da4152d 100644
--- a/src/cpp/server_cgi.cpp
+++ b/src/cpp/server_cgi.cpp
@@ -14,6 +14,7 @@
 
 #include <memory>
 #include <stdio.h>
+#include <stdlib.h>
 
 #include "xmlrpc-c/girerr.hpp"
 using girerr::throwf;
-- 
1.5.6.5


xmlrpc-c-va_list.patch:

--- NEW FILE xmlrpc-c-va_list.patch ---
>From 4a8a7e8161d0e0b362508a6e51abf18d50712968 Mon Sep 17 00:00:00 2001
From: Enrico Scholz <enrico.scholz at informatik.tu-chemnitz.de>
Date: Sat, 15 Nov 2008 12:07:25 +0100
Subject: [PATCH] 'va_list' param must be non-const

vasprintf(3) uses a non-const 'va_list ap' parameter.
Hence, do not accept a 'const' on in the wrapper function.
---
 include/xmlrpc-c/util.h |    2 +-
 lib/libutil/error.c     |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/xmlrpc-c/util.h b/include/xmlrpc-c/util.h
index 5b6e4f5..9387ef7 100644
--- a/include/xmlrpc-c/util.h
+++ b/include/xmlrpc-c/util.h
@@ -140,7 +140,7 @@ void
 xmlrpc_set_fault_formatted_v(xmlrpc_env * const envP,
                              int          const code,
                              const char * const format,
-                             va_list      const args);
+                             va_list      args);
 
 /* The same as the above, but using a printf-style format string. */
 void 
diff --git a/lib/libutil/error.c b/lib/libutil/error.c
index fd964d0..b182308 100644
--- a/lib/libutil/error.c
+++ b/lib/libutil/error.c
@@ -86,7 +86,7 @@ void
 xmlrpc_set_fault_formatted_v(xmlrpc_env * const envP,
                              int          const code,
                              const char * const format,
-                             va_list      const args) {
+                             va_list      args) {
 
     const char * faultDescription;
 
-- 
1.5.6.5



--- fixed-broken-format-string-modifiers-for-size_t-type.patch DELETED ---


--- make-cmake-transition.patch DELETED ---


--- use-proper-datatypes.patch DELETED ---




More information about the fedora-extras-commits mailing list