CMakeLists.txt 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. cmake_minimum_required(VERSION 3.13)
  2. project(zerotier-controller)
  3. set(SRC_FILES
  4. DB.cpp
  5. DB.hpp
  6. DBMirrorSet.cpp
  7. DBMirrorSet.hpp
  8. EmbeddedNetworkController.cpp
  9. EmbeddedNetworkController.hpp
  10. FileDB.cpp
  11. FileDB.hpp
  12. CtlUtil.cpp
  13. CtlUtil.hpp
  14. )
  15. set(INCLUDE_DIRS
  16. "${httplib_SOURCE_DIR}"
  17. ${RUSTYBITS_INCLUDE_DIR}
  18. )
  19. set(LINK_LIBS
  20. zerotier-osdep
  21. nlohmann_json::nlohmann_json
  22. opentelemetry-cpp::api
  23. rustybits
  24. Threads::Threads
  25. prometheus-cpp-lite
  26. Threads::Threads
  27. )
  28. if (ZT1_CENTRAL_CONTROLLER)
  29. find_package(PostgreSQL REQUIRED)
  30. find_package(protobuf REQUIRED)
  31. list(APPEND SRC_FILES
  32. CV1.cpp
  33. CV1.hpp
  34. CV2.cpp
  35. CV2.hpp
  36. CentralDB.cpp
  37. CentralDB.hpp
  38. ControllerConfig.hpp
  39. ControllerChangeNotifier.cpp
  40. ControllerChangeNotifier.hpp
  41. NotificationListener.hpp
  42. PostgreSQL.cpp
  43. PostgreSQL.hpp
  44. PubSubListener.cpp
  45. PubSubListener.hpp
  46. PubSubWriter.cpp
  47. PubSubWriter.hpp
  48. Redis.hpp
  49. RedisListener.cpp
  50. RedisListener.hpp
  51. StatusWriter.cpp
  52. StatusWriter.hpp
  53. BigTableStatusWriter.cpp
  54. BigTableStatusWriter.hpp
  55. PostgresStatusWriter.cpp
  56. PostgresStatusWriter.hpp
  57. Redis.hpp
  58. RedisStatusWriter.cpp
  59. RedisStatusWriter.hpp
  60. )
  61. list(APPEND INCLUDE_DIRS
  62. ${PostgreSQL_INCLUDE_DIRS}
  63. "${redis++_BUILD_DIR}/src"
  64. ${pqxx_INCLUDE_DIRS}
  65. "${CMAKE_CURRENT_BINARY_DIR}"
  66. )
  67. list(APPEND LINK_LIBS
  68. redis++::redis++_static
  69. pqxx
  70. ${PostgreSQL_LIBRARIES}
  71. google-cloud-cpp::bigtable
  72. google-cloud-cpp::pubsub
  73. )
  74. endif()
  75. add_library(zerotier-controller STATIC ${SRC_FILES})
  76. if (ZT1_CENTRAL_CONTROLLER)
  77. file(GLOB PROTO_FILES "${CMAKE_CURRENT_SOURCE_DIR}/protobuf/*.proto")
  78. protobuf_generate(
  79. TARGET zerotier-controller
  80. LANGUAGE cpp
  81. PROTOS ${PROTO_FILES}
  82. APPEND_PATH
  83. )
  84. endif()
  85. target_include_directories(zerotier-controller PRIVATE ${INCLUDE_DIRS})
  86. add_dependencies(zerotier-controller redis++::redis++)
  87. target_link_libraries(zerotier-controller
  88. ${LINK_LIBS}
  89. )