1dnl nghttp2 - HTTP/2 C Library 2 3dnl Copyright (c) 2012, 2013, 2014, 2015 Tatsuhiro Tsujikawa 4 5dnl Permission is hereby granted, free of charge, to any person obtaining 6dnl a copy of this software and associated documentation files (the 7dnl "Software"), to deal in the Software without restriction, including 8dnl without limitation the rights to use, copy, modify, merge, publish, 9dnl distribute, sublicense, and/or sell copies of the Software, and to 10dnl permit persons to whom the Software is furnished to do so, subject to 11dnl the following conditions: 12 13dnl The above copyright notice and this permission notice shall be 14dnl included in all copies or substantial portions of the Software. 15 16dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17dnl EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19dnl NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 20dnl LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 21dnl OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 22dnl WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 24dnl Do not change user variables! 25dnl https://www.gnu.org/software/automake/manual/html_node/Flag-Variables-Ordering.html 26 27AC_PREREQ(2.61) 28AC_INIT([nghttp2], [1.52.0], [t-tujikawa@users.sourceforge.net]) 29AC_CONFIG_AUX_DIR([.]) 30AC_CONFIG_MACRO_DIR([m4]) 31AC_CONFIG_HEADERS([config.h]) 32AC_USE_SYSTEM_EXTENSIONS 33 34LT_PREREQ([2.2.6]) 35LT_INIT() 36 37AC_CANONICAL_BUILD 38AC_CANONICAL_HOST 39AC_CANONICAL_TARGET 40 41AM_INIT_AUTOMAKE([subdir-objects]) 42 43m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) 44 45dnl See versioning rule: 46dnl https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html 47AC_SUBST(LT_CURRENT, 38) 48AC_SUBST(LT_REVISION, 1) 49AC_SUBST(LT_AGE, 24) 50 51major=`echo $PACKAGE_VERSION |cut -d. -f1 | sed -e "s/[^0-9]//g"` 52minor=`echo $PACKAGE_VERSION |cut -d. -f2 | sed -e "s/[^0-9]//g"` 53patch=`echo $PACKAGE_VERSION |cut -d. -f3 | cut -d- -f1 | sed -e "s/[^0-9]//g"` 54 55PACKAGE_VERSION_NUM=`printf "0x%02x%02x%02x" "$major" "$minor" "$patch"` 56 57AC_SUBST(PACKAGE_VERSION_NUM) 58 59dnl Checks for command-line options 60AC_ARG_ENABLE([werror], 61 [AS_HELP_STRING([--enable-werror], 62 [Turn on compile time warnings])], 63 [werror=$enableval], [werror=no]) 64 65AC_ARG_ENABLE([debug], 66 [AS_HELP_STRING([--enable-debug], 67 [Turn on debug output])], 68 [debug=$enableval], [debug=no]) 69 70AC_ARG_ENABLE([threads], 71 [AS_HELP_STRING([--disable-threads], 72 [Turn off threading in apps])], 73 [threads=$enableval], [threads=yes]) 74 75AC_ARG_ENABLE([app], 76 [AS_HELP_STRING([--enable-app], 77 [Build applications (nghttp, nghttpd, nghttpx and h2load) [default=check]])], 78 [request_app=$enableval], [request_app=check]) 79 80AC_ARG_ENABLE([hpack-tools], 81 [AS_HELP_STRING([--enable-hpack-tools], 82 [Build HPACK tools [default=check]])], 83 [request_hpack_tools=$enableval], [request_hpack_tools=check]) 84 85AC_ARG_ENABLE([examples], 86 [AS_HELP_STRING([--enable-examples], 87 [Build examples [default=check]])], 88 [request_examples=$enableval], [request_examples=check]) 89 90AC_ARG_ENABLE([failmalloc], 91 [AS_HELP_STRING([--disable-failmalloc], 92 [Do not build failmalloc test program])], 93 [request_failmalloc=$enableval], [request_failmalloc=yes]) 94 95AC_ARG_ENABLE([lib-only], 96 [AS_HELP_STRING([--enable-lib-only], 97 [Build libnghttp2 only. This is a short hand for --disable-app --disable-examples --disable-hpack-tools])], 98 [request_lib_only=$enableval], [request_lib_only=no]) 99 100AC_ARG_ENABLE([http3], 101 [AS_HELP_STRING([--enable-http3], 102 [(EXPERIMENTAL) Enable HTTP/3. This requires ngtcp2, nghttp3, and a custom OpenSSL.])], 103 [request_http3=$enableval], [request_http3=no]) 104 105AC_ARG_WITH([libxml2], 106 [AS_HELP_STRING([--with-libxml2], 107 [Use libxml2 [default=check]])], 108 [request_libxml2=$withval], [request_libxml2=check]) 109 110AC_ARG_WITH([jansson], 111 [AS_HELP_STRING([--with-jansson], 112 [Use jansson [default=check]])], 113 [request_jansson=$withval], [request_jansson=check]) 114 115AC_ARG_WITH([zlib], 116 [AS_HELP_STRING([--with-zlib], 117 [Use zlib [default=check]])], 118 [request_zlib=$withval], [request_zlib=check]) 119 120AC_ARG_WITH([libevent-openssl], 121 [AS_HELP_STRING([--with-libevent-openssl], 122 [Use libevent_openssl [default=check]])], 123 [request_libevent_openssl=$withval], [request_libevent_openssl=check]) 124 125AC_ARG_WITH([libcares], 126 [AS_HELP_STRING([--with-libcares], 127 [Use libc-ares [default=check]])], 128 [request_libcares=$withval], [request_libcares=check]) 129 130AC_ARG_WITH([openssl], 131 [AS_HELP_STRING([--with-openssl], 132 [Use openssl [default=check]])], 133 [request_openssl=$withval], [request_openssl=check]) 134 135AC_ARG_WITH([libev], 136 [AS_HELP_STRING([--with-libev], 137 [Use libev [default=check]])], 138 [request_libev=$withval], [request_libev=check]) 139 140AC_ARG_WITH([cunit], 141 [AS_HELP_STRING([--with-cunit], 142 [Use cunit [default=check]])], 143 [request_cunit=$withval], [request_cunit=check]) 144 145AC_ARG_WITH([jemalloc], 146 [AS_HELP_STRING([--with-jemalloc], 147 [Use jemalloc [default=check]])], 148 [request_jemalloc=$withval], [request_jemalloc=check]) 149 150AC_ARG_WITH([systemd], 151 [AS_HELP_STRING([--with-systemd], 152 [Enable systemd support in nghttpx [default=check]])], 153 [request_systemd=$withval], [request_systemd=check]) 154 155AC_ARG_WITH([mruby], 156 [AS_HELP_STRING([--with-mruby], 157 [Use mruby [default=no]])], 158 [request_mruby=$withval], [request_mruby=no]) 159 160AC_ARG_WITH([neverbleed], 161 [AS_HELP_STRING([--with-neverbleed], 162 [Use neverbleed [default=no]])], 163 [request_neverbleed=$withval], [request_neverbleed=no]) 164 165AC_ARG_WITH([libngtcp2], 166 [AS_HELP_STRING([--with-libngtcp2], 167 [Use libngtcp2 [default=check]])], 168 [request_libngtcp2=$withval], [request_libngtcp2=check]) 169 170AC_ARG_WITH([libnghttp3], 171 [AS_HELP_STRING([--with-libnghttp3], 172 [Use libnghttp3 [default=check]])], 173 [request_libnghttp3=$withval], [request_libnghttp3=check]) 174 175AC_ARG_WITH([libbpf], 176 [AS_HELP_STRING([--with-libbpf], 177 [Use libbpf [default=no]])], 178 [request_libbpf=$withval], [request_libbpf=no]) 179 180dnl Define variables 181AC_ARG_VAR([LIBEV_CFLAGS], [C compiler flags for libev, skipping any checks]) 182AC_ARG_VAR([LIBEV_LIBS], [linker flags for libev, skipping any checks]) 183 184AC_ARG_VAR([JEMALLOC_CFLAGS], 185 [C compiler flags for jemalloc, skipping any checks]) 186AC_ARG_VAR([JEMALLOC_LIBS], [linker flags for jemalloc, skipping any checks]) 187 188AC_ARG_VAR([LIBTOOL_LDFLAGS], 189 [libtool specific flags (e.g., -static-libtool-libs)]) 190 191AC_ARG_VAR([BPFCFLAGS], [C compiler flags for bpf program]) 192 193dnl Checks for programs 194AC_PROG_CC 195AC_PROG_CXX 196AC_PROG_CPP 197AC_PROG_INSTALL 198AC_PROG_LN_S 199AC_PROG_MAKE_SET 200AC_PROG_MKDIR_P 201 202PKG_PROG_PKG_CONFIG([0.20]) 203 204AM_PATH_PYTHON([3.8],, [:]) 205 206if [test "x$request_lib_only" = "xyes"]; then 207 request_app=no 208 request_hpack_tools=no 209 request_examples=no 210 request_http3=no 211 request_libxml2=no 212 request_jansson=no 213 request_zlib=no 214 request_libevent_openssl=no 215 request_libcares=no 216 request_openssl=no 217 request_libev=no 218 request_jemalloc=no 219 request_systemd=no 220 request_mruby=no 221 request_neverbleed=no 222 request_libngtcp2=no 223 request_libnghttp3=no 224 request_libbpf=no 225fi 226 227if test "x$GCC" = "xyes" -o "x$CC" = "xclang" ; then 228 AC_DEFINE([NGHTTP2_NORETURN], [__attribute__((noreturn))], [Hint to the compiler that a function never return]) 229else 230 AC_DEFINE([NGHTTP2_NORETURN], , [Hint to the compiler that a function never return]) 231fi 232 233save_CXXFLAGS="$CXXFLAGS" 234CXXFLAGS= 235 236AX_CXX_COMPILE_STDCXX([14], [noext], [optional]) 237 238CXX1XCXXFLAGS="$CXXFLAGS" 239CXXFLAGS="$save_CXXFLAGS" 240AC_SUBST([CXX1XCXXFLAGS]) 241 242AC_LANG_PUSH(C++) 243 244save_CXXFLAGS="$CXXFLAGS" 245CXXFLAGS="$CXXFLAGS $CXX1XCXXFLAGS" 246 247# Check that std::future is available. 248AC_MSG_CHECKING([whether std::future is available]) 249AC_COMPILE_IFELSE([AC_LANG_PROGRAM( 250[[ 251#include <vector> 252#include <future> 253]], 254[[ 255std::vector<std::future<int>> v; 256(void)v; 257]])], 258 [AC_DEFINE([HAVE_STD_FUTURE], [1], 259 [Define to 1 if you have the `std::future`.]) 260 have_std_future=yes 261 AC_MSG_RESULT([yes])], 262 [have_std_future=no 263 AC_MSG_RESULT([no])]) 264 265# Check that std::map::emplace is available for g++-4.7. 266AC_MSG_CHECKING([whether std::map::emplace is available]) 267AC_COMPILE_IFELSE([AC_LANG_PROGRAM( 268[[ 269#include <map> 270]], 271[[ 272std::map<int, int>().emplace(1, 2); 273]])], 274 [AC_DEFINE([HAVE_STD_MAP_EMPLACE], [1], 275 [Define to 1 if you have the `std::map::emplace`.]) 276 have_std_map_emplace=yes 277 AC_MSG_RESULT([yes])], 278 [have_std_map_emplace=no 279 AC_MSG_RESULT([no])]) 280 281# Check that std::atomic_* overloads for std::shared_ptr are 282# available. 283AC_MSG_CHECKING([whether std::atomic_* overloads for std::shared_ptr are available]) 284AC_COMPILE_IFELSE([AC_LANG_PROGRAM( 285[[ 286#include <memory> 287]], 288[[ 289auto a = std::make_shared<int>(1000000007); 290auto p = std::atomic_load(&a); 291++*p; 292std::atomic_store(&a, p); 293]])], 294 [AC_DEFINE([HAVE_ATOMIC_STD_SHARED_PTR], [1], 295 [Define to 1 if you have the std::atomic_* overloads for std::shared_ptr.]) 296 have_atomic_std_shared_ptr=yes 297 AC_MSG_RESULT([yes])], 298 [have_atomic_std_shared_ptr=no 299 AC_MSG_RESULT([no])]) 300 301# Check that thread_local storage specifier is available 302AC_MSG_CHECKING([whether thread_local storage class specifier is available.]) 303AC_COMPILE_IFELSE([AC_LANG_PROGRAM( 304, 305[[ 306thread_local int a = 0; 307(void)a; 308]])], 309 [AC_DEFINE([HAVE_THREAD_LOCAL], [1], 310 [Define to 1 if you have thread_local storage specifier.]) 311 have_thread_local=yes 312 AC_MSG_RESULT([yes])], 313 [have_Thread_local=no 314 AC_MSG_RESULT([no])]) 315 316CXXFLAGS=$save_CXXFLAGS 317 318AC_LANG_POP() 319 320# Checks for libraries. 321 322# Additional libraries required for tests. 323TESTLDADD= 324 325# Additional libraries required for programs under src directory. 326APPLDFLAGS= 327 328case "$host_os" in 329 *android*) 330 android_build=yes 331 # android does not need -pthread, but needs following 2 libs for C++ 332 APPLDFLAGS="$APPLDFLAGS -lstdc++ -latomic" 333 ;; 334 *) 335 PTHREAD_LDFLAGS="-pthread" 336 APPLDFLAGS="$APPLDFLAGS $PTHREAD_LDFLAGS" 337 ;; 338esac 339 340case "$host_os" in 341 *solaris*) 342 APPLDFLAGS="$APPLDFLAGS -lsocket -lnsl" 343 ;; 344esac 345 346case "${build}" in 347 *-apple-darwin*) 348 EXTRA_DEFS="-D__APPLE_USE_RFC_3542" 349 AC_SUBST([EXTRA_DEFS]) 350 ;; 351esac 352 353# zlib 354have_zlib=no 355if test "x${request_zlib}" != "xno"; then 356 PKG_CHECK_MODULES([ZLIB], [zlib >= 1.2.3], [have_zlib=yes], [have_zlib=no]) 357 358 if test "x${have_zlib}" = "xno"; then 359 AC_MSG_NOTICE($ZLIB_PKG_ERRORS) 360 fi 361fi 362 363if test "x${request_zlib}" = "xyes" && 364 test "x${have_zlib}" != "xyes"; then 365 AC_MSG_ERROR([zlib was requested (--with-zlib) but not found]) 366fi 367 368# dl: openssl requires libdl when it is statically linked. 369case "${host_os}" in 370 *bsd*) 371 # dlopen is in libc on *BSD 372 ;; 373 *) 374 save_LIBS=$LIBS 375 AC_SEARCH_LIBS([dlopen], [dl], [APPLDFLAGS="-ldl $APPLDFLAGS"], [], []) 376 LIBS=$save_LIBS 377 ;; 378esac 379 380# cunit 381have_cunit=no 382if test "x${request_cunit}" != "xno"; then 383 PKG_CHECK_MODULES([CUNIT], [cunit >= 2.1], [have_cunit=yes], [have_cunit=no]) 384 # If pkg-config does not find cunit, check it using AC_CHECK_LIB. We 385 # do this because Debian (Ubuntu) lacks pkg-config file for cunit. 386 if test "x${have_cunit}" = "xno"; then 387 AC_MSG_WARN([${CUNIT_PKG_ERRORS}]) 388 AC_CHECK_LIB([cunit], [CU_initialize_registry], 389 [have_cunit=yes], [have_cunit=no]) 390 if test "x${have_cunit}" = "xyes"; then 391 CUNIT_LIBS="-lcunit" 392 CUNIT_CFLAGS="" 393 AC_SUBST([CUNIT_LIBS]) 394 AC_SUBST([CUNIT_CFLAGS]) 395 fi 396 fi 397 if test "x${have_cunit}" = "xyes"; then 398 # cunit in Mac OS X requires ncurses. Note that in Mac OS X, test 399 # program can be built without -lncurses, but it emits runtime 400 # error. 401 case "${build}" in 402 *-apple-darwin*) 403 CUNIT_LIBS="$CUNIT_LIBS -lncurses" 404 AC_SUBST([CUNIT_LIBS]) 405 ;; 406 esac 407 fi 408fi 409 410if test "x${request_cunit}" = "xyes" && 411 test "x${have_cunit}" != "xyes"; then 412 AC_MSG_ERROR([cunit was requested (--with-cunit) but not found]) 413fi 414 415AM_CONDITIONAL([HAVE_CUNIT], [ test "x${have_cunit}" = "xyes" ]) 416 417# libev (for src) 418have_libev=no 419if test "x${request_libev}" != "xno"; then 420 if test "x${LIBEV_LIBS}" = "x" && test "x${LIBEV_CFLAGS}" = "x"; then 421 # libev does not have pkg-config file. Check it in an old way. 422 save_LIBS=$LIBS 423 # android requires -lm for floor 424 AC_CHECK_LIB([ev], [ev_time], [have_libev=yes], [have_libev=no], [-lm]) 425 if test "x${have_libev}" = "xyes"; then 426 AC_CHECK_HEADER([ev.h], [have_libev=yes], [have_libev=no]) 427 if test "x${have_libev}" = "xyes"; then 428 LIBEV_LIBS=-lev 429 LIBEV_CFLAGS= 430 fi 431 fi 432 LIBS=$save_LIBS 433 else 434 have_libev=yes 435 fi 436fi 437 438if test "x${request_libev}" = "xyes" && 439 test "x${have_libev}" != "xyes"; then 440 AC_MSG_ERROR([libev was requested (--with-libev) but not found]) 441fi 442 443# openssl (for src) 444have_openssl=no 445if test "x${request_openssl}" != "xno"; then 446 PKG_CHECK_MODULES([OPENSSL], [openssl >= 1.0.1], 447 [have_openssl=yes], [have_openssl=no]) 448 if test "x${have_openssl}" = "xno"; then 449 AC_MSG_NOTICE($OPENSSL_PKG_ERRORS) 450 else 451 save_CFLAGS="$CFLAGS" 452 save_LIBS="$LIBS" 453 CFLAGS="$OPENSSL_CFLAGS $CFLAGS" 454 LIBS="$OPENSSL_LIBS $LIBS" 455 456 # quictls/openssl has SSL_is_quic. 457 have_ssl_is_quic=no 458 AC_MSG_CHECKING([for SSL_is_quic]) 459 AC_LINK_IFELSE([AC_LANG_PROGRAM([[ 460 #include <openssl/ssl.h> 461 ]], [[ 462 SSL *ssl = NULL; 463 SSL_is_quic(ssl); 464 ]])], 465 [AC_MSG_RESULT([yes]); have_ssl_is_quic=yes], 466 [AC_MSG_RESULT([no]); have_ssl_is_quic=no]) 467 468 # boringssl has SSL_set_quic_early_data_context. 469 AC_MSG_CHECKING([for SSL_set_quic_early_data_context]) 470 AC_LINK_IFELSE([AC_LANG_PROGRAM([[ 471 #include <openssl/ssl.h> 472 ]], [[ 473 SSL *ssl = NULL; 474 SSL_set_quic_early_data_context(ssl, NULL, 0); 475 ]])], 476 [AC_MSG_RESULT([yes]); have_boringssl_quic=yes], 477 [AC_MSG_RESULT([no]); have_boringssl_quic=no]) 478 479 CFLAGS="$save_CFLAGS" 480 LIBS="$save_LIBS" 481 fi 482fi 483 484if test "x${request_openssl}" = "xyes" && 485 test "x${have_openssl}" != "xyes"; then 486 AC_MSG_ERROR([openssl was requested (--with-openssl) but not found]) 487fi 488 489# c-ares (for src) 490have_libcares=no 491if test "x${request_libcares}" != "xno"; then 492 PKG_CHECK_MODULES([LIBCARES], [libcares >= 1.7.5], [have_libcares=yes], 493 [have_libcares=no]) 494 if test "x${have_libcares}" = "xno"; then 495 AC_MSG_NOTICE($LIBCARES_PKG_ERRORS) 496 fi 497fi 498 499if test "x${request_libcares}" = "xyes" && 500 test "x${have_libcares}" != "xyes"; then 501 AC_MSG_ERROR([libcares was requested (--with-libcares) but not found]) 502fi 503 504# ngtcp2 (for src) 505have_libngtcp2=no 506if test "x${request_libngtcp2}" != "xno"; then 507 PKG_CHECK_MODULES([LIBNGTCP2], [libngtcp2 >= 0.13.0], [have_libngtcp2=yes], 508 [have_libngtcp2=no]) 509 if test "x${have_libngtcp2}" = "xno"; then 510 AC_MSG_NOTICE($LIBNGTCP2_PKG_ERRORS) 511 fi 512fi 513 514if test "x${request_libngtcp2}" = "xyes" && 515 test "x${have_libngtcp2}" != "xyes"; then 516 AC_MSG_ERROR([libngtcp2 was requested (--with-libngtcp2) but not found]) 517fi 518 519# ngtcp2_crypto_openssl (for src) 520have_libngtcp2_crypto_openssl=no 521if test "x${have_ssl_is_quic}" = "xyes" && 522 test "x${request_libngtcp2}" != "xno"; then 523 PKG_CHECK_MODULES([LIBNGTCP2_CRYPTO_OPENSSL], 524 [libngtcp2_crypto_openssl >= 0.13.0], 525 [have_libngtcp2_crypto_openssl=yes], 526 [have_libngtcp2_crypto_openssl=no]) 527 if test "x${have_libngtcp2_crypto_openssl}" = "xno"; then 528 AC_MSG_NOTICE($LIBNGTCP2_CRYPTO_OPENSSL_PKG_ERRORS) 529 else 530 AC_DEFINE([HAVE_LIBNGTCP2_CRYPTO_OPENSSL], [1], 531 [Define to 1 if you have `libngtcp2_crypto_openssl` library.]) 532 fi 533fi 534 535if test "x${have_ssl_is_quic}" = "xyes" && 536 test "x${request_libngtcp2}" = "xyes" && 537 test "x${have_libngtcp2_crypto_openssl}" != "xyes"; then 538 AC_MSG_ERROR([libngtcp2_crypto_openssl was requested (--with-libngtcp2) but not found]) 539fi 540 541# ngtcp2_crypto_boringssl (for src) 542have_libngtcp2_crypto_boringssl=no 543if test "x${have_boringssl_quic}" = "xyes" && 544 test "x${request_libngtcp2}" != "xno"; then 545 PKG_CHECK_MODULES([LIBNGTCP2_CRYPTO_BORINGSSL], 546 [libngtcp2_crypto_boringssl >= 0.0.0], 547 [have_libngtcp2_crypto_boringssl=yes], 548 [have_libngtcp2_crypto_boringssl=no]) 549 if test "x${have_libngtcp2_crypto_boringssl}" = "xno"; then 550 AC_MSG_NOTICE($LIBNGTCP2_CRYPTO_BORINGSSL_PKG_ERRORS) 551 else 552 AC_DEFINE([HAVE_LIBNGTCP2_CRYPTO_BORINGSSL], [1], 553 [Define to 1 if you have `libngtcp2_crypto_boringssl` library.]) 554 fi 555fi 556 557if test "x${have_boringssl_quic}" = "xyes" && 558 test "x${request_libngtcp2}" = "xyes" && 559 test "x${have_libngtcp2_crypto_boringssl}" != "xyes"; then 560 AC_MSG_ERROR([libngtcp2_crypto_boringssl was requested (--with-libngtcp2) but not found]) 561fi 562 563# nghttp3 (for src) 564have_libnghttp3=no 565if test "x${request_libnghttp3}" != "xno"; then 566 PKG_CHECK_MODULES([LIBNGHTTP3], [libnghttp3 >= 0.7.0], [have_libnghttp3=yes], 567 [have_libnghttp3=no]) 568 if test "x${have_libnghttp3}" = "xno"; then 569 AC_MSG_NOTICE($LIBNGHTTP3_PKG_ERRORS) 570 fi 571fi 572 573if test "x${request_libnghttp3}" = "xyes" && 574 test "x${have_libnghttp3}" != "xyes"; then 575 AC_MSG_ERROR([libnghttp3 was requested (--with-libnghttp3) but not found]) 576fi 577 578# libbpf (for src) 579have_libbpf=no 580if test "x${request_libbpf}" != "xno"; then 581 PKG_CHECK_MODULES([LIBBPF], [libbpf >= 0.7.0], [have_libbpf=yes], 582 [have_libbpf=no]) 583 if test "x${have_libbpf}" = "xyes"; then 584 AC_DEFINE([HAVE_LIBBPF], [1], [Define to 1 if you have `libbpf` library.]) 585 if test "x${BPFCFLAGS}" = "x"; then 586 BPFCFLAGS="-Wall -O2 -g" 587 fi 588 # Add the include path for Debian 589 EXTRABPFCFLAGS="-I/usr/include/$host_cpu-$host_os" 590 AC_SUBST([EXTRABPFCFLAGS]) 591 592 AC_MSG_CHECKING([whether enum bpf_stats_type is defined in linux/bpf.h]) 593 AC_COMPILE_IFELSE([AC_LANG_PROGRAM( 594 [[ 595 #include <linux/bpf.h> 596 ]], 597 [[ 598 enum bpf_stats_type foo; 599 (void)foo; 600 ]])], 601 [have_bpf_stats_type=yes], 602 [have_bpf_stats_type=no]) 603 604 if test "x${have_bpf_stats_type}" = "xyes"; then 605 AC_MSG_RESULT([yes]) 606 AC_DEFINE([HAVE_BPF_STATS_TYPE], [1], 607 [Define to 1 if you have enum bpf_stats_type in linux/bpf.h.]) 608 else 609 AC_MSG_RESULT([no]) 610 fi 611 else 612 AC_MSG_NOTICE($LIBBPF_PKG_ERRORS) 613 fi 614fi 615 616if test "x${request_libbpf}" = "xyes" && 617 test "x${have_libbpf}" != "xyes"; then 618 AC_MSG_ERROR([libbpf was requested (--with-libbpf) but not found]) 619fi 620 621AM_CONDITIONAL([HAVE_LIBBPF], [ test "x${have_libbpf}" = "xyes" ]) 622 623# libevent_openssl (for examples) 624# 2.0.8 is required because we use evconnlistener_set_error_cb() 625have_libevent_openssl=no 626if test "x${request_libevent_openssl}" != "xno"; then 627 PKG_CHECK_MODULES([LIBEVENT_OPENSSL], [libevent_openssl >= 2.0.8], 628 [have_libevent_openssl=yes], [have_libevent_openssl=no]) 629 if test "x${have_libevent_openssl}" = "xno"; then 630 AC_MSG_NOTICE($LIBEVENT_OPENSSL_PKG_ERRORS) 631 fi 632fi 633 634if test "x${request_libevent_openssl}" = "xyes" && 635 test "x${have_libevent_openssl}" != "xyes"; then 636 AC_MSG_ERROR([libevent_openssl was requested (--with-libevent) but not found]) 637fi 638 639# jansson (for src/nghttp, src/deflatehd and src/inflatehd) 640have_jansson=no 641if test "x${request_jansson}" != "xno"; then 642 PKG_CHECK_MODULES([JANSSON], [jansson >= 2.5], 643 [have_jansson=yes], [have_jansson=no]) 644 if test "x${have_jansson}" = "xyes"; then 645 AC_DEFINE([HAVE_JANSSON], [1], 646 [Define to 1 if you have `libjansson` library.]) 647 else 648 AC_MSG_NOTICE($JANSSON_PKG_ERRORS) 649 fi 650fi 651 652if test "x${request_jansson}" = "xyes" && 653 test "x${have_jansson}" != "xyes"; then 654 AC_MSG_ERROR([jansson was requested (--with-jansson) but not found]) 655fi 656 657# libsystemd (for src/nghttpx) 658have_libsystemd=no 659if test "x${request_systemd}" != "xno"; then 660 PKG_CHECK_MODULES([SYSTEMD], [libsystemd >= 209], [have_libsystemd=yes], 661 [have_libsystemd=no]) 662 if test "x${have_libsystemd}" = "xyes"; then 663 AC_DEFINE([HAVE_LIBSYSTEMD], [1], 664 [Define to 1 if you have `libsystemd` library.]) 665 else 666 AC_MSG_NOTICE($SYSTEMD_PKG_ERRORS) 667 fi 668fi 669 670if test "x${request_systemd}" = "xyes" && 671 test "x${have_libsystemd}" != "xyes"; then 672 AC_MSG_ERROR([systemd was requested (--with-systemd) but not found]) 673fi 674 675# libxml2 (for src/nghttp) 676have_libxml2=no 677if test "x${request_libxml2}" != "xno"; then 678 PKG_CHECK_MODULES([LIBXML2], [libxml-2.0 >= 2.6.26], 679 [have_libxml2=yes], [have_libxml2=no]) 680 if test "x${have_libxml2}" = "xyes"; then 681 AC_DEFINE([HAVE_LIBXML2], [1], [Define to 1 if you have `libxml2` library.]) 682 else 683 AC_MSG_NOTICE($LIBXML2_PKG_ERRORS) 684 fi 685fi 686 687if test "x${request_libxml2}" = "xyes" && 688 test "x${have_libxml2}" != "xyes"; then 689 AC_MSG_ERROR([libxml2 was requested (--with-libxml2) but not found]) 690fi 691 692AM_CONDITIONAL([HAVE_LIBXML2], [ test "x${have_libxml2}" = "xyes" ]) 693 694# jemalloc 695have_jemalloc=no 696if test "x${request_jemalloc}" != "xno"; then 697 if test "x${JEMALLOC_LIBS}" = "x" && test "x${JEMALLOC_CFLAGS}" = "x"; then 698 save_LIBS=$LIBS 699 AC_SEARCH_LIBS([malloc_stats_print], [jemalloc], [have_jemalloc=yes], [], 700 [$PTHREAD_LDFLAGS]) 701 702 if test "x${have_jemalloc}" = "xyes"; then 703 jemalloc_libs=${ac_cv_search_malloc_stats_print} 704 else 705 # On Darwin, malloc_stats_print is je_malloc_stats_print 706 AC_SEARCH_LIBS([je_malloc_stats_print], [jemalloc], [have_jemalloc=yes], [], 707 [$PTHREAD_LDFLAGS]) 708 709 if test "x${have_jemalloc}" = "xyes"; then 710 jemalloc_libs=${ac_cv_search_je_malloc_stats_print} 711 fi 712 fi 713 714 LIBS=$save_LIBS 715 716 if test "x${have_jemalloc}" = "xyes" && 717 test "x${jemalloc_libs}" != "xnone required"; then 718 JEMALLOC_LIBS=${jemalloc_libs} 719 fi 720 else 721 have_jemalloc=yes 722 fi 723fi 724 725if test "x${request_jemalloc}" = "xyes" && 726 test "x${have_jemalloc}" != "xyes"; then 727 AC_MSG_ERROR([jemalloc was requested (--with-jemalloc) but not found]) 728fi 729 730# The nghttp, nghttpd and nghttpx under src depend on zlib, OpenSSL, 731# libev, and libc-ares. 732enable_app=no 733if test "x${request_app}" != "xno" && 734 test "x${have_zlib}" = "xyes" && 735 test "x${have_openssl}" = "xyes" && 736 test "x${have_libev}" = "xyes" && 737 test "x${have_libcares}" = "xyes"; then 738 enable_app=yes 739fi 740 741if test "x${request_app}" = "xyes" && 742 test "x${enable_app}" != "xyes"; then 743 AC_MSG_ERROR([applications were requested (--enable-app) but dependencies are not met.]) 744fi 745 746AM_CONDITIONAL([ENABLE_APP], [ test "x${enable_app}" = "xyes" ]) 747 748# Check HTTP/3 support 749enable_http3=no 750if test "x${request_http3}" != "xno" && 751 (test "x${have_ssl_is_quic}" = "xyes" || 752 test "x${have_boringssl_quic}" = "xyes") && 753 test "x${have_libngtcp2}" = "xyes" && 754 (test "x${have_libngtcp2_crypto_openssl}" = "xyes" || 755 test "x${have_libngtcp2_crypto_boringssl}" = "xyes") && 756 test "x${have_libnghttp3}" = "xyes"; then 757 enable_http3=yes 758 AC_DEFINE([ENABLE_HTTP3], [1], [Define to 1 if HTTP/3 is enabled.]) 759fi 760 761if test "x${request_http3}" = "xyes" && 762 test "x${enable_http3}" != "xyes"; then 763 AC_MSG_ERROR([HTTP/3 was requested (--enable-http3) but dependencies are not met.]) 764fi 765 766AM_CONDITIONAL([ENABLE_HTTP3], [ test "x${enable_http3}" = "xyes" ]) 767 768enable_hpack_tools=no 769# HPACK tools requires jansson 770if test "x${request_hpack_tools}" != "xno" && 771 test "x${have_jansson}" = "xyes"; then 772 enable_hpack_tools=yes 773fi 774 775if test "x${request_hpack_tools}" = "xyes" && 776 test "x${enable_hpack_tools}" != "xyes"; then 777 AC_MSG_ERROR([HPACK tools were requested (--enable-hpack-tools) but dependencies are not met.]) 778fi 779 780AM_CONDITIONAL([ENABLE_HPACK_TOOLS], [ test "x${enable_hpack_tools}" = "xyes" ]) 781 782# The example programs depend on OpenSSL and libevent_openssl 783enable_examples=no 784if test "x${request_examples}" != "xno" && 785 test "x${have_openssl}" = "xyes" && 786 test "x${have_libevent_openssl}" = "xyes"; then 787 enable_examples=yes 788fi 789 790if test "x${request_examples}" = "xyes" && 791 test "x${enable_examples}" != "xyes"; then 792 AC_MSG_ERROR([examples were requested (--enable-examples) but dependencies are not met.]) 793fi 794 795AM_CONDITIONAL([ENABLE_EXAMPLES], [ test "x${enable_examples}" = "xyes" ]) 796 797# third-party only be built when needed 798 799enable_third_party=no 800have_mruby=no 801have_neverbleed=no 802if test "x${enable_examples}" = "xyes" || 803 test "x${enable_app}" = "xyes" || 804 test "x${enable_hpack_tools}" = "xyes"; then 805 enable_third_party=yes 806 807 # mruby (for src/nghttpx) 808 if test "x${request_mruby}" = "xyes"; then 809 # We are going to build mruby 810 have_mruby=yes 811 AC_DEFINE([HAVE_MRUBY], [1], [Define to 1 if you have `mruby` library.]) 812 LIBMRUBY_LIBS="-lmruby -lm" 813 LIBMRUBY_CFLAGS= 814 AC_SUBST([LIBMRUBY_LIBS]) 815 AC_SUBST([LIBMRUBY_CFLAGS]) 816 fi 817 818 # neverbleed (for src/nghttpx) 819 if test "x${request_neverbleed}" = "xyes"; then 820 have_neverbleed=yes 821 AC_DEFINE([HAVE_NEVERBLEED], [1], [Define to 1 if you have `neverbleed` library.]) 822 fi 823fi 824 825AM_CONDITIONAL([ENABLE_THIRD_PARTY], [ test "x${enable_third_party}" = "xyes" ]) 826AM_CONDITIONAL([HAVE_MRUBY], [test "x${have_mruby}" = "xyes"]) 827AM_CONDITIONAL([HAVE_NEVERBLEED], [test "x${have_neverbleed}" = "xyes"]) 828 829# failmalloc tests 830enable_failmalloc=no 831if test "x${request_failmalloc}" = "xyes"; then 832 enable_failmalloc=yes 833fi 834 835AM_CONDITIONAL([ENABLE_FAILMALLOC], [ test "x${enable_failmalloc}" = "xyes" ]) 836 837# Checks for header files. 838AC_HEADER_ASSERT 839AC_CHECK_HEADERS([ \ 840 arpa/inet.h \ 841 fcntl.h \ 842 inttypes.h \ 843 limits.h \ 844 netdb.h \ 845 netinet/in.h \ 846 pwd.h \ 847 stddef.h \ 848 stdint.h \ 849 stdlib.h \ 850 string.h \ 851 sys/socket.h \ 852 sys/time.h \ 853 sysinfoapi.h \ 854 syslog.h \ 855 time.h \ 856 unistd.h \ 857]) 858 859# Checks for typedefs, structures, and compiler characteristics. 860AC_TYPE_SIZE_T 861AC_TYPE_SSIZE_T 862AC_TYPE_UINT8_T 863AC_TYPE_UINT16_T 864AC_TYPE_UINT32_T 865AC_TYPE_UINT64_T 866AC_TYPE_INT8_T 867AC_TYPE_INT16_T 868AC_TYPE_INT32_T 869AC_TYPE_INT64_T 870AC_TYPE_OFF_T 871AC_TYPE_PID_T 872AC_TYPE_UID_T 873AC_CHECK_TYPES([ptrdiff_t]) 874AC_C_BIGENDIAN 875AC_C_INLINE 876AC_SYS_LARGEFILE 877 878AC_CHECK_MEMBER([struct tm.tm_gmtoff], [have_struct_tm_tm_gmtoff=yes], 879 [have_struct_tm_tm_gmtoff=no], [[#include <time.h>]]) 880 881AC_CHECK_MEMBER([struct sockaddr_in.sin_len], 882 [AC_DEFINE([HAVE_SOCKADDR_IN_SIN_LEN],[1], 883 [Define to 1 if struct sockaddr_in has sin_len member.])], 884 [], 885 [[ 886#include <sys/types.h> 887#include <sys/socket.h> 888#include <netinet/in.h> 889]]) 890 891AC_CHECK_MEMBER([struct sockaddr_in6.sin6_len], 892 [AC_DEFINE([HAVE_SOCKADDR_IN6_SIN6_LEN],[1], 893 [Define to 1 if struct sockaddr_in6 has sin6_len member.])], 894 [], 895 [[ 896#include <sys/types.h> 897#include <sys/socket.h> 898#include <netinet/in.h> 899]]) 900 901if test "x$have_struct_tm_tm_gmtoff" = "xyes"; then 902 AC_DEFINE([HAVE_STRUCT_TM_TM_GMTOFF], [1], 903 [Define to 1 if you have `struct tm.tm_gmtoff` member.]) 904fi 905 906# Check size of pointer to decide we need 8 bytes alignment 907# adjustment. 908AC_CHECK_SIZEOF([int *]) 909 910AC_CHECK_SIZEOF([time_t]) 911 912# Checks for library functions. 913 914# Don't check malloc, since it does not play nicely with C++ stdlib 915# AC_FUNC_MALLOC 916 917AC_FUNC_CHOWN 918AC_FUNC_ERROR_AT_LINE 919AC_FUNC_FORK 920# Don't check realloc, since LeakSanitizer detects memory leak during check 921# AC_FUNC_REALLOC 922AC_FUNC_STRERROR_R 923AC_FUNC_STRNLEN 924 925AC_CHECK_FUNCS([ \ 926 _Exit \ 927 accept4 \ 928 clock_gettime \ 929 dup2 \ 930 getcwd \ 931 getpwnam \ 932 localtime_r \ 933 memchr \ 934 memmove \ 935 memset \ 936 mkostemp \ 937 socket \ 938 sqrt \ 939 strchr \ 940 strdup \ 941 strerror \ 942 strndup \ 943 strstr \ 944 strtol \ 945 strtoul \ 946 timegm \ 947]) 948 949# timerfd_create was added in linux kernel 2.6.25 950 951AC_CHECK_FUNC([timerfd_create], 952 [have_timerfd_create=yes], [have_timerfd_create=no]) 953 954AC_MSG_CHECKING([checking for GetTickCount64]) 955AC_LINK_IFELSE([AC_LANG_PROGRAM( 956[[ 957#include <sysinfoapi.h> 958]], 959[[ 960GetTickCount64(); 961]])], 962[have_gettickcount64=yes], 963[have_gettickcount64=no]) 964 965if test "x${have_gettickcount64}" = "xyes"; then 966 AC_MSG_RESULT([yes]) 967 AC_DEFINE([HAVE_GETTICKCOUNT64], [1], 968 [Define to 1 if you have `GetTickCount64` function.]) 969else 970 AC_MSG_RESULT([no]) 971fi 972 973# For cygwin: we can link initgroups, so AC_CHECK_FUNCS succeeds, but 974# cygwin disables initgroups due to feature test macro magic with our 975# configuration. FreeBSD declares initgroups() in unistd.h. 976AC_CHECK_DECLS([initgroups], [], [], [[ 977 #ifdef HAVE_UNISTD_H 978 # include <unistd.h> 979 #endif 980 #include <grp.h> 981]]) 982 983save_CFLAGS=$CFLAGS 984save_CXXFLAGS=$CXXFLAGS 985 986CFLAGS= 987CXXFLAGS= 988 989if test "x$werror" != "xno"; then 990 # For C compiler 991 AX_CHECK_COMPILE_FLAG([-Wall], [CFLAGS="$CFLAGS -Wall"]) 992 AX_CHECK_COMPILE_FLAG([-Wextra], [CFLAGS="$CFLAGS -Wextra"]) 993 AX_CHECK_COMPILE_FLAG([-Werror], [CFLAGS="$CFLAGS -Werror"]) 994 AX_CHECK_COMPILE_FLAG([-Wmissing-prototypes], [CFLAGS="$CFLAGS -Wmissing-prototypes"]) 995 AX_CHECK_COMPILE_FLAG([-Wstrict-prototypes], [CFLAGS="$CFLAGS -Wstrict-prototypes"]) 996 AX_CHECK_COMPILE_FLAG([-Wmissing-declarations], [CFLAGS="$CFLAGS -Wmissing-declarations"]) 997 AX_CHECK_COMPILE_FLAG([-Wpointer-arith], [CFLAGS="$CFLAGS -Wpointer-arith"]) 998 AX_CHECK_COMPILE_FLAG([-Wdeclaration-after-statement], [CFLAGS="$CFLAGS -Wdeclaration-after-statement"]) 999 AX_CHECK_COMPILE_FLAG([-Wformat-security], [CFLAGS="$CFLAGS -Wformat-security"]) 1000 AX_CHECK_COMPILE_FLAG([-Wwrite-strings], [CFLAGS="$CFLAGS -Wwrite-strings"]) 1001 AX_CHECK_COMPILE_FLAG([-Wshadow], [CFLAGS="$CFLAGS -Wshadow"]) 1002 AX_CHECK_COMPILE_FLAG([-Winline], [CFLAGS="$CFLAGS -Winline"]) 1003 AX_CHECK_COMPILE_FLAG([-Wnested-externs], [CFLAGS="$CFLAGS -Wnested-externs"]) 1004 AX_CHECK_COMPILE_FLAG([-Wfloat-equal], [CFLAGS="$CFLAGS -Wfloat-equal"]) 1005 AX_CHECK_COMPILE_FLAG([-Wundef], [CFLAGS="$CFLAGS -Wundef"]) 1006 AX_CHECK_COMPILE_FLAG([-Wendif-labels], [CFLAGS="$CFLAGS -Wendif-labels"]) 1007 AX_CHECK_COMPILE_FLAG([-Wempty-body], [CFLAGS="$CFLAGS -Wempty-body"]) 1008 AX_CHECK_COMPILE_FLAG([-Wcast-align], [CFLAGS="$CFLAGS -Wcast-align"]) 1009 AX_CHECK_COMPILE_FLAG([-Wclobbered], [CFLAGS="$CFLAGS -Wclobbered"]) 1010 AX_CHECK_COMPILE_FLAG([-Wvla], [CFLAGS="$CFLAGS -Wvla"]) 1011 AX_CHECK_COMPILE_FLAG([-Wpragmas], [CFLAGS="$CFLAGS -Wpragmas"]) 1012 AX_CHECK_COMPILE_FLAG([-Wunreachable-code], [CFLAGS="$CFLAGS -Wunreachable-code"]) 1013 AX_CHECK_COMPILE_FLAG([-Waddress], [CFLAGS="$CFLAGS -Waddress"]) 1014 AX_CHECK_COMPILE_FLAG([-Wattributes], [CFLAGS="$CFLAGS -Wattributes"]) 1015 AX_CHECK_COMPILE_FLAG([-Wdiv-by-zero], [CFLAGS="$CFLAGS -Wdiv-by-zero"]) 1016 AX_CHECK_COMPILE_FLAG([-Wshorten-64-to-32], [CFLAGS="$CFLAGS -Wshorten-64-to-32"]) 1017 1018 AX_CHECK_COMPILE_FLAG([-Wconversion], [CFLAGS="$CFLAGS -Wconversion"]) 1019 AX_CHECK_COMPILE_FLAG([-Wextended-offsetof], [CFLAGS="$CFLAGS -Wextended-offsetof"]) 1020 AX_CHECK_COMPILE_FLAG([-Wformat-nonliteral], [CFLAGS="$CFLAGS -Wformat-nonliteral"]) 1021 AX_CHECK_COMPILE_FLAG([-Wlanguage-extension-token], [CFLAGS="$CFLAGS -Wlanguage-extension-token"]) 1022 AX_CHECK_COMPILE_FLAG([-Wmissing-field-initializers], [CFLAGS="$CFLAGS -Wmissing-field-initializers"]) 1023 AX_CHECK_COMPILE_FLAG([-Wmissing-noreturn], [CFLAGS="$CFLAGS -Wmissing-noreturn"]) 1024 AX_CHECK_COMPILE_FLAG([-Wmissing-variable-declarations], [CFLAGS="$CFLAGS -Wmissing-variable-declarations"]) 1025 # Not used because we cannot change public structs 1026 # AX_CHECK_COMPILE_FLAG([-Wpadded], [CFLAGS="$CFLAGS -Wpadded"]) 1027 AX_CHECK_COMPILE_FLAG([-Wsign-conversion], [CFLAGS="$CFLAGS -Wsign-conversion"]) 1028 # Not used because this basically disallows default case 1029 # AX_CHECK_COMPILE_FLAG([-Wswitch-enum], [CFLAGS="$CFLAGS -Wswitch-enum"]) 1030 AX_CHECK_COMPILE_FLAG([-Wunreachable-code-break], [CFLAGS="$CFLAGS -Wunreachable-code-break"]) 1031 AX_CHECK_COMPILE_FLAG([-Wunused-macros], [CFLAGS="$CFLAGS -Wunused-macros"]) 1032 AX_CHECK_COMPILE_FLAG([-Wunused-parameter], [CFLAGS="$CFLAGS -Wunused-parameter"]) 1033 AX_CHECK_COMPILE_FLAG([-Wredundant-decls], [CFLAGS="$CFLAGS -Wredundant-decls"]) 1034 # Only work with Clang for the moment 1035 AX_CHECK_COMPILE_FLAG([-Wheader-guard], [CFLAGS="$CFLAGS -Wheader-guard"]) 1036 AX_CHECK_COMPILE_FLAG([-Wsometimes-uninitialized], [CFLAGS="$CFLAGS -Wsometimes-uninitialized"]) 1037 1038 # This is required because we pass format string as "const char*. 1039 AX_CHECK_COMPILE_FLAG([-Wno-format-nonliteral], [CFLAGS="$CFLAGS -Wno-format-nonliteral"]) 1040 1041 # For C++ compiler 1042 AC_LANG_PUSH(C++) 1043 AX_CHECK_COMPILE_FLAG([-Wall], [CXXFLAGS="$CXXFLAGS -Wall"]) 1044 AX_CHECK_COMPILE_FLAG([-Werror], [CXXFLAGS="$CXXFLAGS -Werror"]) 1045 AX_CHECK_COMPILE_FLAG([-Wformat-security], [CXXFLAGS="$CXXFLAGS -Wformat-security"]) 1046 AX_CHECK_COMPILE_FLAG([-Wsometimes-uninitialized], [CXXFLAGS="$CXXFLAGS -Wsometimes-uninitialized"]) 1047 # Disable noexcept-type warning of g++-7. This is not harmful as 1048 # long as all source files are compiled with the same compiler. 1049 AX_CHECK_COMPILE_FLAG([-Wno-noexcept-type], [CXXFLAGS="$CXXFLAGS -Wno-noexcept-type"]) 1050 AC_LANG_POP() 1051fi 1052 1053WARNCFLAGS=$CFLAGS 1054WARNCXXFLAGS=$CXXFLAGS 1055 1056CFLAGS=$save_CFLAGS 1057CXXFLAGS=$save_CXXFLAGS 1058 1059AC_SUBST([WARNCFLAGS]) 1060AC_SUBST([WARNCXXFLAGS]) 1061 1062EXTRACFLAG= 1063AX_CHECK_COMPILE_FLAG([-fvisibility=hidden], [EXTRACFLAG="-fvisibility=hidden"]) 1064 1065AC_SUBST([EXTRACFLAG]) 1066 1067if test "x$debug" != "xno"; then 1068 AC_DEFINE([DEBUGBUILD], [1], [Define to 1 to enable debug output.]) 1069fi 1070 1071enable_threads=yes 1072# Some platform does not have working std::future. We disable 1073# threading for those platforms. 1074if test "x$threads" != "xyes" || 1075 test "x$have_std_future" != "xyes"; then 1076 enable_threads=no 1077 AC_DEFINE([NOTHREADS], [1], [Define to 1 if you want to disable threads.]) 1078fi 1079 1080# propagate $enable_static to tests/Makefile.am 1081AM_CONDITIONAL([ENABLE_STATIC], [test "x$enable_static" = "xyes"]) 1082 1083AC_SUBST([TESTLDADD]) 1084AC_SUBST([APPLDFLAGS]) 1085 1086AC_CONFIG_FILES([ 1087 Makefile 1088 lib/Makefile 1089 lib/libnghttp2.pc 1090 lib/includes/Makefile 1091 lib/includes/nghttp2/nghttp2ver.h 1092 tests/Makefile 1093 tests/testdata/Makefile 1094 third-party/Makefile 1095 src/Makefile 1096 bpf/Makefile 1097 examples/Makefile 1098 integration-tests/Makefile 1099 integration-tests/config.go 1100 integration-tests/setenv 1101 doc/Makefile 1102 doc/conf.py 1103 doc/index.rst 1104 doc/package_README.rst 1105 doc/tutorial-client.rst 1106 doc/tutorial-server.rst 1107 doc/tutorial-hpack.rst 1108 doc/nghttpx-howto.rst 1109 doc/h2load-howto.rst 1110 doc/building-android-binary.rst 1111 doc/nghttp2.h.rst 1112 doc/nghttp2ver.h.rst 1113 doc/contribute.rst 1114 contrib/Makefile 1115 script/Makefile 1116]) 1117AC_OUTPUT 1118 1119AC_MSG_NOTICE([summary of build options: 1120 1121 Package version: ${VERSION} 1122 Library version: $LT_CURRENT:$LT_REVISION:$LT_AGE 1123 Install prefix: ${prefix} 1124 System types: 1125 Build: ${build} 1126 Host: ${host} 1127 Target: ${target} 1128 Compiler: 1129 C compiler: ${CC} 1130 CFLAGS: ${CFLAGS} 1131 LDFLAGS: ${LDFLAGS} 1132 C++ compiler: ${CXX} 1133 CXXFLAGS: ${CXXFLAGS} 1134 CXXCPP: ${CXXCPP} 1135 C preprocessor: ${CPP} 1136 CPPFLAGS: ${CPPFLAGS} 1137 WARNCFLAGS: ${WARNCFLAGS} 1138 WARNCXXFLAGS: ${WARNCXXFLAGS} 1139 CXX1XCXXFLAGS: ${CXX1XCXXFLAGS} 1140 EXTRACFLAG: ${EXTRACFLAG} 1141 BPFCFLAGS: ${BPFCFLAGS} 1142 EXTRABPFCFLAGS: ${EXTRABPFCFLAGS} 1143 LIBS: ${LIBS} 1144 DEFS: ${DEFS} 1145 EXTRA_DEFS: ${EXTRA_DEFS} 1146 Library: 1147 Shared: ${enable_shared} 1148 Static: ${enable_static} 1149 Libtool: 1150 LIBTOOL_LDFLAGS: ${LIBTOOL_LDFLAGS} 1151 Python: 1152 Python: ${PYTHON} 1153 PYTHON_VERSION: ${PYTHON_VERSION} 1154 Test: 1155 CUnit: ${have_cunit} (CFLAGS='${CUNIT_CFLAGS}' LIBS='${CUNIT_LIBS}') 1156 Failmalloc: ${enable_failmalloc} 1157 Libs: 1158 OpenSSL: ${have_openssl} (CFLAGS='${OPENSSL_CFLAGS}' LIBS='${OPENSSL_LIBS}') 1159 Libxml2: ${have_libxml2} (CFLAGS='${LIBXML2_CFLAGS}' LIBS='${LIBXML2_LIBS}') 1160 Libev: ${have_libev} (CFLAGS='${LIBEV_CFLAGS}' LIBS='${LIBEV_LIBS}') 1161 Libc-ares: ${have_libcares} (CFLAGS='${LIBCARES_CFLAGS}' LIBS='${LIBCARES_LIBS}') 1162 libngtcp2: ${have_libngtcp2} (CFLAGS='${LIBNGTCP2_CFLAGS}' LIBS='${LIBNGTCP2_LIBS}') 1163 libngtcp2_crypto_openssl: ${have_libngtcp2_crypto_openssl} (CFLAGS='${LIBNGTCP2_CRYPTO_OPENSSL_CFLAGS}' LIBS='${LIBNGTCP2_CRYPTO_OPENSSL_LIBS}') 1164 libngtcp2_crypto_boringssl: ${have_libngtcp2_crypto_boringssl} (CFLAGS='${LIBNGTCP2_CRYPTO_BORINGSSL_CFLAGS}' LIBS='${LIBNGTCP2_CRYPTO_BORINGSSL_LIBS}') 1165 libnghttp3: ${have_libnghttp3} (CFLAGS='${LIBNGHTTP3_CFLAGS}' LIBS='${LIBNGHTTP3_LIBS}') 1166 libbpf: ${have_libbpf} (CFLAGS='${LIBBPF_CFLAGS}' LIBS='${LIBBPF_LIBS}') 1167 Libevent(SSL): ${have_libevent_openssl} (CFLAGS='${LIBEVENT_OPENSSL_CFLAGS}' LIBS='${LIBEVENT_OPENSSL_LIBS}') 1168 Jansson: ${have_jansson} (CFLAGS='${JANSSON_CFLAGS}' LIBS='${JANSSON_LIBS}') 1169 Jemalloc: ${have_jemalloc} (CFLAGS='${JEMALLOC_CFLAGS}' LIBS='${JEMALLOC_LIBS}') 1170 Zlib: ${have_zlib} (CFLAGS='${ZLIB_CFLAGS}' LIBS='${ZLIB_LIBS}') 1171 Systemd: ${have_libsystemd} (CFLAGS='${SYSTEMD_CFLAGS}' LIBS='${SYSTEMD_LIBS}') 1172 Third-party: 1173 http-parser: ${enable_third_party} 1174 MRuby: ${have_mruby} (CFLAGS='${LIBMRUBY_CFLAGS}' LIBS='${LIBMRUBY_LIBS}') 1175 Neverbleed: ${have_neverbleed} 1176 Features: 1177 Applications: ${enable_app} 1178 HPACK tools: ${enable_hpack_tools} 1179 Examples: ${enable_examples} 1180 Threading: ${enable_threads} 1181 HTTP/3 (EXPERIMENTAL): ${enable_http3} 1182]) 1183