mirror of
https://github.com/nghttp2/nghttp2.git
synced 2025-12-06 18:18:52 +08:00
Previously we only update consumed flow control window when number of bytes read in nghttp2 and spdylay callback is 0. Now we notify nghttp2 library the consumed bytes even if number of bytes read > 0. This change also uses newly added spdylay_session_consume() API, so we require spdylay >= 1.3.0.
561 lines
18 KiB
Plaintext
561 lines
18 KiB
Plaintext
dnl nghttp2 - HTTP/2 C Library
|
|
|
|
dnl Copyright (c) 2012, 2013 Tatsuhiro Tsujikawa
|
|
|
|
dnl Permission is hereby granted, free of charge, to any person obtaining
|
|
dnl a copy of this software and associated documentation files (the
|
|
dnl "Software"), to deal in the Software without restriction, including
|
|
dnl without limitation the rights to use, copy, modify, merge, publish,
|
|
dnl distribute, sublicense, and/or sell copies of the Software, and to
|
|
dnl permit persons to whom the Software is furnished to do so, subject to
|
|
dnl the following conditions:
|
|
|
|
dnl The above copyright notice and this permission notice shall be
|
|
dnl included in all copies or substantial portions of the Software.
|
|
|
|
dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
dnl EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
dnl NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
dnl LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
dnl OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
dnl WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
AC_PREREQ(2.61)
|
|
AC_INIT([nghttp2], [0.6.0-DEV], [t-tujikawa@users.sourceforge.net])
|
|
LT_PREREQ([2.2.6])
|
|
LT_INIT()
|
|
dnl See versioning rule:
|
|
dnl http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
|
|
AC_SUBST(LT_CURRENT, 4)
|
|
AC_SUBST(LT_REVISION, 1)
|
|
AC_SUBST(LT_AGE, 0)
|
|
|
|
major=`echo $PACKAGE_VERSION |cut -d. -f1 | sed -e "s/[^0-9]//g"`
|
|
minor=`echo $PACKAGE_VERSION |cut -d. -f2 | sed -e "s/[^0-9]//g"`
|
|
patch=`echo $PACKAGE_VERSION |cut -d. -f3 | cut -d- -f1 | sed -e "s/[^0-9]//g"`
|
|
|
|
PACKAGE_VERSION_NUM=`printf "0x%02x%02x%02x" "$major" "$minor" "$patch"`
|
|
|
|
AC_SUBST(PACKAGE_VERSION_NUM)
|
|
|
|
AC_CANONICAL_BUILD
|
|
AC_CANONICAL_HOST
|
|
AC_CANONICAL_TARGET
|
|
|
|
AC_CONFIG_MACRO_DIR([m4])
|
|
|
|
AM_INIT_AUTOMAKE([subdir-objects])
|
|
|
|
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
|
|
|
AC_CONFIG_HEADERS([config.h])
|
|
|
|
dnl Checks for command-line options
|
|
AC_ARG_ENABLE([werror],
|
|
[AS_HELP_STRING([--enable-werror],
|
|
[Turn on compile time warnings])],
|
|
[werror=$enableval], [werror=no])
|
|
|
|
AC_ARG_ENABLE([debug],
|
|
[AS_HELP_STRING([--enable-debug],
|
|
[Turn on debug output])],
|
|
[debug=$enableval], [debug=no])
|
|
|
|
AC_ARG_ENABLE([threads],
|
|
[AS_HELP_STRING([--disable-threads],
|
|
[Turn off threading in apps])],
|
|
[threads=$enableval], [threads=yes])
|
|
|
|
AC_ARG_ENABLE([app],
|
|
[AS_HELP_STRING([--enable-app],
|
|
[Build applications (nghttp, nghttpd and nghttpx) [default=check]])],
|
|
[request_app=$enableval], [request_app=check])
|
|
|
|
AC_ARG_ENABLE([hpack-tools],
|
|
[AS_HELP_STRING([--enable-hpack-tools],
|
|
[Build HPACK tools [default=check]])],
|
|
[request_hpack_tools=$enableval], [request_hpack_tools=check])
|
|
|
|
AC_ARG_ENABLE([examples],
|
|
[AS_HELP_STRING([--enable-examples],
|
|
[Build examples [default=check]])],
|
|
[request_examples=$enableval], [request_examples=check])
|
|
|
|
AC_ARG_ENABLE([python-bindings],
|
|
[AS_HELP_STRING([--enable-python-bindings],
|
|
[Build Python bindings [default=check]])],
|
|
[request_python_bindings=$enableval], [request_python_bindings=check])
|
|
|
|
AC_ARG_ENABLE([failmalloc],
|
|
[AS_HELP_STRING([--enable-failmalloc],
|
|
[Build failmalloc test program [default=no]])],
|
|
[request_failmalloc=$enableval], [request_failmalloc=no])
|
|
|
|
AC_ARG_WITH([libxml2],
|
|
[AS_HELP_STRING([--with-libxml2],
|
|
[Use libxml2 [default=check]])],
|
|
[request_libxml2=$withval], [request_libxml2=check])
|
|
|
|
AC_ARG_WITH([jemalloc],
|
|
[AS_HELP_STRING([--with-jemalloc],
|
|
[Use jemalloc [default=check]])],
|
|
[request_jemalloc=$withval], [request_jemalloc=check])
|
|
|
|
AC_ARG_WITH([spdylay],
|
|
[AS_HELP_STRING([--with-spdylay],
|
|
[Use spdylay [default=check]])],
|
|
[request_spdylay=$withval], [request_spdylay=check])
|
|
|
|
AC_ARG_WITH([cython],
|
|
[AS_HELP_STRING([--with-cython=PATH],
|
|
[Use cython in given PATH])],
|
|
[cython_path=$withval], [])
|
|
|
|
dnl Define variables
|
|
AC_ARG_VAR([CYTHON], [the Cython executable])
|
|
|
|
dnl Checks for programs
|
|
AC_PROG_CC
|
|
AC_PROG_CXX
|
|
AC_PROG_INSTALL
|
|
AC_PROG_LN_S
|
|
AC_PROG_MAKE_SET
|
|
AM_PROG_CC_C_O
|
|
PKG_PROG_PKG_CONFIG([0.20])
|
|
|
|
if [test "x$request_python_bindings" != "xno"]; then
|
|
AM_PATH_PYTHON([2.7],, [:])
|
|
AX_PYTHON_DEVEL([>= '2.7'])
|
|
fi
|
|
|
|
if test "x${cython_path}" = "x"; then
|
|
AC_CHECK_PROGS([CYTHON], [cython.py cython])
|
|
else
|
|
CYTHON=${cython_path}
|
|
AC_SUBST([CYTHON])
|
|
fi
|
|
|
|
AX_CXX_COMPILE_STDCXX_11([noext], [optional])
|
|
|
|
AC_LANG_PUSH(C++)
|
|
|
|
# Check that std::chrono::steady_clock is available. In particular,
|
|
# gcc 4.6 does not have one, but has monotonic_clock which is the old
|
|
# name existed in the pre-standard draft. If steady_clock is not
|
|
# available, don't define HAVE_STEADY_CLOCK and replace steady_clock
|
|
# with monotonic_clock.
|
|
AC_MSG_CHECKING([whether std::chrono::steady_clock is available])
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
|
[[
|
|
#include <chrono>
|
|
]],
|
|
[[
|
|
auto tp = std::chrono::steady_clock::now();
|
|
]])],
|
|
[AC_DEFINE([HAVE_STEADY_CLOCK], [1],
|
|
[Define to 1 if you have the `std::chrono::steady_clock`.])
|
|
AC_MSG_RESULT([yes])],
|
|
[AC_MSG_RESULT([no])])
|
|
|
|
# Check that std::future is available.
|
|
AC_MSG_CHECKING([whether std::future is available])
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
|
[[
|
|
#include <vector>
|
|
#include <future>
|
|
]],
|
|
[[
|
|
std::vector<std::future<int>> v;
|
|
]])],
|
|
[AC_DEFINE([HAVE_STD_FUTURE], [1],
|
|
[Define to 1 if you have the `std::future`.])
|
|
have_std_future=yes
|
|
AC_MSG_RESULT([yes])],
|
|
[have_std_future=no
|
|
AC_MSG_RESULT([no])])
|
|
|
|
AC_LANG_POP()
|
|
|
|
# Checks for libraries.
|
|
|
|
# Additional libraries required for tests.
|
|
TESTS_LIBS=
|
|
|
|
# Additional libraries required for programs under src directory.
|
|
SRC_LIBS=
|
|
|
|
LIBS_OLD=$LIBS
|
|
# Search for dlsym function, which is used in tests. Linux needs -ldl,
|
|
# but netbsd does not need it.
|
|
AC_SEARCH_LIBS([dlsym], [dl])
|
|
TESTS_LIBS="$LIBS $TESTS_LIBS"
|
|
LIBS=$LIBS_OLD
|
|
|
|
LIBS_OLD=$LIBS
|
|
AC_SEARCH_LIBS([clock_gettime], [rt],
|
|
[AC_DEFINE([HAVE_CLOCK_GETTIME], [1],
|
|
[Define to 1 if you have the `clock_gettime`.])])
|
|
SRC_LIBS="$LIBS $SRC_LIBS"
|
|
LIBS=$LIBS_OLD
|
|
|
|
case "$host" in
|
|
*android*)
|
|
android_build=yes
|
|
# android does not need -pthread, but needs followng 2 libs for C++
|
|
SRC_LIBS="$SRC_LIBS -lstdc++ -lsupc++"
|
|
;;
|
|
*)
|
|
PTHREAD_LDFLAGS="-pthread"
|
|
SRC_LIBS="$SRC_LIBS $PTHREAD_LDFLAGS"
|
|
;;
|
|
esac
|
|
|
|
# zlib
|
|
if test "x$android_build" = "xyes"; then
|
|
# Use zlib provided by NDK
|
|
SRC_LIBS="-lz $SRC_LIBS"
|
|
have_zlib=yes
|
|
else
|
|
PKG_CHECK_MODULES([ZLIB], [zlib >= 1.2.3], [have_zlib=yes], [have_zlib=no])
|
|
|
|
if test "x${have_zlib}" = "xno"; then
|
|
AC_MSG_NOTICE($ZLIB_PKG_ERRORS)
|
|
fi
|
|
fi
|
|
|
|
# cunit
|
|
PKG_CHECK_MODULES([CUNIT], [cunit >= 2.1], [have_cunit=yes], [have_cunit=no])
|
|
# If pkg-config does not find cunit, check it using AC_CHECK_LIB. We
|
|
# do this because Debian (Ubuntu) lacks pkg-config file for cunit.
|
|
if test "x${have_cunit}" = "xno"; then
|
|
AC_MSG_WARN([${CUNIT_PKG_ERRORS}])
|
|
AC_CHECK_LIB([cunit], [CU_initialize_registry],
|
|
[have_cunit=yes], [have_cunit=no])
|
|
if test "x${have_cunit}" = "xyes"; then
|
|
CUNIT_LIBS="-lcunit"
|
|
CUNIT_CFLAGS=""
|
|
AC_SUBST([CUNIT_LIBS])
|
|
AC_SUBST([CUNIT_CFLAGS])
|
|
fi
|
|
fi
|
|
if test "x${have_cunit}" = "xyes"; then
|
|
# cunit in Mac OS X requires ncurses. Note that in Mac OS X, test
|
|
# program can be built without -lncurses, but it emits runtime
|
|
# error.
|
|
case "${build}" in
|
|
*-apple-darwin*)
|
|
CUNIT_LIBS="$CUNIT_LIBS -lncurses"
|
|
AC_SUBST([CUNIT_LIBS])
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
AM_CONDITIONAL([HAVE_CUNIT], [ test "x${have_cunit}" = "xyes" ])
|
|
|
|
# openssl (for src)
|
|
PKG_CHECK_MODULES([OPENSSL], [openssl >= 1.0.1],
|
|
[have_openssl=yes], [have_openssl=no])
|
|
if test "x${have_openssl}" = "xno"; then
|
|
AC_MSG_NOTICE($OPENSSL_PKG_ERRORS)
|
|
fi
|
|
|
|
# libevent_openssl (for src)
|
|
# 2.0.8 is required because we use evconnlistener_set_error_cb()
|
|
PKG_CHECK_MODULES([LIBEVENT_OPENSSL], [libevent_openssl >= 2.0.8],
|
|
[have_libevent_openssl=yes], [have_libevent_openssl=no])
|
|
if test "x${have_libevent_openssl}" = "xno"; then
|
|
AC_MSG_NOTICE($LIBEVENT_OPENSSL_PKG_ERRORS)
|
|
fi
|
|
|
|
# jansson (for hdtest/deflatehd and hdtest/inflatehd)
|
|
PKG_CHECK_MODULES([JANSSON], [jansson >= 2.5],
|
|
[have_jansson=yes], [have_jansson=no])
|
|
if test "x${have_jansson}" == "xno"; then
|
|
AC_MSG_NOTICE($JANSSON_PKG_ERRORS)
|
|
fi
|
|
|
|
# libxml2 (for src/nghttp)
|
|
have_libxml2=no
|
|
if test "x${request_libxml2}" != "xno"; then
|
|
AM_PATH_XML2(2.7.7, [have_libxml2=yes], [have_libxml2=no])
|
|
if test "x${have_libxml2}" = "xyes"; then
|
|
AC_DEFINE([HAVE_LIBXML2], [1], [Define to 1 if you have `libxml2` library.])
|
|
fi
|
|
fi
|
|
|
|
if test "x${request_libxml2}" = "xyes" &&
|
|
test "x${have_libxml2}" != "xyes"; then
|
|
AC_MSG_ERROR([libxml2 was requested (--with-libxml2) but not found])
|
|
fi
|
|
|
|
AM_CONDITIONAL([HAVE_LIBXML2], [ test "x${have_libxml2}" = "xyes" ])
|
|
|
|
# jemalloc
|
|
have_jemalloc=no
|
|
if test "x${request_jemalloc}" != "xno"; then
|
|
LIBS_OLD=$LIBS
|
|
AC_SEARCH_LIBS([malloc_stats_print], [jemalloc], [have_jemalloc=yes], [],
|
|
[$PTHREAD_LDFLAGS])
|
|
LIBS=$LIBS_OLD
|
|
if test "x${have_jemalloc}" = "xyes" &&
|
|
test "x${ac_cv_search_malloc_stats_print}" != "xnone required"; then
|
|
JEMALLOC_LIBS=${ac_cv_search_malloc_stats_print}
|
|
AC_SUBST([JEMALLOC_LIBS])
|
|
fi
|
|
fi
|
|
|
|
if test "x${request_jemalloc}" = "xyes" &&
|
|
test "x${have_jemalloc}" != "xyes"; then
|
|
AC_MSG_ERROR([jemalloc was requested (--with-jemalloc) but not found])
|
|
fi
|
|
|
|
# spdylay (for src/nghttpx and src/h2load)
|
|
have_spdylay=no
|
|
if test "x${request_spdylay}" != "xno"; then
|
|
PKG_CHECK_MODULES([LIBSPDYLAY], [libspdylay >= 1.3.0],
|
|
[have_spdylay=yes], [have_spdylay=no])
|
|
if test "x${have_spdylay}" = "xyes"; then
|
|
AC_DEFINE([HAVE_SPDYLAY], [1], [Define to 1 if you have `spdylay` library.])
|
|
else
|
|
AC_MSG_NOTICE($LIBSPDYLAY_PKG_ERRORS)
|
|
AC_MSG_NOTICE([The SPDY support in nghttpx and h2load will be disabled.])
|
|
fi
|
|
fi
|
|
|
|
if test "x${request_spdylay}" = "xyes" &&
|
|
test "x${have_spdylay}" != "xyes"; then
|
|
AC_MSG_ERROR([spdylay was requested (--with-spdylay) but not found])
|
|
fi
|
|
|
|
AM_CONDITIONAL([HAVE_SPDYLAY], [ test "x${have_spdylay}" = "xyes" ])
|
|
|
|
# The nghttp, nghttpd and nghttpx under src depend on zlib, OpenSSL
|
|
# and libevent_openssl
|
|
enable_app=no
|
|
if test "x${request_app}" != "xno" &&
|
|
test "x${have_zlib}" = "xyes" &&
|
|
test "x${have_openssl}" = "xyes" &&
|
|
test "x${have_libevent_openssl}" = "xyes"; then
|
|
enable_app=yes
|
|
fi
|
|
|
|
if test "x${request_app}" = "xyes" &&
|
|
test "x${enable_app}" != "xyes"; then
|
|
AC_MSG_ERROR([applications were requested (--enable-app) but dependencies are not met.])
|
|
fi
|
|
|
|
AM_CONDITIONAL([ENABLE_APP], [ test "x${enable_app}" = "xyes" ])
|
|
AM_CONDITIONAL([ENABLE_H2LOAD], [ test "x${have_std_future}" = "xyes" ])
|
|
|
|
enable_hpack_tools=no
|
|
# HPACK tools requires jansson
|
|
if test "x${request_hpack_tools}" != "xno" &&
|
|
test "x${have_jansson}" = "xyes"; then
|
|
enable_hpack_tools=yes
|
|
fi
|
|
|
|
if test "x${request_hpack_tools}" = "xyes" &&
|
|
test "x${enable_hpack_tools}" != "xyes"; then
|
|
AC_MSG_ERROR([HPACK tools were requested (--enable-hpack-tools) but dependencies are not met.])
|
|
fi
|
|
|
|
AM_CONDITIONAL([ENABLE_HPACK_TOOLS], [ test "x${enable_hpack_tools}" = "xyes" ])
|
|
|
|
# The example programs depend on OpenSSL and libevent_openssl
|
|
enable_examples=no
|
|
if test "x${request_examples}" != "xno" &&
|
|
test "x${have_openssl}" = "xyes" &&
|
|
test "x${have_libevent_openssl}" = "xyes"; then
|
|
enable_examples=yes
|
|
fi
|
|
|
|
if test "x${request_examples}" = "xyes" &&
|
|
test "x${enable_examples}" != "xyes"; then
|
|
AC_MSG_ERROR([examples were requested (--enable-examples) but dependencies are not met.])
|
|
fi
|
|
|
|
AM_CONDITIONAL([ENABLE_EXAMPLES], [ test "x${enable_examples}" = "xyes" ])
|
|
|
|
# Python bindings
|
|
enable_python_bindings=no
|
|
if test "x${request_python_bindings}" != "xno" &&
|
|
test "x${CYTHON}" != "x" &&
|
|
test "x${PYTHON}" != "x:" &&
|
|
test "x${have_python_dev}" = "xyes"; then
|
|
enable_python_bindings=yes
|
|
fi
|
|
|
|
if test "x${request_python_bindings}" = "xyes" &&
|
|
test "x${enable_python_bindings}" != "xyes"; then
|
|
AC_MSG_ERROR([python bindings were requested (--enable-python-bindings) but dependencies are not met.])
|
|
fi
|
|
|
|
AM_CONDITIONAL([ENABLE_PYTHON_BINDINGS],
|
|
[test "x${enable_python_bindings}" = "xyes"])
|
|
|
|
# Produce cython conditional, so that we can distribute generated C
|
|
# source
|
|
AM_CONDITIONAL([HAVE_CYTHON], [test "x${CYTHON}" != "x"])
|
|
|
|
# failmalloc tests
|
|
AM_CONDITIONAL([ENABLE_FAILMALLOC], [ test "x${enable_failmalloc}" = "xyes" ])
|
|
|
|
# Checks for header files.
|
|
AC_HEADER_ASSERT
|
|
AC_CHECK_HEADERS([ \
|
|
arpa/inet.h \
|
|
netinet/in.h \
|
|
pwd.h \
|
|
stddef.h \
|
|
stdint.h \
|
|
stdlib.h \
|
|
string.h \
|
|
time.h \
|
|
unistd.h \
|
|
])
|
|
|
|
case "${host}" in
|
|
*mingw*)
|
|
# For ntohl, ntohs in Windows
|
|
AC_CHECK_HEADERS([winsock2.h])
|
|
;;
|
|
esac
|
|
|
|
# Checks for typedefs, structures, and compiler characteristics.
|
|
AC_TYPE_SIZE_T
|
|
AC_TYPE_SSIZE_T
|
|
AC_TYPE_UINT8_T
|
|
AC_TYPE_UINT16_T
|
|
AC_TYPE_UINT32_T
|
|
AC_TYPE_UINT64_T
|
|
AC_CHECK_TYPES([ptrdiff_t])
|
|
AC_C_BIGENDIAN
|
|
AC_SYS_LARGEFILE
|
|
|
|
# Checks for library functions.
|
|
if test "x$cross_compiling" != "xyes"; then
|
|
AC_FUNC_MALLOC
|
|
fi
|
|
AC_CHECK_FUNCS([ \
|
|
getpwnam \
|
|
memmove \
|
|
memset \
|
|
timegm \
|
|
])
|
|
|
|
dnl Windows library for winsock2
|
|
case "${host}" in
|
|
*mingw*)
|
|
LIBS="$LIBS -lws2_32"
|
|
;;
|
|
esac
|
|
|
|
if test "x$werror" != "xno"; then
|
|
AX_CHECK_COMPILE_FLAG([-Wall], [CFLAGS="$CFLAGS -Wall"])
|
|
AX_CHECK_COMPILE_FLAG([-Wextra], [CFLAGS="$CFLAGS -Wextra"])
|
|
AX_CHECK_COMPILE_FLAG([-Werror], [CFLAGS="$CFLAGS -Werror"])
|
|
AX_CHECK_COMPILE_FLAG([-Wmissing-prototypes], [CFLAGS="$CFLAGS -Wmissing-prototypes"])
|
|
AX_CHECK_COMPILE_FLAG([-Wstrict-prototypes], [CFLAGS="$CFLAGS -Wstrict-prototypes"])
|
|
AX_CHECK_COMPILE_FLAG([-Wmissing-declarations], [CFLAGS="$CFLAGS -Wmissing-declarations"])
|
|
AX_CHECK_COMPILE_FLAG([-Wpointer-arith], [CFLAGS="$CFLAGS -Wpointer-arith"])
|
|
AX_CHECK_COMPILE_FLAG([-Wdeclaration-after-statement], [CFLAGS="$CFLAGS -Wdeclaration-after-statement"])
|
|
AX_CHECK_COMPILE_FLAG([-Wformat-security], [CFLAGS="$CFLAGS -Wformat-security"])
|
|
AX_CHECK_COMPILE_FLAG([-Wwrite-strings], [CFLAGS="$CFLAGS -Wwrite-strings"])
|
|
AX_CHECK_COMPILE_FLAG([-Wshadow], [CFLAGS="$CFLAGS -Wshadow"])
|
|
AX_CHECK_COMPILE_FLAG([-Winline], [CFLAGS="$CFLAGS -Winline"])
|
|
AX_CHECK_COMPILE_FLAG([-Wnested-externs], [CFLAGS="$CFLAGS -Wnested-externs"])
|
|
AX_CHECK_COMPILE_FLAG([-Wfloat-equal], [CFLAGS="$CFLAGS -Wfloat-equal"])
|
|
AX_CHECK_COMPILE_FLAG([-Wundef], [CFLAGS="$CFLAGS -Wundef"])
|
|
AX_CHECK_COMPILE_FLAG([-Wendif-labels], [CFLAGS="$CFLAGS -Wendif-labels"])
|
|
AX_CHECK_COMPILE_FLAG([-Wempty-body], [CFLAGS="$CFLAGS -Wempty-body"])
|
|
AX_CHECK_COMPILE_FLAG([-Wcast-align], [CFLAGS="$CFLAGS -Wcast-align"])
|
|
AX_CHECK_COMPILE_FLAG([-Wclobbered], [CFLAGS="$CFLAGS -Wclobbered"])
|
|
AX_CHECK_COMPILE_FLAG([-Wvla], [CFLAGS="$CFLAGS -Wvla"])
|
|
AX_CHECK_COMPILE_FLAG([-Wno-unused-parameter], [CFLAGS="$CFLAGS -Wno-unused-parameter"])
|
|
AX_CHECK_COMPILE_FLAG([-Wpragmas], [CFLAGS="$CFLAGS -Wpragmas"])
|
|
AX_CHECK_COMPILE_FLAG([-Wunreachable-code], [CFLAGS="$CFLAGS -Wunreachable-code"])
|
|
AX_CHECK_COMPILE_FLAG([-Waddress], [CFLAGS="$CFLAGS -Waddress"])
|
|
AX_CHECK_COMPILE_FLAG([-Wattributes], [CFLAGS="$CFLAGS -Wattributes"])
|
|
AX_CHECK_COMPILE_FLAG([-Wdiv-by-zero], [CFLAGS="$CFLAGS -Wdiv-by-zero"])
|
|
AX_CHECK_COMPILE_FLAG([-Wshorten-64-to-32], [CFLAGS="$CFLAGS -Wshorten-64-to-32"])
|
|
|
|
# Only work with Clang for the moment
|
|
AX_CHECK_COMPILE_FLAG([-Wheader-guard], [CFLAGS="$CFLAGS -Wheader-guard"])
|
|
fi
|
|
|
|
if test "x$debug" != "xno"; then
|
|
AC_DEFINE([DEBUGBUILD], [1], [Define to 1 to enable debug output.])
|
|
fi
|
|
|
|
if test "x$threads" != "xyes"; then
|
|
AC_DEFINE([NOTHREADS], [1], [Define to 1 if you want to disable threads.])
|
|
fi
|
|
|
|
AC_SUBST([TESTS_LIBS])
|
|
AC_SUBST([SRC_LIBS])
|
|
|
|
AC_CONFIG_FILES([
|
|
Makefile
|
|
lib/Makefile
|
|
lib/libnghttp2.pc
|
|
lib/includes/Makefile
|
|
lib/includes/nghttp2/nghttp2ver.h
|
|
tests/Makefile
|
|
tests/testdata/Makefile
|
|
third-party/Makefile
|
|
src/Makefile
|
|
examples/Makefile
|
|
python/Makefile
|
|
python/setup.py
|
|
doc/Makefile
|
|
doc/conf.py
|
|
doc/index.rst
|
|
doc/package_README.rst
|
|
doc/tutorial-client.rst
|
|
doc/tutorial-server.rst
|
|
doc/tutorial-hpack.rst
|
|
doc/nghttpx-howto.rst
|
|
doc/h2load-howto.rst
|
|
doc/python-apiref.rst
|
|
doc/building-android-binary.rst
|
|
doc/nghttp2.h.rst
|
|
doc/nghttp2ver.h.rst
|
|
])
|
|
AC_OUTPUT
|
|
|
|
AC_MSG_NOTICE([summary of build options:
|
|
|
|
Version: ${VERSION} shared $LT_CURRENT:$LT_REVISION:$LT_AGE
|
|
Host type: ${host}
|
|
Install prefix: ${prefix}
|
|
C compiler: ${CC}
|
|
CFLAGS: ${CFLAGS}
|
|
LDFLAGS: ${LDFLAGS}
|
|
LIBS: ${LIBS}
|
|
CPPFLAGS: ${CPPFLAGS}
|
|
C preprocessor: ${CPP}
|
|
C++ compiler: ${CXX}
|
|
CXXFLAGS: ${CXXFLAGS}
|
|
CXXCPP: ${CXXCPP}
|
|
Library types: Shared=${enable_shared}, Static=${enable_static}
|
|
Python: ${PYTHON}
|
|
PYTHON_VERSION: ${PYTHON_VERSION}
|
|
pyexecdir: ${pyexecdir}
|
|
Python-dev: ${have_python_dev}
|
|
PYTHON_CPPFLAGS:${PYTHON_CPPFLAGS}
|
|
PYTHON_LDFLAGS: ${PYTHON_LDFLAGS}
|
|
Cython: ${CYTHON}
|
|
CUnit: ${have_cunit}
|
|
OpenSSL: ${have_openssl}
|
|
Libxml2: ${have_libxml2}
|
|
Libevent(SSL): ${have_libevent_openssl}
|
|
Spdylay: ${have_spdylay}
|
|
Jansson: ${have_jansson}
|
|
Jemalloc: ${have_jemalloc}
|
|
Applications: ${enable_app}
|
|
HPACK tools: ${enable_hpack_tools}
|
|
Examples: ${enable_examples}
|
|
Python bindings:${enable_python_bindings}
|
|
Failmalloc: ${request_failmalloc}
|
|
])
|