CMakeLists.txt 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. project(libcsync)
  2. set(CMAKE_AUTOMOC TRUE)
  3. add_definitions(-DQT_NO_CAST_TO_ASCII
  4. -DQT_NO_CAST_FROM_ASCII
  5. -DQT_NO_URL_CAST_FROM_STRING
  6. -DQT_NO_CAST_FROM_BYTEARRAY)
  7. # global needed variables
  8. set(APPLICATION_NAME "ocsync")
  9. set(LIBRARY_VERSION ${MIRALL_VERSION})
  10. set(LIBRARY_SOVERSION "0")
  11. # add definitions
  12. include(DefineCMakeDefaults)
  13. include(DefinePlatformDefaults)
  14. include(DefineCompilerFlags)
  15. include(DefineOptions.cmake)
  16. include(DefineInstallationPaths)
  17. if (APPLE OR WIN32)
  18. set(USE_OUR_OWN_SQLITE3 TRUE)
  19. else()
  20. find_package(SQLite3 3.8.0 REQUIRED)
  21. endif()
  22. include(ConfigureChecks.cmake)
  23. include(../common/common.cmake)
  24. if (MEM_NULL_TESTS)
  25. add_definitions(-DCSYNC_MEM_NULL_TESTS)
  26. endif (MEM_NULL_TESTS)
  27. # Specific option for builds tied to servers that do not support renaming extensions
  28. set(NO_RENAME_EXTENSION 0 CACHE BOOL "Do not issue rename if the extension changes")
  29. if(NO_RENAME_EXTENSION)
  30. add_definitions(-DNO_RENAME_EXTENSION)
  31. endif()
  32. set(csync_SRCS
  33. csync.h
  34. csync.cpp
  35. csync_exclude.h
  36. csync_exclude.cpp
  37. std/c_time.h
  38. std/c_time.cpp
  39. vio/csync_vio_local.h
  40. )
  41. if (WIN32)
  42. list(APPEND csync_SRCS
  43. vio/csync_vio_local_win.cpp
  44. )
  45. else()
  46. list(APPEND csync_SRCS
  47. vio/csync_vio_local_unix.cpp
  48. )
  49. endif()
  50. configure_file(csync_version.h.in ${CMAKE_CURRENT_BINARY_DIR}/csync_version.h)
  51. add_library(nextcloud_csync SHARED ${common_SOURCES} ${csync_SRCS})
  52. add_library(Nextcloud::csync ALIAS nextcloud_csync)
  53. target_include_directories(
  54. nextcloud_csync
  55. PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/std
  56. )
  57. if(USE_OUR_OWN_SQLITE3)
  58. message(STATUS "Using own sqlite3 version")
  59. add_library(sqlite3 STATIC "${CMAKE_SOURCE_DIR}/src/3rdparty/sqlite3/sqlite3.c")
  60. target_include_directories(sqlite3 PUBLIC "${CMAKE_SOURCE_DIR}/src/3rdparty/sqlite3")
  61. target_link_libraries(nextcloud_csync PUBLIC sqlite3)
  62. else()
  63. target_include_directories(nextcloud_csync PUBLIC ${SQLITE3_INCLUDE_DIR})
  64. target_link_libraries(nextcloud_csync PUBLIC ${SQLITE3_LIBRARIES})
  65. endif()
  66. generate_export_header(nextcloud_csync
  67. EXPORT_MACRO_NAME OCSYNC_EXPORT
  68. EXPORT_FILE_NAME ocsynclib.h
  69. )
  70. target_link_libraries(nextcloud_csync
  71. PUBLIC
  72. ${CSYNC_REQUIRED_LIBRARIES}
  73. Qt5::Core Qt5::Concurrent
  74. )
  75. if(ZLIB_FOUND)
  76. target_link_libraries(nextcloud_csync PUBLIC ZLIB::ZLIB)
  77. endif(ZLIB_FOUND)
  78. # For src/common/utility_mac.cpp
  79. if (APPLE)
  80. find_library(FOUNDATION_LIBRARY NAMES Foundation)
  81. find_library(CORESERVICES_LIBRARY NAMES CoreServices)
  82. target_link_libraries(nextcloud_csync PUBLIC ${FOUNDATION_LIBRARY} ${CORESERVICES_LIBRARY})
  83. endif()
  84. set_target_properties(
  85. nextcloud_csync
  86. PROPERTIES
  87. VERSION
  88. ${LIBRARY_VERSION}
  89. SOVERSION
  90. ${LIBRARY_SOVERSION}
  91. RUNTIME_OUTPUT_DIRECTORY
  92. ${BIN_OUTPUT_DIRECTORY}
  93. LIBRARY_OUTPUT_NAME
  94. ${APPLICATION_EXECUTABLE}_csync
  95. RUNTIME_OUTPUT_NAME
  96. ${APPLICATION_EXECUTABLE}_csync
  97. ARCHIVE_OUTPUT_NAME
  98. ${APPLICATION_EXECUTABLE}_csync
  99. )
  100. if(BUILD_OWNCLOUD_OSX_BUNDLE)
  101. INSTALL(
  102. TARGETS
  103. nextcloud_csync
  104. LIBRARY DESTINATION
  105. ${LIB_INSTALL_DIR}
  106. ARCHIVE DESTINATION
  107. ${LIB_INSTALL_DIR}
  108. RUNTIME DESTINATION
  109. ${BIN_INSTALL_DIR}
  110. )
  111. else()
  112. INSTALL(
  113. TARGETS
  114. nextcloud_csync
  115. LIBRARY DESTINATION
  116. ${CMAKE_INSTALL_LIBDIR}
  117. ARCHIVE DESTINATION
  118. ${CMAKE_INSTALL_LIBDIR}
  119. RUNTIME DESTINATION
  120. ${CMAKE_INSTALL_BINDIR}
  121. )
  122. endif()
  123. configure_file(config_csync.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config_csync.h)