]> git.pld-linux.org Git - packages/xmlrpc-c.git/blob - xmlrpc-c-cmake.patch
6d544fbeab1657a58fbd1cf171e9489f8d165670
[packages/xmlrpc-c.git] / xmlrpc-c-cmake.patch
1 From 26a4d5168bb69474c3cc304f90592d37bf0be8fe Mon Sep 17 00:00:00 2001
2 From: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
3 Date: Sat, 5 Apr 2008 10:55:02 +0200
4 Subject: [PATCH 1/8] make -> cmake transition
5
6 cmake: updated
7 ---
8  CMakeLists.txt                              |  290 +++++++++++++++++++++++++++
9  cmake/try-attr.cc                           |    3 +
10  cmake/va-list-is-array.c                    |    9 +
11  examples/CMakeLists.txt                     |   68 +++++++
12  examples/config.h                           |    1 +
13  examples/cpp/CMakeLists.txt                 |   34 ++++
14  include/CMakeLists.txt                      |    3 +
15  include/xmlrpc-c/CMakeLists.txt             |   74 +++++++
16  include/xmlrpc-c/config.h.cmake             |   34 ++++
17  lib/CMakeLists.txt                          |   12 ++
18  lib/abyss/CMakeLists.txt                    |    3 +
19  lib/abyss/src/CMakeLists.txt                |   70 +++++++
20  lib/abyss/src/xmlrpc_abyss.pc.cmake         |   12 ++
21  lib/curl_transport/CMakeLists.txt           |   20 ++
22  lib/expat/CMakeLists.txt                    |    9 +
23  lib/expat/gennmtab/CMakeLists.txt           |    3 +
24  lib/expat/xmlparse/CMakeLists.txt           |    7 +
25  lib/expat/xmlparse/xmlrpc_xmlparse.pc.cmake |   12 ++
26  lib/expat/xmltok/CMakeLists.txt             |   23 +++
27  lib/expat/xmltok/xmlrpc_xmltok.pc.cmake     |    9 +
28  lib/libutil/CMakeLists.txt                  |   26 +++
29  lib/libutil/xmlrpc_util.pc.cmake            |   10 +
30  lib/libwww_transport/CMakeLists.txt         |    7 +
31  lib/util/CMakeLists.txt                     |   17 ++
32  lib/wininet_transport/CMakeLists.txt        |    7 +
33  src/CMakeLists.txt                          |  121 +++++++++++
34  src/cpp/CMakeLists.txt                      |   70 +++++++
35  src/cpp/test/CMakeLists.txt                 |   18 ++
36  src/cpp/xmlrpc++.pc.cmake                   |   12 ++
37  src/cpp/xmlrpc_client++.pc.cmake            |   12 ++
38  src/cpp/xmlrpc_cpp.pc.cmake                 |   12 ++
39  src/cpp/xmlrpc_packetsocket.pc.cmake        |   12 ++
40  src/cpp/xmlrpc_server++.pc.cmake            |   12 ++
41  src/cpp/xmlrpc_server_abyss++.pc.cmake      |   12 ++
42  src/cpp/xmlrpc_server_cgi++.pc.cmake        |   12 ++
43  src/cpp/xmlrpc_server_pstream++.pc.cmake    |   12 ++
44  src/xmlrpc.pc.cmake                         |   12 ++
45  src/xmlrpc_client.pc.cmake                  |   12 ++
46  src/xmlrpc_server.pc.cmake                  |   12 ++
47  src/xmlrpc_server_abyss.pc.cmake            |   12 ++
48  src/xmlrpc_server_cgi.pc.cmake              |   12 ++
49  test/CMakeLists.txt                         |   41 ++++
50  test/cpp/CMakeLists.txt                     |   34 ++++
51  tools/CMakeLists.txt                        |   22 ++
52  tools/binmode-rpc-kit/CMakeLists.txt        |    1 +
53  tools/lib/CMakeLists.txt                    |    1 +
54  tools/turbocharger/CMakeLists.txt           |    1 +
55  tools/xml-rpc-api2cpp/CMakeLists.txt        |   15 ++
56  tools/xml-rpc-api2txt/CMakeLists.txt        |    7 +
57  tools/xml/CMakeLists.txt                    |   16 ++
58  tools/xmlrpc/CMakeLists.txt                 |   17 ++
59  tools/xmlrpc/config.h                       |    1 +
60  tools/xmlrpc_cpp_proxy/CMakeLists.txt       |   17 ++
61  tools/xmlrpc_pstream/CMakeLists.txt         |   16 ++
62  tools/xmlrpc_transport/CMakeLists.txt       |    9 +
63  tools/xmlrpc_transport/config.h             |    1 +
64  transport_config.h.cmake                    |   16 ++
65  version.h.cmake                             |    5 +
66  xmlrpc-c-config                             |  105 ++++++++++
67  xmlrpc_config.h.cmake                       |  183 +++++++++++++++++
68  60 files changed, 1636 insertions(+)
69  create mode 100644 CMakeLists.txt
70  create mode 100644 cmake/try-attr.cc
71  create mode 100644 cmake/va-list-is-array.c
72  create mode 100644 examples/CMakeLists.txt
73  create mode 100644 examples/config.h
74  create mode 100644 examples/cpp/CMakeLists.txt
75  create mode 100644 include/CMakeLists.txt
76  create mode 100644 include/xmlrpc-c/CMakeLists.txt
77  create mode 100644 include/xmlrpc-c/config.h.cmake
78  create mode 100644 lib/CMakeLists.txt
79  create mode 100644 lib/abyss/CMakeLists.txt
80  create mode 100644 lib/abyss/src/CMakeLists.txt
81  create mode 100644 lib/abyss/src/xmlrpc_abyss.pc.cmake
82  create mode 100644 lib/curl_transport/CMakeLists.txt
83  create mode 100644 lib/expat/CMakeLists.txt
84  create mode 100644 lib/expat/gennmtab/CMakeLists.txt
85  create mode 100644 lib/expat/xmlparse/CMakeLists.txt
86  create mode 100644 lib/expat/xmlparse/xmlrpc_xmlparse.pc.cmake
87  create mode 100644 lib/expat/xmltok/CMakeLists.txt
88  create mode 100644 lib/expat/xmltok/xmlrpc_xmltok.pc.cmake
89  create mode 100644 lib/libutil/CMakeLists.txt
90  create mode 100644 lib/libutil/xmlrpc_util.pc.cmake
91  create mode 100644 lib/libwww_transport/CMakeLists.txt
92  create mode 100644 lib/util/CMakeLists.txt
93  create mode 100644 lib/wininet_transport/CMakeLists.txt
94  create mode 100644 src/CMakeLists.txt
95  create mode 100644 src/cpp/CMakeLists.txt
96  create mode 100644 src/cpp/test/CMakeLists.txt
97  create mode 100644 src/cpp/xmlrpc++.pc.cmake
98  create mode 100644 src/cpp/xmlrpc_client++.pc.cmake
99  create mode 100644 src/cpp/xmlrpc_cpp.pc.cmake
100  create mode 100644 src/cpp/xmlrpc_packetsocket.pc.cmake
101  create mode 100644 src/cpp/xmlrpc_server++.pc.cmake
102  create mode 100644 src/cpp/xmlrpc_server_abyss++.pc.cmake
103  create mode 100644 src/cpp/xmlrpc_server_cgi++.pc.cmake
104  create mode 100644 src/cpp/xmlrpc_server_pstream++.pc.cmake
105  create mode 100644 src/xmlrpc.pc.cmake
106  create mode 100644 src/xmlrpc_client.pc.cmake
107  create mode 100644 src/xmlrpc_server.pc.cmake
108  create mode 100644 src/xmlrpc_server_abyss.pc.cmake
109  create mode 100644 src/xmlrpc_server_cgi.pc.cmake
110  create mode 100644 test/CMakeLists.txt
111  create mode 100644 test/cpp/CMakeLists.txt
112  create mode 100644 tools/CMakeLists.txt
113  create mode 100644 tools/binmode-rpc-kit/CMakeLists.txt
114  create mode 100644 tools/lib/CMakeLists.txt
115  create mode 100644 tools/turbocharger/CMakeLists.txt
116  create mode 100644 tools/xml-rpc-api2cpp/CMakeLists.txt
117  create mode 100644 tools/xml-rpc-api2txt/CMakeLists.txt
118  create mode 100644 tools/xml/CMakeLists.txt
119  create mode 100644 tools/xmlrpc/CMakeLists.txt
120  create mode 100644 tools/xmlrpc/config.h
121  create mode 100644 tools/xmlrpc_cpp_proxy/CMakeLists.txt
122  create mode 100644 tools/xmlrpc_pstream/CMakeLists.txt
123  create mode 100644 tools/xmlrpc_transport/CMakeLists.txt
124  create mode 100644 tools/xmlrpc_transport/config.h
125  create mode 100644 transport_config.h.cmake
126  create mode 100644 version.h.cmake
127  create mode 100755 xmlrpc-c-config
128  create mode 100644 xmlrpc_config.h.cmake
129
130 diff --git a/CMakeLists.txt b/CMakeLists.txt
131 new file mode 100644
132 index 0000000..2876dea
133 --- /dev/null
134 +++ b/CMakeLists.txt
135 @@ -0,0 +1,290 @@
136 +## -*- cmake -*-
137 +project(xmlrpc-c)
138 +include(FindPkgConfig)
139 +include(CheckIncludeFile)
140 +include(CheckFunctionExists)
141 +
142 +cmake_minimum_required(VERSION 2.4)
143 +
144 +if(COMMAND cmake_policy)
145 +  cmake_policy(SET CMP0003 NEW)
146 +endif()
147 +
148 +
149 +set(XMLRPC_C_VERSION_MAJOR "1"  CACHE STRING "Version (major) of xmlrpc-c")
150 +set(XMLRPC_C_VERSION_MINOR "32" CACHE STRING "Version (minor) of xmlrpc-c")
151 +set(XMLRPC_C_VERSION_POINT "5"  CACHE STRING "Version (point) of xmlrpc-c")
152 +
153 +set(XMLRPC_C_VERSION
154 +  "${XMLRPC_C_VERSION_MAJOR}.${XMLRPC_C_VERSION_MINOR}.${XMLRPC_C_VERSION_POINT}"
155 +  CACHE STRING "Version of xmlrpc-c")
156 +
157 +set(XMLRPC_C_LIBVERSION "3.${XMLRPC_C_VERSION_MINOR}")
158 +set(XMLRPC_C_SOVERSION  "3")
159 +
160 +set(XMLRPC_CXX_LIBVERSION "8.${XMLRPC_C_VERSION_MINOR}")
161 +set(XMLRPC_CXX_SOVERSION  "8")
162 +
163 +string(REGEX REPLACE "^0+" "" XMLRPC_C_VERSION_MAJOR_NUM "${XMLRPC_C_VERSION_MAJOR}")
164 +string(REGEX REPLACE "^0+" "" XMLRPC_C_VERSION_MINOR_NUM "${XMLRPC_C_VERSION_MINOR}")
165 +string(REGEX REPLACE "^0+(.)" "\\1" XMLRPC_C_VERSION_POINT_NUM "${XMLRPC_C_VERSION_POINT}")
166 +
167 +
168 +macro(ensc_set_bool NAME VALUE DESC)
169 +  set(${NAME} ${VALUE} CACHE BOOL ${DESC})
170 +  if(${NAME})
171 +    set(_${NAME} 1)
172 +  else(${NAME})
173 +    set(_${NAME} 0)
174 +  endif(${NAME})
175 +endmacro(ensc_set_bool)
176 +
177 +macro(ensc_pkgconfig COMP)
178 +  configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${COMP}.pc.cmake
179 +    ${CMAKE_CURRENT_BINARY_DIR}/${COMP}.pc
180 +    @ONLY)
181 +  install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${COMP}.pc
182 +    DESTINATION ${pkgconfdir})
183 +endmacro(ensc_pkgconfig)
184 +
185 +macro(ensc_pkgconfig_lib TARGET LIBS)
186 +  get_target_property(libtype ${TARGET} TYPE)
187 +  if("${libtype}" STREQUAL "STATIC_LIBRARY")
188 +    list(APPEND ${TARGET}_pkgconfig_libs "${LIBS}")
189 +  endif("${libtype}" STREQUAL "STATIC_LIBRARY")
190 +endmacro(ensc_pkgconfig_lib)
191 +
192 +macro(ensc_set_link_exe_flags)
193 +  ## HACK: libwww has broken inter-lib dependencies and '-Wl,--as-needed' fails with it
194 +  if(NOT MUST_BUILD_LIBWWW_CLIENT)
195 +    set_target_properties(${ARGV}
196 +      PROPERTIES
197 +      LINK_FLAGS ${XMLRPC_LINKER_FLAGS})
198 +  endif(NOT MUST_BUILD_LIBWWW_CLIENT)
199 +endmacro(ensc_set_link_exe_flags)
200 +
201 +###########
202 +if(WIN32)
203 +  find_program(WININET_CONFIG_EXECUTABLE wininet-config)
204 +
205 +  if(DEFINED MUST_BUILD_WININET_CLIENT)
206 +    set(tmp ${MUST_BUILD_WININET_CLIENT})
207 +  else(DEFINED MUST_BUILD_WININET_CLIENT)
208 +    if(WININET_CONFIG_EXECUTABLE)
209 +      set(tmp 1)
210 +    else(WININET_CONFIG_EXECUTABLE)
211 +      set(tmp 0)
212 +    endif(WININET_CONFIG_EXECUTABLE)
213 +  endif(DEFINED MUST_BUILD_WININET_CLIENT)
214 +
215 +  set(MSVCRT yes)
216 +else(WIN32)
217 +  set(tmp 0)
218 +endif(WIN32)
219 +
220 +if(tmp)
221 +  set(MUST_BUILD_CLIENT 1)
222 +  exec_program(${WININET_CONFIG_EXECUTABLE} ARGS --version OUTPUT_VARIABLE WININET_VERSION)
223 +  exec_program(${WININET_CONFIG_EXECUTABLE} ARGS --cflags  OUTPUT_VARIABLE WININET_CFLAGS)
224 +  exec_program(${WININET_CONFIG_EXECUTABLE} ARGS --libs    OUTPUT_VARIABLE WININET_LDADD)
225 +  message(STATUS "Using WinInet ${WININET_VERSION} transport")
226 +endif(tmp)
227 +
228 +ensc_set_bool(MUST_BUILD_WININET_CLIENT ${tmp} "Set iff WinInet client transport shall be built")
229 +set(wininet_srcdir ${xmlrpc-c_SOURCE_DIR}/lib/wininet_transport)
230 +
231 +###########
232 +if(DEFINED MUST_BUILD_CURL_CLIENT)
233 +  set(tmp REQUIRED)
234 +else(DEFINED MUST_BUILD_CURL_CLIENT)
235 +  set(tmp)
236 +endif(DEFINED MUST_BUILD_CURL_CLIENT)
237 +
238 +pkg_check_modules(CURL ${tmp} libcurl)
239 +
240 +ensc_set_bool(MUST_BUILD_CURL_CLIENT ${CURL_FOUND} "Set iff Curl client transport shall be built")
241 +set(curl_srcdir ${xmlrpc-c_SOURCE_DIR}/lib/curl_transport)
242 +
243 +if(MUST_BUILD_CURL_CLIENT)
244 +  set(MUST_BUILD_CLIENT 1)
245 +endif(MUST_BUILD_CURL_CLIENT)
246 +
247 +###########
248 +find_program(LIBWWW_CONFIG_EXECUTABLE libwww-config)
249 +if(DEFINED MUST_BUILD_LIBWWW_CLIENT)
250 +  set(tmp ${MUST_BUILD_LIBWWW_CLIENT})
251 +else(DEFINED MUST_BUILD_LIBWWW_CLIENT)
252 +  if(LIBWWW_CONFIG_EXECUTABLE)
253 +    set(tmp 1)
254 +  else(LIBWWW_CONFIG_EXECUTABLE)
255 +    set(tmp 0)
256 +  endif(LIBWWW_CONFIG_EXECUTABLE)
257 +endif(DEFINED MUST_BUILD_LIBWWW_CLIENT)
258 +
259 +if(tmp)
260 +  set(MUST_BUILD_CLIENT 1)
261 +  exec_program(${LIBWWW_CONFIG_EXECUTABLE} ARGS --version OUTPUT_VARIABLE LIBWWW_VERSION)
262 +  exec_program(${LIBWWW_CONFIG_EXECUTABLE} ARGS --libs    OUTPUT_VARIABLE LIBWWW_LIBS)
263 +  exec_program(${LIBWWW_CONFIG_EXECUTABLE} ARGS --cflags  OUTPUT_VARIABLE LIBWWW_CFLAGS)
264 +  message(STATUS "Using libwww ${LIBWWW_VERSION} transport")
265 +endif(tmp)
266 +ensc_set_bool(MUST_BUILD_LIBWWW_CLIENT ${tmp} "Set iff LibWWW client transport shall be built")
267 +set(libwww_srcdir ${xmlrpc-c_SOURCE_DIR}/lib/libwww_transport)
268 +
269 +############
270 +
271 +set(ENABLE_CGI_SERVER      1 CACHE BOOL "Set iff CGI server shall be enabled")
272 +set(ENABLE_CPLUSPLUS       1 CACHE BOOL "Set iff C++ part shall be enabled")
273 +set(ENABLE_ABYSS_SERVER    1 CACHE BOOL "Set iff Abyss server shall be enabled")
274 +set(ENABLE_LIBXML2_BACKEND 1 CACHE BOOL "Set iff libxml2 backend shall be used")
275 +set(ENABLE_ABYSS_SERVER    1 CACHE BOOL "Set iff abyss server shall be enabled")
276 +set(ENABLE_ABYSS_THREADS   1 CACHE BOOL "Use pthread")
277 +
278 +if(ENABLE_LIBXML2_BACKEND)
279 +  pkg_check_modules(LIBXML2 libxml-2.0)
280 +
281 +  if(LIBXML2_FOUND)
282 +    set(libxml_pkgconfig libxml-2.0)  # TODO: add more alternative modules
283 +  endif(LIBXML2_FOUND)
284 +endif(ENABLE_LIBXML2_BACKEND)
285 +
286 +###########
287 +
288 +pkg_check_modules(NCURSES ncurses)
289 +find_library(READLINE readline)
290 +
291 +if (MUST_BUILD_LIBWWW_CLIENT OR MUST_BUILD_WININET_CLIENT OR MUST_BUILD_CURL_CLIENT)
292 +  if (NCURSES_FOUND AND READLINE)
293 +    set(BUILD_XMLRPC_PSTREAM 1)
294 +    message(STATUS "Building xmlrpc_pstream tool")
295 +  endif()
296 +  message(STATUS "Tools will be built")
297 +  set(BUILD_TOOLS 1)
298 +else()
299 +  message(STATUS "Tools will not be built")
300 +  set(BUILD_TOOLS 0)
301 +endif()
302 +
303 +####  <wchar.h> tests
304 +check_include_file(wchar.h _have_wchar_h)
305 +if(_have_wchar_h)
306 +  set(HAVE_WCHAR_H 1)
307 +else(_have_wchar_h)
308 +  set(HAVE_WCHAR_H 1)
309 +endif(_have_wchar_h)
310 +set(XMLRPC_HAVE_WCHAR   ${HAVE_WCHAR_H})
311 +set(HAVE_WCHAR_H_DEFINE ${HAVE_WCHAR_H})
312 +
313 +
314 +#######
315 +set(LINKER_AS_NEEDED  1 CACHE BOOL "Use the --as-needed linker option")
316 +if(LINKER_AS_NEEDED)
317 +  set(XMLRPC_LINKER_FLAGS "-Wl,--as-needed")
318 +endif(LINKER_AS_NEEDED)
319 +
320 +
321 +try_compile(HAVE_ATTR_UNUSED
322 +  ${CMAKE_BINARY_DIR}/
323 +  ${xmlrpc-c_SOURCE_DIR}/cmake/try-attr.cc
324 +  CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=-DCMAKE_TEST_ATTR=__unused__)
325 +
326 +try_compile(VA_LIST_IS_NOT_ARRAY
327 +  ${CMAKE_BINARY_DIR}/
328 +  ${xmlrpc-c_SOURCE_DIR}/cmake/va-list-is-array.c)
329 +
330 +if(VA_LIST_IS_NOT_ARRAY)
331 +  set(VA_LIST_IS_ARRAY 0)
332 +  message(STATUS "va_list is not an array")
333 +else(VA_LIST_IS_NOT_ARRAY)
334 +  set(VA_LIST_IS_ARRAY 1)
335 +  message(STATUS "va_list is an array")
336 +endif(VA_LIST_IS_NOT_ARRAY)
337 +
338 +
339 +if(HAVE_ATTR_UNUSED)
340 +  set(ATTR_UNUSED "__attribute__((__unused__))")
341 +endif(HAVE_ATTR_UNUSED)
342 +
343 +if(WIN32)
344 +  set(DIRECTORY_SEPARATOR "\\")
345 +  set(THREAD_LIBS "")
346 +else(WIN32)
347 +  set(DIRECTORY_SEPARATOR "/")
348 +  set(THREAD_LIBS "pthread")
349 +  set(THREAD_LIBS_PKGCONFIG "-lpthread")
350 +endif(WIN32)
351 +
352 +check_include_file(sys/filio.h  HAVE_SYS_FILIO_H)
353 +check_include_file(sys/ioctl.h  HAVE_SYS_IOCTL_H)
354 +check_include_file(sys/select.h HAVE_SYS_SELECT_H)
355 +check_function_exists(setenv           HAVE_SETENV)
356 +check_function_exists(strcasecmp       HAVE_STRCASECMP)
357 +check_function_exists(_stricmp         HAVE__STRICMP)
358 +check_function_exists(stricmp          HAVE_STRICMP)
359 +check_function_exists(strtoll          HAVE_STRTOLL)
360 +check_function_exists(__strtoll                HAVE___STRTOLL)
361 +check_function_exists(strtoull         HAVE_STRTOULL)
362 +check_function_exists(__strtoull       HAVE___STRTOULL)
363 +check_function_exists(strtoq           HAVE_STRTOQ)
364 +check_function_exists(strtouq          HAVE_STRTOUQ)
365 +check_function_exists(gettimeofday     HAVE_GETTIMEOFDAY)
366 +check_function_exists(setgroups                HAVE_SETGROUPS)
367 +check_function_exists(asprintf         HAVE_ASPRINTF)
368 +check_function_exists(pselect          HAVE_PSELECT)
369 +check_function_exists(wcsncmp          HAVE_WCSNCMP)
370 +check_function_exists(localtime_r      HAVE_LOCALTIME_R)
371 +check_function_exists(gmtime_r         HAVE_GMTIME_R)
372 +
373 +
374 +configure_file(${xmlrpc-c_SOURCE_DIR}/xmlrpc_config.h.cmake
375 +               ${xmlrpc-c_BINARY_DIR}/xmlrpc_config.h
376 +              ESCAPE_QUOTES @ONLY)
377 +
378 +configure_file(${xmlrpc-c_SOURCE_DIR}/version.h.cmake
379 +               ${xmlrpc-c_BINARY_DIR}/version.h
380 +              ESCAPE_QUOTES @ONLY)
381 +
382 +configure_file(${xmlrpc-c_SOURCE_DIR}/transport_config.h.cmake
383 +               ${xmlrpc-c_BINARY_DIR}/transport_config.h
384 +              ESCAPE_QUOTES @ONLY)
385 +
386 +configure_file(${xmlrpc-c_SOURCE_DIR}/include/xmlrpc-c/config.h.cmake
387 +               ${xmlrpc-c_BINARY_DIR}/include/xmlrpc-c/config.h
388 +              ESCAPE_QUOTES @ONLY)
389 +
390 +
391 +include_directories(${xmlrpc-c_SOURCE_DIR}/include)
392 +include_directories(${xmlrpc-c_BINARY_DIR}/include)
393 +include_directories(${xmlrpc-c_SOURCE_DIR}/lib/util/include)
394 +include_directories(${xmlrpc-c_BINARY_DIR})
395 +
396 +add_custom_target(dist
397 +  rm -rf _dist && mkdir -p _dist/xmlrpc-c-${XMLRPC_C_VERSION}
398 +  COMMAND cp -a ${xmlrpc-c_SOURCE_DIR}/* _dist/xmlrpc-c-${XMLRPC_C_VERSION}/
399 +  COMMAND cd _dist && tar cjf ../xmlrpc-c-${XMLRPC_C_VERSION}.tar.bz2 xmlrpc-c-${XMLRPC_C_VERSION} --exclude=.git --exclude=CVS --exclude=.svn
400 +  )
401 +
402 +set(_lib       lib CACHE STRING "Basename of the library-directory; usually 'lib' or 'lib64' (on multilib archs)")
403 +set(_bin       bin CACHE STRING "Basename of the bin-directory; usually 'bin'")
404 +set(prefix     ${CMAKE_INSTALL_PREFIX})
405 +set(libdir     "${prefix}/${_lib}")
406 +set(bindir     "${prefix}/${_bin}")
407 +set(mandir     "${prefix}/share/man")
408 +set(pkgconfdir "${libdir}/pkgconfig")
409 +set(includedir "${prefix}/include")
410 +
411 +#############
412 +
413 +install(PROGRAMS xmlrpc-c-config DESTINATION ${_bin})
414 +
415 +enable_testing()
416 +
417 +add_subdirectory(test)
418 +add_subdirectory(lib)
419 +add_subdirectory(examples)
420 +add_subdirectory(include)
421 +add_subdirectory(src)
422 +
423 +if (BUILD_TOOLS)
424 +  add_subdirectory(tools)
425 +endif()
426 diff --git a/cmake/try-attr.cc b/cmake/try-attr.cc
427 new file mode 100644
428 index 0000000..4668c5b
429 --- /dev/null
430 +++ b/cmake/try-attr.cc
431 @@ -0,0 +1,3 @@
432 +int x __attribute__((CMAKE_TEST_ATTR));
433 +
434 +int main() {}
435 diff --git a/cmake/va-list-is-array.c b/cmake/va-list-is-array.c
436 new file mode 100644
437 index 0000000..1ad0bab
438 --- /dev/null
439 +++ b/cmake/va-list-is-array.c
440 @@ -0,0 +1,9 @@
441 +#include <stdarg.h>
442 +
443 +void foo()
444 +{
445 +  va_list list1, list2;
446 +  list1 = list2;
447 +}
448 +
449 +int main() {}
450 diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
451 new file mode 100644
452 index 0000000..1535adf
453 --- /dev/null
454 +++ b/examples/CMakeLists.txt
455 @@ -0,0 +1,68 @@
456 +# -*- cmake -*-
457 +
458 +include_directories(${CMAKE_CURRENT_BINARY_DIR})
459 +
460 +macro(ensc_add_example name ext class)
461 +  # HACK: avoid name collision of c and c++ program
462 +  if("${ext}" STREQUAL "cpp")
463 +    set(_target ${name}++)
464 +  else("${ext}" STREQUAL "cpp")
465 +    set(_target ${name})
466 +  endif("${ext}" STREQUAL "cpp")
467 +
468 +  add_executable(${_target} ${name}.${ext})
469 +  target_link_libraries(${_target} ${${class}_LIBS})
470 +  list(APPEND ${class}_TARGETS ${_target})
471 +  list(APPEND example_TARGETS ${_target})
472 +endmacro(ensc_add_example)
473 +
474 +if(ENABLE_CPLUSPLUS)
475 +  add_subdirectory(cpp)
476 +endif(ENABLE_CPLUSPLUS)
477 +
478 +
479 +set(base_LIBS xmlrpc)
480 +ensc_add_example(json               c base)
481 +ensc_add_example(gen_sample_add_xml c base)
482 +ensc_add_example(parse_xml          c base)
483 +
484 +if(MUST_BUILD_CLIENT)
485 +  set(client_LIBS xmlrpc_client)
486 +
487 +  ensc_add_example(auth_client              c client)
488 +  ensc_add_example(compound_value_client    c client)
489 +  ensc_add_example(synch_client             c client)
490 +  ensc_add_example(xmlrpc_sample_add_client c client)
491 +  ensc_add_example(xmlrpc_asynch_client     c client)
492 +endif(MUST_BUILD_CLIENT)
493 +
494 +if(MUST_BUILD_CURL_CLIENT)
495 +  set(client_LIBS xmlrpc_client)
496 +
497 +  if(NOT DEFINED MSVCRT)
498 +    ensc_add_example(interrupted_client       c client)
499 +  endif(NOT DEFINED MSVCRT)
500 +endif(MUST_BUILD_CURL_CLIENT)
501 +
502 +if(ENABLE_CGI_SERVER)
503 +  set(cgi_server_LIBS xmlrpc_server_cgi)
504 +
505 +  ensc_add_example(xmlrpc_sample_add_server_cgi c cgi_server)
506 +endif(ENABLE_CGI_SERVER)
507 +
508 +if(ENABLE_ABYSS_SERVER)
509 +  set(abyss_server_LIBS xmlrpc_server_abyss)
510 +
511 +  ensc_add_example(compound_value_server    c abyss_server)
512 +  ensc_add_example(xmlrpc_inetd_server      c abyss_server)
513 +  ensc_add_example(xmlrpc_socket_server     c abyss_server)
514 +  ensc_add_example(xmlrpc_loop_server       c abyss_server)
515 +  ensc_add_example(xmlrpc_sample_add_server c abyss_server)
516 +  ensc_add_example(xmlrpc_server_validatee  c abyss_server)
517 +
518 +  if(NOT DEFINED MSVCRT)
519 +    ensc_add_example(interrupted_server       c abyss_server)
520 +  endif(NOT DEFINED MSVCRT)
521 +endif(ENABLE_ABYSS_SERVER)
522 +
523 +ensc_set_link_exe_flags(${example_TARGETS})
524 diff --git a/examples/config.h b/examples/config.h
525 new file mode 100644
526 index 0000000..31d5f9b
527 --- /dev/null
528 +++ b/examples/config.h
529 @@ -0,0 +1 @@
530 +#include "../xmlrpc_config.h"
531 diff --git a/examples/cpp/CMakeLists.txt b/examples/cpp/CMakeLists.txt
532 new file mode 100644
533 index 0000000..093a75d
534 --- /dev/null
535 +++ b/examples/cpp/CMakeLists.txt
536 @@ -0,0 +1,34 @@
537 +# -*- cmake -*-
538 +
539 +if(ENABLE_ABYSS_SERVER)
540 +  set(abyss_serverxx_LIBS xmlrpc_server_abyss++)
541 +
542 +  ensc_add_example(xmlrpc_inetd_server cpp abyss_serverxx)
543 +  ensc_add_example(xmlrpc_loop_server  cpp abyss_serverxx)
544 +  ensc_add_example(xmlrpc_sample_add_server cpp abyss_serverxx)
545 +  ensc_add_example(callinfo_abyss_server    cpp abyss_serverxx)
546 +endif(ENABLE_ABYSS_SERVER)
547 +
548 +if (ENABLE_CGI_SERVER)
549 +  set(cgi_serverxx_LIBS xmlrpc_server_cgi++)
550 +
551 +  ensc_add_example(xmlrpc_sample_add_server_cgi cpp cgi_serverxx)
552 +endif(ENABLE_CGI_SERVER)
553 +
554 +if(MUST_BUILD_CLIENT)
555 +  set(abyss_clientxx_LIBS        xmlrpc_client++)
556 +
557 +  ensc_add_example(xmlrpc_sample_add_client  cpp abyss_clientxx)
558 +  ensc_add_example(sample_add_client_complex cpp abyss_clientxx)
559 +  ensc_add_example(asynch_client             cpp abyss_clientxx)
560 +
561 +  ensc_add_example(pstream_client            cpp abyss_clientxx)
562 +endif(MUST_BUILD_CLIENT)
563 +
564 +set(pstream_serverxx_LIBS      xmlrpc_server_pstream++)
565 +ensc_add_example(pstream_inetd_server  cpp pstream_serverxx)
566 +ensc_add_example(pstream_serial_server cpp pstream_serverxx)
567 +
568 +
569 +
570 +ensc_set_link_exe_flags(${example_TARGETS})
571 diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt
572 new file mode 100644
573 index 0000000..ebfdba5
574 --- /dev/null
575 +++ b/include/CMakeLists.txt
576 @@ -0,0 +1,3 @@
577 +# -*- cmake -*-
578 +
579 +add_subdirectory(xmlrpc-c)
580 diff --git a/include/xmlrpc-c/CMakeLists.txt b/include/xmlrpc-c/CMakeLists.txt
581 new file mode 100644
582 index 0000000..b9386b8
583 --- /dev/null
584 +++ b/include/xmlrpc-c/CMakeLists.txt
585 @@ -0,0 +1,74 @@
586 +# -*- cmake -*-
587 +
588 +macro(ensc_install_symlink src dst)
589 +  install(CODE "EXECUTE_PROCESS(COMMAND ln -s xmlrpc-c/${src} \$ENV{DESTDIR}${includedir}/${dst})")
590 +endmacro(ensc_install_symlink)
591 +
592 +list(APPEND headers
593 +  ${CMAKE_CURRENT_BINARY_DIR}/config.h
594 +  inttypes.h
595 +  c_util.h
596 +  util.h
597 +  base.h
598 +  json.h
599 +  abyss.h
600 +  abyss_unixsock.h
601 +  abyss_winsock.h
602 +  server.h
603 +  server_abyss.h
604 +  server_w32httpsys.h
605 +  oldxmlrpc.h)
606 +
607 +list(APPEND compat_links "oldxmlrpc.h         xmlrpc.h")
608 +list(APPEND compat_links "server.h            xmlrpc_server.h")
609 +list(APPEND compat_links "server_abyss.h      xmlrpc_abyss.h")
610 +list(APPEND compat_links "server_w32httpsys.h xmlrpc_server_w32httpsys.h")
611 +
612 +
613 +if(ENABLE_CPLUSPLUS)
614 +  list(APPEND headers
615 +    oldcppwrapper.hpp
616 +    girerr.hpp
617 +    girmem.hpp
618 +    base.hpp
619 +    timeout.hpp
620 +    xml.hpp
621 +    registry.hpp
622 +    server_abyss.hpp
623 +    packetsocket.hpp
624 +    server_pstream.hpp)
625 +
626 +  list(APPEND compat_links "oldcppwrapper.hpp XmlRpcCpp.h")
627 +endif(ENABLE_CPLUSPLUS)
628 +
629 +if(MUST_BUILD_CLIENT)
630 +  list(APPEND headers
631 +    client.h
632 +    transport.h
633 +    client_global.h)
634 +
635 +  list(APPEND compat_links "client.h xmlrpc_client.h")
636 +
637 +  if(ENABLE_CPLUSPLUS)
638 +    list(APPEND headers
639 +      client.hpp
640 +      client_transport.hpp
641 +      client_simple.hpp)
642 +  endif(ENABLE_CPLUSPLUS)
643 +endif(MUST_BUILD_CLIENT)
644 +
645 +if(ENABLE_CGI_SERVER)
646 +  list(APPEND headers
647 +    server_cgi.h)
648 +
649 +  list(APPEND compat_links "server_cgi.h xmlrpc_cgi.h")
650 +endif(ENABLE_CGI_SERVER)
651 +
652 +install(FILES
653 +  ${headers}
654 +  DESTINATION ${includedir}/xmlrpc-c)
655 +
656 +foreach (ln ${compat_links})
657 +  separate_arguments(ln)
658 +  ensc_install_symlink(${ln})
659 +endforeach(ln)
660 diff --git a/include/xmlrpc-c/config.h.cmake b/include/xmlrpc-c/config.h.cmake
661 new file mode 100644
662 index 0000000..48f64be
663 --- /dev/null
664 +++ b/include/xmlrpc-c/config.h.cmake
665 @@ -0,0 +1,34 @@
666 +/* --*- c -*-- */
667 +#ifndef XMLRPC_C_CONFIG_H_INCLUDED
668 +#define XMLRPC_C_CONFIG_H_INCLUDED
669 +
670 +/* This file, part of XML-RPC For C/C++, is meant to
671 +   define characteristics of this particular installation
672 +   that the other <xmlrpc-c/...> header files need in
673 +   order to compile correctly when #included in Xmlrpc-c
674 +   user code.
675 +
676 +   Those header files #include this one.
677 +
678 +   This file was created by a make rule.
679 +*/
680 +#define XMLRPC_HAVE_WCHAR              @HAVE_WCHAR_H@
681 +#ifdef _WIN32
682 +  /* SOCKET is a type defined by <winsock.h>.  Anyone who
683 +     uses XMLRPC_SOCKET on a WIN32 system must #include
684 +     <winsock.h>
685 +  */
686 +  #define XMLRPC_SOCKET SOCKET
687 +  #define XMLRPC_HAVE_TIMEVAL 0
688 +  #define XMLRPC_HAVE_TIMESPEC 0
689 +  #define XMLRPC_HAVE_PTHREAD 0
690 +  #define XMLRPC_HAVE_WINTHREAD 1
691 +#else
692 +  #define XMLRPC_SOCKET int
693 +  #define XMLRPC_HAVE_TIMEVAL 1
694 +  #define XMLRPC_HAVE_TIMESPEC 1
695 +  #define XMLRPC_HAVE_PTHREAD 1
696 +  #define XMLRPC_HAVE_WINTHREAD 0
697 +#endif
698 +
699 +#endif
700 diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
701 new file mode 100644
702 index 0000000..7f8f912
703 --- /dev/null
704 +++ b/lib/CMakeLists.txt
705 @@ -0,0 +1,12 @@
706 +## -*- cmake -*-
707 +
708 +add_subdirectory(abyss)
709 +add_subdirectory(libutil)
710 +add_subdirectory(util)
711 +add_subdirectory(curl_transport)
712 +add_subdirectory(libwww_transport)
713 +add_subdirectory(wininet_transport)
714 +
715 +if(NOT ENABLE_LIBXML2_BACKEND)
716 +  add_subdirectory(expat)
717 +endif(NOT ENABLE_LIBXML2_BACKEND)
718 diff --git a/lib/abyss/CMakeLists.txt b/lib/abyss/CMakeLists.txt
719 new file mode 100644
720 index 0000000..2358061
721 --- /dev/null
722 +++ b/lib/abyss/CMakeLists.txt
723 @@ -0,0 +1,3 @@
724 +## -*- cmake -*-
725 +
726 +SUBDIRS(src)
727 diff --git a/lib/abyss/src/CMakeLists.txt b/lib/abyss/src/CMakeLists.txt
728 new file mode 100644
729 index 0000000..b1813bb
730 --- /dev/null
731 +++ b/lib/abyss/src/CMakeLists.txt
732 @@ -0,0 +1,70 @@
733 +## -*- cmake -*-
734 +
735 +set(xmlrpc_abyss_SOURCES
736 +  abyss_info.h
737 +  channel.c
738 +  channel.h
739 +  chanswitch.c
740 +  chanswitch.h
741 +  conf.c
742 +  conn.c
743 +  conn.h
744 +  data.c
745 +  data.h
746 +  date.c
747 +  date.h
748 +  file.c
749 +  file.h
750 +  handler.c
751 +  handler.h
752 +  http.c
753 +  http.h
754 +  init.c
755 +  response.c
756 +  server.c
757 +  server.h
758 +  session.c
759 +  session.h
760 +  socket.c
761 +  socket.h
762 +  thread.h
763 +  token.c
764 +  token.h
765 +  trace.c
766 +  trace.h)
767 +
768 +add_definitions(-D_UNIX)
769 +
770 +if(WIN32)
771 +  list(APPEND xmlrpc_abyss_SOURCES thread_windows.c)
772 +else(WIN32)
773 +  list(APPEND xmlrpc_abyss_SOURCES socket_unix.c socket_unix.h)
774 +
775 +  if(ENABLE_ABYSS_THREADS)
776 +    list(APPEND xmlrpc_abyss_SOURCES thread_pthread.c)
777 +  else(ENABLE_ABYSS_THREADS)
778 +    list(APPEND xmlrpc_abyss_SOURCES thread_fork.c)
779 +  endif(ENABLE_ABYSS_THREADS)
780 +endif(WIN32)
781 +
782 +add_library(xmlrpc_abyss SHARED ${xmlrpc_abyss_SOURCES})
783 +target_link_libraries(xmlrpc_abyss xmlrpc_util)
784 +
785 +if(ENABLE_ABYSS_THREADS)
786 +  set_target_properties(xmlrpc_abyss PROPERTIES DEFINE_SYMBOL _THREAD)
787 +  target_link_libraries(xmlrpc_abyss ${THREAD_LIBS})
788 +  ensc_pkgconfig_lib(xmlrpc_abyss "${THREAD_LIBS_PKGCONFIG}")
789 +endif(ENABLE_ABYSS_THREADS)
790 +
791 +install(TARGETS xmlrpc_abyss
792 +  RUNTIME DESTINATION ${_bin}
793 +  LIBRARY DESTINATION ${_lib}
794 +  ARCHIVE DESTINATION ${_lib})
795 +
796 +set_target_properties(xmlrpc_abyss
797 +  PROPERTIES
798 +  LINK_FLAGS ${XMLRPC_LINKER_FLAGS}
799 +  VERSION    ${XMLRPC_C_LIBVERSION}
800 +  SOVERSION  ${XMLRPC_C_SOVERSION})
801 +
802 +ensc_pkgconfig(xmlrpc_abyss)
803 diff --git a/lib/abyss/src/xmlrpc_abyss.pc.cmake b/lib/abyss/src/xmlrpc_abyss.pc.cmake
804 new file mode 100644
805 index 0000000..b0dbcc9
806 --- /dev/null
807 +++ b/lib/abyss/src/xmlrpc_abyss.pc.cmake
808 @@ -0,0 +1,12 @@
809 +bindir=@bindir@
810 +prefix=@prefix@
811 +libdir=@libdir@
812 +includedir=@includedir@
813 +
814 +Name:       xmlrpc_abyss
815 +Description: XMLRPC Abyss base library
816 +Version:     @XMLRPC_C_VERSION@
817 +
818 +Requires.private:      xmlrpc_util
819 +Libs:                  -L${libdir} -lxmlrpc_abyss @xmlrpc_abyss_pkgconfig_libs@
820 +Cflags:
821 diff --git a/lib/curl_transport/CMakeLists.txt b/lib/curl_transport/CMakeLists.txt
822 new file mode 100644
823 index 0000000..4224a13
824 --- /dev/null
825 +++ b/lib/curl_transport/CMakeLists.txt
826 @@ -0,0 +1,20 @@
827 +# -*- cmake -*-
828 +
829 +if(MUST_BUILD_CURL_CLIENT)
830 +  list(APPEND transport_SOURCES
831 +    ${CMAKE_CURRENT_SOURCE_DIR}/xmlrpc_curl_transport.c
832 +
833 +    ${CMAKE_CURRENT_SOURCE_DIR}/curltransaction.c
834 +    ${CMAKE_CURRENT_SOURCE_DIR}/curltransaction.h
835 +
836 +    ${CMAKE_CURRENT_SOURCE_DIR}/curlmulti.c
837 +    ${CMAKE_CURRENT_SOURCE_DIR}/curlmulti.h
838 +
839 +    ${CMAKE_CURRENT_SOURCE_DIR}/lock.h
840 +
841 +    ${CMAKE_CURRENT_SOURCE_DIR}/lock_pthread.c
842 +    ${CMAKE_CURRENT_SOURCE_DIR}/lock_pthread.h
843 +
844 +    ${CMAKE_CURRENT_SOURCE_DIR}/curlversion.h
845 +    )
846 +endif(MUST_BUILD_CURL_CLIENT)
847 diff --git a/lib/expat/CMakeLists.txt b/lib/expat/CMakeLists.txt
848 new file mode 100644
849 index 0000000..7397f52
850 --- /dev/null
851 +++ b/lib/expat/CMakeLists.txt
852 @@ -0,0 +1,9 @@
853 +# -*- cmake -*-
854 +
855 +
856 +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/xmltok)
857 +
858 +add_subdirectory(gennmtab)
859 +add_subdirectory(xmlparse)
860 +add_subdirectory(xmltok)
861 +add_subdirectory(xmlwf)
862 diff --git a/lib/expat/gennmtab/CMakeLists.txt b/lib/expat/gennmtab/CMakeLists.txt
863 new file mode 100644
864 index 0000000..48a44da
865 --- /dev/null
866 +++ b/lib/expat/gennmtab/CMakeLists.txt
867 @@ -0,0 +1,3 @@
868 +# -*- cmake -*-
869 +
870 +ADD_EXECUTABLE(gennmtab gennmtab.c)
871 diff --git a/lib/expat/xmlparse/CMakeLists.txt b/lib/expat/xmlparse/CMakeLists.txt
872 new file mode 100644
873 index 0000000..f87008a
874 --- /dev/null
875 +++ b/lib/expat/xmlparse/CMakeLists.txt
876 @@ -0,0 +1,7 @@
877 +# -*- cmake -*-
878 +
879 +add_library(xmlrpc_xmlparse STATIC
880 +  xmlparse.c)
881 +target_link_libraries(xmlrpc_xmlparse xmlrpc_xmltok)
882 +
883 +ensc_pkgconfig(xmlrpc_xmlparse)
884 diff --git a/lib/expat/xmlparse/xmlrpc_xmlparse.pc.cmake b/lib/expat/xmlparse/xmlrpc_xmlparse.pc.cmake
885 new file mode 100644
886 index 0000000..5b2a7e4
887 --- /dev/null
888 +++ b/lib/expat/xmlparse/xmlrpc_xmlparse.pc.cmake
889 @@ -0,0 +1,12 @@
890 +bindir=@bindir@
891 +prefix=@prefix@
892 +libdir=@libdir@
893 +includedir=@includedir@
894 +
895 +Name:        xmlrpc_xmlparse
896 +Description: XMLRPC xmlparse library
897 +Version:     @XMLRPC_C_VERSION@
898 +
899 +Requires.private:      xmlrpc_xmltok
900 +Libs:                  -L${libdir} -lxmlrpc_xmlparse
901 +Cflags:
902 diff --git a/lib/expat/xmltok/CMakeLists.txt b/lib/expat/xmltok/CMakeLists.txt
903 new file mode 100644
904 index 0000000..42406fb
905 --- /dev/null
906 +++ b/lib/expat/xmltok/CMakeLists.txt
907 @@ -0,0 +1,23 @@
908 +# -*- cmake -*-
909 +
910 +include_directories(${CMAKE_CURRENT_BINARY_DIR})
911 +
912 +add_definitions(-DXML_BYTE_ORDER=0)
913 +
914 +add_library(xmlrpc_xmltok STATIC
915 +  xmltok.c xmlrole.c xmltok_impl.c
916 +  ${CMAKE_CURRENT_BINARY_DIR}/nametab.h)
917 +
918 +set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/nametab.h
919 +  PROPERTIES
920 +  OBJECT_DEPENDS gennmtab
921 +  GENERATED true)
922 +
923 +
924 +get_target_property(GENNMTAB_EXECUTABLE gennmtab LOCATION)
925 +add_custom_command(
926 +  OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/nametab.h
927 +  COMMAND ${GENNMTAB_EXECUTABLE} >nametab.h || { rm -f nametab.h\; false\; }
928 +  DEPENDS gennmtab)
929 +
930 +ensc_pkgconfig(xmlrpc_xmltok)
931 diff --git a/lib/expat/xmltok/xmlrpc_xmltok.pc.cmake b/lib/expat/xmltok/xmlrpc_xmltok.pc.cmake
932 new file mode 100644
933 index 0000000..88e7ad8
934 --- /dev/null
935 +++ b/lib/expat/xmltok/xmlrpc_xmltok.pc.cmake
936 @@ -0,0 +1,9 @@
937 +prefix=@prefix@
938 +libdir=@libdir@
939 +
940 +Name:        xmlrpc_xmltok
941 +Description: XMLRPC xmltok library
942 +Version:     @XMLRPC_C_VERSION@
943 +
944 +Libs:          -L${libdir}
945 +Cflags:
946 diff --git a/lib/libutil/CMakeLists.txt b/lib/libutil/CMakeLists.txt
947 new file mode 100644
948 index 0000000..25ba487
949 --- /dev/null
950 +++ b/lib/libutil/CMakeLists.txt
951 @@ -0,0 +1,26 @@
952 +# -*- cmake -*-
953 +
954 +add_library(xmlrpc_util SHARED
955 +  asprintf.c
956 +  base64.c
957 +  error.c
958 +  make_printable.c
959 +  memblock.c
960 +  select.c
961 +  sleep.c
962 +  string_number.c
963 +  time.c
964 +  utf8.c)
965 +
966 +set_target_properties(xmlrpc_util
967 +  PROPERTIES
968 +  LINK_FLAGS ${XMLRPC_LINKER_FLAGS}
969 +  VERSION    ${XMLRPC_C_LIBVERSION}
970 +  SOVERSION  ${XMLRPC_C_SOVERSION})
971 +
972 +install(TARGETS xmlrpc_util
973 +  RUNTIME DESTINATION ${_bin}
974 +  LIBRARY DESTINATION ${_lib}
975 +  ARCHIVE DESTINATION ${_lib})
976 +
977 +ensc_pkgconfig(xmlrpc_util)
978 diff --git a/lib/libutil/xmlrpc_util.pc.cmake b/lib/libutil/xmlrpc_util.pc.cmake
979 new file mode 100644
980 index 0000000..d4e01bf
981 --- /dev/null
982 +++ b/lib/libutil/xmlrpc_util.pc.cmake
983 @@ -0,0 +1,10 @@
984 +prefix=@prefix@
985 +libdir=@libdir@
986 +includedir=@includedir@
987 +
988 +Name:       xmlrpc_util
989 +Description: XMLRPC utility library
990 +Version:     @XMLRPC_C_VERSION@
991 +
992 +Libs:          -L${libdir} -lxmlrpc_util
993 +Cflags:                -I${includedir}
994 diff --git a/lib/libwww_transport/CMakeLists.txt b/lib/libwww_transport/CMakeLists.txt
995 new file mode 100644
996 index 0000000..aa52d9e
997 --- /dev/null
998 +++ b/lib/libwww_transport/CMakeLists.txt
999 @@ -0,0 +1,7 @@
1000 +# -*- cmake -*-
1001 +
1002 +if(MUST_BUILD_LIBWWW_CLIENT)
1003 +  list(APPEND transport_SOURCES
1004 +    ${CMAKE_CURRENT_SOURCE_DIR}/xmlrpc_libwww_transport.c
1005 +    ${CMAKE_CURRENT_SOURCE_DIR}/xmlrpc_libwww_transport.h)
1006 +endif(MUST_BUILD_LIBWWW_CLIENT)
1007 diff --git a/lib/util/CMakeLists.txt b/lib/util/CMakeLists.txt
1008 new file mode 100644
1009 index 0000000..80696d9
1010 --- /dev/null
1011 +++ b/lib/util/CMakeLists.txt
1012 @@ -0,0 +1,17 @@
1013 +## -*- cmake -*-
1014 +
1015 +set(util_SOURCES
1016 +  casprintf.c
1017 +  cmdline_parser.c
1018 +  cmdline_parser_cpp.cpp
1019 +  getoptx.c
1020 +  getoptx.h
1021 +  stripcaseeq.c
1022 +  string_parser.c
1023 +)
1024 +
1025 +if(WIN32)
1026 +  list(APPEND util_SOURCES pthreadx_win32.c)
1027 +endif(WIN32)
1028 +
1029 +add_library(util STATIC ${util_SOURCES})
1030 diff --git a/lib/wininet_transport/CMakeLists.txt b/lib/wininet_transport/CMakeLists.txt
1031 new file mode 100644
1032 index 0000000..17535ab
1033 --- /dev/null
1034 +++ b/lib/wininet_transport/CMakeLists.txt
1035 @@ -0,0 +1,7 @@
1036 +# -*- cmake -*-
1037 +
1038 +if(MUST_BUILD_WININET_CLIENT)
1039 +  list(APPEND transport_SOURCES
1040 +    ${CMAKE_CURRENT_SOURCE_DIR}/xmlrpc_wininet_transport.c
1041 +    ${CMAKE_CURRENT_SOURCE_DIR}/xmlrpc_wininet_transport.h)
1042 +endif(MUST_BUILD_WININET_CLIENT)
1043 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
1044 new file mode 100644
1045 index 0000000..f51e15b
1046 --- /dev/null
1047 +++ b/src/CMakeLists.txt
1048 @@ -0,0 +1,121 @@
1049 +# -*- cmake -*-
1050 +
1051 +if(ENABLE_LIBXML2_BACKEND)
1052 +  set(xmlrpc_xml_parser xmlrpc_libxml2.c)
1053 +  set(libxml_INCLUDES ${LIBXML2_CFLAGS})
1054 +  set(libxml_LIBS     ${LIBXML2_LDFLAGS})
1055 +  set(xmlrpc_pkgconfig_req ${libxml_pkgconfig})
1056 +else(ENABLE_LIBXML2_BACKEND)
1057 +  set(xmlrpc_xml_parser xmlrpc_expat.c)
1058 +  set(libxml_INCLUDES -I${xmlrpc-c_SOURCE_DIR}/lib/expat/xmlparse)
1059 +  set(libxml_LIBS xmlrpc_xmlparse)
1060 +  set(xmlrpc_pkgconfig_req xmlrpc_xmlparse)
1061 +endif(ENABLE_LIBXML2_BACKEND)
1062 +
1063 +if(MUST_BUILD_WININET_CLIENT)
1064 +  set(client_wininet_CFLAGS "")
1065 +  set(client_wininet_LIBS   "${WININET_LDADD}" pthread)
1066 +  list(APPEND transport_SOURCES
1067 +    ${wininet_srcdir}/xmlrpc_wininet_transport.c ${wininet_srcdir}/xmlrpc_wininet_transport.h)
1068 +endif(MUST_BUILD_WININET_CLIENT)
1069 +
1070 +if(MUST_BUILD_LIBWWW_CLIENT)
1071 +  set(client_libwww_CFLAGS "${LIBWWW_CFLAGS}")
1072 +  set(client_libwww_LIBS   "${LIBWWW_LIBS}")
1073 +  list(APPEND transport_SOURCES ${libwww_srcdir}/xmlrpc_libwww_transport.c ${libwww_srcdir}/xmlrpc_libwww_transport.h)
1074 +endif(MUST_BUILD_LIBWWW_CLIENT)
1075 +
1076 +if(MUST_BUILD_CURL_CLIENT)
1077 +  set(client_curl_CFLAGS ${CURL_CFLAGS})
1078 +  set(client_curl_LIBS   ${CURL_LDFLAGS} pthread)
1079 +  set(xmlrpc_client_pkgconfig_req libcurl)
1080 +  list(APPEND transport_SOURCES
1081 +    ${curl_srcdir}/xmlrpc_curl_transport.c
1082 +    ${curl_srcdir}/curltransaction.c
1083 +    ${curl_srcdir}/curltransaction.h
1084 +    ${curl_srcdir}/curlmulti.c
1085 +    ${curl_srcdir}/curlmulti.h
1086 +    ${curl_srcdir}/lock.h
1087 +    ${curl_srcdir}/lock_pthread.c
1088 +    ${curl_srcdir}/lock_pthread.h
1089 +    ${curl_srcdir}/curlversion.h
1090 +    )
1091 +endif(MUST_BUILD_CURL_CLIENT)
1092 +
1093 +set(client_CFLAGS "-I${wininet_srcdir} -I${libwww_srcdir} -I${curl_srcdir} ${client_wininet_CFLAGS} ${client_libwww_CFLAGS} ${client_curl_CFLAGS}")
1094 +set(client_LIBS   ${client_wininet_LIBS} ${client_libwww_LIBS} ${client_curl_LIBS})
1095 +
1096 +
1097 +add_subdirectory(cpp)
1098 +
1099 +
1100 +
1101 +### libxmlrpc.so
1102 +add_library(xmlrpc SHARED
1103 +  double.c parse_datetime.c parse_value.c resource.c trace.c version.c
1104 +  json.c
1105 +  ${xmlrpc_xml_parser}
1106 +  xmlrpc_data.c xmlrpc_datetime.c xmlrpc_string.c
1107 +  xmlrpc_array.c xmlrpc_struct.c
1108 +  xmlrpc_build.c xmlrpc_decompose.c xmlrpc_parse.c xmlrpc_serialize.c
1109 +  xmlrpc_authcookie.c)
1110 +
1111 +set_target_properties(xmlrpc
1112 +  PROPERTIES
1113 +  COMPILE_FLAGS ${libxml_INCLUDES})
1114 +
1115 +ensc_pkgconfig(xmlrpc)
1116 +target_link_libraries(xmlrpc ${libxml_LIBS} xmlrpc_util)
1117 +list(APPEND lib_TARGETS xmlrpc)
1118 +
1119 +### libxmlrpc_client.so
1120 +add_library(xmlrpc_client SHARED
1121 +  xmlrpc_client.c xmlrpc_client_global.c xmlrpc_server_info.c ${transport_SOURCES})
1122 +
1123 +target_link_libraries(xmlrpc_client xmlrpc ${client_LIBS})
1124 +set_target_properties(xmlrpc_client
1125 +  PROPERTIES
1126 +  COMPILE_FLAGS "${client_CFLAGS}")
1127 +list(APPEND lib_TARGETS xmlrpc_client)
1128 +ensc_pkgconfig(xmlrpc_client)
1129 +
1130 +### libxmlrpc_server.so
1131 +add_library(xmlrpc_server SHARED
1132 +  registry.c method.c system_method.c)
1133 +target_link_libraries(xmlrpc_server xmlrpc)
1134 +list(APPEND lib_TARGETS xmlrpc_server)
1135 +ensc_pkgconfig(xmlrpc_server)
1136 +
1137 +
1138 +### libxmlrpc_server_abyss.so
1139 +if(ENABLE_ABYSS_SERVER)
1140 +  add_library(xmlrpc_server_abyss SHARED
1141 +    xmlrpc_server_abyss.c abyss_handler.c)
1142 +  target_link_libraries(xmlrpc_server_abyss xmlrpc_abyss xmlrpc_server)
1143 +  list(APPEND lib_TARGETS xmlrpc_server_abyss)
1144 +  ensc_pkgconfig(xmlrpc_server_abyss)
1145 +endif(ENABLE_ABYSS_SERVER)
1146 +
1147 +
1148 +
1149 +### libxmlrpc_server_cgi.so
1150 +if(ENABLE_CGI_SERVER)
1151 +  add_library(xmlrpc_server_cgi SHARED
1152 +    xmlrpc_server_cgi)
1153 +  target_link_libraries(xmlrpc_server_cgi xmlrpc_server)
1154 +  list(APPEND lib_TARGETS xmlrpc_server_cgi)
1155 +  ensc_pkgconfig(xmlrpc_server_cgi)
1156 +endif(ENABLE_CGI_SERVER)
1157 +
1158 +install(TARGETS ${lib_TARGETS}
1159 +  RUNTIME DESTINATION ${_bin}
1160 +  LIBRARY DESTINATION ${_lib})
1161 +
1162 +set_target_properties(${lib_TARGETS}
1163 +  PROPERTIES
1164 +  LINK_FLAGS ${XMLRPC_LINKER_FLAGS}
1165 +  VERSION    ${XMLRPC_C_LIBVERSION}
1166 +  SOVERSION  ${XMLRPC_C_SOVERSION})
1167 +
1168 +
1169 +enable_testing()
1170 diff --git a/src/cpp/CMakeLists.txt b/src/cpp/CMakeLists.txt
1171 new file mode 100644
1172 index 0000000..3171156
1173 --- /dev/null
1174 +++ b/src/cpp/CMakeLists.txt
1175 @@ -0,0 +1,70 @@
1176 +# -*- cmake -*-
1177 +
1178 +####### libxmlrpc++.so
1179 +add_library(xmlrpc++ SHARED
1180 +  base64.cpp env_wrap.cpp fault.cpp girerr.cpp girmem.cpp
1181 +  outcome.cpp param_list.cpp value.cpp xml.cpp)
1182 +target_link_libraries(xmlrpc++ xmlrpc pthread)
1183 +list(APPEND lib_TARGETS xmlrpc++)
1184 +ensc_pkgconfig(xmlrpc++)
1185 +
1186 +####### libxmlrpc_cpp.so
1187 +add_library(xmlrpc_cpp            SHARED XmlRpcCpp)
1188 +target_link_libraries(xmlrpc_cpp xmlrpc xmlrpc_server xmlrpc_client)
1189 +list(APPEND lib_TARGETS xmlrpc_cpp)
1190 +ensc_pkgconfig(xmlrpc_cpp)
1191 +
1192 +####### libxmlrpc_server++.so
1193 +add_library(xmlrpc_server++       SHARED registry.cpp)
1194 +target_link_libraries(xmlrpc_server++ xmlrpc++ xmlrpc_server)
1195 +list(APPEND lib_TARGETS xmlrpc_server++)
1196 +ensc_pkgconfig(xmlrpc_server++)
1197 +
1198 +####### libxmlrpc_server_abyss++.so
1199 +if(ENABLE_ABYSS_SERVER)
1200 +  add_library(xmlrpc_server_abyss++ SHARED server_abyss.cpp)
1201 +  target_link_libraries(xmlrpc_server_abyss++ xmlrpc_server++ xmlrpc_server_abyss)
1202 +  list(APPEND lib_TARGETS xmlrpc_server_abyss++)
1203 +  ensc_pkgconfig(xmlrpc_server_abyss++)
1204 +endif(ENABLE_ABYSS_SERVER)
1205 +
1206 +####### libxmlrpc_server_cgi++.so
1207 +if(ENABLE_CGI_SERVER)
1208 +  add_library(xmlrpc_server_cgi++ SHARED server_cgi.cpp)
1209 +  target_link_libraries(xmlrpc_server_cgi++ xmlrpc_server++)
1210 +  list(APPEND lib_TARGETS xmlrpc_server_cgi++)
1211 +  ensc_pkgconfig(xmlrpc_server_cgi++)
1212 +endif(ENABLE_CGI_SERVER)
1213 +
1214 +####### libxmlrpc_server_pstream++.so
1215 +add_library(xmlrpc_server_pstream++ SHARED server_pstream.cpp server_pstream_conn)
1216 +target_link_libraries(xmlrpc_server_pstream++ xmlrpc_server++ xmlrpc_packetsocket)
1217 +list(APPEND lib_TARGETS xmlrpc_server_pstream++)
1218 +ensc_pkgconfig(xmlrpc_server_pstream++)
1219 +
1220 +####### libxmlrpc_packetsocket.so
1221 +add_library(xmlrpc_packetsocket SHARED packetsocket.cpp)
1222 +target_link_libraries(xmlrpc_packetsocket xmlrpc++)
1223 +list(APPEND lib_TARGETS xmlrpc_packetsocket)
1224 +ensc_pkgconfig(xmlrpc_packetsocket)
1225 +
1226 +####### libxmlrpc_client++.so
1227 +add_library(xmlrpc_client++       SHARED
1228 +  client.cpp client_simple.cpp curl.cpp libwww.cpp wininet.cpp pstream.cpp)
1229 +set_target_properties(xmlrpc_client++
1230 +  PROPERTIES
1231 +  COMPILE_FLAGS "-I${wininet_srcdir} -I${libwww_srcdir} -I${curl_srcdir}")
1232 +target_link_libraries(xmlrpc_client++ xmlrpc++ xmlrpc_client xmlrpc_packetsocket)
1233 +list(APPEND lib_TARGETS xmlrpc_client++)
1234 +ensc_pkgconfig(xmlrpc_client++)
1235 +
1236 +
1237 +install(TARGETS ${lib_TARGETS}
1238 +  RUNTIME DESTINATION ${_bin}
1239 +  LIBRARY DESTINATION ${_lib})
1240 +
1241 +set_target_properties(${lib_TARGETS}
1242 +  PROPERTIES
1243 +  LINK_FLAGS ${XMLRPC_LINKER_FLAGS}
1244 +  VERSION    ${XMLRPC_CXX_LIBVERSION}
1245 +  SOVERSION  ${XMLRPC_CXX_SOVERSION})
1246 diff --git a/src/cpp/test/CMakeLists.txt b/src/cpp/test/CMakeLists.txt
1247 new file mode 100644
1248 index 0000000..dffd36c
1249 --- /dev/null
1250 +++ b/src/cpp/test/CMakeLists.txt
1251 @@ -0,0 +1,18 @@
1252 +# -*- cmake -*-
1253 +
1254 +set(test_SOURCES
1255 +  test.cpp base64.cpp registry.cpp server_abyss.cpp
1256 +  server_pstream.cpp tools.cpp value.cpp xml.cpp )
1257 +
1258 +if(MUST_BUILD_CLIENT)
1259 +  list(APPEND test_SOURCES testclient.cpp)
1260 +  list(APPEND test_LIBS    xmlrpc_client++)
1261 +else(MUST_BUILD_CLIENT)
1262 +  list(APPEND test_SOURCES testclient_dummy.c)
1263 +endif(MUST_BUILD_CLIENT)
1264 +
1265 +add_executable(src-test ${test_SOURCES})
1266 +target_link_libraries(src-test xmlrpc_server_abyss++ util ${test_LIBS})
1267 +
1268 +enable_testing()
1269 +add_test(runtests src-test)
1270 diff --git a/src/cpp/xmlrpc++.pc.cmake b/src/cpp/xmlrpc++.pc.cmake
1271 new file mode 100644
1272 index 0000000..e99d81e
1273 --- /dev/null
1274 +++ b/src/cpp/xmlrpc++.pc.cmake
1275 @@ -0,0 +1,12 @@
1276 +bindir=@bindir@
1277 +prefix=@prefix@
1278 +libdir=@libdir@
1279 +includedir=@includedir@
1280 +
1281 +Name:       xmlrpc++
1282 +Description: XMLRPC C++ Base library
1283 +Version:     @XMLRPC_C_VERSION@
1284 +
1285 +Requires.private:      xmlrpc xmlrpc_util
1286 +Libs:                  -L${libdir} -lxmlrpc++
1287 +Cflags:                        -I${includedir}
1288 diff --git a/src/cpp/xmlrpc_client++.pc.cmake b/src/cpp/xmlrpc_client++.pc.cmake
1289 new file mode 100644
1290 index 0000000..fe1f835
1291 --- /dev/null
1292 +++ b/src/cpp/xmlrpc_client++.pc.cmake
1293 @@ -0,0 +1,12 @@
1294 +bindir=@bindir@
1295 +prefix=@prefix@
1296 +libdir=@libdir@
1297 +includedir=@includedir@
1298 +
1299 +Name:       xmlrpc_client++
1300 +Description: XMLRPC C++ Client library
1301 +Version:     @XMLRPC_C_VERSION@
1302 +
1303 +Requires.private:      xmlrpc++ xmlrpc_client xmlrpc_packetsocket xmlrpc xmlrpc_util
1304 +Libs:                  -L${libdir} -lxmlrpc_client++
1305 +Cflags:                        -I${includedir}
1306 diff --git a/src/cpp/xmlrpc_cpp.pc.cmake b/src/cpp/xmlrpc_cpp.pc.cmake
1307 new file mode 100644
1308 index 0000000..9f94252
1309 --- /dev/null
1310 +++ b/src/cpp/xmlrpc_cpp.pc.cmake
1311 @@ -0,0 +1,12 @@
1312 +bindir=@bindir@
1313 +prefix=@prefix@
1314 +libdir=@libdir@
1315 +includedir=@includedir@
1316 +
1317 +Name:       xmlrpc_cpp
1318 +Description: XMLRPC CPP library
1319 +Version:     @XMLRPC_C_VERSION@
1320 +
1321 +Requires.private:      xmlrpc xmlrpc_server xmlrpc_util
1322 +Libs:                  -L${libdir} -lxmlrpc_cpp
1323 +Cflags:                        -I${includedir}
1324 diff --git a/src/cpp/xmlrpc_packetsocket.pc.cmake b/src/cpp/xmlrpc_packetsocket.pc.cmake
1325 new file mode 100644
1326 index 0000000..e168da3
1327 --- /dev/null
1328 +++ b/src/cpp/xmlrpc_packetsocket.pc.cmake
1329 @@ -0,0 +1,12 @@
1330 +bindir=@bindir@
1331 +prefix=@prefix@
1332 +libdir=@libdir@
1333 +includedir=@includedir@
1334 +
1335 +Name:       xmlrpc_packetsocket
1336 +Description: XMLRPC C++ packsetsocket library
1337 +Version:     @XMLRPC_C_VERSION@
1338 +
1339 +Requires.private:      xmlrpc++
1340 +Libs:                  -L${libdir} -lxmlrpc_packetsocket
1341 +Cflags:                        -I${includedir}
1342 diff --git a/src/cpp/xmlrpc_server++.pc.cmake b/src/cpp/xmlrpc_server++.pc.cmake
1343 new file mode 100644
1344 index 0000000..5080b63
1345 --- /dev/null
1346 +++ b/src/cpp/xmlrpc_server++.pc.cmake
1347 @@ -0,0 +1,12 @@
1348 +bindir=@bindir@
1349 +prefix=@prefix@
1350 +libdir=@libdir@
1351 +includedir=@includedir@
1352 +
1353 +Name:       xmlrpc_server++
1354 +Description: XMLRPC C++ Server library
1355 +Version:     @XMLRPC_C_VERSION@
1356 +
1357 +Requires.private:      xmlrpc++ xmlrpc_server xmlrpc xmlrpc_util
1358 +Libs:                  -L${libdir} -lxmlrpc_server++
1359 +Cflags:                        -I${includedir}
1360 diff --git a/src/cpp/xmlrpc_server_abyss++.pc.cmake b/src/cpp/xmlrpc_server_abyss++.pc.cmake
1361 new file mode 100644
1362 index 0000000..f1d2198
1363 --- /dev/null
1364 +++ b/src/cpp/xmlrpc_server_abyss++.pc.cmake
1365 @@ -0,0 +1,12 @@
1366 +bindir=@bindir@
1367 +prefix=@prefix@
1368 +libdir=@libdir@
1369 +includedir=@includedir@
1370 +
1371 +Name:       xmlrpc_server_abyss++
1372 +Description: XMLRPC C++ Abyss-Server library
1373 +Version:     @XMLRPC_C_VERSION@
1374 +
1375 +Requires.private:      xmlrpc_server++ xmlrpc_server_abyss xmlrpc++ xmlrpc_abyss xmlrpc_util
1376 +Libs:                  -L${libdir} -lxmlrpc_server_abyss++
1377 +Cflags:                        -I${includedir}
1378 diff --git a/src/cpp/xmlrpc_server_cgi++.pc.cmake b/src/cpp/xmlrpc_server_cgi++.pc.cmake
1379 new file mode 100644
1380 index 0000000..9021564
1381 --- /dev/null
1382 +++ b/src/cpp/xmlrpc_server_cgi++.pc.cmake
1383 @@ -0,0 +1,12 @@
1384 +bindir=@bindir@
1385 +prefix=@prefix@
1386 +libdir=@libdir@
1387 +includedir=@includedir@
1388 +
1389 +Name:       xmlrpc_server_cgi++
1390 +Description: XMLRPC C++ CGI-Server library
1391 +Version:     @XMLRPC_C_VERSION@
1392 +
1393 +Requires.private:      xmlrpc_server++ xmlrpc++ xmlrpc
1394 +Libs:                  -L${libdir} -lxmlrpc_server_cgi++
1395 +Cflags:                        -I${includedir}
1396 diff --git a/src/cpp/xmlrpc_server_pstream++.pc.cmake b/src/cpp/xmlrpc_server_pstream++.pc.cmake
1397 new file mode 100644
1398 index 0000000..9b4819f
1399 --- /dev/null
1400 +++ b/src/cpp/xmlrpc_server_pstream++.pc.cmake
1401 @@ -0,0 +1,12 @@
1402 +bindir=@bindir@
1403 +prefix=@prefix@
1404 +libdir=@libdir@
1405 +includedir=@includedir@
1406 +
1407 +Name:       xmlrpc_server_pstream++
1408 +Description: XMLRPC C++ pstream-Server library
1409 +Version:     @XMLRPC_C_VERSION@
1410 +
1411 +Requires.private:      xmlrpc_server++ xmlrpc_packetsocket xmlrpc++
1412 +Libs:                  -L${libdir} -lxmlrpc_server_pstream++
1413 +Cflags:                        -I${includedir}
1414 diff --git a/src/xmlrpc.pc.cmake b/src/xmlrpc.pc.cmake
1415 new file mode 100644
1416 index 0000000..7c098b8
1417 --- /dev/null
1418 +++ b/src/xmlrpc.pc.cmake
1419 @@ -0,0 +1,12 @@
1420 +bindir=@bindir@
1421 +prefix=@prefix@
1422 +libdir=@libdir@
1423 +includedir=@includedir@
1424 +
1425 +Name:       xmlrpc
1426 +Description: XMLRPC base library
1427 +Version:     @XMLRPC_C_VERSION@
1428 +
1429 +Requires.private:      @xmlrpc_pkgconfig_req@ xmlrpc_util
1430 +Libs:                  -L${libdir} -lxmlrpc @xmlrpc_pkgconfig_libs@
1431 +Cflags:                        -I${includedir}
1432 diff --git a/src/xmlrpc_client.pc.cmake b/src/xmlrpc_client.pc.cmake
1433 new file mode 100644
1434 index 0000000..61543d4
1435 --- /dev/null
1436 +++ b/src/xmlrpc_client.pc.cmake
1437 @@ -0,0 +1,12 @@
1438 +bindir=@bindir@
1439 +prefix=@prefix@
1440 +libdir=@libdir@
1441 +includedir=@includedir@
1442 +
1443 +Name:       xmlrpc_client
1444 +Description: XMLRPC client library
1445 +Version:     @XMLRPC_C_VERSION@
1446 +
1447 +Requires.private:      xmlrpc @xmlrpc_client_pkgconfig_req@ xmlrpc_util
1448 +Libs:                  -L${libdir} -lxmlrpc_client @client_libwww_LIBS@ @client_wininet_LIBS@
1449 +Cflags:                        -I${includedir}
1450 diff --git a/src/xmlrpc_server.pc.cmake b/src/xmlrpc_server.pc.cmake
1451 new file mode 100644
1452 index 0000000..cade53d
1453 --- /dev/null
1454 +++ b/src/xmlrpc_server.pc.cmake
1455 @@ -0,0 +1,12 @@
1456 +bindir=@bindir@
1457 +prefix=@prefix@
1458 +libdir=@libdir@
1459 +includedir=@includedir@
1460 +
1461 +Name:       xmlrpc_server
1462 +Description: XMLRPC Server library
1463 +Version:     @XMLRPC_C_VERSION@
1464 +
1465 +Requires.private:      xmlrpc xmlrpc_util
1466 +Libs:                  -L${libdir} -lxmlrpc_server
1467 +Cflags:                        -I${includedir}
1468 diff --git a/src/xmlrpc_server_abyss.pc.cmake b/src/xmlrpc_server_abyss.pc.cmake
1469 new file mode 100644
1470 index 0000000..198c780
1471 --- /dev/null
1472 +++ b/src/xmlrpc_server_abyss.pc.cmake
1473 @@ -0,0 +1,12 @@
1474 +bindir=@bindir@
1475 +prefix=@prefix@
1476 +libdir=@libdir@
1477 +includedir=@includedir@
1478 +
1479 +Name:       xmlrpc_server_abyss
1480 +Description: XMLRPC Server Abyss library
1481 +Version:     @XMLRPC_C_VERSION@
1482 +
1483 +Requires.private:      xmlrpc_server xmlrpc_abyss xmlrpc xmlrpc_util
1484 +Libs:                  -L${libdir} -lxmlrpc_server_abyss
1485 +Cflags:                        -I${includedir}
1486 diff --git a/src/xmlrpc_server_cgi.pc.cmake b/src/xmlrpc_server_cgi.pc.cmake
1487 new file mode 100644
1488 index 0000000..748b550
1489 --- /dev/null
1490 +++ b/src/xmlrpc_server_cgi.pc.cmake
1491 @@ -0,0 +1,12 @@
1492 +bindir=@bindir@
1493 +prefix=@prefix@
1494 +libdir=@libdir@
1495 +includedir=@includedir@
1496 +
1497 +Name:       xmlrpc_server_cgi
1498 +Description: XMLRPC CGI-Server library
1499 +Version:     @XMLRPC_C_VERSION@
1500 +
1501 +Requires.private:      xmlrpc_server xmlrpc xmlrpc_util
1502 +Libs:                  -L${libdir} -lxmlrpc_server_cgi
1503 +Cflags:                        -I${includedir}
1504 diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
1505 new file mode 100644
1506 index 0000000..e712382
1507 --- /dev/null
1508 +++ b/test/CMakeLists.txt
1509 @@ -0,0 +1,41 @@
1510 +# -*- cmake -*-
1511 +
1512 +set(test_SOURCES
1513 +  abyss.c
1514 +  abyss.h
1515 +  test.c
1516 +  cgi.c
1517 +  method_registry.c
1518 +  parse_xml.c
1519 +  serialize.c
1520 +  serialize_value.c
1521 +  server_abyss.c
1522 +  testtool.c
1523 +  testtool.h
1524 +  value.c
1525 +  value_datetime.c
1526 +  xml_data.c)
1527 +
1528 +if(MUST_BUILD_CLIENT)
1529 +  list(APPEND test_SOURCES client.c)
1530 +  list(APPEND test_LIBS xmlrpc_client)
1531 +else(MUST_BUILD_CLIENT)
1532 +  list(APPEND test_SOURCES client_dummy.c)
1533 +endif(MUST_BUILD_CLIENT)
1534 +
1535 +
1536 +add_executable(src-test ${test_SOURCES})
1537 +target_link_libraries(src-test xmlrpc_server_abyss util ${test_LIBS})
1538 +
1539 +add_executable(src-cgitest1 cgitest1.c testtool.c testtool.h)
1540 +target_link_libraries(src-cgitest1 xmlrpc_server_cgi)
1541 +
1542 +add_custom_command(TARGET src-test
1543 +  POST_BUILD
1544 +  COMMAND rm -f ${CMAKE_CURRENT_BINARY_DIR}/data
1545 +  COMMAND ln -s ${CMAKE_CURRENT_SOURCE_DIR}/data ${CMAKE_CURRENT_BINARY_DIR})
1546 +
1547 +enable_testing()
1548 +add_test(runtests src-test)
1549 +
1550 +add_subdirectory(cpp)
1551 diff --git a/test/cpp/CMakeLists.txt b/test/cpp/CMakeLists.txt
1552 new file mode 100644
1553 index 0000000..15a7c3a
1554 --- /dev/null
1555 +++ b/test/cpp/CMakeLists.txt
1556 @@ -0,0 +1,34 @@
1557 +# -*- cmake -*-
1558 +
1559 +set(testcpp_SOURCES
1560 +  test.cpp
1561 +  base64.cpp
1562 +  registry.cpp
1563 +  server_abyss.cpp
1564 +  server_pstream.cpp
1565 +  tools.cpp
1566 +  value.cpp
1567 +  xml.cpp)
1568 +
1569 +if(MUST_BUILD_CLIENT)
1570 +  list(APPEND testcpp_SOURCES testclient.cpp)
1571 +  list(APPEND testcpp_LIBS xmlrpc_client++)
1572 +else(MUST_BUILD_CLIENT)
1573 +  list(APPEND testcpp_SOURCES testclient_dummy.c)
1574 +endif(MUST_BUILD_CLIENT)
1575 +
1576 +if(DEFINED MSVCRT)
1577 +  list(APPEND testcpp_SOURCES ${CMAKE_SOURCE_DIR}/Windows/socketpair.cpp)
1578 +endif(DEFINED MSVCRT)
1579 +
1580 +add_executable(src-testcpp ${testcpp_SOURCES})
1581 +target_link_libraries(src-testcpp
1582 +  xmlrpc++
1583 +  xmlrpc_server++
1584 +  xmlrpc_server_abyss++
1585 +  xmlrpc_server_pstream++
1586 +  xmlrpc_cpp
1587 +  util ${testcpp_LIBS})
1588 +
1589 +enable_testing()
1590 +add_test(runtests src-testcpp)
1591 diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
1592 new file mode 100644
1593 index 0000000..cd2a6d7
1594 --- /dev/null
1595 +++ b/tools/CMakeLists.txt
1596 @@ -0,0 +1,22 @@
1597 +# -*- cmake -*-
1598 +
1599 +add_subdirectory(lib)
1600 +add_subdirectory(binmode-rpc-kit)
1601 +add_subdirectory(turbocharger)
1602 +add_subdirectory(xml)
1603 +
1604 +if (MUST_BUILD_CLIENT)
1605 +  add_subdirectory(xmlrpc)
1606 +  add_subdirectory(xmlrpc_transport)
1607 +
1608 +
1609 +  if (ENABLE_CPLUSPLUS)
1610 +    add_subdirectory(xml-rpc-api2cpp)
1611 +    add_subdirectory(xml-rpc-api2txt)
1612 +    add_subdirectory(xmlrpc_cpp_proxy)
1613 +
1614 +    if (BUILD_XMLRPC_PSTREAM AND ENABLE_CGI_SERVER)
1615 +      add_subdirectory(xmlrpc_pstream)
1616 +    endif()
1617 +  endif()
1618 +endif()
1619 diff --git a/tools/binmode-rpc-kit/CMakeLists.txt b/tools/binmode-rpc-kit/CMakeLists.txt
1620 new file mode 100644
1621 index 0000000..342423d
1622 --- /dev/null
1623 +++ b/tools/binmode-rpc-kit/CMakeLists.txt
1624 @@ -0,0 +1 @@
1625 +# -*- cmake -*-
1626 diff --git a/tools/lib/CMakeLists.txt b/tools/lib/CMakeLists.txt
1627 new file mode 100644
1628 index 0000000..342423d
1629 --- /dev/null
1630 +++ b/tools/lib/CMakeLists.txt
1631 @@ -0,0 +1 @@
1632 +# -*- cmake -*-
1633 diff --git a/tools/turbocharger/CMakeLists.txt b/tools/turbocharger/CMakeLists.txt
1634 new file mode 100644
1635 index 0000000..342423d
1636 --- /dev/null
1637 +++ b/tools/turbocharger/CMakeLists.txt
1638 @@ -0,0 +1 @@
1639 +# -*- cmake -*-
1640 diff --git a/tools/xml-rpc-api2cpp/CMakeLists.txt b/tools/xml-rpc-api2cpp/CMakeLists.txt
1641 new file mode 100644
1642 index 0000000..1e9134a
1643 --- /dev/null
1644 +++ b/tools/xml-rpc-api2cpp/CMakeLists.txt
1645 @@ -0,0 +1,15 @@
1646 +# -*- cmake -*-
1647 +
1648 +add_executable(xml-rpc-api2cpp
1649 +  xml-rpc-api2cpp.cpp
1650 +  DataType.cpp
1651 +  XmlRpcFunction.cpp
1652 +  XmlRpcClass.cpp
1653 +  SystemProxy.cpp)
1654 +target_link_libraries(xml-rpc-api2cpp xmlrpc_cpp xmlrpc_client)
1655 +
1656 +install(TARGETS xml-rpc-api2cpp
1657 +  RUNTIME DESTINATION bin)
1658 +
1659 +install(FILES xml-rpc-api2cpp.1
1660 +  DESTINATION ${mandir}/man1)
1661 diff --git a/tools/xml-rpc-api2txt/CMakeLists.txt b/tools/xml-rpc-api2txt/CMakeLists.txt
1662 new file mode 100644
1663 index 0000000..5b01824
1664 --- /dev/null
1665 +++ b/tools/xml-rpc-api2txt/CMakeLists.txt
1666 @@ -0,0 +1,7 @@
1667 +# -*- cmake -*-
1668 +
1669 +install(PROGRAMS xml-rpc-api2txt
1670 +  DESTINATION ${bindir})
1671 +
1672 +install(FILES xml-rpc-api2txt.1
1673 +  DESTINATION ${mandir}/man1)
1674 diff --git a/tools/xml/CMakeLists.txt b/tools/xml/CMakeLists.txt
1675 new file mode 100644
1676 index 0000000..0bab80c
1677 --- /dev/null
1678 +++ b/tools/xml/CMakeLists.txt
1679 @@ -0,0 +1,16 @@
1680 +# -*- cmake -*-
1681 +
1682 +add_executable(xmlrpc_parsecall
1683 +  xmlrpc_parsecall.c
1684 +  ../lib/dumpvalue.c)
1685 +
1686 +target_link_libraries(xmlrpc_parsecall
1687 +  xmlrpc
1688 +  util)
1689 +
1690 +install(TARGETS xmlrpc_parsecall
1691 +  DESTINATION ${_bin})
1692 +
1693 +include_directories(../lib/include)
1694 +
1695 +ensc_set_link_exe_flags(xmlrpc_parsecall)
1696 diff --git a/tools/xmlrpc/CMakeLists.txt b/tools/xmlrpc/CMakeLists.txt
1697 new file mode 100644
1698 index 0000000..da01ec3
1699 --- /dev/null
1700 +++ b/tools/xmlrpc/CMakeLists.txt
1701 @@ -0,0 +1,17 @@
1702 +# -*- cmake -*-
1703 +
1704 +#set_directory_properties(PROPERTIES INCLUDE_DIRECTORIES ../lib/include)
1705 +
1706 +include_directories(../lib/include)
1707 +add_executable(tool-xmlrpc
1708 +  xmlrpc.c
1709 +  ../lib/dumpvalue.c)
1710 +target_link_libraries(tool-xmlrpc xmlrpc_client util)
1711 +
1712 +set_target_properties(tool-xmlrpc
1713 +  PROPERTIES OUTPUT_NAME xmlrpc)
1714 +
1715 +install(TARGETS tool-xmlrpc
1716 +  DESTINATION ${_bin})
1717 +
1718 +ensc_set_link_exe_flags(tool-xmlrpc)
1719 diff --git a/tools/xmlrpc/config.h b/tools/xmlrpc/config.h
1720 new file mode 100644
1721 index 0000000..7409aed
1722 --- /dev/null
1723 +++ b/tools/xmlrpc/config.h
1724 @@ -0,0 +1 @@
1725 +#include <xmlrpc_config.h>
1726 diff --git a/tools/xmlrpc_cpp_proxy/CMakeLists.txt b/tools/xmlrpc_cpp_proxy/CMakeLists.txt
1727 new file mode 100644
1728 index 0000000..4166023
1729 --- /dev/null
1730 +++ b/tools/xmlrpc_cpp_proxy/CMakeLists.txt
1731 @@ -0,0 +1,17 @@
1732 +# -*- cmake -*-
1733 +
1734 +add_executable(xmlrpc_cpp_proxy
1735 +  proxyClass.cpp
1736 +  proxyClass.hpp
1737 +  systemProxy.cpp
1738 +  systemProxy.hpp
1739 +  xmlrpcMethod.cpp
1740 +  xmlrpcMethod.hpp
1741 +  xmlrpcType.cpp
1742 +  xmlrpcType.hpp
1743 +  xmlrpc_cpp_proxy.cpp
1744 +)
1745 +target_link_libraries(xmlrpc_cpp_proxy xmlrpc_client++)
1746 +
1747 +install(TARGETS xmlrpc_cpp_proxy
1748 +  RUNTIME DESTINATION bin)
1749 diff --git a/tools/xmlrpc_pstream/CMakeLists.txt b/tools/xmlrpc_pstream/CMakeLists.txt
1750 new file mode 100644
1751 index 0000000..b277bc8
1752 --- /dev/null
1753 +++ b/tools/xmlrpc_pstream/CMakeLists.txt
1754 @@ -0,0 +1,16 @@
1755 +# -*- cmake -*-
1756 +
1757 +add_executable(xmlrpc_pstream
1758 +  xmlrpc_pstream.cpp
1759 +  ../lib/dumpvalue.c)
1760 +
1761 +target_link_libraries(xmlrpc_pstream
1762 +  ${READLINE}
1763 +  ${NCURSES_LIBRARIES}
1764 +  xmlrpc_client++
1765 +  util)
1766 +
1767 +include_directories(../lib/include)
1768 +
1769 +install(TARGETS xmlrpc_pstream
1770 +  RUNTIME DESTINATION bin)
1771 diff --git a/tools/xmlrpc_transport/CMakeLists.txt b/tools/xmlrpc_transport/CMakeLists.txt
1772 new file mode 100644
1773 index 0000000..b73d7c0
1774 --- /dev/null
1775 +++ b/tools/xmlrpc_transport/CMakeLists.txt
1776 @@ -0,0 +1,9 @@
1777 +# -*- cmake -*-
1778 +
1779 +add_executable(xmlrpc_transport xmlrpc_transport.c)
1780 +target_link_libraries(xmlrpc_transport xmlrpc_client util)
1781 +
1782 +install(TARGETS xmlrpc_transport
1783 +  DESTINATION ${_bin})
1784 +
1785 +ensc_set_link_exe_flags(xmlrpc_transport)
1786 diff --git a/tools/xmlrpc_transport/config.h b/tools/xmlrpc_transport/config.h
1787 new file mode 100644
1788 index 0000000..7409aed
1789 --- /dev/null
1790 +++ b/tools/xmlrpc_transport/config.h
1791 @@ -0,0 +1 @@
1792 +#include <xmlrpc_config.h>
1793 diff --git a/transport_config.h.cmake b/transport_config.h.cmake
1794 new file mode 100644
1795 index 0000000..1ec3cf6
1796 --- /dev/null
1797 +++ b/transport_config.h.cmake
1798 @@ -0,0 +1,16 @@
1799 +/* -*- c -*- */
1800 +#define MUST_BUILD_WININET_CLIENT      @_MUST_BUILD_WININET_CLIENT@
1801 +#define MUST_BUILD_LIBWWW_CLIENT       @_MUST_BUILD_LIBWWW_CLIENT@
1802 +#define MUST_BUILD_CURL_CLIENT         @_MUST_BUILD_CURL_CLIENT@
1803 +
1804 +static char const * const XMLRPC_DEFAULT_TRANSPORT =
1805 +#if MUST_BUILD_LIBWWW_CLIENT
1806 +  "libwww"
1807 +#elif MUST_BUILD_CURL_CLIENT
1808 +  "curl"
1809 +#elif MUST_BUILD_WININET_CLIENT
1810 +  "wininet"
1811 +#else
1812 +#  error "no client XML transport configured"
1813 +#endif
1814 +  ;
1815 diff --git a/version.h.cmake b/version.h.cmake
1816 new file mode 100644
1817 index 0000000..0c964a3
1818 --- /dev/null
1819 +++ b/version.h.cmake
1820 @@ -0,0 +1,5 @@
1821 +/* This file was generated by a make rule */
1822 +#define XMLRPC_C_VERSION       "@XMLRPC_C_VERSION@"
1823 +#define XMLRPC_VERSION_MAJOR   @XMLRPC_C_VERSION_MAJOR_NUM@
1824 +#define XMLRPC_VERSION_MINOR   @XMLRPC_C_VERSION_MINOR_NUM@
1825 +#define XMLRPC_VERSION_POINT   @XMLRPC_C_VERSION_POINT_NUM@
1826 diff --git a/xmlrpc-c-config b/xmlrpc-c-config
1827 new file mode 100755
1828 index 0000000..50577fd
1829 --- /dev/null
1830 +++ b/xmlrpc-c-config
1831 @@ -0,0 +1,105 @@
1832 +#! /bin/sh
1833 +
1834 +comp=
1835 +
1836 +need_cxx=
1837 +need_client=
1838 +need_server=
1839 +need_abyss=
1840 +need_pstream=
1841 +need_packetsocket=
1842 +need_cgi=
1843 +
1844 +show_help() {
1845 +    cat <<EOF
1846 +Usage: xmlrpc-c-config <feature> ... <option> ...
1847 +
1848 +The features are:
1849 +  c++            legacy C++ wrapper API
1850 +  c++2           modern C++ API
1851 +  client         client functions
1852 +  cgi-server     CGI-based server functions
1853 +  abyss-server   ABYSS-based server functions
1854 +  pstream-server pstream-based server functions
1855 +  server-util    basic server functions (implied by *-server)
1856 +
1857 +Options are:
1858 +  --version      The version number of the package
1859 +  --features     List all features (aka modules) currently installed
1860 +  --cflags       C compiler flags to use when '#include'ing package headers
1861 +  --libs         Libraries and flags to use when linking programs normally
1862 +  --ldadd        Libraries to use with automake
1863 +  --ldflags      Flags to use with automake & libtool
1864 +  --prefix       The prefix under which the package was installed
1865 +EOF
1866 +    exit $1
1867 +}
1868 +
1869 +test $# -ne 0 || show_help 1 >&2
1870 +
1871 +while test $# -gt 0; do
1872 +    case $1 in
1873 +      (c++)                    comp="$comp xmlrpc_cpp";;
1874 +      (server-util)            need_server=1;;
1875 +      (cgi-server)             need_cgi=1;;
1876 +      (c++2)                   need_cxx=1;;
1877 +      (abyss-server)           need_abyss=1;;
1878 +      (pstream-server)         need_pstream=1;;
1879 +      (packetsocket)           need_packetsocket=1;;
1880 +      (client|libwww-client)   need_client=1;;
1881 +      (--help)                 show_help 0;;
1882 +      (--) shift; break;;
1883 +      (--*) break;;
1884 +      (*)
1885 +      echo "Unrecognized token '$1'"
1886 +      exit 1
1887 +      ;;
1888 +    esac
1889 +    shift
1890 +done
1891 +
1892 +if test -z "$need_cxx"; then
1893 +    test -z "$need_client" || comp="$comp xmlrpc_client"
1894 +    test -z "$need_abyss"  || comp="$comp xmlrpc_server_abyss"
1895 +    test -z "$need_server" || comp="$comp xmlrpc_server"
1896 +    test -z "$need_cgi"    || comp="$comp xmlrpc_server_cgi"
1897 +else
1898 +    test -z "$need_client" || comp="$comp xmlrpc_client++"
1899 +    test -z "$need_abyss"  || comp="$comp xmlrpc_server_abyss++"
1900 +    test -z "$need_server" || comp="$comp xmlrpc_server++"
1901 +    test -z "$need_cgi"    || comp="$comp xmlrpc_server_cgi++"
1902 +fi
1903 +
1904 +test -z "$need_pstream"      || comp="$comp xmlrpc_server_pstream++"
1905 +test -z "$need_packetsocket" || comp="$comp xmlrpc_packetsocket"
1906 +test -n "$comp"              || comp="xmlrpc xmlrpc_util"
1907 +
1908 +case $1 in
1909 +  (--features|--modules)
1910 +  echo "c++ abyss-server curl-client"
1911 +  exit 0
1912 +  ;;
1913 +  (--version)
1914 +  comp=xmlrpc
1915 +  set -- --modversion
1916 +  ;;
1917 +  (--exec-prefix)
1918 +  comp=xmlrpc
1919 +  set -- --variable=prefix
1920 +  ;;
1921 +  (--*dir|--prefix)
1922 +  comp=xmlrpc
1923 +  set -- --variable=${1##--}
1924 +  ;;
1925 +  (--ldflags)
1926 +  set -- --libs-only-L
1927 +  ;;
1928 +  (--ldadd)
1929 +  set -- --libs-only-l
1930 +  ;;
1931 +  (--cflags)
1932 +  set -- "$1"
1933 +  ;;
1934 +esac
1935 +
1936 +exec pkg-config "$@" $comp
1937 diff --git a/xmlrpc_config.h.cmake b/xmlrpc_config.h.cmake
1938 new file mode 100644
1939 index 0000000..9eff724
1940 --- /dev/null
1941 +++ b/xmlrpc_config.h.cmake
1942 @@ -0,0 +1,183 @@
1943 +/* -*- c -*- */
1944 +
1945 +#ifndef H_XMLRPC_C_CONFIG_H
1946 +
1947 +#define HAVE_SYS_IOCTL_H               0@HAVE_SYS_IOCTL_H@
1948 +#define HAVE_SYS_SELECT_H_DEFINE       0@HAVE_SYS_IOCTL_H@
1949 +
1950 +#define VA_LIST_IS_ARRAY       @VA_LIST_IS_ARRAY@
1951 +#define XMLRPC_HAVE_WCHAR      @XMLRPC_HAVE_WCHAR@
1952 +#define ATTR_UNUSED            @ATTR_UNUSED@
1953 +#define DIRECTORY_SEPARATOR    "@DIRECTORY_SEPARATOR@"
1954 +
1955 +#cmakedefine HAVE_SYS_SELECT_H 1
1956 +#cmakedefine HAVE_WCHAR_H      1
1957 +#cmakedefine HAVE_SETENV       1
1958 +#cmakedefine HAVE_STRCASECMP   1
1959 +#cmakedefine HAVE__STRICMP     1
1960 +#cmakedefine HAVE_STRICMP      1
1961 +#cmakedefine HAVE_GETTIMEOFDAY 1
1962 +#cmakedefine HAVE_SETGROUPS    1
1963 +#cmakedefine HAVE_ASPRINTF     1
1964 +#cmakedefine HAVE_PSELECT      1
1965 +#cmakedefine HAVE_WCSNCMP      1
1966 +#cmakedefine HAVE_LOCALTIME_R  1
1967 +#cmakedefine HAVE_GMTIME_R     1
1968 +#cmakedefine HAVE_STRTOLL      1
1969 +#cmakedefine HAVE___STRTOLL    1
1970 +#cmakedefine HAVE_STRTOULL     1
1971 +#cmakedefine HAVE___STRTOULL   1
1972 +#cmakedefine HAVE_STRTOQ       1
1973 +#cmakedefine HAVE_STRTOUQ      1
1974 +
1975 +#define HAVE_UNICODE_WCHAR     HAVE_WCHAR_H
1976 +
1977 +/*  Xmlrpc-c code uses __inline__ to declare functions that should
1978 +    be compiled as inline code.  GNU C recognizes the __inline__ keyword.
1979 +    Others recognize 'inline' or '__inline' or nothing at all to say
1980 +    a function should be inlined.
1981 +
1982 +    We could make 'configure' simply do a trial compile to figure out
1983 +    which one, but for now, this approximation is easier:
1984 +*/
1985 +#if (!defined(__GNUC__))
1986 +  #if (!defined(__inline__))
1987 +    #if (defined(__sgi) || defined(_AIX) || defined(_MSC_VER))
1988 +      #define __inline__ __inline
1989 +    #else
1990 +      #define __inline__
1991 +    #endif
1992 +  #endif
1993 +#endif
1994 +
1995 +/* MSVCRT means we're using the Microsoft Visual C++ runtime library */
1996 +
1997 +#if defined(_MSC_VER)
1998 +  /* The compiler is Microsoft Visual C++ */
1999 +  #define MSVCRT _MSC_VER
2000 +#elif defined(__MINGW32__)
2001 +  /* The compiler is Mingw, which is the Windows version of the GNU
2002 +     compiler. Programs built with this normally use the Microsoft Visual
2003 +     C++ runtime library.
2004 +  */
2005 +  #define MSVCRT 1
2006 +#else
2007 +  #define MSVCRT 0
2008 +#endif
2009 +
2010 +#if MSVCRT
2011 +  /* The MSVC runtime library _does_ have a 'struct timeval', but it is
2012 +     part of the Winsock interface (along with select(), which is probably
2013 +     its intended use), so isn't intended for use for general timekeeping.
2014 +  */
2015 +  #define HAVE_TIMEVAL 0
2016 +  #define HAVE_TIMESPEC 0
2017 +#else
2018 +  #define HAVE_TIMEVAL 1
2019 +  /* timespec is Posix.1b.  If we need to work on a non-Posix.1b non-Windows
2020 +     system, we'll have to figure out how to make Configure determine this.
2021 +  */
2022 +  #define HAVE_TIMESPEC 1
2023 +#endif
2024 +
2025 +#if MSVCRT
2026 +  #define HAVE_WINDOWS_THREAD 1
2027 +#else
2028 +  #define HAVE_WINDOWS_THREAD 0
2029 +#endif
2030 +
2031 +#define HAVE_PTHREAD 1
2032 +
2033 +/* Note that the return value of XMLRPC_VSNPRINTF is int on Windows,
2034 +   ssize_t on POSIX.
2035 +*/
2036 +#if MSVCRT
2037 +  #define XMLRPC_VSNPRINTF _vsnprintf
2038 +#else
2039 +  #define XMLRPC_VSNPRINTF vsnprintf
2040 +#endif
2041 +
2042 +#if MSVCRT
2043 +  #define HAVE_REGEX 0
2044 +#else
2045 +  #define HAVE_REGEX 1
2046 +#endif
2047 +
2048 +#if MSVCRT
2049 +  #define XMLRPC_SOCKETPAIR xmlrpc_win32_socketpair
2050 +  #define XMLRPC_CLOSESOCKET closesocket
2051 +#else
2052 +  #define XMLRPC_SOCKETPAIR socketpair
2053 +  #define XMLRPC_CLOSESOCKET close
2054 +#endif
2055 +
2056 +#if defined(_MSC_VER) && (_MSC_VER >= 1400)
2057 +/* Starting with MSVC 8, the runtime library defines various POSIX functions
2058 +   such as strdup() whose names violate the ISO C standard (the standard
2059 +   says the strXXX names are reserved for the standard), but warns you of
2060 +   the standards violation.  That warning is 4996, along with other warnings
2061 +   that tell you you're using a function that Microsoft thinks you
2062 +   shouldn't.
2063 +
2064 +   Well, POSIX is more important than that element of ISO C, so we disable
2065 +   that warning.
2066 +
2067 +   FYI, msvcrt also defines _strdup(), etc, which doesn't violate the
2068 +   naming standard.  But since other environments don't define _strdup(),
2069 +   we can't use it in portable code.
2070 +*/
2071 +#pragma warning(disable:4996)
2072 +#endif
2073 +
2074 +#if HAVE_STRTOLL
2075 +  # define XMLRPC_STRTOLL strtoll
2076 +#elif HAVE_STRTOQ
2077 +  # define XMLRPC_STRTOLL strtoq /* Interix */
2078 +#elif HAVE___STRTOLL
2079 +  # define XMLRPC_STRTOLL __strtoll /* HP-UX <= 11.11 */
2080 +#elif HAVE__STRTOUI64
2081 +  #define XMLRPC_STRTOLL _strtoui64  /* Windows MSVC */
2082 +#endif
2083 +
2084 +#if HAVE_STRTOULL
2085 +  # define XMLRPC_STRTOULL strtoull
2086 +#elif HAVE_STRTOUQ
2087 +  # define XMLRPC_STRTOULL strtouq /* Interix */
2088 +#elif HAVE___STRTOULL
2089 +  # define XMLRPC_STRTOULL __strtoull /* HP-UX <= 11.11 */
2090 +#elif HAVE__STRTOUI64
2091 +  #define XMLRPC_STRTOULL _strtoui64  /* Windows MSVC */
2092 +#endif
2093 +
2094 +#if MSVCRT
2095 +  #define snprintf _snprintf
2096 +  #define popen _popen
2097 +#endif
2098 +
2099 +#define XMLRPC_INT64  int64_t
2100 +#define XMLRPC_PRId64 PRId64
2101 +
2102 +/* S_IRUSR is POSIX, defined in <sys/stat.h> Some old BSD systems and Windows
2103 +   systems have S_IREAD instead.  Most Unix today (2011) has both.  In 2011,
2104 +   Android has S_IRUSR and not S_IREAD.
2105 +
2106 +   Some Windows has _S_IREAD.
2107 +
2108 +   We're ignoring S_IREAD now to see if anyone misses it.  If there are still
2109 +   users that need it, we can handle it here.
2110 +*/
2111 +#if MSVCRT
2112 +  #define XMLRPC_S_IWUSR _S_IWRITE
2113 +  #define XMLRPC_S_IRUSR _S_IREAD
2114 +#else
2115 +  #define XMLRPC_S_IWUSR S_IWUSR
2116 +  #define XMLRPC_S_IRUSR S_IRUSR
2117 +#endif
2118 +
2119 +#if MSVCRT
2120 +  #define XMLRPC_CHDIR _chdir
2121 +#else
2122 +  #define XMLRPC_CHDIR chdir
2123 +#endif
2124 +
2125 +#endif
2126 -- 
2127 1.7.10.4
2128
This page took 0.262125 seconds and 2 git commands to generate.