diff options
| author | Andrew Clayton <a.clayton@nginx.com> | 2025-01-09 03:55:44 +0000 |
|---|---|---|
| committer | Konstantin Pavlov <pavlov.konstantin@gmail.com> | 2025-01-10 13:01:46 -0800 |
| commit | 74b1626db6826821b6ecc26a1fa5cceaa49253d5 (patch) | |
| tree | a361527d6ee33fac9ee77457765e307510fae30d /auto | |
| parent | 6980ac17650487a83a7645594dc5f132ee618243 (diff) | |
| download | unit-74b1626db6826821b6ecc26a1fa5cceaa49253d5.tar.gz unit-74b1626db6826821b6ecc26a1fa5cceaa49253d5.tar.bz2 | |
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 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: <https://github.com/nginx/unit/pull/1520#issuecomment-2556265063>
Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
Diffstat (limited to 'auto')
| -rw-r--r-- | auto/make | 38 |
1 files changed, 20 insertions, 18 deletions
@@ -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 |
