[njs] Modules: added options to disable parts dependant on 3rd party libs.

Dmitry Volyntsev xeioex at nginx.com
Thu May 11 23:54:25 UTC 2023


details:   https://hg.nginx.org/njs/rev/1f84f3c34bb0
branches:  
changeset: 2116:1f84f3c34bb0
user:      Dmitry Volyntsev <xeioex at nginx.com>
date:      Wed May 10 22:36:53 2023 -0700
description:
Modules: added options to disable parts dependant on 3rd party libs.

The following environment variables are added: NJS_OPENSSL, NJS_LIBXSLT,
NJS_ZLIB.  When a variable evaluates to "NO" the part of the module
related to the corresponsing library is disabled.

For example to disable libxslt related code:
    NJS_LIBXSLT=NO ./configure  .. --add-module=/path/to/njs/module

diffstat:

 nginx/config   |  43 +++++++++++++++++++++++++++++++++++++------
 nginx/ngx_js.c |   6 ++++++
 2 files changed, 43 insertions(+), 6 deletions(-)

diffs (89 lines):

diff -r a140e71b0fbf -r 1f84f3c34bb0 nginx/config
--- a/nginx/config	Wed May 10 20:50:53 2023 -0700
+++ b/nginx/config	Wed May 10 22:36:53 2023 -0700
@@ -1,13 +1,42 @@
 ngx_addon_name="ngx_js_module"
 
+NJS_OPENSSL=${NJS_OPENSSL:-YES}
+NJS_LIBXSLT=${NJS_LIBXSLT:-YES}
+NJS_ZLIB=${NJS_ZLIB:-YES}
+
 NJS_DEPS="$ngx_addon_dir/ngx_js.h \
     $ngx_addon_dir/ngx_js_fetch.h"
 NJS_SRCS="$ngx_addon_dir/ngx_js.c \
     $ngx_addon_dir/ngx_js_fetch.c \
-    $ngx_addon_dir/ngx_js_regex.c \
-    $ngx_addon_dir/../external/njs_webcrypto_module.c
-    $ngx_addon_dir/../external/njs_zlib_module.c
-    $ngx_addon_dir/../external/njs_xml_module.c"
+    $ngx_addon_dir/ngx_js_regex.c"
+
+NJS_OPENSSL_LIB=
+NJS_XSLT_LIB=
+NJS_ZLIB_LIB=
+
+if [ $NJS_OPENSSL != NO ]; then
+    NJS_OPENSSL_LIB=OPENSSL
+    have=NJS_HAVE_OPENSSL . auto/have
+    NJS_SRCS="$NJS_SRCS $ngx_addon_dir/../external/njs_webcrypto_module.c"
+
+    echo " enabled webcrypto module"
+fi
+
+if [ $NJS_LIBXSLT != NO ]; then
+    NJS_XSLT_LIB=LIBXSLT
+    have=NJS_HAVE_XML . auto/have
+    NJS_SRCS="$NJS_SRCS $ngx_addon_dir/../external/njs_xml_module.c"
+
+    echo " enabled xml module"
+fi
+
+if [ $NJS_ZLIB != NO ]; then
+    NJS_ZLIB_LIB=ZLIB
+    have=NJS_HAVE_ZLIB . auto/have
+    NJS_SRCS="$NJS_SRCS $ngx_addon_dir/../external/njs_zlib_module.c"
+
+    echo " enabled zlib module"
+fi
 
 if [ $HTTP != NO ]; then
     ngx_module_type=HTTP_AUX_FILTER
@@ -15,7 +44,8 @@ if [ $HTTP != NO ]; then
     ngx_module_incs="$ngx_addon_dir/../src $ngx_addon_dir/../build"
     ngx_module_deps="$ngx_addon_dir/../build/libnjs.a $NJS_DEPS"
     ngx_module_srcs="$ngx_addon_dir/ngx_http_js_module.c $NJS_SRCS"
-    ngx_module_libs="PCRE OPENSSL ZLIB LIBXSLT $ngx_addon_dir/../build/libnjs.a -lm"
+    ngx_module_libs="PCRE $NJS_OPENSSL_LIB $NJS_XSLT_LIB $NJS_ZLIB_LIB \
+                     $ngx_addon_dir/../build/libnjs.a -lm"
 
     . auto/module
 
@@ -30,7 +60,8 @@ if [ $STREAM != NO ]; then
     ngx_module_incs="$ngx_addon_dir/../src $ngx_addon_dir/../build"
     ngx_module_deps="$ngx_addon_dir/../build/libnjs.a $NJS_DEPS"
     ngx_module_srcs="$ngx_addon_dir/ngx_stream_js_module.c $NJS_SRCS"
-    ngx_module_libs="PCRE OPENSSL ZLIB LIBXSLT $ngx_addon_dir/../build/libnjs.a -lm"
+    ngx_module_libs="PCRE $NJS_OPENSSL_LIB $NJS_XSLT_LIB $NJS_ZLIB_LIB \
+                     $ngx_addon_dir/../build/libnjs.a -lm"
 
     . auto/module
 fi
diff -r a140e71b0fbf -r 1f84f3c34bb0 nginx/ngx_js.c
--- a/nginx/ngx_js.c	Wed May 10 20:50:53 2023 -0700
+++ b/nginx/ngx_js.c	Wed May 10 22:36:53 2023 -0700
@@ -88,9 +88,15 @@ static njs_external_t  ngx_js_ext_core[]
 
 
 njs_module_t *njs_js_addon_modules[] = {
+#ifdef NJS_HAVE_OPENSSL
     &njs_webcrypto_module,
+#endif
+#ifdef NJS_HAVE_XML
     &njs_xml_module,
+#endif
+#ifdef NJS_HAVE_ZLIB
     &njs_zlib_module,
+#endif
     NULL,
 };
 


More information about the nginx-devel mailing list