CMakeLists.txt 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. # Runner service - smartbotic-crm-runner binary with JavaScript templating engine
  2. # QuickJS for JavaScript execution (using quickjs-ng maintained fork)
  3. FetchContent_Declare(
  4. quickjs
  5. GIT_REPOSITORY https://github.com/quickjs-ng/quickjs.git
  6. GIT_TAG v0.11.0
  7. )
  8. message(STATUS "Fetching QuickJS...")
  9. FetchContent_MakeAvailable(quickjs)
  10. # Core runner library (config, JS engine, template parser)
  11. add_library(smartbotic_runner STATIC
  12. src/config.cpp
  13. src/js_engine.cpp
  14. src/js_api.cpp
  15. src/template_parser.cpp
  16. src/automation_api.cpp
  17. )
  18. target_include_directories(smartbotic_runner
  19. PUBLIC
  20. $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
  21. $<INSTALL_INTERFACE:include>
  22. )
  23. target_compile_options(smartbotic_runner PRIVATE ${SMARTBOTIC_CXX_WARNINGS})
  24. target_link_libraries(smartbotic_runner
  25. PUBLIC
  26. smartbotic::common
  27. smartbotic::proto
  28. spdlog::spdlog
  29. nlohmann_json::nlohmann_json
  30. qjs
  31. )
  32. add_library(smartbotic::runner ALIAS smartbotic_runner)
  33. # gRPC service library
  34. add_library(smartbotic_runner_grpc STATIC
  35. src/grpc/server.cpp
  36. src/grpc/template_service.cpp
  37. src/grpc/script_service.cpp
  38. src/grpc/health_service.cpp
  39. )
  40. target_include_directories(smartbotic_runner_grpc
  41. PUBLIC
  42. $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
  43. $<INSTALL_INTERFACE:include>
  44. )
  45. # Use relaxed warnings for gRPC targets
  46. set(SMARTBOTIC_RUNNER_GRPC_WARNINGS
  47. -Wall
  48. -Wextra
  49. -Werror
  50. -Wno-unused-parameter
  51. -Wno-dangling-reference
  52. -Wno-pedantic
  53. -Wno-overflow
  54. )
  55. target_compile_options(smartbotic_runner_grpc PRIVATE ${SMARTBOTIC_RUNNER_GRPC_WARNINGS})
  56. target_link_libraries(smartbotic_runner_grpc
  57. PUBLIC
  58. smartbotic::runner
  59. smartbotic::proto
  60. spdlog::spdlog
  61. )
  62. add_library(smartbotic::runner_grpc ALIAS smartbotic_runner_grpc)
  63. # Runner service executable
  64. add_executable(smartbotic-crm-runner
  65. src/main.cpp
  66. )
  67. target_include_directories(smartbotic-crm-runner
  68. PRIVATE
  69. ${CMAKE_CURRENT_SOURCE_DIR}/include
  70. )
  71. target_compile_options(smartbotic-crm-runner PRIVATE ${SMARTBOTIC_RUNNER_GRPC_WARNINGS})
  72. target_link_libraries(smartbotic-crm-runner
  73. PRIVATE
  74. smartbotic::runner_grpc
  75. )