blob: 64a1448cb4ab5045c64ba7f7dc37ce5248a14513 [file] [log] [blame]
# 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
if [ -z "$ngx_module_link" ]; then
cat << END
$0: error: Brotli module requires recent version of NGINX (1.9.11+).
END
exit 1
fi
#
# HTTP static module
#
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=
ngx_module_order=
. auto/module
have=NGX_HTTP_GZIP . auto/have
have=NGX_HTTP_BROTLI_STATIC . auto/have
#
# HTTP filter module with Brotli library
#
brotli="$ngx_addon_dir/deps/brotli"
if [ ! -f "$brotli/include/brotli/encode.h" ]; then
cat << END
$0: error: \
Brotli library is missing from the $brotli directory.
Please make sure that the git submodule has been checked out:
cd $ngx_addon_dir && git submodule update --init && cd $PWD
END
exit 1
fi
ngx_module_type=HTTP_FILTER
ngx_module_name=ngx_http_brotli_filter_module
ngx_module_incs="$brotli/include"
ngx_module_deps="$brotli/common/constants.h \
$brotli/common/dictionary.h \
$brotli/common/version.h \
$brotli/enc/backward_references.h \
$brotli/enc/backward_references_inc.h \
$brotli/enc/bit_cost.h \
$brotli/enc/bit_cost_inc.h \
$brotli/enc/block_encoder_inc.h \
$brotli/enc/block_splitter.h \
$brotli/enc/block_splitter_inc.h \
$brotli/enc/brotli_bit_stream.h \
$brotli/enc/cluster.h \
$brotli/enc/cluster_inc.h \
$brotli/enc/command.h \
$brotli/enc/compress_fragment.h \
$brotli/enc/compress_fragment_two_pass.h \
$brotli/enc/context.h \
$brotli/enc/dictionary_hash.h \
$brotli/enc/entropy_encode.h \
$brotli/enc/entropy_encode_static.h \
$brotli/enc/fast_log.h \
$brotli/enc/find_match_length.h \
$brotli/enc/hash_forgetful_chain_inc.h \
$brotli/enc/hash.h \
$brotli/enc/hash_longest_match_inc.h \
$brotli/enc/hash_longest_match_quickly_inc.h \
$brotli/enc/histogram.h \
$brotli/enc/histogram_inc.h \
$brotli/enc/literal_cost.h \
$brotli/enc/memory.h \
$brotli/enc/metablock.h \
$brotli/enc/metablock_inc.h \
$brotli/enc/port.h \
$brotli/enc/prefix.h \
$brotli/enc/quality.h \
$brotli/enc/ringbuffer.h \
$brotli/enc/static_dict.h \
$brotli/enc/static_dict_lut.h \
$brotli/enc/utf8_util.h \
$brotli/enc/write_bits.h"
ngx_module_srcs="$brotli/common/dictionary.c \
$brotli/enc/backward_references.c \
$brotli/enc/bit_cost.c \
$brotli/enc/block_splitter.c \
$brotli/enc/brotli_bit_stream.c \
$brotli/enc/cluster.c \
$brotli/enc/compress_fragment.c \
$brotli/enc/compress_fragment_two_pass.c \
$brotli/enc/encode.c \
$brotli/enc/entropy_encode.c \
$brotli/enc/histogram.c \
$brotli/enc/literal_cost.c \
$brotli/enc/memory.c \
$brotli/enc/metablock.c \
$brotli/enc/static_dict.c \
$brotli/enc/utf8_util.c \
$ngx_addon_dir/src/ngx_http_brotli_filter_module.c"
ngx_module_libs="-lm"
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 \
ngx_http_copy_filter_module \
ngx_http_range_body_filter_module \
ngx_http_not_modified_filter_module \
ngx_http_slice_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.
if [ "$HTTP_GZIP" = YES ]; then
next=ngx_http_gzip_filter_module
elif echo $HTTP_FILTER_MODULES | grep pagespeed_etag_filter >/dev/null; then
next=ngx_pagespeed_etag_filter
else
next=ngx_http_range_header_filter_module
fi
HTTP_FILTER_MODULES=`echo $HTTP_FILTER_MODULES \
| sed "s/$ngx_module_name//" \
| sed "s/$next/$next $ngx_module_name/"`
fi
CFLAGS="$CFLAGS -Wno-deprecated-declarations"
have=NGX_HTTP_BROTLI_FILTER . auto/have