CMakeLists.txt 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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. )
  17. target_include_directories(smartbotic_runner
  18. PUBLIC
  19. $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
  20. $<INSTALL_INTERFACE:include>
  21. )
  22. target_compile_options(smartbotic_runner PRIVATE ${SMARTBOTIC_CXX_WARNINGS})
  23. target_link_libraries(smartbotic_runner
  24. PUBLIC
  25. smartbotic::common
  26. smartbotic::proto
  27. spdlog::spdlog
  28. nlohmann_json::nlohmann_json
  29. qjs
  30. )
  31. add_library(smartbotic::runner ALIAS smartbotic_runner)
  32. # gRPC service library
  33. add_library(smartbotic_runner_grpc STATIC
  34. src/grpc/server.cpp
  35. src/grpc/template_service.cpp
  36. src/grpc/script_service.cpp
  37. src/grpc/health_service.cpp
  38. )
  39. target_include_directories(smartbotic_runner_grpc
  40. PUBLIC
  41. $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
  42. $<INSTALL_INTERFACE:include>
  43. )
  44. # Use relaxed warnings for gRPC targets
  45. set(SMARTBOTIC_RUNNER_GRPC_WARNINGS
  46. -Wall
  47. -Wextra
  48. -Werror
  49. -Wno-unused-parameter
  50. -Wno-dangling-reference
  51. -Wno-pedantic
  52. -Wno-overflow
  53. )
  54. target_compile_options(smartbotic_runner_grpc PRIVATE ${SMARTBOTIC_RUNNER_GRPC_WARNINGS})
  55. target_link_libraries(smartbotic_runner_grpc
  56. PUBLIC
  57. smartbotic::runner
  58. smartbotic::proto
  59. spdlog::spdlog
  60. )
  61. add_library(smartbotic::runner_grpc ALIAS smartbotic_runner_grpc)
  62. # Runner service executable
  63. add_executable(smartbotic-crm-runner
  64. src/main.cpp
  65. )
  66. target_include_directories(smartbotic-crm-runner
  67. PRIVATE
  68. ${CMAKE_CURRENT_SOURCE_DIR}/include
  69. )
  70. target_compile_options(smartbotic-crm-runner PRIVATE ${SMARTBOTIC_RUNNER_GRPC_WARNINGS})
  71. target_link_libraries(smartbotic-crm-runner
  72. PRIVATE
  73. smartbotic::runner_grpc
  74. )