PROJECT(XMLRPC) INCLUDE_REGULAR_EXPRESSION("^.*$") # Disable warnings on Borland to avoid changing 3rd party code. IF(BORLAND) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w-") ENDIF(BORLAND) # Include all the necessary files for macros SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake") # Check if header file exists and add it to the list. SET(CURRENT_INCLUDES) INCLUDE (CheckIncludeFiles) MACRO(CHECK_INCLUDE_FILE_CONCAT FILE VARIABLE) CHECK_INCLUDE_FILES("${CURRENT_INCLUDES};${FILE}" ${VARIABLE}) IF(${VARIABLE}) SET(CURRENT_INCLUDES ${CURRENT_INCLUDES} ${FILE}) ENDIF(${VARIABLE}) ENDMACRO(CHECK_INCLUDE_FILE_CONCAT) CHECK_INCLUDE_FILE_CONCAT("stdio.h" HAVE_STDIO_H) CHECK_INCLUDE_FILE_CONCAT("stdarg.h" HAVE_STDARG_H) CHECK_INCLUDE_FILE_CONCAT("sys/filio.h" HAVE_SYS_FILIO_H) CHECK_INCLUDE_FILE_CONCAT("sys/ioctl.h" HAVE_SYS_IOCTL_H) CHECK_INCLUDE_FILE_CONCAT("wchar.h" HAVE_WCHAR_H) IF(HAVE_WCHAR_H) OPTION(HAVE_UNICODE_WCHAR "Enable Unicode Support" YES) MARK_AS_ADVANCED(HAVE_UNICODE_WCHAR) ELSE(HAVE_WCHAR_H) SET(HAVE_UNICODE_WCHAR 0) ENDIF(HAVE_WCHAR_H) INCLUDE (CheckSymbolExists) CHECK_SYMBOL_EXISTS(asprintf "${CURRENT_INCLUDES}" HAVE_ASPRINTF) CHECK_SYMBOL_EXISTS(setgroups "${CURRENT_INCLUDES}" HAVE_SETGROUPS) INCLUDE (CheckTypeSize) CHECK_TYPE_SIZE(size_t SIZEOF_SIZE_T) INCLUDE (TryCompileFromSource) SET(HEADER_INCLUDES "${CURRENT_INCLUDES}") TRY_COMPILE_FROM_SOURCE("va_list list1, list2; list1 = list2" VA_LIST_ISNOT_ARRAY_DEFINE) SET(VA_LIST_IS_ARRAY_DEFINE 0) IF(NOT VA_LIST_ISNOT_ARRAY_DEFINE) SET(VA_LIST_IS_ARRAY_DEFINE 1) ENDIF(NOT VA_LIST_ISNOT_ARRAY_DEFINE) TRY_COMPILE_FROM_SOURCE("int x __attribute__((__unused__))" ATTR_UNUSED_VAR) SET(ATTR_UNUSED) IF(ATTR_UNUSED_VAR) SET(ATTR_UNUSED "__attribute__((__unused__))") ENDIF(ATTR_UNUSED_VAR) SET(HAVE_LIBWWW_SSL) SET(DIRECTORY_SEPARATOR "/") SET(HAVE_PTHREADS 0) IF(CMAKE_BUILD_XMLRPC_WITH_THREADS) FIND_PACKAGE(Threads) IF(WIN32 OR CMAKE_USE_PTHREADS_INIT) SET(HAVE_PTHREADS 1) ENDIF(WIN32 OR CMAKE_USE_PTHREADS_INIT) ENDIF(CMAKE_BUILD_XMLRPC_WITH_THREADS) INCLUDE_DIRECTORIES( "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}" ${CMAKE_EXPAT_INCLUDES} ${CMAKE_CURL_INCLUDES} ) CONFIGURE_FILE( "${CMAKE_CURRENT_SOURCE_DIR}/xmlrpc_config.h.in" "${CMAKE_CURRENT_BINARY_DIR}/xmlrpc_config.h" ) CONFIGURE_FILE( "${CMAKE_CURRENT_SOURCE_DIR}/xmlrpc_amconfig.h.in" "${CMAKE_CURRENT_BINARY_DIR}/xmlrpc_amconfig.h" ) SET(xmlrpc_SRCS #XmlRpcCpp.cpp xmlrpc_array.c xmlrpc_authcookie.c xmlrpc_base64.c xmlrpc_client.c xmlrpc_data.c xmlrpc_expat.c xmlrpc_parse.c xmlrpc_registry.c xmlrpc_serialize.c xmlrpc_curl_transport.c #xmlrpc_server_abyss.c xmlrpc_struct.c xmlrpc_strutil.c xmlrpc_support.c casprintf.c ) IF(HAVE_UNICODE_WCHAR) SET(xmlrpc_SRCS ${xmlrpc_SRCS} xmlrpc_utf8.c ) ENDIF(HAVE_UNICODE_WCHAR) IF(WIN32) SET(xmlrpc_SRCS ${xmlrpc_SRCS} win32_pthreads.c ) ENDIF(WIN32) ADD_LIBRARY(cmXMLRPC ${xmlrpc_SRCS}) TARGET_LINK_LIBRARIES(cmXMLRPC ${CMAKE_EXPAT_LIBRARIES} ${CMAKE_CURL_LIBRARIES}) IF(HAVE_PTHREADS) TARGET_LINK_LIBRARIES(cmXMLRPC ${CMAKE_THREAD_LIBS_INIT}) ENDIF(HAVE_PTHREADS) ADD_EXECUTABLE(xrtest synch_client.c) TARGET_LINK_LIBRARIES(xrtest cmXMLRPC ${CMAKE_DL_LIBS}) # comment out test since it doesn pass and Andy doesn;t seem to be fixing it, # for now assume that XMLRPC is not production quality code - Ken # ADD_TEST(Test-XMLRPC ${EXECUTABLE_OUTPUT_PATH}/xrtest)