@@ -193,72 +193,123 @@ ngx_feature_test="
193193# Test whether we have pagespeed and can compile and link against it.
194194. "$ngx_addon_dir/cpp_feature"
195195
196- if [ $ngx_found = yes ]; then
197- ps_src="$ngx_addon_dir/src"
198- ngx_addon_name=ngx_pagespeed
199- NGX_ADDON_DEPS="$NGX_ADDON_DEPS \
200- $ps_src/log_message_handler.h \
201- $ps_src/ngx_base_fetch.h \
202- $ps_src/ngx_caching_headers.h \
203- $ps_src/ngx_event_connection.h \
204- $ps_src/ngx_fetch.h \
205- $ps_src/ngx_gzip_setter.h \
206- $ps_src/ngx_list_iterator.h \
207- $ps_src/ngx_message_handler.h \
208- $ps_src/ngx_pagespeed.h \
209- $ps_src/ngx_rewrite_driver_factory.h \
210- $ps_src/ngx_rewrite_options.h \
211- $ps_src/ngx_server_context.h \
212- $ps_src/ngx_url_async_fetcher.h \
213- $psol_binary"
214- NGX_ADDON_SRCS="$NGX_ADDON_SRCS \
215- $ps_src/log_message_handler.cc \
216- $ps_src/ngx_base_fetch.cc \
217- $ps_src/ngx_caching_headers.cc \
218- $ps_src/ngx_event_connection.cc \
219- $ps_src/ngx_fetch.cc \
220- $ps_src/ngx_gzip_setter.cc \
221- $ps_src/ngx_list_iterator.cc \
222- $ps_src/ngx_message_handler.cc \
223- $ps_src/ngx_pagespeed.cc \
224- $ps_src/ngx_rewrite_driver_factory.cc \
225- $ps_src/ngx_rewrite_options.cc \
226- $ps_src/ngx_server_context.cc \
227- $ps_src/ngx_url_async_fetcher.cc"
228- # Save our sources in a separate var since we may need it in config.make
229- PS_NGX_SRCS="$NGX_ADDON_SRCS"
196+ if [ $ngx_found = no ]; then
197+ cat << END
198+ $0: error: module ngx_pagespeed requires the pagespeed optimization library.
199+ Look in obj/autoconf.err for more details.
200+ END
201+ exit 1
202+ fi
230203
231- if [ "$position_aux" = "true" ] ; then
232- HTTP_AUX_FILTER_MODULES="$HTTP_AUX_FILTER_MODULES $ngx_addon_name"
233- else
234- # Make pagespeed run immediately before gzip and Brotli.
235- if echo $HTTP_FILTER_MODULES | grep ngx_http_brotli_filter_module >/dev/null; then
236- module=ngx_http_brotli_filter_module
237- elif [ $HTTP_GZIP = YES ]; then
238- module=ngx_http_gzip_filter_module
204+ ps_src="$ngx_addon_dir/src"
205+ ngx_addon_name=ngx_pagespeed
206+ NGX_ADDON_DEPS="$NGX_ADDON_DEPS \
207+ $ps_src/log_message_handler.h \
208+ $ps_src/ngx_base_fetch.h \
209+ $ps_src/ngx_caching_headers.h \
210+ $ps_src/ngx_event_connection.h \
211+ $ps_src/ngx_fetch.h \
212+ $ps_src/ngx_gzip_setter.h \
213+ $ps_src/ngx_list_iterator.h \
214+ $ps_src/ngx_message_handler.h \
215+ $ps_src/ngx_pagespeed.h \
216+ $ps_src/ngx_rewrite_driver_factory.h \
217+ $ps_src/ngx_rewrite_options.h \
218+ $ps_src/ngx_server_context.h \
219+ $ps_src/ngx_url_async_fetcher.h \
220+ $psol_binary"
221+ NPS_SRCS=" \
222+ $ps_src/log_message_handler.cc \
223+ $ps_src/ngx_base_fetch.cc \
224+ $ps_src/ngx_caching_headers.cc \
225+ $ps_src/ngx_event_connection.cc \
226+ $ps_src/ngx_fetch.cc \
227+ $ps_src/ngx_gzip_setter.cc \
228+ $ps_src/ngx_list_iterator.cc \
229+ $ps_src/ngx_message_handler.cc \
230+ $ps_src/ngx_pagespeed.cc \
231+ $ps_src/ngx_rewrite_driver_factory.cc \
232+ $ps_src/ngx_rewrite_options.cc \
233+ $ps_src/ngx_server_context.cc \
234+ $ps_src/ngx_url_async_fetcher.cc"
235+ # Save our sources in a separate var since we may need it in config.make
236+ PS_NGX_SRCS="$NGX_ADDON_SRCS \
237+ $NPS_SRCS"
238+
239+ # Make pagespeed run immediately before gzip and Brotli.
240+ if echo $HTTP_FILTER_MODULES | grep ngx_http_brotli_filter_module >/dev/null; then
241+ next=ngx_http_brotli_filter_module
242+ elif [ $HTTP_GZIP = YES ]; then
243+ next=ngx_http_gzip_filter_module
244+ else
245+ next=ngx_http_range_header_filter_module
246+ fi
247+
248+ if [ -n "$ngx_module_link" ]; then
249+ # nginx-1.9.11+
250+ ngx_module_type=HTTP_FILTER
251+ ngx_module_name="ngx_pagespeed ngx_pagespeed_etag_filter"
252+ ngx_module_incs="$ngx_feature_path"
253+ ngx_module_deps=
254+ ngx_module_srcs="$NPS_SRCS"
255+ ngx_module_libs="$ngx_feature_libs"
256+ ngx_module_order="ngx_http_range_header_filter_module\
257+ ngx_pagespeed_etag_filter\
258+ ngx_http_gzip_filter_module \
259+ ngx_http_brotli_filter_module \
260+ ngx_pagespeed \
261+ ngx_http_postpone_filter_module \
262+ ngx_http_ssi_filter_module \
263+ ngx_http_charset_filter_module \
264+ ngx_http_xslt_filter_module \
265+ ngx_http_image_filter_module \
266+ ngx_http_sub_filter_module \
267+ ngx_http_addition_filter_module \
268+ ngx_http_gunzip_filter_module \
269+ ngx_http_userid_filter_module \
270+ ngx_http_headers_filter_module"
271+
272+ . auto/module
273+
274+ if [ $ngx_module_link != DYNAMIC ]; then
275+ # ngx_module_order doesn't work with static modules,
276+ # so we must re-order filters here.
277+ if [ "$position_aux" = "true" ] ; then
278+ HTTP_AUX_FILTER_MODULES="$HTTP_AUX_FILTER_MODULES $ngx_addon_name"
279+ else
280+ HTTP_FILTER_MODULES=$(echo $HTTP_FILTER_MODULES \
281+ | sed "s/ngx_pagespeed//" \
282+ | sed "s/$next/$next ngx_pagespeed/")
283+ fi
284+ # Make the etag header filter run immediately before range header filter.
285+ HTTP_FILTER_MODULES=$(echo $HTTP_FILTER_MODULES \
286+ | sed "s/ngx_pagespeed_etag_filter//" \
287+ | sed "s/ngx_http_range_header_filter_module/ngx_http_range_header_filter_module ngx_pagespeed_etag_filter/")
239288 else
240- module=ngx_http_range_header_filter_module
289+ # config.make is not executed for dynamic modules
290+ CFLAGS="$CFLAGS -Wno-c++11-extensions"
291+ if [ "$position_aux" = "true" ] ; then
292+ ngx_module_type=HTTP_AUX_FILTER
293+ ngx_module_order=""
294+ fi
241295 fi
242-
243- HTTP_FILTER_MODULES=$(echo $HTTP_FILTER_MODULES |\
244- sed "s/$module/$module $ngx_addon_name/")
296+ else
297+ CORE_LIBS="$CORE_LIBS $pagespeed_libs"
298+ CORE_INCS="$CORE_INCS $pagespeed_include"
299+ NGX_ADDON_SRCS="$PS_NGX_SRCS"
300+ if [ "$position_aux" = "true" ] ; then
301+ HTTP_AUX_FILTER_MODULES="$HTTP_AUX_FILTER_MODULES $ngx_addon_name"
302+ else
303+ HTTP_FILTER_MODULES=$(echo $HTTP_FILTER_MODULES | sed "s/$next/$next $ngx_addon_name/")
245304 fi
246305
247306 # Make the etag header filter run immediately before range header filter.
248307 HTTP_FILTER_MODULES=$(echo $HTTP_FILTER_MODULES |\
249308 sed "s/ngx_http_range_header_filter_module/ngx_http_range_header_filter_module ngx_pagespeed_etag_filter/")
250-
251- CORE_LIBS="$CORE_LIBS $pagespeed_libs"
252- CORE_INCS="$CORE_INCS $pagespeed_include"
253- echo "List of modules (in reverse order of applicability): "$HTTP_FILTER_MODULES
254- else
255- cat << END
256- $0: error: module ngx_pagespeed requires the pagespeed optimization library.
257- Look in obj/autoconf.err for more details.
258- END
259- exit 1
260309fi
261310
311+ echo "List of modules (in reverse order of applicability): "$HTTP_FILTER_MODULES
312+
262313# Test whether the compiler is compatible
263314ngx_feature="psol-compiler-compat"
264315ngx_feature_name=""
0 commit comments