CMakeLists.txt 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. cmake_minimum_required (VERSION 3.2)
  2. project (syncspirit)
  3. set(CMAKE_CXX_STANDARD 17)
  4. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  5. find_package(
  6. Boost
  7. COMPONENTS
  8. iostreams
  9. filesystem
  10. program_options
  11. system
  12. REQUIRED
  13. )
  14. find_package(OpenSSL REQUIRED)
  15. find_package(Protobuf REQUIRED)
  16. find_package(ZLIB REQUIRED)
  17. set(Protobuf_IMPORT_DIRS ${syncspirit_SOURCE_DIR}/src)
  18. protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS
  19. src/protobuf/bep.proto
  20. src/protobuf/structs.proto
  21. )
  22. add_library(syncspirit_lib
  23. src/constants.cpp
  24. src/config/utils.cpp
  25. src/db/cursor.cpp
  26. src/db/error_code.cpp
  27. src/db/prefix.cpp
  28. src/db/transaction.cpp
  29. src/db/utils.cpp
  30. src/fs/file_actor.cpp
  31. src/fs/fs_supervisor.cpp
  32. src/fs/scan_actor.cpp
  33. src/fs/scan_task.cpp
  34. src/fs/utils.cpp
  35. src/hasher/hasher_actor.cpp
  36. src/hasher/hasher_proxy_actor.cpp
  37. src/hasher/hasher_supervisor.cpp
  38. src/model/diff/aggregate.cpp
  39. src/model/diff/base_diff.cpp
  40. src/model/diff/block_diff.cpp
  41. src/model/diff/block_visitor.cpp
  42. src/model/diff/contact_diff.cpp
  43. src/model/diff/contact_visitor.cpp
  44. src/model/diff/cluster_diff.cpp
  45. src/model/diff/cluster_visitor.cpp
  46. src/model/diff/load/blocks.cpp
  47. src/model/diff/load/close_transaction.cpp
  48. src/model/diff/load/devices.cpp
  49. src/model/diff/load/file_infos.cpp
  50. src/model/diff/load/folder_infos.cpp
  51. src/model/diff/load/folders.cpp
  52. src/model/diff/load/ignored_devices.cpp
  53. src/model/diff/load/ignored_folders.cpp
  54. src/model/diff/load/load_cluster.cpp
  55. src/model/diff/modify/append_block.cpp
  56. src/model/diff/modify/blocks_availability.cpp
  57. src/model/diff/modify/clone_block.cpp
  58. src/model/diff/modify/clone_file.cpp
  59. src/model/diff/modify/connect_request.cpp
  60. src/model/diff/modify/create_folder.cpp
  61. src/model/diff/modify/file_availability.cpp
  62. src/model/diff/modify/finish_file.cpp
  63. src/model/diff/modify/flush_file.cpp
  64. src/model/diff/modify/local_update.cpp
  65. src/model/diff/modify/lock_file.cpp
  66. src/model/diff/modify/new_file.cpp
  67. src/model/diff/modify/share_folder.cpp
  68. src/model/diff/modify/update_contact.cpp
  69. src/model/diff/modify/update_peer.cpp
  70. src/model/diff/peer/peer_state.cpp
  71. src/model/diff/peer/cluster_remove.cpp
  72. src/model/diff/peer/cluster_update.cpp
  73. src/model/diff/peer/update_folder.cpp
  74. src/model/misc/block_iterator.cpp
  75. src/model/misc/error_code.cpp
  76. src/model/misc/file_block.cpp
  77. src/model/misc/file_iterator.cpp
  78. src/model/misc/uuid.cpp
  79. src/model/misc/version_utils.cpp
  80. src/model/block_info.cpp
  81. src/model/cluster.cpp
  82. src/model/device.cpp
  83. src/model/device_id.cpp
  84. src/model/file_info.cpp
  85. src/model/folder.cpp
  86. src/model/folder_info.cpp
  87. src/model/ignored_device.cpp
  88. src/model/ignored_folder.cpp
  89. src/net/acceptor_actor.cpp
  90. src/net/cluster_supervisor.cpp
  91. src/net/controller_actor.cpp
  92. src/net/db_actor.cpp
  93. src/net/dialer_actor.cpp
  94. src/net/global_discovery_actor.cpp
  95. src/net/http_actor.cpp
  96. src/net/local_discovery_actor.cpp
  97. src/net/net_supervisor.cpp
  98. src/net/peer_actor.cpp
  99. src/net/peer_supervisor.cpp
  100. src/net/resolver_actor.cpp
  101. src/net/names.cpp
  102. src/net/ssdp_actor.cpp
  103. src/net/upnp_actor.cpp
  104. src/proto/bep_support.cpp
  105. src/proto/discovery_support.cpp
  106. src/proto/luhn32.cpp
  107. src/proto/upnp_support.cpp
  108. src/transport/stream.cpp
  109. src/transport/http.cpp
  110. src/utils/base32.cpp
  111. src/utils/beast_support.cpp
  112. src/utils/error_code.cpp
  113. src/utils/location.cpp
  114. src/utils/log.cpp
  115. src/utils/sink.cpp
  116. src/utils/tls.cpp
  117. src/utils/uri.cpp
  118. ${PROTO_SRCS}
  119. )
  120. set(BUILD_BOOST_ASIO true CACHE BOOL "BUILD_BOOST_ASIO")
  121. set(URIPARSER_BUILD_WCHAR_T false CACHE BOOL "URIPARSER_BUILD_WCHAR_T")
  122. set(URIPARSER_BUILD_TOOLS false CACHE BOOL "URIPARSER_BUILD_TOOLS")
  123. set(URIPARSER_BUILD_DOCS false CACHE BOOL "DURIPARSER_BUILD_DOCS")
  124. set(URIPARSER_BUILD_TESTS false CACHE BOOL "URIPARSER_BUILD_TESTS")
  125. set(URIPARSER_ENABLE_INSTALL false CACHE BOOL "URIPARSER_ENABLE_INSTALL")
  126. set(BUILD_SHARED_LIBS false CACHE BOOL "BUILD_SHARED_LIBS")
  127. set(LZ4_BUILD_CLI false CACHE BOOL "LZ4_BUILD_CLI")
  128. set(LZ4_BUILD_LEGACY_LZ4C false CACHE BOOL "LZ4_BUILD_LEGACY_LZ4C")
  129. set(MDBX_BUILD_TOOLS false CACHE BOOL "MDBX_BUILD_TOOLS")
  130. add_subdirectory("lib/spdlog")
  131. add_subdirectory("lib/lz4/build/cmake/")
  132. add_subdirectory("lib/pugixml")
  133. add_subdirectory("lib/rotor")
  134. add_subdirectory("lib/uriparser")
  135. add_subdirectory("lib/mbdx")
  136. target_compile_definitions(pugixml PUBLIC "PUGIXML_NO_EXCEPTIONS")
  137. target_include_directories(syncspirit_lib PUBLIC
  138. ${syncspirit_SOURCE_DIR}/lib/rotor/include
  139. ${syncspirit_SOURCE_DIR}/lib/spdlog/include
  140. ${syncspirit_SOURCE_DIR}/lib/spdlog/include/spdlog/
  141. ${syncspirit_SOURCE_DIR}/lib/json/include
  142. ${syncspirit_SOURCE_DIR}/lib/pugixml/src
  143. ${syncspirit_SOURCE_DIR}/lib/uriparser/include
  144. ${syncspirit_SOURCE_DIR}/lib/tomlplusplus/include
  145. ${syncspirit_SOURCE_DIR}/lib/lz4/lib
  146. ${syncspirit_SOURCE_DIR}/lib/mbdx
  147. ${Boost_INCLUDE_DIRS}
  148. ${OPENSSL_INCLUDE_DIR}
  149. ${Protobuf_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR}
  150. ${syncspirit_SOURCE_DIR}/src
  151. )
  152. target_link_libraries(syncspirit_lib
  153. rotor_asio
  154. rotor_thread
  155. pugixml
  156. ${Boost_LIBRARIES}
  157. OpenSSL::SSL
  158. protobuf::libprotobuf
  159. spdlog::spdlog
  160. uriparser
  161. lz4_static
  162. ZLIB::ZLIB
  163. mdbx-static
  164. )
  165. enable_testing()
  166. add_subdirectory("tests")
  167. add_subdirectory("src/ui-daemon")