CMakeLists.txt 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. project(libsync)
  2. include(DefinePlatformDefaults)
  3. set(CMAKE_AUTOMOC TRUE)
  4. if ( APPLE )
  5. list(APPEND OS_SPECIFIC_LINK_LIBRARIES
  6. /System/Library/Frameworks/CoreServices.framework
  7. /System/Library/Frameworks/Foundation.framework
  8. /System/Library/Frameworks/AppKit.framework
  9. )
  10. endif()
  11. IF(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD|NetBSD|OpenBSD")
  12. list(APPEND OS_SPECIFIC_LINK_LIBRARIES
  13. inotify
  14. )
  15. ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD|NetBSD|OpenBSD")
  16. set(libsync_SRCS
  17. account.cpp
  18. pushnotifications.cpp
  19. wordlist.cpp
  20. bandwidthmanager.cpp
  21. capabilities.cpp
  22. clientproxy.cpp
  23. cookiejar.cpp
  24. discovery.cpp
  25. discoveryphase.cpp
  26. encryptfolderjob.cpp
  27. filesystem.cpp
  28. httplogger.cpp
  29. logger.cpp
  30. accessmanager.cpp
  31. configfile.cpp
  32. abstractnetworkjob.cpp
  33. networkjobs.cpp
  34. owncloudpropagator.cpp
  35. nextcloudtheme.cpp
  36. abstractpropagateremotedeleteencrypted.cpp
  37. deletejob.cpp
  38. progressdispatcher.cpp
  39. propagatorjobs.cpp
  40. propagatedownload.cpp
  41. propagateupload.cpp
  42. propagateuploadv1.cpp
  43. propagateuploadng.cpp
  44. propagateremotedelete.cpp
  45. propagateremotedeleteencrypted.cpp
  46. propagateremotedeleteencryptedrootfolder.cpp
  47. propagateremotemove.cpp
  48. propagateremotemkdir.cpp
  49. propagateuploadencrypted.cpp
  50. propagatedownloadencrypted.cpp
  51. syncengine.cpp
  52. syncfileitem.cpp
  53. syncfilestatustracker.cpp
  54. localdiscoverytracker.cpp
  55. syncresult.cpp
  56. theme.cpp
  57. clientsideencryption.cpp
  58. clientsideencryptionjobs.cpp
  59. creds/dummycredentials.cpp
  60. creds/abstractcredentials.cpp
  61. creds/credentialscommon.cpp
  62. creds/keychainchunk.cpp
  63. vfs/suffix/vfs_suffix.cpp
  64. )
  65. if (WIN32)
  66. set(libsync_SRCS ${libsync_SRCS}
  67. vfs/cfapi/cfapiwrapper.cpp
  68. vfs/cfapi/hydrationjob.cpp
  69. vfs/cfapi/vfs_cfapi.cpp
  70. )
  71. add_definitions(-D_WIN32_WINNT=_WIN32_WINNT_WIN10)
  72. list(APPEND OS_SPECIFIC_LINK_LIBRARIES cldapi)
  73. elseif(LINUX) # elseif(LINUX OR APPLE)
  74. set(libsync_SRCS ${libsync_SRCS} vfs/xattr/vfs_xattr.cpp)
  75. if (APPLE)
  76. set(libsync_SRCS ${libsync_SRCS} vfs/xattr/xattrwrapper_mac.cpp)
  77. else()
  78. set(libsync_SRCS ${libsync_SRCS} vfs/xattr/xattrwrapper_linux.cpp)
  79. endif()
  80. endif()
  81. if(TOKEN_AUTH_ONLY)
  82. set (libsync_SRCS ${libsync_SRCS} creds/tokencredentials.cpp)
  83. else()
  84. set (libsync_SRCS ${libsync_SRCS} creds/httpcredentials.cpp)
  85. endif()
  86. # These headers are installed for libowncloudsync to be used by 3rd party apps
  87. set(owncloudsync_HEADERS
  88. account.h
  89. syncengine.h
  90. configfile.h
  91. networkjobs.h
  92. progressdispatcher.h
  93. syncfileitem.h
  94. syncresult.h
  95. )
  96. set(creds_HEADERS
  97. creds/abstractcredentials.h
  98. creds/httpcredentials.h
  99. )
  100. IF (NOT APPLE)
  101. INSTALL(
  102. FILES ${owncloudsync_HEADERS}
  103. DESTINATION ${INCLUDE_INSTALL_DIR}/${synclib_NAME}/mirall
  104. )
  105. INSTALL(
  106. FILES ${creds_HEADERS}
  107. DESTINATION ${INCLUDE_INSTALL_DIR}/${synclib_NAME}/creds
  108. )
  109. ENDIF(NOT APPLE)
  110. find_package(Qt5 REQUIRED COMPONENTS WebSockets)
  111. add_library(${synclib_NAME} SHARED ${libsync_SRCS})
  112. target_link_libraries(${synclib_NAME}
  113. "${csync_NAME}"
  114. OpenSSL::Crypto
  115. OpenSSL::SSL
  116. ${OS_SPECIFIC_LINK_LIBRARIES}
  117. Qt5::Core Qt5::Network
  118. Qt5::WebSockets
  119. )
  120. if (NOT TOKEN_AUTH_ONLY)
  121. find_package(Qt5 REQUIRED COMPONENTS Widgets Svg)
  122. target_link_libraries(${synclib_NAME} Qt5::Widgets Qt5::Svg qt5keychain)
  123. endif()
  124. if(INOTIFY_FOUND)
  125. target_include_directories(${synclib_NAME} PRIVATE ${INOTIFY_INCLUDE_DIR})
  126. link_directories(${INOTIFY_LIBRARY_DIR})
  127. target_link_libraries(${synclib_NAME} ${INOTIFY_LIBRARY} )
  128. endif()
  129. GENERATE_EXPORT_HEADER( ${synclib_NAME}
  130. BASE_NAME ${synclib_NAME}
  131. EXPORT_MACRO_NAME OWNCLOUDSYNC_EXPORT
  132. EXPORT_FILE_NAME owncloudlib.h
  133. STATIC_DEFINE OWNCLOUD_BUILT_AS_STATIC
  134. )
  135. target_include_directories(${synclib_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
  136. set_target_properties( ${synclib_NAME} PROPERTIES
  137. VERSION ${MIRALL_VERSION}
  138. SOVERSION ${MIRALL_SOVERSION}
  139. RUNTIME_OUTPUT_DIRECTORY ${BIN_OUTPUT_DIRECTORY}
  140. )
  141. if(NOT BUILD_OWNCLOUD_OSX_BUNDLE)
  142. install(TARGETS ${synclib_NAME}
  143. RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
  144. LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
  145. ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
  146. )
  147. else()
  148. install(TARGETS ${synclib_NAME} DESTINATION ${OWNCLOUD_OSX_BUNDLE}/Contents/MacOS)
  149. endif()