diff options
Diffstat (limited to 'auto')
-rw-r--r-- | auto/help | 2 | ||||
-rw-r--r-- | auto/make | 54 | ||||
-rw-r--r-- | auto/options | 2 | ||||
-rw-r--r-- | auto/otel | 54 | ||||
-rw-r--r-- | auto/sources | 4 | ||||
-rw-r--r-- | auto/summary | 1 |
6 files changed, 106 insertions, 11 deletions
@@ -52,6 +52,8 @@ cat << END --njs enable njs library usage + --otel enable otel library usage + --debug enable debug logging --fuzz=ENGINE enable fuzz testing @@ -7,7 +7,6 @@ $echo "creating $NXT_MAKEFILE" - cat << END > $NXT_MAKEFILE # Pretty print compiler etc actions... @@ -22,6 +21,8 @@ AR = $AR EXTRA_CFLAGS = CFLAGS = $NXT_CFLAGS $NXT_CC_OPT $CFLAGS \$(EXTRA_CFLAGS) +RUST_FLAGS = +NXT_OTEL_LIB_LOC = NXT_EXEC_LINK = $NXT_EXEC_LINK $NXT_LD_OPT NXT_SHARED_LOCAL_LINK = $NXT_SHARED_LOCAL_LINK $NXT_LD_OPT @@ -62,6 +63,9 @@ D := 0 ifeq (\$D,1) CFLAGS += -O0 + RUST_FLAGS += --debug +else + RUST_FLAGS += --release endif # Optionally disable -Werror with @@ -76,6 +80,18 @@ END fi +# potentially set otel lib location +if [ $NXT_OTEL = YES ]; then +cat << END >> $NXT_MAKEFILE + +ifeq (\$D,1) + NXT_OTEL_LIB_LOC = $NXT_OTEL_LIB_DIR/target/debug/libotel.a +else + NXT_OTEL_LIB_LOC = $NXT_OTEL_LIB_DIR/target/release/libotel.a +endif + +END +fi # The include paths list. @@ -138,14 +154,14 @@ cat << END >> $NXT_MAKEFILE libnxt: $NXT_BUILD_DIR/lib/$NXT_LIB_SHARED $NXT_BUILD_DIR/lib/$NXT_LIB_STATIC -$NXT_BUILD_DIR/lib/$NXT_LIB_SHARED: \$(NXT_LIB_OBJS) +$NXT_BUILD_DIR/lib/$NXT_LIB_SHARED: \$(NXT_LIB_OBJS) \$(NXT_OTEL_LIB_LOC) \$(PP_LD) \$@ \$(v)\$(NXT_SHARED_LOCAL_LINK) -o \$@ \$(NXT_LIB_OBJS) \\ - $NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS + $NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS \$(NXT_OTEL_LIB_LOC) -$NXT_BUILD_DIR/lib/$NXT_LIB_STATIC: \$(NXT_LIB_OBJS) +$NXT_BUILD_DIR/lib/$NXT_LIB_STATIC: \$(NXT_LIB_OBJS) \$(NXT_OTEL_LIB_LOC) \$(PP_AR) \$@ - \$(v)$NXT_STATIC_LINK \$@ \$(NXT_LIB_OBJS) + \$(v)$NXT_STATIC_LINK \$@ \$(NXT_LIB_OBJS) \$(NXT_OTEL_LIB_LOC) $NXT_BUILD_DIR/lib/$NXT_LIB_UNIT_STATIC: \$(NXT_LIB_UNIT_OBJS) \\ $NXT_BUILD_DIR/share/pkgconfig/unit.pc \\ @@ -359,11 +375,11 @@ $echo >> $NXT_MAKEFILE cat << END >> $NXT_MAKEFILE $NXT_BUILD_DIR/sbin/$NXT_DAEMON: $NXT_BUILD_DIR/lib/$NXT_LIB_STATIC \\ - \$(NXT_OBJS) + \$(NXT_OBJS) \$(NXT_OTEL_LIB_LOC) \$(PP_LD) \$@ \$(v)\$(NXT_EXEC_LINK) -o \$@ \$(CFLAGS) \\ \$(NXT_OBJS) $NXT_BUILD_DIR/lib/$NXT_LIB_STATIC \\ - $NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS + $NXT_LIBM $NXT_LIBS $NXT_LIB_AUX_LIBS \$(NXT_OTEL_LIB_LOC) END @@ -535,10 +551,6 @@ cat << END > Makefile include $NXT_MAKEFILE -.PHONY: clean -clean: - rm -rf $NXT_BUILD_DIR *.dSYM Makefile - .PHONY: help help: @echo "Variables to control make/build behaviour:" @@ -551,4 +563,24 @@ help: @echo @echo " Variables can be combined." +.PHONY: clean +clean: + rm -rf $NXT_BUILD_DIR *.dSYM Makefile +END + +if [ $NXT_OTEL = YES ]; then + cat << END >> Makefile + cd "$NXT_OTEL_LIB_DIR" && cargo clean END + +NXT_OTEL_DEPS=" \ + build/src/nxt_otel.o \ + src/otel/src/lib.rs \ +" + + cat << END >> $NXT_MAKEFILE + +\$(NXT_OTEL_LIB_LOC): $NXT_OTEL_DEPS + cargo build \$(RUST_FLAGS) --manifest-path $NXT_OTEL_LIB_DIR/Cargo.toml +END +fi diff --git a/auto/options b/auto/options index 5be1ebe1..7aa7a73a 100644 --- a/auto/options +++ b/auto/options @@ -27,6 +27,7 @@ NXT_CYASSL=NO NXT_POLARSSL=NO NXT_NJS=NO +NXT_OTEL=NO NXT_TEST_BUILD_EPOLL=NO NXT_TEST_BUILD_EVENTPORT=NO @@ -112,6 +113,7 @@ do --polarssl) NXT_POLARSSL=YES ;; --njs) NXT_NJS=YES ;; + --otel) NXT_OTEL=YES ;; --test-build-epoll) NXT_TEST_BUILD_EPOLL=YES ;; --test-build-eventport) NXT_TEST_BUILD_EVENTPORT=YES ;; diff --git a/auto/otel b/auto/otel new file mode 100644 index 00000000..654c45ec --- /dev/null +++ b/auto/otel @@ -0,0 +1,54 @@ + +# Copyright (C) NGINX, Inc. + +if [ $NXT_OTEL = YES ]; then + + $echo "checking for OTEL requirements:" + + $echo -n " - checking for rust compiler ... " + if [ -z $(which rustc 2>/dev/null) ]; then + $echo "not found" + exit 1; + fi + $echo "found" + + $echo -n " - checking for cargo ... " + if [ -z $(which cargo 2>/dev/null) ]; then + $echo "not found." + exit 1; + fi + $echo "found" + + $echo -n " - " + + nxt_feature="OpenSSL library" + nxt_feature_run=yes + nxt_feature_incs= + nxt_feature_libs="-lssl -lcrypto" + nxt_feature_test="#include <openssl/ssl.h> + + int main(void) { + SSL_library_init(); + return 0; + }" + . auto/feature + + if [ ! $nxt_found = yes ]; then + $echo + $echo $0: error: OpenTelemetry support requires OpenSSL. + $echo + exit 1; + fi + + NXT_OTEL_LIBS="-lssl -lcrypto" + if [ $(which pkg-config) ]; then + NXT_OTEL_LIBS="$(pkg-config openssl --cflags --libs)" + fi + cat << END >> $NXT_AUTO_CONFIG_H + +#ifndef NXT_HAVE_OTEL +#define NXT_HAVE_OTEL 1 +#endif + +END +fi diff --git a/auto/sources b/auto/sources index dfabf7cf..02740397 100644 --- a/auto/sources +++ b/auto/sources @@ -127,6 +127,10 @@ if [ "$NXT_NJS" != "NO" ]; then NXT_LIB_SRCS="$NXT_LIB_SRCS src/nxt_js.c src/nxt_http_js.c src/nxt_script.c" fi +if [ "$NXT_OTEL" != "NO" ]; then + NXT_LIB_SRCS="$NXT_LIB_SRCS src/nxt_otel.c" +fi + NXT_LIB_EPOLL_SRCS="src/nxt_epoll_engine.c" NXT_LIB_KQUEUE_SRCS="src/nxt_kqueue_engine.c" NXT_LIB_EVENTPORT_SRCS="src/nxt_eventport_engine.c" diff --git a/auto/summary b/auto/summary index b6caee6c..eba88be4 100644 --- a/auto/summary +++ b/auto/summary @@ -30,6 +30,7 @@ Unit configuration summary: TLS support: ............... $NXT_OPENSSL Regex support: ............. $NXT_REGEX njs support: ............... $NXT_NJS + otel support: .............. $NXT_OTEL process isolation: ......... $NXT_ISOLATION cgroupv2: .................. $NXT_HAVE_CGROUP |