]> git.kaiwu.me - njs.git/commitdiff
Modules: fix incremental engine build dependencies
authorDmitry Volyntsev <xeioex@nginx.com>
Thu, 22 Oct 2026 00:38:04 +0000 (17:38 -0700)
committerDmitry Volyntsev <xeioexception@gmail.com>
Thu, 22 Oct 2026 21:25:01 +0000 (14:25 -0700)
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
nginx/config.make

index 654d67040ed1042831f1ceb806091dea3876946a..15d4f9cf279979f3d15058b3d1f7fa7c4a4186d6 100644 (file)
@@ -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"
index d55987cb0c4b9ff764e873e7aade40fa9e8bdbba..7b0d1ef499cbaf511ec245660e72f56dbed7d1c0 100644 (file)
@@ -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