CMakeLists.txt 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. PROJECT(XMLRPC)
  2. INCLUDE_REGULAR_EXPRESSION("^.*$")
  3. # Include all the necessary files for macros
  4. SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake")
  5. # Check if header file exists and add it to the list.
  6. SET(CURRENT_INCLUDES)
  7. INCLUDE (CheckIncludeFiles)
  8. MACRO(CHECK_INCLUDE_FILE_CONCAT FILE VARIABLE)
  9. CHECK_INCLUDE_FILES("${CURRENT_INCLUDES};${FILE}" ${VARIABLE})
  10. IF(${VARIABLE})
  11. SET(CURRENT_INCLUDES ${CURRENT_INCLUDES} ${FILE})
  12. ENDIF(${VARIABLE})
  13. ENDMACRO(CHECK_INCLUDE_FILE_CONCAT)
  14. CHECK_INCLUDE_FILE_CONCAT("stdio.h" HAVE_STDIO_H)
  15. CHECK_INCLUDE_FILE_CONCAT("stdarg.h" HAVE_STDARG_H)
  16. CHECK_INCLUDE_FILE_CONCAT("sys/filio.h" HAVE_SYS_FILIO_H)
  17. CHECK_INCLUDE_FILE_CONCAT("sys/ioctl.h" HAVE_SYS_IOCTL_H)
  18. CHECK_INCLUDE_FILE_CONCAT("wchar.h" HAVE_WCHAR_H)
  19. INCLUDE (CheckSymbolExists)
  20. CHECK_SYMBOL_EXISTS(asprintf "${CURRENT_INCLUDES}" HAVE_ASPRINTF)
  21. CHECK_SYMBOL_EXISTS(setgroups "${CURRENT_INCLUDES}" HAVE_SETGROUPS)
  22. INCLUDE (CheckTypeSize)
  23. CHECK_TYPE_SIZE(size_t SIZEOF_SIZE_T)
  24. INCLUDE (TryCompileFromSource)
  25. SET(HEADER_INCLUDES "${CURRENT_INCLUDES}")
  26. TRY_COMPILE_FROM_SOURCE("va_list list1, list2; list1 = list2"
  27. VA_LIST_ISNOT_ARRAY_DEFINE)
  28. SET(VA_LIST_IS_ARRAY_DEFINE 0)
  29. IF(NOT VA_LIST_ISNOT_ARRAY_DEFINE)
  30. SET(VA_LIST_IS_ARRAY_DEFINE 1)
  31. ENDIF(NOT VA_LIST_ISNOT_ARRAY_DEFINE)
  32. TRY_COMPILE_FROM_SOURCE("int x __attribute__((__unused__))"
  33. ATTR_UNUSED_VAR)
  34. SET(ATTR_UNUSED)
  35. IF(ATTR_UNUSED_VAR)
  36. SET(ATTR_UNUSED "__attribute__((__unused__))")
  37. ENDIF(ATTR_UNUSED_VAR)
  38. SET(HAVE_LIBWWW_SSL)
  39. SET(DIRECTORY_SEPARATOR "/")
  40. FIND_PACKAGE(Threads)
  41. SET(HAVE_PTHREADS)
  42. IF(WIN32 OR CMAKE_USE_PTHREADS_INIT)
  43. SET(HAVE_PTHREADS 1)
  44. ENDIF(WIN32 OR CMAKE_USE_PTHREADS_INIT)
  45. INCLUDE_DIRECTORIES(
  46. "${CMAKE_CURRENT_SOURCE_DIR}"
  47. "${CMAKE_CURRENT_BINARY_DIR}"
  48. ${CMAKE_EXPAT_INCLUDES}
  49. ${CMAKE_CURL_INCLUDES}
  50. )
  51. CONFIGURE_FILE(
  52. "${CMAKE_CURRENT_SOURCE_DIR}/xmlrpc_config.h.in"
  53. "${CMAKE_CURRENT_BINARY_DIR}/xmlrpc_config.h"
  54. )
  55. CONFIGURE_FILE(
  56. "${CMAKE_CURRENT_SOURCE_DIR}/xmlrpc_amconfig.h.in"
  57. "${CMAKE_CURRENT_BINARY_DIR}/xmlrpc_amconfig.h"
  58. )
  59. SET(xmlrpc_SRCS
  60. #XmlRpcCpp.cpp
  61. xmlrpc_array.c
  62. xmlrpc_authcookie.c
  63. xmlrpc_base64.c
  64. xmlrpc_client.c
  65. xmlrpc_data.c
  66. xmlrpc_expat.c
  67. xmlrpc_parse.c
  68. xmlrpc_registry.c
  69. xmlrpc_serialize.c
  70. xmlrpc_curl_transport.c
  71. #xmlrpc_server_abyss.c
  72. xmlrpc_struct.c
  73. xmlrpc_strutil.c
  74. xmlrpc_support.c
  75. xmlrpc_utf8.c
  76. casprintf.c
  77. )
  78. IF(WIN32)
  79. SET(xmlrpc_SRCS ${xmlrpc_SRCS}
  80. win32_pthreads.c
  81. )
  82. ENDIF(WIN32)
  83. ADD_LIBRARY(cmXMLRPC ${xmlrpc_SRCS})
  84. TARGET_LINK_LIBRARIES(cmXMLRPC ${CMAKE_EXPAT_LIBRARIES} ${CMAKE_CURL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
  85. ADD_EXECUTABLE(xrtest synch_client.c)
  86. TARGET_LINK_LIBRARIES(xrtest cmXMLRPC)
  87. ADD_TEST(Test-XMLRPC ${EXECUTABLE_OUTPUT_PATH}/xrtest)