@@ -11,6 +11,7 @@ set(NGINX_DATADOG_VERSION 1.3.0)
11
11
project (ngx_http_datadog_module VERSION ${NGINX_DATADOG_VERSION} )
12
12
13
13
option (NGINX_DATADOG_ASM_ENABLED "Build with libddwaf" ON )
14
+ option (NGINX_DATADOG_RUM_ENABLED "Build with RUM injection" OFF )
14
15
set (NGINX_SRC_DIR "" CACHE PATH "The path to a directory with nginx sources" )
15
16
set (NGINX_VERSION "" CACHE STRING "The nginx version" )
16
17
if (NGINX_SRC_DIR STREQUAL "" AND NGINX_VERSION STREQUAL "" )
@@ -19,18 +20,31 @@ endif()
19
20
option (NGINX_PATCH_AWAY_LIBC "Patch away libc dependency" OFF )
20
21
option (NGINX_COVERAGE "Add coverage instrumentation" OFF )
21
22
22
- message (STATUS "nginx-datadog version=[${NGINX_DATADOG_VERSION} ]" )
23
- if (NGINX_DATADOG_ASM_ENABLED)
24
- message (STATUS "nginx-datadog products: tracing appsec" )
25
- else ()
26
- message (STATUS "nginx-datadog products: tracing" )
23
+ if (NGINX_DATADOG_RUM_ENABLED AND NGINX_DATADOG_ASM_ENABLED)
24
+ message (FATAL_ERROR "ASM and RUM features are mutually exclusive" )
27
25
endif ()
28
26
29
27
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" )
30
28
set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -ggdb -O0" )
31
29
set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -ggdb -O0" )
32
30
endif ()
33
31
32
+ message (STATUS "nginx-datadog version=[${NGINX_DATADOG_VERSION} ]" )
33
+
34
+ set (NGINX_DATADOG_PRODUCTS_LIST "tracing" )
35
+ if (NGINX_DATADOG_ASM_ENABLED)
36
+ list (APPEND NGINX_DATADOG_PRODUCTS_LIST "appsec" )
37
+ endif ()
38
+
39
+ if (NGINX_DATADOG_RUM_ENABLED)
40
+ list (APPEND NGINX_DATADOG_PRODUCTS_LIST "rum-injection" )
41
+ endif ()
42
+
43
+ list (JOIN NGINX_DATADOG_PRODUCTS_LIST " " NGINX_DATADOG_PRODUCTS)
44
+ unset (NGINX_DATADOG_PRODUCTS_LIST)
45
+
46
+ message (STATUS "nginx-datadog products: ${NGINX_DATADOG_PRODUCTS} " )
47
+
34
48
# Make curl link against a static zlib (requires cmake 3.24)
35
49
set (ZLIB_USE_STATIC_LIBS ON )
36
50
@@ -78,6 +92,19 @@ if(NGINX_DATADOG_ASM_ENABLED)
78
92
unset (ASM_RULES)
79
93
endif ()
80
94
95
+ if (NGINX_DATADOG_RUM_ENABLED)
96
+ execute_process (
97
+ COMMAND cargo pkgid --package inject-browser-sdk --manifest-path "${CMAKE_CURRENT_SOURCE_DIR} /deps/inject-browser-sdk/Cargo.toml"
98
+ OUTPUT_VARIABLE RUM_SDK_INJECTOR_PKGID
99
+ )
100
+ string (REGEX REPLACE ".*@(.*)" "\\ 1" RUM_SDK_INJECTOR_VERSION ${RUM_SDK_INJECTOR_PKGID} )
101
+ string (STRIP "${RUM_SDK_INJECTOR_VERSION} " RUM_SDK_INJECTOR_VERSION)
102
+
103
+ unset (RUM_SDK_INJECTOR_PKGID)
104
+
105
+ add_subdirectory (deps)
106
+ endif ()
107
+
81
108
include (./cmake/generate_build_id.cmake)
82
109
83
110
# Generate the build identifier.
@@ -125,6 +152,17 @@ if(NGINX_DATADOG_ASM_ENABLED)
125
152
src/security/waf_remote_cfg.cpp)
126
153
target_compile_definitions (ngx_http_datadog_module PRIVATE WITH_WAF)
127
154
endif ()
155
+ if (NGINX_DATADOG_RUM_ENABLED)
156
+ target_sources (ngx_http_datadog_module
157
+ PRIVATE
158
+ src/rum/config.cpp
159
+ src/rum/injection.cpp
160
+ )
161
+ target_compile_definitions (ngx_http_datadog_module PRIVATE WITH_RUM)
162
+
163
+ target_link_libraries (ngx_http_datadog_module inject_browser_sdk)
164
+
165
+ endif ()
128
166
129
167
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang" )
130
168
target_compile_options (ngx_http_datadog_module PRIVATE -Wall -Werror)
0 commit comments