mirror of
https://github.com/nginx/nginx.git
synced 2024-12-18 23:57:49 +08:00
97f59dda09
The auto/module script is extended to understand ngx_module_link=DYNAMIC. When set, it links the module as a shared object rather than statically into nginx binary. The module can later be loaded using the "load_module" directive. New auto/module parameter ngx_module_order allows to define module loading order in complex cases. By default the order is set based on ngx_module_type. 3rd party modules can be compiled dynamically using the --add-dynamic-module configure option, which will preset ngx_module_link to "DYNAMIC" before calling the module config script. Win32 support is rudimentary, and only works when using MinGW gcc (which is able to handle exports/imports automatically). In collaboration with Ruslan Ermilov.
123 lines
2.8 KiB
Plaintext
123 lines
2.8 KiB
Plaintext
|
|
# Copyright (C) Ruslan Ermilov
|
|
# Copyright (C) Nginx, Inc.
|
|
|
|
|
|
case $ngx_module_type in
|
|
HTTP_*) ngx_var=HTTP ;;
|
|
*) ngx_var=$ngx_module_type ;;
|
|
esac
|
|
|
|
|
|
if [ "$ngx_module_link" = DYNAMIC ]; then
|
|
|
|
for ngx_module in $ngx_module_name; do
|
|
# extract the first name
|
|
break
|
|
done
|
|
|
|
DYNAMIC_MODULES="$DYNAMIC_MODULES $ngx_module"
|
|
eval ${ngx_module}_SRCS=\"$ngx_module_srcs\"
|
|
|
|
eval ${ngx_module}_MODULES=\"$ngx_module_name\"
|
|
|
|
if [ -z "$ngx_module_order" -a \
|
|
\( "$ngx_module_type" = "HTTP_FILTER" \
|
|
-o "$ngx_module_type" = "HTTP_AUX_FILTER" \) ]
|
|
then
|
|
eval ${ngx_module}_ORDER=\"$ngx_module_name \
|
|
ngx_http_copy_filter_module\"
|
|
else
|
|
eval ${ngx_module}_ORDER=\"$ngx_module_order\"
|
|
fi
|
|
|
|
if test -n "$ngx_module_incs"; then
|
|
CORE_INCS="$CORE_INCS $ngx_module_incs"
|
|
fi
|
|
|
|
libs=
|
|
for lib in $ngx_module_libs
|
|
do
|
|
case $lib in
|
|
|
|
LIBXSLT | LIBGD | GEOIP)
|
|
libs="$libs \$NGX_LIB_$lib"
|
|
|
|
if eval [ "\$USE_${lib}" = NO ] ; then
|
|
eval USE_${lib}=DYNAMIC
|
|
fi
|
|
;;
|
|
|
|
PCRE | OPENSSL | MD5 | SHA1 | ZLIB | PERL)
|
|
eval USE_${lib}=YES
|
|
;;
|
|
|
|
*)
|
|
libs="$libs $lib"
|
|
;;
|
|
|
|
esac
|
|
done
|
|
eval ${ngx_module}_LIBS=\'$libs\'
|
|
|
|
elif [ "$ngx_module_link" = YES ]; then
|
|
|
|
eval ${ngx_module_type}_MODULES=\"\$${ngx_module_type}_MODULES \
|
|
$ngx_module_name\"
|
|
|
|
eval ${ngx_var}_SRCS=\"\$${ngx_var}_SRCS $ngx_module_srcs\"
|
|
|
|
if test -n "$ngx_module_incs"; then
|
|
eval ${ngx_var}_INCS=\"\$${ngx_var}_INCS $ngx_module_incs\"
|
|
fi
|
|
|
|
if test -n "$ngx_module_deps"; then
|
|
eval ${ngx_var}_DEPS=\"\$${ngx_var}_DEPS $ngx_module_deps\"
|
|
fi
|
|
|
|
for lib in $ngx_module_libs
|
|
do
|
|
case $lib in
|
|
|
|
PCRE | OPENSSL | MD5 | SHA1 | ZLIB | LIBXSLT | LIBGD | PERL | GEOIP)
|
|
eval USE_${lib}=YES
|
|
;;
|
|
|
|
*)
|
|
CORE_LIBS="$CORE_LIBS $lib"
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
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"
|
|
|
|
if test -n "$ngx_module_incs"; then
|
|
eval ${ngx_var}_INCS=\"\$${ngx_var}_INCS $ngx_module_incs\"
|
|
fi
|
|
|
|
if test -n "$ngx_module_deps"; then
|
|
NGX_ADDON_DEPS="$NGX_ADDON_DEPS $ngx_module_deps"
|
|
fi
|
|
|
|
for lib in $ngx_module_libs
|
|
do
|
|
case $lib in
|
|
|
|
PCRE | OPENSSL | MD5 | SHA1 | ZLIB | LIBXSLT | LIBGD | PERL | GEOIP)
|
|
eval USE_${lib}=YES
|
|
;;
|
|
|
|
*)
|
|
CORE_LIBS="$CORE_LIBS $lib"
|
|
;;
|
|
|
|
esac
|
|
done
|
|
fi
|