From 4fe4f788ae30bbd04bd46bc5391e76fde82d310c Mon Sep 17 00:00:00 2001 From: Andrew Clayton Date: Thu, 9 Jan 2025 03:55:44 +0000 Subject: [PATCH] auto/make: Fix various issues with building OTEL There were at least a couple of issues with building OTEL support. It only worked with GNU make due to the use of ifeq, even gmake had some issues. Debug builds were broken due to trying to pass --debug to cargo which is the default and isn't a valid option. This 'fixes' things by doing 'release' builds of OTEL by default. Passing D=1 to make will generate 'debug' builds but this as previously with D= etc, only works with GNU make. We make use the of the '--emit link=' rustc option to place the libotel.a static library into build/lib This is good, it consolidates the static libraries into one place and it simplifies the build scripts. While we're at it pretty print the cargo command by default. Fixes: 9d3dcb800 ("otel: add build tooling to include otel code") Link: Signed-off-by: Andrew Clayton --- auto/make | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/auto/make b/auto/make index 2468ea39e..4320f6299 100644 --- a/auto/make +++ b/auto/make @@ -15,19 +15,20 @@ PP_AR := @echo ' AR ' PP_LD := @echo ' LD ' PP_VER := @echo ' VER ' PP_SED := @echo ' SED ' +PP_CR := @echo ' CR ' CC = $CC AR = $AR EXTRA_CFLAGS = CFLAGS = $NXT_CFLAGS $NXT_CC_OPT $CFLAGS \$(EXTRA_CFLAGS) -RUST_FLAGS = -NXT_OTEL_LIB_STATIC = NXT_EXEC_LINK = $NXT_EXEC_LINK $NXT_LD_OPT NXT_SHARED_LOCAL_LINK = $NXT_SHARED_LOCAL_LINK $NXT_LD_OPT NXT_MODULE_LINK = $NXT_MODULE_LINK +NXT_OTEL_LIB_STATIC = + all: $NXT_DAEMON manpage .PHONY: $NXT_DAEMON manpage @@ -37,6 +38,18 @@ manpage: $NXT_BUILD_DIR/share/man/man8/unitd.8 END +if [ $NXT_OTEL = YES ]; then + + cat << END >> $NXT_MAKEFILE + +RUST_FLAGS = --release +NXT_OTEL_LIB_STATIC = $NXT_BUILD_DIR/lib/libotel.a + +END + +fi + + NXT_OS=$(uname -s) NXT_GNU_MAKE=$(make --version | grep GNU || true) @@ -63,9 +76,7 @@ D := 0 ifeq (\$D,1) CFLAGS += -O0 - RUST_FLAGS += --debug -else - RUST_FLAGS += --release + RUST_FLAGS = endif # Optionally disable -Werror with @@ -80,18 +91,6 @@ END fi -# potentially set otel lib location -if [ $NXT_OTEL = YES ]; then -cat << END >> $NXT_MAKEFILE - -ifeq (\$D,1) - NXT_OTEL_LIB_STATIC = $NXT_OTEL_LIB_DIR/target/debug/libotel.a -else - NXT_OTEL_LIB_STATIC = $NXT_OTEL_LIB_DIR/target/release/libotel.a -endif - -END -fi # The include paths list. @@ -587,6 +586,9 @@ NXT_OTEL_DEPS=" \ cat << END >> $NXT_MAKEFILE \$(NXT_OTEL_LIB_STATIC): $NXT_OTEL_DEPS - cargo build \$(RUST_FLAGS) --manifest-path $NXT_OTEL_LIB_DIR/Cargo.toml + \$(PP_CR) \$@ + \$(v)cargo rustc \$(RUST_FLAGS) \\ + --manifest-path $NXT_OTEL_LIB_DIR/Cargo.toml \\ + -- --emit link=../../$NXT_BUILD_DIR/lib/libotel.a END fi