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