| # Copyright (C) 2015-2016 Google Inc. |
| # All rights reserved. |
| # |
| # Redistribution and use in source and binary forms, with or without |
| # modification, are permitted provided that the following conditions |
| # are met: |
| # 1. Redistributions of source code must retain the above copyright |
| # notice, this list of conditions and the following disclaimer. |
| # 2. Redistributions in binary form must reproduce the above copyright |
| # notice, this list of conditions and the following disclaimer in the |
| # documentation and/or other materials provided with the distribution. |
| # |
| # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND |
| # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
| # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE |
| # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
| # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
| # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
| # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
| # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
| # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
| # SUCH DAMAGE. |
| |
| ngx_addon_name=ngx_brotli |
| |
| # |
| # static module (no dependencies) |
| # |
| |
| if [ -n "$ngx_module_link" ]; then |
| # nginx-1.9.11+ |
| ngx_module_type=HTTP |
| ngx_module_name=ngx_http_brotli_static_module |
| ngx_module_incs= |
| ngx_module_deps= |
| ngx_module_srcs="$ngx_addon_dir/src/ngx_http_brotli_static_module.c" |
| ngx_module_libs= |
| |
| . auto/module |
| else |
| HTTP_MODULES="$HTTP_MODULES \ |
| ngx_http_brotli_static_module" |
| |
| NGX_ADDON_SRCS="$NGX_ADDON_SRCS \ |
| $ngx_addon_dir/src/ngx_http_brotli_static_module.c" |
| fi |
| |
| have=NGX_HTTP_GZIP . auto/have |
| have=NGX_HTTP_BROTLI_STATIC . auto/have |
| |
| if [ -n "$NGX_BROTLI_STATIC_MODULE_ONLY" ]; then |
| return |
| fi |
| |
| # |
| # filter module (depends on Brotli library) |
| # |
| |
| # <brotli/encode.h> |
| |
| ngx_feature_name= |
| ngx_feature_run=no |
| ngx_feature_incs="#include <brotli/encode.h>" |
| ngx_feature_test="BrotliEncoderCreateInstance(NULL, NULL, NULL)" |
| |
| # auto-discovery |
| ngx_feature="Brotli library" |
| ngx_feature_path= |
| ngx_feature_libs="-lbrotlienc -lm" |
| . auto/feature |
| |
| if [ $ngx_found = no ]; then |
| # FreeBSD, OpenBSD |
| ngx_feature="Brotli library in /usr/local/" |
| ngx_feature_path="/usr/local/include" |
| if [ $NGX_RPATH = YES ]; then |
| ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lbrotlienc -lm" |
| else |
| ngx_feature_libs="-L/usr/local/lib -lbrotlienc -lm" |
| fi |
| . auto/feature |
| fi |
| |
| if [ $ngx_found = no ]; then |
| # NetBSD |
| ngx_feature="Brotli library in /usr/pkg/" |
| ngx_feature_path="/usr/pkg/include" |
| if [ $NGX_RPATH = YES ]; then |
| ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lbrotlienc -lm" |
| else |
| ngx_feature_libs="-L/usr/pkg/lib -lbrotlienc -lm" |
| fi |
| . auto/feature |
| fi |
| |
| if [ $ngx_found = no ]; then |
| # MacPorts |
| ngx_feature="Brotli library in /opt/local/" |
| ngx_feature_path="/opt/local/include" |
| if [ $NGX_RPATH = YES ]; then |
| ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lbrotlienc -lm" |
| else |
| ngx_feature_libs="-L/opt/local/lib -lbrotlienc -lm" |
| fi |
| . auto/feature |
| fi |
| |
| # <brotli/enc/encode.h> |
| |
| if [ $ngx_found = no ]; then |
| ngx_feature_name=NGX_HAVE_BROTLI_ENC_ENCODE_H |
| ngx_feature_run=no |
| ngx_feature_incs="#include <brotli/enc/encode.h>" |
| ngx_feature_test="BrotliEncoderCreateInstance(NULL, NULL, NULL)" |
| |
| # auto-discovery |
| ngx_feature="Brotli library" |
| ngx_feature_path= |
| ngx_feature_libs="-lbrotlienc -lm" |
| . auto/feature |
| fi |
| |
| if [ $ngx_found = no ]; then |
| # FreeBSD, OpenBSD |
| ngx_feature="Brotli library in /usr/local/" |
| ngx_feature_path="/usr/local/include" |
| if [ $NGX_RPATH = YES ]; then |
| ngx_feature_libs="-R/usr/local/lib -L/usr/local/lib -lbrotlienc -lm" |
| else |
| ngx_feature_libs="-L/usr/local/lib -lbrotlienc -lm" |
| fi |
| . auto/feature |
| fi |
| |
| if [ $ngx_found = no ]; then |
| # NetBSD |
| ngx_feature="Brotli library in /usr/pkg/" |
| ngx_feature_path="/usr/pkg/include" |
| if [ $NGX_RPATH = YES ]; then |
| ngx_feature_libs="-R/usr/pkg/lib -L/usr/pkg/lib -lbrotlienc -lm" |
| else |
| ngx_feature_libs="-L/usr/pkg/lib -lbrotlienc -lm" |
| fi |
| . auto/feature |
| fi |
| |
| if [ $ngx_found = no ]; then |
| # MacPorts |
| ngx_feature="Brotli library in /opt/local/" |
| ngx_feature_path="/opt/local/include" |
| if [ $NGX_RPATH = YES ]; then |
| ngx_feature_libs="-R/opt/local/lib -L/opt/local/lib -lbrotlienc -lm" |
| else |
| ngx_feature_libs="-L/opt/local/lib -lbrotlienc -lm" |
| fi |
| . auto/feature |
| fi |
| |
| if [ $ngx_found = no ]; then |
| echo "$0: error: ngx_brotli filter module requires Brotli library." |
| exit 1 |
| fi |
| |
| if [ $HTTP_GZIP = YES ]; then |
| next=ngx_http_gzip_filter_module |
| elif echo $HTTP_FILTER_MODULES | grep ngx_pagespeed_etag_filter >/dev/null; then |
| next=ngx_pagespeed_etag_filter |
| else |
| next=ngx_http_range_header_filter_module |
| fi |
| |
| if [ -n "$ngx_module_link" ]; then |
| # nginx-1.9.11+ |
| ngx_module_type=HTTP_FILTER |
| ngx_module_name=ngx_http_brotli_filter_module |
| ngx_module_incs="$ngx_feature_path" |
| ngx_module_deps= |
| ngx_module_srcs="$ngx_addon_dir/src/ngx_http_brotli_filter_module.c" |
| ngx_module_libs="$ngx_feature_libs" |
| ngx_module_order="$ngx_module_name \ |
| ngx_pagespeed \ |
| ngx_http_postpone_filter_module \ |
| ngx_http_ssi_filter_module \ |
| ngx_http_charset_filter_module \ |
| ngx_http_xslt_filter_module \ |
| ngx_http_image_filter_module \ |
| ngx_http_sub_filter_module \ |
| ngx_http_addition_filter_module \ |
| ngx_http_gunzip_filter_module \ |
| ngx_http_userid_filter_module \ |
| ngx_http_headers_filter_module" |
| |
| . auto/module |
| |
| if [ $ngx_module_link != DYNAMIC ]; then |
| # ngx_module_order doesn't work with static modules, |
| # so we must re-order filters here. |
| HTTP_FILTER_MODULES=`echo $HTTP_FILTER_MODULES \ |
| | sed "s/$ngx_module_name//" \ |
| | sed "s/$next/$next $ngx_module_name/"` |
| fi |
| else |
| CORE_INCS="$CORE_INCS $ngx_feature_path" |
| CORE_LIBS="$CORE_LIBS $ngx_feature_libs" |
| |
| HTTP_FILTER_MODULES=`echo $HTTP_FILTER_MODULES \ |
| | sed "s/$next/$next ngx_http_brotli_filter_module/"` |
| |
| NGX_ADDON_SRCS="$NGX_ADDON_SRCS \ |
| $ngx_addon_dir/src/ngx_http_brotli_filter_module.c" |
| fi |
| |
| have=NGX_HTTP_BROTLI_FILTER . auto/have |