From b59abf30e34c9914bf136f8a135149395889700a Mon Sep 17 00:00:00 2001 From: Dmitry Volyntsev Date: Wed, 21 Oct 2026 17:38:04 -0700 Subject: [PATCH] Modules: fix incremental engine build dependencies Existing archives prevent the nested make from checking engine source changes. QuickJS builds also omit libnjs.a and engine headers from the module dependencies. Changes to engine sources are now picked up by nginx make without rerunning configure or removing the existing libraries. --- nginx/config | 7 +++++-- nginx/config.make | 49 +++++++++++++++++++++++++++++++++++------------ 2 files changed, 42 insertions(+), 14 deletions(-) diff --git a/nginx/config b/nginx/config index 654d6704..15d4f9cf 100644 --- a/nginx/config +++ b/nginx/config @@ -157,14 +157,17 @@ if [ $NJS_ZLIB != NO ]; then fi -NJS_ENGINE_DEP="$NJS_BUILD_DIR/libnjs.a" NJS_ENGINE_LIB="$NJS_BUILD_DIR/libnjs.a" if [ "$NJS_HAVE_QUICKJS" = "YES" ]; then - NJS_ENGINE_DEP="$NJS_BUILD_DIR/libqjs.a" NJS_ENGINE_LIB="$NJS_ENGINE_LIB $NJS_BUILD_DIR/libqjs.a" QJS_SRCS="$QJS_SRCS $ngx_addon_dir/ngx_qjs_fetch.c" fi +NJS_ENGINE_DEP="$NJS_ENGINE_LIB $NJS_BUILD_DIR/njs_auto_config.h" +NJS_DEPS="$NJS_DEPS `echo $ngx_addon_dir/../src/*.h` \ + `echo $ngx_addon_dir/../external/*.h` \ + $ngx_addon_dir/../external/njs_regex.c" + if [ $HTTP != NO ]; then ngx_module_type=HTTP_AUX_FILTER ngx_module_name="ngx_http_js_module ngx_http_js_core_module" diff --git a/nginx/config.make b/nginx/config.make index d55987cb..7b0d1ef4 100644 --- a/nginx/config.make +++ b/nginx/config.make @@ -1,20 +1,45 @@ +NJS_BUILD_TARGETS=libnjs +NJS_QUICKJS_OPT=--no-quickjs + +if [ "$NJS_HAVE_QUICKJS" = YES ]; then + NJS_BUILD_TARGETS="libnjs libqjs" + NJS_QUICKJS_OPT="--with-quickjs --quickjs-inc=\"$NJS_QUICKJS_INC\" \ + --quickjs-lib=\"$NJS_QUICKJS_LIB\"" +fi + cat << END >> $NGX_MAKEFILE -$NJS_BUILD_DIR/libnjs.a: $NGX_MAKEFILE +.PHONY: njs_build + +njs_build: $NJS_BUILD_DIR/Makefile + +$NJS_BUILD_DIR/Makefile: $NGX_MAKEFILE \\ + $ngx_addon_dir/../configure `echo $ngx_addon_dir/../auto/*` cd $ngx_addon_dir/.. \\ && CFLAGS="\$(CFLAGS)" CC="\$(CC)" ./configure --no-openssl \\ - --no-libxml2 --no-zlib --no-pcre --no-quickjs \\ - --no-root-makefile --build-dir="$NJS_BUILD_DIR" \\ - --ld-opt="$NGX_LD_OPT" \\ - && \$(MAKE) -f $NJS_BUILD_DIR/Makefile libnjs + --no-libxml2 --no-zlib --no-pcre --no-root-makefile \\ + --build-dir="$NJS_BUILD_DIR" --ld-opt="$NGX_LD_OPT" \\ + $NJS_QUICKJS_OPT -$NJS_BUILD_DIR/libqjs.a: $NGX_MAKEFILE +$NJS_ENGINE_DEP: njs_build + +$NJS_BUILD_DIR/libnjs.a: cd $ngx_addon_dir/.. \\ - && CFLAGS="\$(CFLAGS)" CC="\$(CC)" ./configure --no-openssl \\ - --no-libxml2 --no-zlib --no-pcre --with-quickjs \\ - --no-root-makefile --build-dir="$NJS_BUILD_DIR" \\ - --quickjs-inc="$NJS_QUICKJS_INC" \\ - --quickjs-lib="$NJS_QUICKJS_LIB" --ld-opt="$NGX_LD_OPT" \\ - && \$(MAKE) -f $NJS_BUILD_DIR/Makefile libnjs libqjs + && \$(MAKE) -f $NJS_BUILD_DIR/Makefile \\ + $NJS_BUILD_TARGETS + +END + +if [ "$NJS_HAVE_QUICKJS" = YES ]; then + cat << END >> $NGX_MAKEFILE + +$NJS_BUILD_DIR/libqjs.a: $NJS_BUILD_DIR/libnjs.a + +END +fi + +cat << END >> $NGX_MAKEFILE + +$NJS_BUILD_DIR/njs_auto_config.h: $NJS_BUILD_DIR/libnjs.a END -- 2.47.3