]> git.kaiwu.me - nginx.git/commitdiff
Configure: shared sources for addon modules.
authorMaxim Dounin <mdounin@mdounin.ru>
Tue, 10 Nov 2020 14:13:20 +0000 (17:13 +0300)
committerMaxim Dounin <mdounin@mdounin.ru>
Tue, 10 Nov 2020 14:13:20 +0000 (17:13 +0300)
Addon modules, both dynamic and static, can now use shared source files.
Shared sources result in only one make rule even if specified several
times in different modules.

auto/make
auto/module
auto/options

index 041d280cddf14f814a932dc485597c614fe0c9d1..ef7c9f69470e0e7450385b07660f5f877b28a3ff 100644 (file)
--- a/auto/make
+++ b/auto/make
@@ -502,6 +502,7 @@ fi
 for ngx_module in $DYNAMIC_MODULES
 do
     eval ngx_module_srcs="\$${ngx_module}_SRCS"
+    eval ngx_module_shrd="\$${ngx_module}_SHRD"
     eval eval ngx_module_libs="\\\"\$${ngx_module}_LIBS\\\""
 
     eval ngx_module_modules="\$${ngx_module}_MODULES"
@@ -567,7 +568,7 @@ END
         | sed -e "s/\(.*\.\)c/\1$ngx_objext/"`
 
     ngx_module_objs=
-    for ngx_src in $ngx_module_srcs
+    for ngx_src in $ngx_module_srcs $ngx_module_shrd
     do
         case "$ngx_src" in
             src/*)
index a2b578db2c6752cd9071bc6db5dc888557d2658e..3857d04ca916bf61800d99a777f2938a1919c498 100644 (file)
@@ -17,7 +17,6 @@ if [ "$ngx_module_link" = DYNAMIC ]; then
     done
 
     DYNAMIC_MODULES="$DYNAMIC_MODULES $ngx_module"
-    eval ${ngx_module}_SRCS=\"$ngx_module_srcs\"
 
     eval ${ngx_module}_MODULES=\"$ngx_module_name\"
 
@@ -31,6 +30,30 @@ if [ "$ngx_module_link" = DYNAMIC ]; then
         eval ${ngx_module}_ORDER=\"$ngx_module_order\"
     fi
 
+    srcs=
+    shrd=
+    for src in $ngx_module_srcs
+    do
+        found=no
+        for old in $DYNAMIC_MODULES_SRCS
+        do
+            if [ $src = $old ]; then
+                found=yes
+                break
+            fi
+        done
+
+        if [ $found = no ]; then
+            srcs="$srcs $src"
+        else
+            shrd="$shrd $src"
+        fi
+    done
+    eval ${ngx_module}_SRCS=\"$srcs\"
+    eval ${ngx_module}_SHRD=\"$shrd\"
+
+    DYNAMIC_MODULES_SRCS="$DYNAMIC_MODULES_SRCS $srcs"
+
     if test -n "$ngx_module_incs"; then
         CORE_INCS="$CORE_INCS $ngx_module_incs"
     fi
@@ -107,7 +130,24 @@ elif [ "$ngx_module_link" = ADDON ]; then
     eval ${ngx_module_type}_MODULES=\"\$${ngx_module_type}_MODULES \
                                       $ngx_module_name\"
 
-    NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_module_srcs"
+    srcs=
+    for src in $ngx_module_srcs
+    do
+        found=no
+        for old in $NGX_ADDON_SRCS
+        do
+            if [ $src = $old ]; then
+                found=yes
+                break
+            fi
+        done
+
+        if [ $found = no ]; then
+            srcs="$srcs $src"
+        fi
+    done
+
+    NGX_ADDON_SRCS="$NGX_ADDON_SRCS $srcs"
 
     if test -n "$ngx_module_incs"; then
         eval ${ngx_var}_INCS=\"\$${ngx_var}_INCS $ngx_module_incs\"
index 110141dcb97a4ce60c36823df529de4b2d95499e..80be906e10ca40e46cc790ef01ac7a5ef282ae3d 100644 (file)
@@ -132,6 +132,7 @@ STREAM_UPSTREAM_ZONE=YES
 STREAM_SSL_PREREAD=NO
 
 DYNAMIC_MODULES=
+DYNAMIC_MODULES_SRCS=
 
 NGX_ADDONS=
 NGX_ADDON_SRCS=