FindPackages.cmake 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. # Find system packages
  2. # Required packages
  3. find_package(PkgConfig REQUIRED)
  4. find_package(Threads REQUIRED)
  5. find_package(OpenSSL REQUIRED)
  6. find_package(CURL REQUIRED)
  7. find_package(ZLIB REQUIRED)
  8. # nlohmann-json
  9. find_package(nlohmann_json 3.11 QUIET)
  10. if(NOT nlohmann_json_FOUND)
  11. pkg_check_modules(nlohmann_json REQUIRED IMPORTED_TARGET nlohmann_json)
  12. add_library(nlohmann_json::nlohmann_json ALIAS PkgConfig::nlohmann_json)
  13. endif()
  14. # spdlog
  15. find_package(spdlog QUIET)
  16. if(NOT spdlog_FOUND)
  17. pkg_check_modules(spdlog REQUIRED IMPORTED_TARGET spdlog)
  18. add_library(spdlog::spdlog ALIAS PkgConfig::spdlog)
  19. endif()
  20. # gRPC and Protobuf
  21. find_package(gRPC CONFIG QUIET)
  22. if(NOT gRPC_FOUND)
  23. pkg_check_modules(grpc++ REQUIRED IMPORTED_TARGET grpc++)
  24. add_library(gRPC::grpc++ ALIAS PkgConfig::grpc++)
  25. endif()
  26. find_package(Protobuf REQUIRED)
  27. # libwebsockets
  28. pkg_check_modules(websockets REQUIRED IMPORTED_TARGET libwebsockets)
  29. add_library(websockets ALIAS PkgConfig::websockets)
  30. # MySQL/MariaDB client
  31. pkg_check_modules(mariadb QUIET IMPORTED_TARGET libmariadb)
  32. if(mariadb_FOUND)
  33. add_library(mysql_client ALIAS PkgConfig::mariadb)
  34. set(MYSQL_CLIENT_FOUND TRUE CACHE BOOL "MySQL client library found")
  35. message(STATUS "Found MariaDB client library")
  36. else()
  37. pkg_check_modules(mysqlclient QUIET IMPORTED_TARGET mysqlclient)
  38. if(mysqlclient_FOUND)
  39. add_library(mysql_client ALIAS PkgConfig::mysqlclient)
  40. set(MYSQL_CLIENT_FOUND TRUE CACHE BOOL "MySQL client library found")
  41. message(STATUS "Found MySQL client library")
  42. else()
  43. set(MYSQL_CLIENT_FOUND FALSE CACHE BOOL "MySQL client library found")
  44. message(STATUS "MySQL/MariaDB client library not found - MySQL node support disabled")
  45. endif()
  46. endif()
  47. # PostgreSQL client (libpq)
  48. pkg_check_modules(libpq QUIET IMPORTED_TARGET libpq)
  49. if(libpq_FOUND)
  50. add_library(postgresql_client ALIAS PkgConfig::libpq)
  51. set(POSTGRESQL_CLIENT_FOUND TRUE CACHE BOOL "PostgreSQL client library found")
  52. message(STATUS "Found PostgreSQL client library (libpq)")
  53. else()
  54. set(POSTGRESQL_CLIENT_FOUND FALSE CACHE BOOL "PostgreSQL client library found")
  55. message(STATUS "PostgreSQL client library not found - PostgreSQL node support disabled")
  56. endif()