43e43d7
From 0dd5200ebaf39dc37b7fc06e6b793c307b2d648b Mon Sep 17 00:00:00 2001
0870937
From: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
43e43d7
Date: Sun, 1 Apr 2007 14:30:58 +0200
0870937
Subject: [PATCH] make -> cmake transition
0870937
0870937
---
9f015c0
 CMakeLists.txt                              |  236 +++++++++++++++++++++++++++
43e43d7
 cmake/try-attr.cc                           |    3 +
9f015c0
 cmake/va-list-is-array.c                    |    9 +
9f015c0
 examples/CMakeLists.txt                     |   51 ++++++
43e43d7
 examples/config.h                           |    1 +
43e43d7
 examples/cpp/CMakeLists.txt                 |   20 +++
43e43d7
 include/CMakeLists.txt                      |    3 +
43e43d7
 include/xmlrpc-c/CMakeLists.txt             |   52 ++++++
0870937
 include/xmlrpc-c/config.h.cmake             |    8 +
43e43d7
 lib/CMakeLists.txt                          |   12 ++
43e43d7
 lib/abyss/CMakeLists.txt                    |    3 +
43e43d7
 lib/abyss/src/CMakeLists.txt                |   57 +++++++
43e43d7
 lib/abyss/src/xmlrpc_abyss.pc.cmake         |   12 ++
0870937
 lib/curl_transport/CMakeLists.txt           |    7 +
0870937
 lib/expat/CMakeLists.txt                    |    9 +
43e43d7
 lib/expat/gennmtab/CMakeLists.txt           |    3 +
0870937
 lib/expat/xmlparse/CMakeLists.txt           |    7 +
43e43d7
 lib/expat/xmlparse/xmlrpc_xmlparse.pc.cmake |   12 ++
43e43d7
 lib/expat/xmltok/CMakeLists.txt             |   20 +++
0870937
 lib/expat/xmltok/xmlrpc_xmltok.pc.cmake     |    9 +
9f015c0
 lib/libutil/CMakeLists.txt                  |   22 +++
0870937
 lib/libutil/xmlrpc_util.pc.cmake            |   10 +
43e43d7
 lib/libwww_transport/CMakeLists.txt         |    4 +
43e43d7
 lib/util/CMakeLists.txt                     |   13 ++
43e43d7
 lib/wininet_transport/CMakeLists.txt        |    4 +
9f015c0
 src/CMakeLists.txt                          |  106 ++++++++++++
43e43d7
 src/cpp/CMakeLists.txt                      |   48 ++++++
43e43d7
 src/cpp/xmlrpc++.pc.cmake                   |   12 ++
43e43d7
 src/cpp/xmlrpc_client++.pc.cmake            |   12 ++
43e43d7
 src/cpp/xmlrpc_cpp.pc.cmake                 |   12 ++
43e43d7
 src/cpp/xmlrpc_server++.pc.cmake            |   12 ++
43e43d7
 src/cpp/xmlrpc_server_abyss++.pc.cmake      |   12 ++
9f015c0
 src/test/CMakeLists.txt                     |   27 +++
43e43d7
 src/xmlrpc.pc.cmake                         |   12 ++
43e43d7
 src/xmlrpc_client.pc.cmake                  |   12 ++
43e43d7
 src/xmlrpc_server.pc.cmake                  |   12 ++
43e43d7
 src/xmlrpc_server_abyss.pc.cmake            |   12 ++
43e43d7
 src/xmlrpc_server_cgi.pc.cmake              |   12 ++
0870937
 tools/CMakeLists.txt                        |    9 +
43e43d7
 tools/binmode-rpc-kit/CMakeLists.txt        |    2 +
43e43d7
 tools/turbocharger/CMakeLists.txt           |    1 +
9f015c0
 tools/xml-rpc-api2cpp/CMakeLists.txt        |   15 ++
9f015c0
 tools/xmlrpc/CMakeLists.txt                 |   15 ++
43e43d7
 tools/xmlrpc/config.h                       |    1 +
9f015c0
 tools/xmlrpc_transport/CMakeLists.txt       |    9 +
43e43d7
 tools/xmlrpc_transport/config.h             |    1 +
0870937
 transport_config.h.cmake                    |   16 ++
43e43d7
 version.h.cmake                             |    2 +
43e43d7
 xmlrpc-c-config                             |   67 ++++++++
43e43d7
 xmlrpc_config.h.cmake                       |   21 +++
43e43d7
 50 files changed, 1047 insertions(+), 0 deletions(-)
43e43d7
 create mode 100644 CMakeLists.txt
43e43d7
 create mode 100644 cmake/try-attr.cc
43e43d7
 create mode 100644 cmake/va-list-is-array.c
43e43d7
 create mode 100644 examples/CMakeLists.txt
43e43d7
 create mode 100644 examples/config.h
43e43d7
 create mode 100644 examples/cpp/CMakeLists.txt
43e43d7
 create mode 100644 include/CMakeLists.txt
43e43d7
 create mode 100644 include/xmlrpc-c/CMakeLists.txt
43e43d7
 create mode 100644 include/xmlrpc-c/config.h.cmake
43e43d7
 create mode 100644 lib/CMakeLists.txt
43e43d7
 create mode 100644 lib/abyss/CMakeLists.txt
43e43d7
 create mode 100644 lib/abyss/src/CMakeLists.txt
43e43d7
 create mode 100644 lib/abyss/src/xmlrpc_abyss.pc.cmake
43e43d7
 create mode 100644 lib/curl_transport/CMakeLists.txt
43e43d7
 create mode 100644 lib/expat/CMakeLists.txt
43e43d7
 create mode 100644 lib/expat/gennmtab/CMakeLists.txt
43e43d7
 create mode 100644 lib/expat/xmlparse/CMakeLists.txt
43e43d7
 create mode 100644 lib/expat/xmlparse/xmlrpc_xmlparse.pc.cmake
43e43d7
 create mode 100644 lib/expat/xmltok/CMakeLists.txt
43e43d7
 create mode 100644 lib/expat/xmltok/xmlrpc_xmltok.pc.cmake
43e43d7
 create mode 100644 lib/libutil/CMakeLists.txt
43e43d7
 create mode 100644 lib/libutil/xmlrpc_util.pc.cmake
43e43d7
 create mode 100644 lib/libwww_transport/CMakeLists.txt
43e43d7
 create mode 100644 lib/util/CMakeLists.txt
43e43d7
 create mode 100644 lib/wininet_transport/CMakeLists.txt
43e43d7
 create mode 100644 src/CMakeLists.txt
43e43d7
 create mode 100644 src/cpp/CMakeLists.txt
43e43d7
 create mode 100644 src/cpp/xmlrpc++.pc.cmake
43e43d7
 create mode 100644 src/cpp/xmlrpc_client++.pc.cmake
43e43d7
 create mode 100644 src/cpp/xmlrpc_cpp.pc.cmake
43e43d7
 create mode 100644 src/cpp/xmlrpc_server++.pc.cmake
43e43d7
 create mode 100644 src/cpp/xmlrpc_server_abyss++.pc.cmake
43e43d7
 create mode 100644 src/test/CMakeLists.txt
43e43d7
 create mode 100644 src/xmlrpc.pc.cmake
43e43d7
 create mode 100644 src/xmlrpc_client.pc.cmake
43e43d7
 create mode 100644 src/xmlrpc_server.pc.cmake
43e43d7
 create mode 100644 src/xmlrpc_server_abyss.pc.cmake
43e43d7
 create mode 100644 src/xmlrpc_server_cgi.pc.cmake
43e43d7
 create mode 100644 tools/CMakeLists.txt
43e43d7
 create mode 100644 tools/binmode-rpc-kit/CMakeLists.txt
43e43d7
 create mode 100644 tools/turbocharger/CMakeLists.txt
43e43d7
 create mode 100644 tools/xml-rpc-api2cpp/CMakeLists.txt
43e43d7
 create mode 100644 tools/xmlrpc/CMakeLists.txt
43e43d7
 create mode 100644 tools/xmlrpc/config.h
43e43d7
 create mode 100644 tools/xmlrpc_transport/CMakeLists.txt
43e43d7
 create mode 100644 tools/xmlrpc_transport/config.h
43e43d7
 create mode 100644 transport_config.h.cmake
43e43d7
 create mode 100644 version.h.cmake
43e43d7
 create mode 100755 xmlrpc-c-config
43e43d7
 create mode 100644 xmlrpc_config.h.cmake
0870937
0870937
diff --git a/CMakeLists.txt b/CMakeLists.txt
0870937
new file mode 100644
43e43d7
index 0000000..e4505f7
0870937
--- /dev/null
0870937
+++ b/CMakeLists.txt
9f015c0
@@ -0,0 +1,236 @@
0870937
+## -*- cmake -*-
0870937
+project(xmlrpc-c)
0870937
+include(UsePkgConfig)
0870937
+include(CheckIncludeFile)
0870937
+include(CheckFunctionExists)
0870937
+
8bd0425
+set(XMLRPC_C_VERSION    "1.06.16" CACHE STRING "Version of xmlrpc-c")
8bd0425
+set(XMLRPC_C_LIBVERSION "3.6.15")
0870937
+set(XMLRPC_C_SOVERSION  "3")
0870937
+
0870937
+
0870937
+macro(ensc_set_bool NAME VALUE DESC)
0870937
+  set(${NAME} ${VALUE} CACHE BOOL ${DESC})
0870937
+  if(${NAME})
0870937
+    set(_${NAME} 1)
0870937
+  else(${NAME})
0870937
+    set(_${NAME} 0)
0870937
+  endif(${NAME})
0870937
+endmacro(ensc_set_bool)
0870937
+
0870937
+macro(ensc_pkgconfig COMP)
0870937
+  configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${COMP}.pc.cmake
0870937
+    ${CMAKE_CURRENT_BINARY_DIR}/${COMP}.pc
0870937
+    @ONLY)
0870937
+  install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${COMP}.pc
0870937
+    DESTINATION ${pkgconfdir})
0870937
+endmacro(ensc_pkgconfig)
0870937
+
0870937
+macro(ensc_pkgconfig_lib TARGET LIBS)
0870937
+  get_target_property(libtype ${TARGET} TYPE)
0870937
+  if("${libtype}" STREQUAL "STATIC_LIBRARY")
0870937
+    list(APPEND ${TARGET}_pkgconfig_libs "${LIBS}")
0870937
+  endif("${libtype}" STREQUAL "STATIC_LIBRARY")
0870937
+endmacro(ensc_pkgconfig_lib)
0870937
+
9f015c0
+macro(ensc_set_link_exe_flags)
9f015c0
+  ## HACK: libwww has broken inter-lib dependencies and '-Wl,--as-needed' fails with it
9f015c0
+  if(NOT MUST_BUILD_LIBWWW_CLIENT)
9f015c0
+    set_target_properties(${ARGV}
9f015c0
+      PROPERTIES
9f015c0
+      LINK_FLAGS ${XMLRPC_LINKER_FLAGS})
9f015c0
+  endif(NOT MUST_BUILD_LIBWWW_CLIENT)
9f015c0
+endmacro(ensc_set_link_exe_flags)
0870937
+
0870937
+
0870937
+###########
0870937
+if(WIN32)
0870937
+  find_program(WININET_CONFIG_EXECUTABLE wininet-config)
0870937
+
0870937
+  if(DEFINED MUST_BUILD_WININET_CLIENT)
0870937
+    set(tmp ${MUST_BUILD_WININET_CLIENT})
0870937
+  else(DEFINED MUST_BUILD_WININET_CLIENT)
0870937
+    if(WININET_CONFIG_EXECUTABLE)
0870937
+      set(tmp 1)
0870937
+    else(WININET_CONFIG_EXECUTABLE)
0870937
+      set(tmp 0)
0870937
+    endif(WININET_CONFIG_EXECUTABLE)
0870937
+  endif(DEFINED MUST_BUILD_WININET_CLIENT)
0870937
+else(WIN32)
0870937
+  set(tmp 0)
0870937
+endif(WIN32)
0870937
+
0870937
+if(tmp)
0870937
+  set(MUST_BUILD_CLIENT 1)
0870937
+  exec_program(${WININET_CONFIG_EXECUTABLE} ARGS --version OUTPUT_VARIABLE WININET_VERSION)
0870937
+  exec_program(${WININET_CONFIG_EXECUTABLE} ARGS --cflags  OUTPUT_VARIABLE WININET_CFLAGS)
0870937
+  exec_program(${WININET_CONFIG_EXECUTABLE} ARGS --libs    OUTPUT_VARIABLE WININET_LDADD)
0870937
+  message(STATUS "Using WinInet ${WININET_VERSION} transport")
0870937
+endif(tmp)
0870937
+
0870937
+ensc_set_bool(MUST_BUILD_WININET_CLIENT ${tmp} "Set iff WinInet client transport shall be built")
0870937
+set(wininet_srcdir ${xmlrpc-c_SOURCE_DIR}/lib/wininet_transport)
0870937
+
0870937
+###########
0870937
+pkgconfig(libcurl CURL_INCLUDE_DIR CURL_LINK_DIR CURL_LINK_FLAGS CURL_CFLAGS)
0870937
+if(DEFINED MUST_BUILD_CURL_CLIENT)
0870937
+  set(tmp ${MUST_BUILD_CURL_CLIENT})
0870937
+else(DEFINED MUST_BUILD_CURL_CLIENT)
0870937
+  if(CURL_LINK_FLAGS)
0870937
+    set(tmp 1)
0870937
+  else(CURL_LINK_FLAGS)
0870937
+    set(tmp 0)
0870937
+  endif(CURL_LINK_FLAGS)
0870937
+endif(DEFINED MUST_BUILD_CURL_CLIENT)
0870937
+
0870937
+if(tmp)
0870937
+  set(MUST_BUILD_CLIENT 1)
0870937
+  STRING(REGEX REPLACE "\n" "" CURL_CFLAGS ${CURL_CFLAGS})	# HACK!!
0870937
+  message(STATUS "Using libcurl transport ${CURL_CFLAGS}")
0870937
+endif(tmp)
0870937
+ensc_set_bool(MUST_BUILD_CURL_CLIENT ${tmp} "Set iff Curl client transport shall be built")
0870937
+set(curl_srcdir ${xmlrpc-c_SOURCE_DIR}/lib/curl_transport)
0870937
+
0870937
+###########
0870937
+find_program(LIBWWW_CONFIG_EXECUTABLE libwww-config)
0870937
+if(DEFINED MUST_BUILD_LIBWWW_CLIENT)
0870937
+  set(tmp ${MUST_BUILD_LIBWWW_CLIENT})
0870937
+else(DEFINED MUST_BUILD_LIBWWW_CLIENT)
0870937
+  if(LIBWWW_CONFIG_EXECUTABLE)
0870937
+    set(tmp 1)
0870937
+  else(LIBWWW_CONFIG_EXECUTABLE)
0870937
+    set(tmp 0)
0870937
+  endif(LIBWWW_CONFIG_EXECUTABLE)
0870937
+endif(DEFINED MUST_BUILD_LIBWWW_CLIENT)
0870937
+
0870937
+if(tmp)
0870937
+  set(MUST_BUILD_CLIENT 1)
0870937
+  exec_program(${LIBWWW_CONFIG_EXECUTABLE} ARGS --version OUTPUT_VARIABLE LIBWWW_VERSION)
0870937
+  exec_program(${LIBWWW_CONFIG_EXECUTABLE} ARGS --libs    OUTPUT_VARIABLE LIBWWW_LIBS)
0870937
+  exec_program(${LIBWWW_CONFIG_EXECUTABLE} ARGS --cflags  OUTPUT_VARIABLE LIBWWW_CFLAGS)
0870937
+  message(STATUS "Using libwww ${LIBWWW_VERSION} transport")
0870937
+endif(tmp)
0870937
+ensc_set_bool(MUST_BUILD_LIBWWW_CLIENT ${tmp} "Set iff LibWWW client transport shall be built")
0870937
+set(libwww_srcdir ${xmlrpc-c_SOURCE_DIR}/lib/libwww_transport)
0870937
+
0870937
+############
0870937
+
0870937
+set(ENABLE_CGI_SERVER      1 CACHE BOOL "Set iff CGI server shall be enabled")
0870937
+set(ENABLE_CPLUSPLUS       1 CACHE BOOL "Set iff C++ part shall be enabled")
0870937
+set(ENABLE_ABYSS_SERVER    1 CACHE BOOL "Set iff Abyss server shall be enabled")
0870937
+set(ENABLE_LIBXML2_BACKEND 1 CACHE BOOL "Set iff libxml2 backend shall be used")
0870937
+set(ENABLE_ABYSS_THREADS   1 CACHE BOOL "Use pthread")
0870937
+
0870937
+if(ENABLE_LIBXML2_BACKEND)
0870937
+  foreach(tmp libxml-2.0 libxml2 libxml)
0870937
+    if (NOT DEFINED libxml_pkgconfig)
0870937
+      pkgconfig(${tmp} LIBXML2_INCLUDE_DIR LIBXML2_LINK_DIR LIBXML2_LINK_FLAGS LIBXML2_CFLAGS)
0870937
+      if(LIBXML2_LINK_FLAGS)
0870937
+	set(libxml_pkgconfig ${tmp})
0870937
+      endif(LIBXML2_LINK_FLAGS)
0870937
+    endif(NOT DEFINED libxml_pkgconfig)
0870937
+  endforeach(tmp)
0870937
+endif(ENABLE_LIBXML2_BACKEND)
0870937
+
0870937
+
0870937
+####  <wchar.h> tests
0870937
+check_include_file(wchar.h _have_wchar_h)
0870937
+if(_have_wchar_h)
0870937
+  set(HAVE_WCHAR_H 1)
0870937
+else(_have_wchar_h)
0870937
+  set(HAVE_WCHAR_H 1)
0870937
+endif(_have_wchar_h)
0870937
+set(XMLRPC_HAVE_WCHAR   ${HAVE_WCHAR_H})
0870937
+set(HAVE_WCHAR_H_DEFINE ${HAVE_WCHAR_H})
0870937
+
0870937
+
0870937
+#######
0870937
+set(LINKER_AS_NEEDED  1 CACHE BOOL "Use the --as-needed linker option")
0870937
+if(LINKER_AS_NEEDED)
0870937
+  set(XMLRPC_LINKER_FLAGS "-Wl,--as-needed")
0870937
+endif(LINKER_AS_NEEDED)
0870937
+
0870937
+
0870937
+try_compile(HAVE_ATTR_UNUSED
0870937
+  ${CMAKE_BINARY_DIR}/
0870937
+  ${xmlrpc-c_SOURCE_DIR}/cmake/try-attr.cc
0870937
+  CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=-DCMAKE_TEST_ATTR=__unused__)
0870937
+
9f015c0
+try_compile(VA_LIST_IS_NOT_ARRAY
9f015c0
+  ${CMAKE_BINARY_DIR}/
9f015c0
+  ${xmlrpc-c_SOURCE_DIR}/cmake/va-list-is-array.c)
9f015c0
+
9f015c0
+if(VA_LIST_IS_NOT_ARRAY)
9f015c0
+  set(VA_LIST_IS_ARRAY 0)
9f015c0
+  message(STATUS "va_list is not an array")
9f015c0
+else(VA_LIST_IS_NOT_ARRAY)
9f015c0
+  set(VA_LIST_IS_ARRAY 1)
9f015c0
+  message(STATUS "va_list is an array")
9f015c0
+endif(VA_LIST_IS_NOT_ARRAY)
9f015c0
+
9f015c0
+
0870937
+if(HAVE_ATTR_UNUSED)
0870937
+  set(ATTR_UNUSED "__attribute__((__unused__))")
0870937
+endif(HAVE_ATTR_UNUSED)
0870937
+
0870937
+if(WIN32)
0870937
+  set(DIRECTORY_SEPARATOR "\\")
0870937
+else(WIN32)
0870937
+  set(DIRECTORY_SEPARATOR "/")
0870937
+endif(WIN32)
0870937
+
0870937
+check_include_file(sys/filio.h HAVE_SYS_FILIO_H)
0870937
+check_include_file(sys/ioctl.h HAVE_SYS_IOCTL_H)
0870937
+check_function_exists(setenv HAVE_SETENV)
0870937
+
0870937
+configure_file(${xmlrpc-c_SOURCE_DIR}/xmlrpc_config.h.cmake
0870937
+               ${xmlrpc-c_BINARY_DIR}/xmlrpc_config.h
0870937
+     	       ESCAPE_QUOTES @ONLY)
0870937
+
0870937
+configure_file(${xmlrpc-c_SOURCE_DIR}/version.h.cmake
0870937
+               ${xmlrpc-c_BINARY_DIR}/version.h
0870937
+     	       ESCAPE_QUOTES @ONLY)
0870937
+
0870937
+configure_file(${xmlrpc-c_SOURCE_DIR}/transport_config.h.cmake
0870937
+               ${xmlrpc-c_BINARY_DIR}/transport_config.h
0870937
+     	       ESCAPE_QUOTES @ONLY)
0870937
+
0870937
+configure_file(${xmlrpc-c_SOURCE_DIR}/include/xmlrpc-c/config.h.cmake
0870937
+               ${xmlrpc-c_BINARY_DIR}/include/xmlrpc-c/config.h
0870937
+     	       ESCAPE_QUOTES @ONLY)
0870937
+
0870937
+
0870937
+include_directories(${xmlrpc-c_SOURCE_DIR}/include)
0870937
+include_directories(${xmlrpc-c_BINARY_DIR}/include)
0870937
+include_directories(${xmlrpc-c_SOURCE_DIR}/lib/util/include)
0870937
+include_directories(${xmlrpc-c_BINARY_DIR})
0870937
+
0870937
+add_custom_target(dist
0870937
+  rm -rf _dist && mkdir -p _dist/xmlrpc-c-${XMLRPC_C_VERSION}
0870937
+  COMMAND cp -a ${xmlrpc-c_SOURCE_DIR}/* _dist/xmlrpc-c-${XMLRPC_C_VERSION}/
0870937
+  COMMAND cd _dist && tar cjf ../xmlrpc-c-${XMLRPC_C_VERSION}.tar.bz2 xmlrpc-c-${XMLRPC_C_VERSION} --exclude=.git --exclude=CVS --exclude=.svn
0870937
+  )
0870937
+
9f015c0
+set(_lib       lib CACHE STRING "Basename of the library-directory; usually 'lib' or 'lib64' (on multilib archs)")
9f015c0
+set(_bin       bin CACHE STRING "Basename of the bin-directory; usually 'bin'")
0870937
+set(prefix     ${CMAKE_INSTALL_PREFIX})
9f015c0
+set(libdir     "${prefix}/${_lib}")
9f015c0
+set(bindir     "${prefix}/${_bin}")
9f015c0
+set(mandir     "${prefix}/share/man")
0870937
+set(pkgconfdir "${libdir}/pkgconfig")
0870937
+set(includedir "${prefix}/include")
0870937
+
9f015c0
+#############
9f015c0
+
9f015c0
+install(PROGRAMS xmlrpc-c-config DESTINATION ${_bin})
9f015c0
+
9f015c0
+enable_testing()
0870937
+
0870937
+add_subdirectory(lib)
0870937
+add_subdirectory(Windows)
0870937
+add_subdirectory(conf)
0870937
+add_subdirectory(doc)
0870937
+add_subdirectory(examples)
0870937
+add_subdirectory(include)
0870937
+add_subdirectory(src)
0870937
+add_subdirectory(tools)
0870937
diff --git a/cmake/try-attr.cc b/cmake/try-attr.cc
0870937
new file mode 100644
9f015c0
index 0000000..4668c5b
0870937
--- /dev/null
0870937
+++ b/cmake/try-attr.cc
9f015c0
@@ -0,0 +1,3 @@
0870937
+int x __attribute__((CMAKE_TEST_ATTR));
9f015c0
+
9f015c0
+int main() {}
9f015c0
diff --git a/cmake/va-list-is-array.c b/cmake/va-list-is-array.c
9f015c0
new file mode 100644
9f015c0
index 0000000..1ad0bab
9f015c0
--- /dev/null
9f015c0
+++ b/cmake/va-list-is-array.c
9f015c0
@@ -0,0 +1,9 @@
9f015c0
+#include <stdarg.h>
9f015c0
+
9f015c0
+void foo()
9f015c0
+{
9f015c0
+  va_list list1, list2;
9f015c0
+  list1 = list2;
9f015c0
+}
9f015c0
+
9f015c0
+int main() {}
0870937
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
0870937
new file mode 100644
9f015c0
index 0000000..9f18b0d
0870937
--- /dev/null
0870937
+++ b/examples/CMakeLists.txt
9f015c0
@@ -0,0 +1,51 @@
0870937
+# -*- cmake -*-
0870937
+
0870937
+include_directories(${CMAKE_CURRENT_BINARY_DIR})
0870937
+
0870937
+macro(ensc_add_example name ext class)
0870937
+  # HACK: avoid name collision of c and c++ program
0870937
+  if("${ext}" STREQUAL "cpp")
0870937
+    set(_target ${name}++)
0870937
+  else("${ext}" STREQUAL "cpp")
0870937
+    set(_target ${name})
0870937
+  endif("${ext}" STREQUAL "cpp")
0870937
+
0870937
+  add_executable(${_target} ${name}.${ext})
0870937
+  target_link_libraries(${_target} ${${class}_LIBS})
0870937
+  list(APPEND ${class}_TARGETS ${_target})
0870937
+  list(APPEND example_TARGETS ${_target})
0870937
+endmacro(ensc_add_example)
0870937
+
0870937
+if(ENABLE_CPLUSPLUS)
0870937
+  add_subdirectory(cpp)
0870937
+endif(ENABLE_CPLUSPLUS)
0870937
+
0870937
+
0870937
+
0870937
+if(MUST_BUILD_CLIENT)
0870937
+  set(client_LIBS xmlrpc_client)
0870937
+
0870937
+  ensc_add_example(auth_client              c client)
0870937
+  ensc_add_example(query-meerkat            c client)
0870937
+  ensc_add_example(synch_client             c client)
0870937
+  ensc_add_example(xmlrpc_sample_add_client c client)
0870937
+  ensc_add_example(xmlrpc_asynch_client     c client)
0870937
+endif(MUST_BUILD_CLIENT)
0870937
+
0870937
+if(ENABLE_CGI_SERVER)
0870937
+  set(cgi_server_LIBS xmlrpc_server_cgi)
0870937
+
0870937
+  ensc_add_example(xmlrpc_sample_add_server_cgi c cgi_server)
0870937
+endif(ENABLE_CGI_SERVER)
0870937
+
0870937
+if(ENABLE_ABYSS_SERVER)
0870937
+  set(abyss_server_LIBS xmlrpc_server_abyss)
0870937
+
0870937
+  ensc_add_example(xmlrpc_inetd_server      c abyss_server)
0870937
+  ensc_add_example(xmlrpc_socket_server     c abyss_server)
0870937
+  ensc_add_example(xmlrpc_loop_server       c abyss_server)
0870937
+  ensc_add_example(xmlrpc_sample_add_server c abyss_server)
0870937
+  ensc_add_example(xmlrpc_server_validatee  c abyss_server)
0870937
+endif(ENABLE_ABYSS_SERVER)
0870937
+
9f015c0
+ensc_set_link_exe_flags(${example_TARGETS})
0870937
diff --git a/examples/config.h b/examples/config.h
0870937
new file mode 100644
0870937
index 0000000..31d5f9b
0870937
--- /dev/null
0870937
+++ b/examples/config.h
0870937
@@ -0,0 +1 @@
0870937
+#include "../xmlrpc_config.h"
0870937
diff --git a/examples/cpp/CMakeLists.txt b/examples/cpp/CMakeLists.txt
0870937
new file mode 100644
9f015c0
index 0000000..9fbea7e
0870937
--- /dev/null
0870937
+++ b/examples/cpp/CMakeLists.txt
9f015c0
@@ -0,0 +1,20 @@
0870937
+# -*- cmake -*-
0870937
+
0870937
+if(ENABLE_ABYSS_SERVER)
0870937
+  set(abyss_serverxx_LIBS xmlrpc_server_abyss++)
0870937
+
0870937
+  ensc_add_example(xmlrpc_inetd_server cpp abyss_serverxx)
0870937
+endif(ENABLE_ABYSS_SERVER)
0870937
+
0870937
+if(MUST_BUILD_CLIENT)
0870937
+  set(abyss_clientxx_LIBS        xmlrpc_client++)
0870937
+  set(abyss_clientxx_legacy_LIBS xmlrpc_cpp)
0870937
+
0870937
+  ensc_add_example(xmlrpc_sample_add_client  cpp abyss_clientxx)
0870937
+  ensc_add_example(sample_add_client_complex cpp abyss_clientxx)
0870937
+
0870937
+  ensc_add_example(meerkat-app-list          cpp abyss_clientxx_legacy)
0870937
+endif(MUST_BUILD_CLIENT)
0870937
+
0870937
+
9f015c0
+ensc_set_link_exe_flags(${example_TARGETS})
0870937
diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt
0870937
new file mode 100644
0870937
index 0000000..ebfdba5
0870937
--- /dev/null
0870937
+++ b/include/CMakeLists.txt
0870937
@@ -0,0 +1,3 @@
0870937
+# -*- cmake -*-
0870937
+
0870937
+add_subdirectory(xmlrpc-c)
0870937
diff --git a/include/xmlrpc-c/CMakeLists.txt b/include/xmlrpc-c/CMakeLists.txt
0870937
new file mode 100644
43e43d7
index 0000000..b92ccf4
0870937
--- /dev/null
0870937
+++ b/include/xmlrpc-c/CMakeLists.txt
43e43d7
@@ -0,0 +1,52 @@
0870937
+# -*- cmake -*-
0870937
+
43e43d7
+macro(ensc_install_symlink src dst)
43e43d7
+  install(CODE "EXECUTE_PROCESS(COMMAND ln -s xmlrpc-c/${src} \$ENV{DESTDIR}${includedir}/${dst})")
43e43d7
+endmacro(ensc_install_symlink)
43e43d7
+
0870937
+list(APPEND headers
0870937
+  ${CMAKE_CURRENT_BINARY_DIR}/config.h
0870937
+  util.h base.h abyss.h server.h
0870937
+  server_abyss.h server_w32httpsys.h oldxmlrpc.h)
0870937
+
43e43d7
+list(APPEND compat_links "oldxmlrpc.h         xmlrpc.h")
43e43d7
+list(APPEND compat_links "server.h            xmlrpc_server.h")
43e43d7
+list(APPEND compat_links "server_abyss.h      xmlrpc_server_abyss.h")
43e43d7
+list(APPEND compat_links "server_w32httpsys.h xmlrpc_server_w32httpsys.h")
43e43d7
+
43e43d7
+
0870937
+if(ENABLE_CPLUSPLUS)
0870937
+  list(APPEND headers
0870937
+    oldcppwrapper.hpp girerr.hpp girmem.hpp base.hpp
0870937
+    timeout.hpp xml.hpp registry.hpp server_abyss.hpp)
43e43d7
+
43e43d7
+  list(APPEND compat_links "oldcppwrapper.hpp XmlRpcCpp.h")
0870937
+endif(ENABLE_CPLUSPLUS)
0870937
+
0870937
+if(MUST_BUILD_CLIENT)
0870937
+  list(APPEND headers
0870937
+    client.h transport.h client_global.h)
0870937
+
43e43d7
+  list(APPEND compat_links "client.h xmlrpc_client.h")
43e43d7
+  
0870937
+  if(ENABLE_CPLUSPLUS)
0870937
+    list(APPEND headers
0870937
+      client.hpp client_transport.hpp client_simple.hpp)
0870937
+  endif(ENABLE_CPLUSPLUS)
0870937
+endif(MUST_BUILD_CLIENT)
0870937
+
0870937
+if(ENABLE_CGI_SERVER)
0870937
+  list(APPEND headers
0870937
+    server_cgi.h)
43e43d7
+
43e43d7
+  list(APPEND compat_links "server_cgi.h xmlrpc_cgi.h")
0870937
+endif(ENABLE_CGI_SERVER)
0870937
+
0870937
+install(FILES
0870937
+  ${headers}
0870937
+  DESTINATION ${includedir}/xmlrpc-c)
43e43d7
+
43e43d7
+foreach (ln ${compat_links})
43e43d7
+  separate_arguments(ln)
43e43d7
+  ensc_install_symlink(${ln})
43e43d7
+endforeach(ln)
0870937
diff --git a/include/xmlrpc-c/config.h.cmake b/include/xmlrpc-c/config.h.cmake
0870937
new file mode 100644
0870937
index 0000000..7b95a1d
0870937
--- /dev/null
0870937
+++ b/include/xmlrpc-c/config.h.cmake
0870937
@@ -0,0 +1,8 @@
0870937
+/* This file, part of XML-RPC For C/C++, is meant to
0870937
+   define characteristics of this particular installation
0870937
+   that the other <xmlrpc-c/...> header files need in order to
0870937
+   compile correctly when #included in a Xmlrpc-c user code.
0870937
+
0870937
+   Those header files #include this one.
0870937
+*/
0870937
+#define XMLRPC_HAVE_WCHAR		@HAVE_WCHAR_H@
0870937
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
0870937
new file mode 100644
0870937
index 0000000..7f8f912
0870937
--- /dev/null
0870937
+++ b/lib/CMakeLists.txt
0870937
@@ -0,0 +1,12 @@
0870937
+## -*- cmake -*-
0870937
+
0870937
+add_subdirectory(abyss)
0870937
+add_subdirectory(libutil)
0870937
+add_subdirectory(util)
0870937
+add_subdirectory(curl_transport)
0870937
+add_subdirectory(libwww_transport)
0870937
+add_subdirectory(wininet_transport)
0870937
+
0870937
+if(NOT ENABLE_LIBXML2_BACKEND)
0870937
+  add_subdirectory(expat)
0870937
+endif(NOT ENABLE_LIBXML2_BACKEND)
0870937
diff --git a/lib/abyss/CMakeLists.txt b/lib/abyss/CMakeLists.txt
0870937
new file mode 100644
0870937
index 0000000..2358061
0870937
--- /dev/null
0870937
+++ b/lib/abyss/CMakeLists.txt
0870937
@@ -0,0 +1,3 @@
0870937
+## -*- cmake -*-
0870937
+
0870937
+SUBDIRS(src)
0870937
diff --git a/lib/abyss/src/CMakeLists.txt b/lib/abyss/src/CMakeLists.txt
0870937
new file mode 100644
43e43d7
index 0000000..cff8299
0870937
--- /dev/null
0870937
+++ b/lib/abyss/src/CMakeLists.txt
43e43d7
@@ -0,0 +1,57 @@
0870937
+## -*- cmake -*-
0870937
+
0870937
+set(xmlrpc_abyss_SOURCES
0870937
+  abyss_info.h
0870937
+  conf.c
0870937
+  conn.c
0870937
+  conn.h
0870937
+  data.c
0870937
+  data.h
0870937
+  date.c
0870937
+  date.h
0870937
+  file.c
0870937
+  file.h
0870937
+  http.c
43e43d7
+  http.h 
0870937
+  response.c
0870937
+  server.c
0870937
+  server.h
0870937
+  session.c
0870937
+  session.h
0870937
+  socket.c
0870937
+  socket.h
0870937
+  socket_unix.c
0870937
+  socket_unix.h
0870937
+  thread.h
0870937
+  token.c
0870937
+  token.h
0870937
+  trace.c
0870937
+  trace.h)
0870937
+
0870937
+if(ENABLE_ABYSS_THREADS)
0870937
+  list(APPEND xmlrpc_abyss_SOURCES thread_pthread.c)
0870937
+else(ENABLE_ABYSS_THREADS)
0870937
+  list(APPEND xmlrpc_abyss_SOURCES thread_fork.c)
0870937
+endif(ENABLE_ABYSS_THREADS)
0870937
+
0870937
+add_library(xmlrpc_abyss SHARED ${xmlrpc_abyss_SOURCES})
0870937
+target_link_libraries(xmlrpc_abyss xmlrpc_util)
0870937
+
0870937
+if(ENABLE_ABYSS_THREADS)
0870937
+  set_target_properties(xmlrpc_abyss PROPERTIES DEFINE_SYMBOL _THREAD)
0870937
+  target_link_libraries(xmlrpc_abyss pthread)
0870937
+  ensc_pkgconfig_lib(xmlrpc_abyss "-lpthread")
0870937
+endif(ENABLE_ABYSS_THREADS)
0870937
+
0870937
+install(TARGETS xmlrpc_abyss
9f015c0
+  RUNTIME DESTINATION ${_bin}
9f015c0
+  LIBRARY DESTINATION ${_lib}
9f015c0
+  ARCHIVE DESTINATION ${_lib})
0870937
+
0870937
+set_target_properties(xmlrpc_abyss
0870937
+  PROPERTIES
0870937
+  LINK_FLAGS ${XMLRPC_LINKER_FLAGS}
0870937
+  VERSION    ${XMLRPC_C_LIBVERSION}
0870937
+  SOVERSION  ${XMLRPC_C_SOVERSION})
0870937
+
0870937
+ensc_pkgconfig(xmlrpc_abyss)
0870937
diff --git a/lib/abyss/src/xmlrpc_abyss.pc.cmake b/lib/abyss/src/xmlrpc_abyss.pc.cmake
0870937
new file mode 100644
43e43d7
index 0000000..fae7af3
0870937
--- /dev/null
0870937
+++ b/lib/abyss/src/xmlrpc_abyss.pc.cmake
43e43d7
@@ -0,0 +1,12 @@
43e43d7
+bindir=@bindir@
0870937
+prefix=@prefix@
0870937
+libdir=@libdir@
43e43d7
+includedir=@includedir@
0870937
+
0870937
+Name:        xmlrpc_abyss
0870937
+Description: XMLRPC Abyss base library
0870937
+Version:     @XMLRPC_C_VERSION@
0870937
+
c99f0ac
+Requires.private:	xmlrpc_util
c99f0ac
+Libs:   		-L${libdir} -lxmlrpc_abyss @xmlrpc_abyss_pkgconfig_libs@
0870937
+Cflags:
0870937
diff --git a/lib/curl_transport/CMakeLists.txt b/lib/curl_transport/CMakeLists.txt
0870937
new file mode 100644
0870937
index 0000000..3814f08
0870937
--- /dev/null
0870937
+++ b/lib/curl_transport/CMakeLists.txt
0870937
@@ -0,0 +1,7 @@
0870937
+# -*- cmake -*-
0870937
+
0870937
+if(MUST_BUILD_CURL_CLIENT)
0870937
+  list(APPEND transport_SOURCES
0870937
+    ${CMAKE_CURRENT_SOURCE_DIR}/xmlrpc_curl_transport.c
0870937
+    ${CMAKE_CURRENT_SOURCE_DIR}/xmlrpc_curl_transport.h)
0870937
+endif(MUST_BUILD_CURL_CLIENT)
0870937
diff --git a/lib/expat/CMakeLists.txt b/lib/expat/CMakeLists.txt
0870937
new file mode 100644
0870937
index 0000000..7397f52
0870937
--- /dev/null
0870937
+++ b/lib/expat/CMakeLists.txt
0870937
@@ -0,0 +1,9 @@
0870937
+# -*- cmake -*-
0870937
+
0870937
+
0870937
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/xmltok)
0870937
+
0870937
+add_subdirectory(gennmtab)
0870937
+add_subdirectory(xmlparse)
0870937
+add_subdirectory(xmltok)
0870937
+add_subdirectory(xmlwf)
0870937
diff --git a/lib/expat/gennmtab/CMakeLists.txt b/lib/expat/gennmtab/CMakeLists.txt
0870937
new file mode 100644
0870937
index 0000000..48a44da
0870937
--- /dev/null
0870937
+++ b/lib/expat/gennmtab/CMakeLists.txt
0870937
@@ -0,0 +1,3 @@
0870937
+# -*- cmake -*-
0870937
+
0870937
+ADD_EXECUTABLE(gennmtab gennmtab.c)
0870937
diff --git a/lib/expat/xmlparse/CMakeLists.txt b/lib/expat/xmlparse/CMakeLists.txt
0870937
new file mode 100644
0870937
index 0000000..f87008a
0870937
--- /dev/null
0870937
+++ b/lib/expat/xmlparse/CMakeLists.txt
0870937
@@ -0,0 +1,7 @@
0870937
+# -*- cmake -*-
0870937
+
0870937
+add_library(xmlrpc_xmlparse STATIC
0870937
+  xmlparse.c)
0870937
+target_link_libraries(xmlrpc_xmlparse xmlrpc_xmltok)
0870937
+
0870937
+ensc_pkgconfig(xmlrpc_xmlparse)
0870937
diff --git a/lib/expat/xmlparse/xmlrpc_xmlparse.pc.cmake b/lib/expat/xmlparse/xmlrpc_xmlparse.pc.cmake
0870937
new file mode 100644
43e43d7
index 0000000..5b2a7e4
0870937
--- /dev/null
0870937
+++ b/lib/expat/xmlparse/xmlrpc_xmlparse.pc.cmake
43e43d7
@@ -0,0 +1,12 @@
43e43d7
+bindir=@bindir@
0870937
+prefix=@prefix@
0870937
+libdir=@libdir@
43e43d7
+includedir=@includedir@
0870937
+
0870937
+Name:        xmlrpc_xmlparse
0870937
+Description: XMLRPC xmlparse library
0870937
+Version:     @XMLRPC_C_VERSION@
0870937
+
c99f0ac
+Requires.private:	xmlrpc_xmltok
c99f0ac
+Libs:   		-L${libdir} -lxmlrpc_xmlparse
0870937
+Cflags:
0870937
diff --git a/lib/expat/xmltok/CMakeLists.txt b/lib/expat/xmltok/CMakeLists.txt
0870937
new file mode 100644
0870937
index 0000000..c3247ad
0870937
--- /dev/null
0870937
+++ b/lib/expat/xmltok/CMakeLists.txt
0870937
@@ -0,0 +1,20 @@
0870937
+# -*- cmake -*-
0870937
+
0870937
+include_directories(${CMAKE_CURRENT_BINARY_DIR})
0870937
+
0870937
+add_library(xmlrpc_xmltok STATIC
0870937
+  xmltok.c xmlrole.c ${CMAKE_CURRENT_BINARY_DIR}/nametab.h)
0870937
+
0870937
+set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/nametab.h
0870937
+  PROPERTIES
0870937
+  OBJECT_DEPENDS gennmtab
0870937
+  GENERATED true)
0870937
+
0870937
+
0870937
+get_target_property(GENNMTAB_EXECUTABLE gennmtab LOCATION)
0870937
+add_custom_command(
0870937
+  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/nametab.h
0870937
+  COMMAND ${GENNMTAB_EXECUTABLE} >nametab.h || { rm -f nametab.h\; false\; }
0870937
+  DEPENDS gennmtab)
0870937
+
0870937
+ensc_pkgconfig(xmlrpc_xmltok)
0870937
diff --git a/lib/expat/xmltok/xmlrpc_xmltok.pc.cmake b/lib/expat/xmltok/xmlrpc_xmltok.pc.cmake
0870937
new file mode 100644
0870937
index 0000000..88e7ad8
0870937
--- /dev/null
0870937
+++ b/lib/expat/xmltok/xmlrpc_xmltok.pc.cmake
0870937
@@ -0,0 +1,9 @@
0870937
+prefix=@prefix@
0870937
+libdir=@libdir@
0870937
+
0870937
+Name:        xmlrpc_xmltok
0870937
+Description: XMLRPC xmltok library
0870937
+Version:     @XMLRPC_C_VERSION@
0870937
+
0870937
+Libs:   	-L${libdir}
0870937
+Cflags:
0870937
diff --git a/lib/libutil/CMakeLists.txt b/lib/libutil/CMakeLists.txt
0870937
new file mode 100644
9f015c0
index 0000000..5e5d382
0870937
--- /dev/null
0870937
+++ b/lib/libutil/CMakeLists.txt
9f015c0
@@ -0,0 +1,22 @@
0870937
+# -*- cmake -*-
0870937
+
0870937
+add_library(xmlrpc_util SHARED
0870937
+  casprintf.c
0870937
+  error.c
0870937
+  make_printable.c
0870937
+  memblock.c
0870937
+  resource.c
0870937
+  sleep.c)
0870937
+
9f015c0
+set_target_properties(xmlrpc_util
9f015c0
+  PROPERTIES
9f015c0
+  LINK_FLAGS ${XMLRPC_LINKER_FLAGS}
9f015c0
+  VERSION    ${XMLRPC_C_LIBVERSION}
9f015c0
+  SOVERSION  ${XMLRPC_C_SOVERSION})
9f015c0
+
9f015c0
+install(TARGETS xmlrpc_util
9f015c0
+  RUNTIME DESTINATION ${_bin}
9f015c0
+  LIBRARY DESTINATION ${_lib}
9f015c0
+  ARCHIVE DESTINATION ${_lib})
9f015c0
+
0870937
+ensc_pkgconfig(xmlrpc_util)
0870937
diff --git a/lib/libutil/xmlrpc_util.pc.cmake b/lib/libutil/xmlrpc_util.pc.cmake
0870937
new file mode 100644
0870937
index 0000000..98d24f4
0870937
--- /dev/null
0870937
+++ b/lib/libutil/xmlrpc_util.pc.cmake
0870937
@@ -0,0 +1,10 @@
0870937
+prefix=@prefix@
0870937
+libdir=@libdir@
0870937
+includedir=@includedir@
0870937
+
0870937
+Name:        xmlrpc_util
0870937
+Description: XMLRPC utility library
0870937
+Version:     @XMLRPC_C_VERSION@
0870937
+
0870937
+Libs:   	-L${libdir} -lxmlrpc_util
0870937
+Cflags:
0870937
diff --git a/lib/libwww_transport/CMakeLists.txt b/lib/libwww_transport/CMakeLists.txt
0870937
new file mode 100644
0870937
index 0000000..4744f9c
0870937
--- /dev/null
0870937
+++ b/lib/libwww_transport/CMakeLists.txt
0870937
@@ -0,0 +1,4 @@
0870937
+# -*- cmake -*-
0870937
+
0870937
+if(MUST_BUILD_LIBWWW_CLIENT)
0870937
+endif(MUST_BUILD_LIBWWW_CLIENT)
9f015c0
diff --git a/lib/util/CMakeLists.txt b/lib/util/CMakeLists.txt
9f015c0
new file mode 100644
9f015c0
index 0000000..be6ded2
9f015c0
--- /dev/null
9f015c0
+++ b/lib/util/CMakeLists.txt
9f015c0
@@ -0,0 +1,13 @@
9f015c0
+## -*- cmake -*-
9f015c0
+
9f015c0
+set(util_SOURCES
9f015c0
+  casprintf.c
9f015c0
+  cmdline_parser.c
9f015c0
+  getoptx.c
9f015c0
+  getoptx.h)
9f015c0
+
9f015c0
+if(WIN32)
9f015c0
+  list(APPEND util_SOURCES pthreadx_win32.c)
9f015c0
+endif(WIN32)
9f015c0
+
9f015c0
+add_library(util STATIC ${util_SOURCES})
0870937
diff --git a/lib/wininet_transport/CMakeLists.txt b/lib/wininet_transport/CMakeLists.txt
0870937
new file mode 100644
0870937
index 0000000..4f7408e
0870937
--- /dev/null
0870937
+++ b/lib/wininet_transport/CMakeLists.txt
0870937
@@ -0,0 +1,4 @@
0870937
+# -*- cmake -*-
0870937
+
0870937
+if(MUST_BUILD_WININET_CLIENT)
0870937
+endif(MUST_BUILD_WININET_CLIENT)
0870937
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
0870937
new file mode 100644
43e43d7
index 0000000..c96f206
0870937
--- /dev/null
0870937
+++ b/src/CMakeLists.txt
0870937
@@ -0,0 +1,106 @@
0870937
+# -*- cmake -*-
0870937
+
0870937
+if(ENABLE_LIBXML2_BACKEND)
0870937
+  set(xmlrpc_xml_parser xmlrpc_libxml2.c)
0870937
+  set(libxml_INCLUDES ${LIBXML2_CFLAGS})
0870937
+  set(libxml_LIBS     ${LIBXML2_LINK_FLAGS})
0870937
+  set(xmlrpc_pkgconfig_req ${libxml_pkgconfig})
0870937
+else(ENABLE_LIBXML2_BACKEND)
0870937
+  set(xmlrpc_xml_parser xmlrpc_expat.c)
0870937
+  set(libxml_INCLUDES -I${xmlrpc-c_SOURCE_DIR}/lib/expat/xmlparse)
0870937
+  set(libxml_LIBS xmlrpc_xmlparse)
0870937
+  set(xmlrpc_pkgconfig_req xmlrpc_xmlparse)
0870937
+endif(ENABLE_LIBXML2_BACKEND)
0870937
+
0870937
+if(MUST_BUILD_WININET_CLIENT)
0870937
+  set(client_wininet_CFLAGS "")
0870937
+  set(client_wininet_LIBS   "${WININET_LDADD}")
0870937
+  list(APPEND transport_SOURCES
0870937
+    ${wininet_srcdir}/xmlrpc_wininet_transport.c ${wininet_srcdir}/xmlrpc_wininet_transport.h)
0870937
+endif(MUST_BUILD_WININET_CLIENT)
0870937
+
0870937
+if(MUST_BUILD_LIBWWW_CLIENT)
0870937
+  set(client_libwww_CFLAGS "${LIBWWW_CFLAGS}")
0870937
+  set(client_libwww_LIBS   "${LIBWWW_LIBS}")
0870937
+  list(APPEND transport_SOURCES ${libwww_srcdir}/xmlrpc_libwww_transport.c ${libwww_srcdir}/xmlrpc_libwww_transport.h)
0870937
+endif(MUST_BUILD_LIBWWW_CLIENT)
0870937
+
0870937
+if(MUST_BUILD_CURL_CLIENT)
0870937
+  set(client_curl_CFLAGS ${CURL_CFLAGS})
0870937
+  set(client_curl_LIBS   ${CURL_LINK_FLAGS})
0870937
+  set(xmlrpc_client_pkgconfig_req libcurl)
0870937
+  list(APPEND transport_SOURCES ${curl_srcdir}/xmlrpc_curl_transport.c ${curl_srcdir}/xmlrpc_curl_transport.h)
0870937
+endif(MUST_BUILD_CURL_CLIENT)
0870937
+
0870937
+set(client_CFLAGS "-I${wininet_srcdir} -I${libwww_srcdir} -I${curl_srcdir} ${client_wininet_CFLAGS} ${client_libwww_CFLAGS} ${client_curl_CFLAGS}")
0870937
+set(client_LIBS   "${client_wininet_LIBS} ${client_libwww_LIBS} ${client_curl_LIBS}")
0870937
+
0870937
+
0870937
+add_subdirectory(cpp)
0870937
+add_subdirectory(test)
0870937
+
0870937
+
0870937
+
0870937
+### libxmlrpc.so
0870937
+add_library(xmlrpc SHARED
0870937
+  trace.c ${xmlrpc_xml_parser}
0870937
+  xmlrpc_data.c xmlrpc_datetime.c xmlrpc_array.c xmlrpc_struct.c
43e43d7
+  xmlrpc_builddecomp.c xmlrpc_parse.c xmlrpc_serialize.c
0870937
+  xmlrpc_base64.c xmlrpc_utf8.c xmlrpc_authcookie.c)
0870937
+
0870937
+set_target_properties(xmlrpc
0870937
+  PROPERTIES
0870937
+  COMPILE_FLAGS ${libxml_INCLUDES})
0870937
+
0870937
+ensc_pkgconfig(xmlrpc)
0870937
+target_link_libraries(xmlrpc ${libxml_LIBS} xmlrpc_util)
0870937
+list(APPEND lib_TARGETS xmlrpc)
0870937
+
0870937
+### libxmlrpc_client.so
0870937
+add_library(xmlrpc_client SHARED
0870937
+  xmlrpc_client.c xmlrpc_client_global.c ${transport_SOURCES})
0870937
+
0870937
+target_link_libraries(xmlrpc_client xmlrpc ${client_LIBS})
0870937
+set_target_properties(xmlrpc_client
0870937
+  PROPERTIES
0870937
+  COMPILE_FLAGS "${client_CFLAGS}")
0870937
+list(APPEND lib_TARGETS xmlrpc_client)
0870937
+ensc_pkgconfig(xmlrpc_client)
0870937
+
0870937
+### libxmlrpc_server.so
0870937
+add_library(xmlrpc_server SHARED
0870937
+  registry.c system_method.c)
0870937
+target_link_libraries(xmlrpc_server xmlrpc)
0870937
+list(APPEND lib_TARGETS xmlrpc_server)
0870937
+ensc_pkgconfig(xmlrpc_server)
0870937
+
0870937
+
0870937
+### libxmlrpc_server_abyss.so
0870937
+add_library(xmlrpc_server_abyss SHARED
0870937
+  xmlrpc_server_abyss.c)
0870937
+target_link_libraries(xmlrpc_server_abyss xmlrpc_abyss xmlrpc_server)
0870937
+list(APPEND lib_TARGETS xmlrpc_server_abyss)
0870937
+ensc_pkgconfig(xmlrpc_server_abyss)
0870937
+
0870937
+
0870937
+
0870937
+### libxmlrpc_server_cgi.so
0870937
+add_library(xmlrpc_server_cgi SHARED
0870937
+  xmlrpc_server_cgi)
0870937
+target_link_libraries(xmlrpc_server_cgi xmlrpc_server)
0870937
+list(APPEND lib_TARGETS xmlrpc_server_cgi)
0870937
+ensc_pkgconfig(xmlrpc_server_cgi)
0870937
+
0870937
+
0870937
+install(TARGETS ${lib_TARGETS}
9f015c0
+  RUNTIME DESTINATION ${_bin}
9f015c0
+  LIBRARY DESTINATION ${_lib})
0870937
+
0870937
+set_target_properties(${lib_TARGETS}
0870937
+  PROPERTIES
0870937
+  LINK_FLAGS ${XMLRPC_LINKER_FLAGS}
0870937
+  VERSION    ${XMLRPC_C_LIBVERSION}
0870937
+  SOVERSION  ${XMLRPC_C_SOVERSION})
0870937
+
0870937
+
0870937
+enable_testing()
0870937
diff --git a/src/cpp/CMakeLists.txt b/src/cpp/CMakeLists.txt
0870937
new file mode 100644
9f015c0
index 0000000..9ab2530
0870937
--- /dev/null
0870937
+++ b/src/cpp/CMakeLists.txt
0870937
@@ -0,0 +1,48 @@
0870937
+# -*- cmake -*-
0870937
+
0870937
+####### libxmlrpc++.so
0870937
+add_library(xmlrpc++ SHARED
0870937
+  base64.cpp env_wrap.cpp fault.cpp girerr.cpp girmem.cpp
0870937
+  outcome.cpp param_list.cpp value.cpp xml.cpp)
0870937
+target_link_libraries(xmlrpc++ xmlrpc)
0870937
+list(APPEND lib_TARGETS xmlrpc++)
0870937
+ensc_pkgconfig(xmlrpc++)
0870937
+
0870937
+####### libxmlrpc_cpp.so
0870937
+add_library(xmlrpc_cpp            SHARED XmlRpcCpp)
0870937
+target_link_libraries(xmlrpc_cpp xmlrpc xmlrpc_server xmlrpc_client)
0870937
+list(APPEND lib_TARGETS xmlrpc_cpp)
0870937
+ensc_pkgconfig(xmlrpc_cpp)
0870937
+
0870937
+####### libxmlrpc_server++.so
0870937
+add_library(xmlrpc_server++       SHARED registry.cpp)
0870937
+target_link_libraries(xmlrpc_server++ xmlrpc++ xmlrpc_server)
0870937
+list(APPEND lib_TARGETS xmlrpc_server++)
0870937
+ensc_pkgconfig(xmlrpc_server++)
0870937
+
0870937
+####### libxmlrpc_server_abyss++.so
0870937
+add_library(xmlrpc_server_abyss++ SHARED server_abyss.cpp)
0870937
+target_link_libraries(xmlrpc_server_abyss++ xmlrpc_server++ xmlrpc_server_abyss)
0870937
+list(APPEND lib_TARGETS xmlrpc_server_abyss++)
0870937
+ensc_pkgconfig(xmlrpc_server_abyss++)
0870937
+
0870937
+####### libxmlrpc_client++.so
0870937
+add_library(xmlrpc_client++       SHARED
0870937
+  client.cpp client_simple.cpp curl.cpp libwww.cpp wininet.cpp)
0870937
+set_target_properties(xmlrpc_client++
0870937
+  PROPERTIES
0870937
+  COMPILE_FLAGS "-I${wininet_srcdir} -I${libwww_srcdir} -I${curl_srcdir}")
0870937
+target_link_libraries(xmlrpc_client++ xmlrpc++ xmlrpc_client)
0870937
+list(APPEND lib_TARGETS xmlrpc_client++)
0870937
+ensc_pkgconfig(xmlrpc_client++)
0870937
+
0870937
+
0870937
+install(TARGETS ${lib_TARGETS}
9f015c0
+  RUNTIME DESTINATION ${_bin}
9f015c0
+  LIBRARY DESTINATION ${_lib})
0870937
+
0870937
+set_target_properties(${lib_TARGETS}
0870937
+  PROPERTIES
0870937
+  LINK_FLAGS ${XMLRPC_LINKER_FLAGS}
0870937
+  VERSION    ${XMLRPC_C_LIBVERSION}
0870937
+  SOVERSION  ${XMLRPC_C_SOVERSION})
0870937
diff --git a/src/cpp/xmlrpc++.pc.cmake b/src/cpp/xmlrpc++.pc.cmake
0870937
new file mode 100644
43e43d7
index 0000000..0bf5dc3
0870937
--- /dev/null
0870937
+++ b/src/cpp/xmlrpc++.pc.cmake
43e43d7
@@ -0,0 +1,12 @@
43e43d7
+bindir=@bindir@
0870937
+prefix=@prefix@
0870937
+libdir=@libdir@
0870937
+includedir=@includedir@
0870937
+
0870937
+Name:        xmlrpc++
0870937
+Description: XMLRPC C++ Base library
0870937
+Version:     @XMLRPC_C_VERSION@
0870937
+
c99f0ac
+Requires.private:	xmlrpc
c99f0ac
+Libs:   		-L${libdir} -lxmlrpc++
43e43d7
+Cflags:			-I${includedir}
0870937
diff --git a/src/cpp/xmlrpc_client++.pc.cmake b/src/cpp/xmlrpc_client++.pc.cmake
0870937
new file mode 100644
43e43d7
index 0000000..0357491
0870937
--- /dev/null
0870937
+++ b/src/cpp/xmlrpc_client++.pc.cmake
43e43d7
@@ -0,0 +1,12 @@
43e43d7
+bindir=@bindir@
0870937
+prefix=@prefix@
0870937
+libdir=@libdir@
0870937
+includedir=@includedir@
0870937
+
0870937
+Name:        xmlrpc_client++
0870937
+Description: XMLRPC C++ Client library
0870937
+Version:     @XMLRPC_C_VERSION@
0870937
+
c99f0ac
+Requires.private:	xmlrpc++ xmlrpc_client
c99f0ac
+Libs:   		-L${libdir} -lxmlrpc_client++
43e43d7
+Cflags:			-I${includedir}
0870937
diff --git a/src/cpp/xmlrpc_cpp.pc.cmake b/src/cpp/xmlrpc_cpp.pc.cmake
0870937
new file mode 100644
43e43d7
index 0000000..7e21383
0870937
--- /dev/null
0870937
+++ b/src/cpp/xmlrpc_cpp.pc.cmake
43e43d7
@@ -0,0 +1,12 @@
43e43d7
+bindir=@bindir@
0870937
+prefix=@prefix@
0870937
+libdir=@libdir@
0870937
+includedir=@includedir@
0870937
+
0870937
+Name:        xmlrpc_cpp
0870937
+Description: XMLRPC CPP library
0870937
+Version:     @XMLRPC_C_VERSION@
0870937
+
c99f0ac
+Requires.private:	xmlrpc xmlrpc_server xmlrpc_client
c99f0ac
+Libs:   		-L${libdir} -lxmlrpc_cpp
43e43d7
+Cflags:			-I${includedir}
0870937
diff --git a/src/cpp/xmlrpc_server++.pc.cmake b/src/cpp/xmlrpc_server++.pc.cmake
0870937
new file mode 100644
43e43d7
index 0000000..7ddcca8
0870937
--- /dev/null
0870937
+++ b/src/cpp/xmlrpc_server++.pc.cmake
43e43d7
@@ -0,0 +1,12 @@
43e43d7
+bindir=@bindir@
0870937
+prefix=@prefix@
0870937
+libdir=@libdir@
0870937
+includedir=@includedir@
0870937
+
0870937
+Name:        xmlrpc_server++
0870937
+Description: XMLRPC C++ Server library
0870937
+Version:     @XMLRPC_C_VERSION@
0870937
+
c99f0ac
+Requires.private:	xmlrpc++ xmlrpc_server
c99f0ac
+Libs:   		-L${libdir} -lxmlrpc_server++
43e43d7
+Cflags:			-I${includedir}
0870937
diff --git a/src/cpp/xmlrpc_server_abyss++.pc.cmake b/src/cpp/xmlrpc_server_abyss++.pc.cmake
0870937
new file mode 100644
43e43d7
index 0000000..f0e4cd0
0870937
--- /dev/null
0870937
+++ b/src/cpp/xmlrpc_server_abyss++.pc.cmake
43e43d7
@@ -0,0 +1,12 @@
43e43d7
+bindir=@bindir@
0870937
+prefix=@prefix@
0870937
+libdir=@libdir@
0870937
+includedir=@includedir@
0870937
+
0870937
+Name:        xmlrpc_server_abyss++
0870937
+Description: XMLRPC C++ Abyss-Server library
0870937
+Version:     @XMLRPC_C_VERSION@
0870937
+
c99f0ac
+Requires.private:	xmlrpc_server_abyss xmlrpc_server++
c99f0ac
+Libs:   		-L${libdir} -lxmlrpc_server_abyss++
43e43d7
+Cflags:			-I${includedir}
9f015c0
diff --git a/src/test/CMakeLists.txt b/src/test/CMakeLists.txt
9f015c0
new file mode 100644
43e43d7
index 0000000..1ad605b
9f015c0
--- /dev/null
9f015c0
+++ b/src/test/CMakeLists.txt
9f015c0
@@ -0,0 +1,27 @@
9f015c0
+# -*- cmake -*-
9f015c0
+
9f015c0
+set(test_SOURCES
43e43d7
+  test.c cgi.c method_registry.c parse_xml.c serialize.c server_abyss.c
9f015c0
+  value.c xml_data.c)
9f015c0
+
9f015c0
+if(MUST_BUILD_CLIENT)
9f015c0
+  list(APPEND test_SOURCES client.c)
9f015c0
+  list(APPEND test_LIBS xmlrpc_client)
9f015c0
+else(MUST_BUILD_CLIENT)
9f015c0
+  list(APPEND test_SOURCES client_dummy.c)
9f015c0
+endif(MUST_BUILD_CLIENT)
9f015c0
+
9f015c0
+
9f015c0
+add_executable(src-test ${test_SOURCES})
9f015c0
+target_link_libraries(src-test xmlrpc_server_abyss util ${test_LIBS})
9f015c0
+
9f015c0
+add_executable(cgitest1 cgitest1.c)
9f015c0
+target_link_libraries(cgitest1 xmlrpc_server_cgi)
9f015c0
+
9f015c0
+add_custom_command(TARGET src-test
9f015c0
+  POST_BUILD
9f015c0
+  COMMAND rm -f ${CMAKE_CURRENT_BINARY_DIR}/data
9f015c0
+  COMMAND ln -s ${CMAKE_CURRENT_SOURCE_DIR}/data ${CMAKE_CURRENT_BINARY_DIR})
9f015c0
+
9f015c0
+enable_testing()
9f015c0
+add_test(runtests src-test)
0870937
diff --git a/src/xmlrpc.pc.cmake b/src/xmlrpc.pc.cmake
0870937
new file mode 100644
43e43d7
index 0000000..4c92f93
0870937
--- /dev/null
0870937
+++ b/src/xmlrpc.pc.cmake
43e43d7
@@ -0,0 +1,12 @@
43e43d7
+bindir=@bindir@
0870937
+prefix=@prefix@
0870937
+libdir=@libdir@
0870937
+includedir=@includedir@
0870937
+
0870937
+Name:        xmlrpc
0870937
+Description: XMLRPC base library
0870937
+Version:     @XMLRPC_C_VERSION@
0870937
+
c99f0ac
+Requires.private:	@xmlrpc_pkgconfig_req@ xmlrpc_util
c99f0ac
+Libs:   		-L${libdir} -lxmlrpc @xmlrpc_pkgconfig_libs@
43e43d7
+Cflags:			-I${includedir}
0870937
diff --git a/src/xmlrpc_client.pc.cmake b/src/xmlrpc_client.pc.cmake
0870937
new file mode 100644
43e43d7
index 0000000..8e74c44
0870937
--- /dev/null
0870937
+++ b/src/xmlrpc_client.pc.cmake
43e43d7
@@ -0,0 +1,12 @@
43e43d7
+bindir=@bindir@
0870937
+prefix=@prefix@
0870937
+libdir=@libdir@
0870937
+includedir=@includedir@
0870937
+
0870937
+Name:        xmlrpc_client
0870937
+Description: XMLRPC client library
0870937
+Version:     @XMLRPC_C_VERSION@
0870937
+
c99f0ac
+Requires.private:	xmlrpc @xmlrpc_client_pkgconfig_req@
c99f0ac
+Libs:   		-L${libdir} -lxmlrpc_client @client_libwww_LIBS@ @client_wininet_LIBS@
43e43d7
+Cflags:			-I${includedir}
0870937
diff --git a/src/xmlrpc_server.pc.cmake b/src/xmlrpc_server.pc.cmake
0870937
new file mode 100644
43e43d7
index 0000000..cb7d4cd
0870937
--- /dev/null
0870937
+++ b/src/xmlrpc_server.pc.cmake
43e43d7
@@ -0,0 +1,12 @@
43e43d7
+bindir=@bindir@
0870937
+prefix=@prefix@
0870937
+libdir=@libdir@
0870937
+includedir=@includedir@
0870937
+
0870937
+Name:        xmlrpc_server
0870937
+Description: XMLRPC Server library
0870937
+Version:     @XMLRPC_C_VERSION@
0870937
+
c99f0ac
+Requires.private:	xmlrpc
c99f0ac
+Libs:   		-L${libdir} -lxmlrpc_server
43e43d7
+Cflags:			-I${includedir}
0870937
diff --git a/src/xmlrpc_server_abyss.pc.cmake b/src/xmlrpc_server_abyss.pc.cmake
0870937
new file mode 100644
43e43d7
index 0000000..0357ff9
0870937
--- /dev/null
0870937
+++ b/src/xmlrpc_server_abyss.pc.cmake
43e43d7
@@ -0,0 +1,12 @@
43e43d7
+bindir=@bindir@
0870937
+prefix=@prefix@
0870937
+libdir=@libdir@
0870937
+includedir=@includedir@
0870937
+
0870937
+Name:        xmlrpc_server_abyss
0870937
+Description: XMLRPC Server Abyss library
0870937
+Version:     @XMLRPC_C_VERSION@
0870937
+
c99f0ac
+Requires.private:	xmlrpc_server xmlrpc_abyss
c99f0ac
+Libs:   		-L${libdir} -lxmlrpc_server_abyss
43e43d7
+Cflags:			-I${includedir}
0870937
diff --git a/src/xmlrpc_server_cgi.pc.cmake b/src/xmlrpc_server_cgi.pc.cmake
0870937
new file mode 100644
43e43d7
index 0000000..8786b75
0870937
--- /dev/null
0870937
+++ b/src/xmlrpc_server_cgi.pc.cmake
43e43d7
@@ -0,0 +1,12 @@
43e43d7
+bindir=@bindir@
0870937
+prefix=@prefix@
0870937
+libdir=@libdir@
0870937
+includedir=@includedir@
0870937
+
0870937
+Name:        xmlrpc_server_cgi
0870937
+Description: XMLRPC CGI-Server library
0870937
+Version:     @XMLRPC_C_VERSION@
0870937
+
c99f0ac
+Requires.private:	xmlrpc_server
c99f0ac
+Libs:   		-L${libdir} -lxmlrpc_server_cgi
43e43d7
+Cflags:			-I${includedir}
0870937
diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
0870937
new file mode 100644
0870937
index 0000000..14010f4
0870937
--- /dev/null
0870937
+++ b/tools/CMakeLists.txt
0870937
@@ -0,0 +1,9 @@
0870937
+# -*- cmake -*-
0870937
+
0870937
+add_subdirectory(binmode-rpc-kit)
0870937
+add_subdirectory(turbocharger)
0870937
+
0870937
+add_subdirectory(xmlrpc)
0870937
+add_subdirectory(xmlrpc_transport)
0870937
+
0870937
+add_subdirectory(xml-rpc-api2cpp )
0870937
diff --git a/tools/binmode-rpc-kit/CMakeLists.txt b/tools/binmode-rpc-kit/CMakeLists.txt
0870937
new file mode 100644
0870937
index 0000000..a707c75
0870937
--- /dev/null
0870937
+++ b/tools/binmode-rpc-kit/CMakeLists.txt
0870937
@@ -0,0 +1,2 @@
0870937
+# -*- cmake -*-
0870937
+
0870937
diff --git a/tools/turbocharger/CMakeLists.txt b/tools/turbocharger/CMakeLists.txt
0870937
new file mode 100644
0870937
index 0000000..342423d
0870937
--- /dev/null
0870937
+++ b/tools/turbocharger/CMakeLists.txt
0870937
@@ -0,0 +1 @@
0870937
+# -*- cmake -*-
0870937
diff --git a/tools/xml-rpc-api2cpp/CMakeLists.txt b/tools/xml-rpc-api2cpp/CMakeLists.txt
0870937
new file mode 100644
9f015c0
index 0000000..c759dec
0870937
--- /dev/null
0870937
+++ b/tools/xml-rpc-api2cpp/CMakeLists.txt
9f015c0
@@ -0,0 +1,15 @@
0870937
+# -*- cmake -*-
0870937
+
0870937
+add_executable(xml-rpc-api2cpp
0870937
+  xml-rpc-api2cpp.cpp
0870937
+  DataType.cpp
0870937
+  XmlRpcFunction.cpp
0870937
+  XmlRpcClass.cpp
0870937
+  SystemProxy.cpp)
0870937
+target_link_libraries(xml-rpc-api2cpp xmlrpc_cpp xmlrpc_client xmlrpc_server)
0870937
+
0870937
+install(TARGETS xml-rpc-api2cpp
0870937
+  RUNTIME DESTINATION bin)
9f015c0
+
9f015c0
+install(FILES xml-rpc-api2cpp.1
9f015c0
+  DESTINATION ${mandir}/man1)
9f015c0
diff --git a/tools/xmlrpc/CMakeLists.txt b/tools/xmlrpc/CMakeLists.txt
9f015c0
new file mode 100644
9f015c0
index 0000000..976df30
9f015c0
--- /dev/null
9f015c0
+++ b/tools/xmlrpc/CMakeLists.txt
9f015c0
@@ -0,0 +1,15 @@
9f015c0
+# -*- cmake -*-
9f015c0
+
9f015c0
+add_executable(tool-xmlrpc
9f015c0
+  xmlrpc.c
9f015c0
+  dumpvalue.c
9f015c0
+  dumpvalue.h)
9f015c0
+target_link_libraries(tool-xmlrpc xmlrpc_client util)
9f015c0
+
9f015c0
+set_target_properties(tool-xmlrpc
9f015c0
+  PROPERTIES OUTPUT_NAME xmlrpc)
9f015c0
+
9f015c0
+install(TARGETS tool-xmlrpc
9f015c0
+  DESTINATION ${_bin})
9f015c0
+
9f015c0
+ensc_set_link_exe_flags(tool-xmlrpc)
9f015c0
diff --git a/tools/xmlrpc/config.h b/tools/xmlrpc/config.h
9f015c0
new file mode 100644
9f015c0
index 0000000..7409aed
9f015c0
--- /dev/null
9f015c0
+++ b/tools/xmlrpc/config.h
9f015c0
@@ -0,0 +1 @@
9f015c0
+#include <xmlrpc_config.h>
9f015c0
diff --git a/tools/xmlrpc_transport/CMakeLists.txt b/tools/xmlrpc_transport/CMakeLists.txt
9f015c0
new file mode 100644
9f015c0
index 0000000..b73d7c0
9f015c0
--- /dev/null
9f015c0
+++ b/tools/xmlrpc_transport/CMakeLists.txt
9f015c0
@@ -0,0 +1,9 @@
9f015c0
+# -*- cmake -*-
9f015c0
+
9f015c0
+add_executable(xmlrpc_transport xmlrpc_transport.c)
9f015c0
+target_link_libraries(xmlrpc_transport xmlrpc_client util)
9f015c0
+
9f015c0
+install(TARGETS xmlrpc_transport
9f015c0
+  DESTINATION ${_bin})
9f015c0
+
9f015c0
+ensc_set_link_exe_flags(xmlrpc_transport)
9f015c0
diff --git a/tools/xmlrpc_transport/config.h b/tools/xmlrpc_transport/config.h
9f015c0
new file mode 100644
9f015c0
index 0000000..7409aed
9f015c0
--- /dev/null
9f015c0
+++ b/tools/xmlrpc_transport/config.h
9f015c0
@@ -0,0 +1 @@
9f015c0
+#include <xmlrpc_config.h>
0870937
diff --git a/transport_config.h.cmake b/transport_config.h.cmake
0870937
new file mode 100644
0870937
index 0000000..1ec3cf6
0870937
--- /dev/null
0870937
+++ b/transport_config.h.cmake
0870937
@@ -0,0 +1,16 @@
0870937
+/* -*- c -*- */
0870937
+#define MUST_BUILD_WININET_CLIENT	@_MUST_BUILD_WININET_CLIENT@
0870937
+#define MUST_BUILD_LIBWWW_CLIENT	@_MUST_BUILD_LIBWWW_CLIENT@
0870937
+#define MUST_BUILD_CURL_CLIENT		@_MUST_BUILD_CURL_CLIENT@
0870937
+
0870937
+static char const * const XMLRPC_DEFAULT_TRANSPORT =
0870937
+#if MUST_BUILD_LIBWWW_CLIENT
0870937
+  "libwww"
0870937
+#elif MUST_BUILD_CURL_CLIENT
0870937
+  "curl"
0870937
+#elif MUST_BUILD_WININET_CLIENT
0870937
+  "wininet"
0870937
+#else
0870937
+#  error "no client XML transport configured"
0870937
+#endif
0870937
+  ;
0870937
diff --git a/version.h.cmake b/version.h.cmake
0870937
new file mode 100644
0870937
index 0000000..35beafc
0870937
--- /dev/null
0870937
+++ b/version.h.cmake
0870937
@@ -0,0 +1,2 @@
0870937
+/* This file was generated by a make rule */
0870937
+#define XMLRPC_C_VERSION "@XMLRPC_C_VERSION@"
9f015c0
diff --git a/xmlrpc-c-config b/xmlrpc-c-config
9f015c0
new file mode 100755
43e43d7
index 0000000..8f4f51b
9f015c0
--- /dev/null
9f015c0
+++ b/xmlrpc-c-config
43e43d7
@@ -0,0 +1,67 @@
9f015c0
+#! /bin/sh
9f015c0
+
9f015c0
+comp=
9f015c0
+
9f015c0
+need_cxx=
9f015c0
+need_client=
9f015c0
+need_server=
9f015c0
+need_abyss=
9f015c0
+
9f015c0
+while test $# -gt 0; do
9f015c0
+    case $1 in
9f015c0
+      (c++)          		comp="$comp xmlrpc_cpp";;
9f015c0
+      (server-util)  		comp="$comp xmlrpc_server_util";;
9f015c0
+      (cgi-server)   		comp="$comp xmlrpc_server_cgi";;
9f015c0
+      (c++2)         		need_cxx=1;;
9f015c0
+      (abyss-server) 		need_abyss=1;;
9f015c0
+      (client|libwww-client)	need_client=1;;
9f015c0
+      (--) shift; break;;
9f015c0
+      (--*) break;;
9f015c0
+      (*)
9f015c0
+      echo "Unrecognized token '$1'"
9f015c0
+      exit 1
9f015c0
+      ;;
9f015c0
+    esac
9f015c0
+    shift
9f015c0
+done
9f015c0
+
9f015c0
+if test -z "$need_cxx"; then
9f015c0
+    test -z "$need_client" || comp="$comp xmlrpc_client"
9f015c0
+    test -z "$need_abyss"  || comp="$comp xmlrpc_abyss"
9f015c0
+    test -z "$need_server" || comp="$comp xmlrpc_server"
9f015c0
+else
9f015c0
+    test -z "$need_client" || comp="$comp xmlrpc_client++"
9f015c0
+    test -z "$need_abyss"  || comp="$comp xmlrpc_abyss++"
9f015c0
+    test -z "$need_server" || comp="$comp xmlrpc_server++"
9f015c0
+fi
9f015c0
+
43e43d7
+dummy_comp=xmlrpc_client
43e43d7
+
43e43d7
+case $1 in
43e43d7
+  (--features|--modules)
43e43d7
+  echo "c++ abyss-server curl-client"
43e43d7
+  exit 0
43e43d7
+  ;;
43e43d7
+  (--version)
43e43d7
+  set -- --modversion
43e43d7
+  ;;
43e43d7
+  (--exec-prefix)
43e43d7
+  set -- --variable=prefix
43e43d7
+  ;;
43e43d7
+  (--*dir|--prefix)
43e43d7
+  set -- --variable=${1##--}
43e43d7
+  ;;
43e43d7
+  (--ldflags)
43e43d7
+  set -- --libs-only-L
43e43d7
+  ;;
43e43d7
+  (--ldadd)
43e43d7
+  set -- --libs-only-l
43e43d7
+  ;;
43e43d7
+  (*)
43e43d7
+  dummy_comp=
43e43d7
+  ;;
43e43d7
+esac
43e43d7
+
43e43d7
+test x"$comp" != x || comp=$dummy_comp
43e43d7
+
9f015c0
+exec pkg-config "$@" $comp
0870937
diff --git a/xmlrpc_config.h.cmake b/xmlrpc_config.h.cmake
0870937
new file mode 100644
9f015c0
index 0000000..98b37ef
0870937
--- /dev/null
0870937
+++ b/xmlrpc_config.h.cmake
9f015c0
@@ -0,0 +1,21 @@
9f015c0
+/* -*- c -*- */
9f015c0
+
0870937
+#ifndef H_XMLRPC_C_CONFIG_H
0870937
+
0870937
+#cmakedefine			HAVE_WCHAR_H
0870937
+#cmakedefine			HAVE_SETENV
0870937
+#define HAVE_SYS_IOCTL_H	0@HAVE_SYS_IOCTL_H@
0870937
+
9f015c0
+#define VA_LIST_IS_ARRAY	@VA_LIST_IS_ARRAY@
0870937
+#define XMLRPC_HAVE_WCHAR	@XMLRPC_HAVE_WCHAR@
0870937
+#define ATTR_UNUSED		@ATTR_UNUSED@
0870937
+#define DIRECTORY_SEPARATOR	"@DIRECTORY_SEPARATOR@"
0870937
+
0870937
+#ifdef HAVE_WCHAR_H
0870937
+#  define HAVE_UNICODE_WCHAR	1
0870937
+#else
0870937
+#  define HAVE_UNICODE_WCHAR	0
0870937
+#endif
0870937
+
0870937
+
0870937
+#endif
0870937
-- 
43e43d7
1.5.0.5
0870937