1dnl -*- Autoconf -*- 2dnl Process this file with autoconf to produce a configure script. 3AC_PREREQ(2.57) 4AC_INIT([lighttpd], [1.4.32], [[email protected]]) 5AC_CONFIG_SRCDIR([src/server.c]) 6AC_CONFIG_HEADER([config.h]) 7AC_CONFIG_MACRO_DIR([m4]) 8 9AC_CANONICAL_TARGET 10 11AM_INIT_AUTOMAKE([-Wall -Wportability -Wno-override foreign dist-bzip2 tar-ustar]) 12 13dnl enable with --enable-silent-rules or make V=0 (needs automake >= 1.11) 14m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES]) 15 16dnl Checks for programs. 17AC_PROG_CC 18AM_PROG_CC_C_O 19AC_PROG_LD 20AC_PROG_INSTALL 21AC_PROG_AWK 22AC_PROG_CPP 23dnl AC_PROG_CXX 24AC_PROG_LN_S 25AC_PROG_MAKE_SET 26 27dnl AM_PROG_AR is needed for some linker stuff 28dnl AC_USE_SYSTEM_EXTENSIONS requires autoconf 2.60 29m4_ifdef([AC_USE_SYSTEM_EXTENSIONS], [AC_USE_SYSTEM_EXTENSIONS]) 30dnl AM_PROG_AR requires automake 1.11 (and uses AC_COMPILE_IFELSE which wants AC_USE_SYSTEM_EXTENSIONS) 31m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) 32 33dnl check environment 34AC_AIX 35AC_ISC_POSIX 36AC_MINIX 37 38dnl AC_CANONICAL_HOST 39case $host_os in 40 *darwin*|*cygwin*|*aix*|*mingw* ) NO_RDYNAMIC=yes;; 41 * ) NO_RDYNAMIC=no;; 42esac 43AM_CONDITIONAL(NO_RDYNAMIC, test x$NO_RDYNAMIC = xyes) 44 45AC_EXEEXT 46 47dnl libtool 48AC_DISABLE_STATIC 49AC_ENABLE_SHARED 50 51AC_LIBTOOL_DLOPEN 52AC_PROG_LIBTOOL 53 54dnl for solaris 55CPPFLAGS="${CPPFLAGS} -D_REENTRANT -D__EXTENSIONS__" 56 57dnl Checks for header files. 58AC_HEADER_STDC 59AC_HEADER_SYS_WAIT 60AC_CHECK_HEADERS([arpa/inet.h fcntl.h netinet/in.h stdlib.h string.h \ 61sys/socket.h sys/time.h unistd.h sys/sendfile.h sys/uio.h \ 62getopt.h sys/epoll.h sys/select.h poll.h sys/poll.h sys/devpoll.h sys/filio.h \ 63sys/mman.h sys/event.h port.h pwd.h sys/syslimits.h \ 64sys/resource.h sys/un.h syslog.h sys/prctl.h uuid/uuid.h]) 65 66dnl Checks for typedefs, structures, and compiler characteristics. 67AC_C_CONST 68AC_C_INLINE 69AC_C_CHAR_UNSIGNED 70AC_TYPE_OFF_T 71AC_TYPE_PID_T 72AC_TYPE_SIZE_T 73 74AC_CHECK_MEMBER(struct tm.tm_gmtoff,[AC_DEFINE([HAVE_STRUCT_TM_GMTOFF],[1],[gmtoff in struct tm])],,[#include <time.h>]) 75AC_CHECK_TYPES(struct sockaddr_storage,,,[#include <sys/socket.h>]) 76AC_CHECK_TYPES(socklen_t,,,[#include <sys/types.h> 77#include <sys/socket.h>]) 78 79dnl Checks for library functions. 80AC_FUNC_FORK 81dnl AC_FUNC_MALLOC 82dnl AC_FUNC_MMAP 83dnl AC_FUNC_REALLOC 84AC_TYPE_SIGNAL 85AC_FUNC_STAT 86AC_FUNC_STRFTIME 87AC_CHECK_FUNCS([issetugid inet_pton]) 88 89if test -z "$PKG_CONFIG"; then 90 AC_PATH_PROG(PKG_CONFIG, pkg-config, no) 91fi 92 93dnl checking for libev 94AC_MSG_CHECKING(for libev support) 95AC_ARG_WITH(libev, 96 AC_HELP_STRING([--with-libev@<:@=PATH@:>@],[Include libev support for fdevent handlers in PATH/include and PATH/lib]), 97 [WITH_LIBEV=$withval],[WITH_LIBEV=no]) 98 99LIBEV_CFLAGS="" 100LIBEV_LIBS="" 101 102if test "$WITH_LIBEV" != "no"; then 103 PKG_CHECK_MODULES(LIBEV, libev, [], [ 104 dnl no pkg-config for libev, searching manually: 105 106 if test "$WITH_LIBEV" != "yes"; then 107 LIBEV_CFLAGS="-I$WITH_LIBEV/include" 108 LIBEV_LIBS="-L$WITH_LIBEV/lib -lev" 109 else 110 AC_CHECK_HEADERS([ev.h],[ 111 AC_CHECK_LIB([ev], [ev_time], [ 112 LIBEV_CFLAGS="" 113 LIBEV_LIBS="-lev" 114 ],[ 115 AC_MSG_ERROR([libev not found]) 116 ] 117 )],[ 118 AC_MSG_ERROR([libev not found]) 119 ] 120 ) 121 fi 122 ]) 123 124 AC_DEFINE([HAVE_LIBEV], [1], [libev support]) 125fi 126 127AC_SUBST(LIBEV_CFLAGS) 128AC_SUBST(LIBEV_LIBS) 129 130dnl Checks for database. 131MYSQL_INCLUDE="" 132MYSQL_LIBS="" 133 134AC_MSG_CHECKING(for MySQL support) 135AC_ARG_WITH(mysql, 136 AC_HELP_STRING([--with-mysql@<:@=PATH@:>@],[Include MySQL support. PATH is the path to 'mysql_config']), 137 [WITH_MYSQL=$withval],[WITH_MYSQL=no]) 138 139if test "$WITH_MYSQL" != "no"; then 140 AC_MSG_RESULT(yes) 141 if test "$WITH_MYSQL" = "yes"; then 142 AC_PATH_PROG(MYSQL_CONFIG, mysql_config) 143 else 144 MYSQL_CONFIG=$WITH_MYSQL 145 fi 146 147 if test "$MYSQL_CONFIG" = ""; then 148 AC_MSG_ERROR(mysql_config is not found) 149 fi 150 if test \! -x $MYSQL_CONFIG; then 151 AC_MSG_ERROR(mysql_config not exists or not executable, use --with-mysql=path-to-mysql_config) 152 fi 153 154 if $MYSQL_CONFIG | grep -- '--include' > /dev/null ; then 155 MYSQL_INCLUDE="`$MYSQL_CONFIG --include | sed s/\'//g`" 156 else 157 MYSQL_INCLUDE="`$MYSQL_CONFIG --cflags | sed s/\'//g`" 158 fi 159 MYSQL_LIBS="`$MYSQL_CONFIG --libs | sed s/\'//g`" 160 161 AC_MSG_CHECKING(for MySQL includes at) 162 AC_MSG_RESULT($MYSQL_INCLUDE) 163 164 AC_MSG_CHECKING(for MySQL libraries at) 165 AC_MSG_RESULT($MYSQL_LIBS) 166dnl check for errmsg.h, which isn't installed by some versions of 3.21 167 old_CPPFLAGS="$CPPFLAGS" 168 CPPFLAGS="$CPPFLAGS $MYSQL_INCLUDE" 169 AC_CHECK_HEADERS(errmsg.h mysql.h) 170 CPPFLAGS="$old_CPPFLAGS" 171 172 AC_DEFINE([HAVE_MYSQL], [1], [mysql support]) 173else 174 AC_MSG_RESULT(no) 175fi 176 177AC_SUBST(MYSQL_LIBS) 178AC_SUBST(MYSQL_INCLUDE) 179 180dnl Check for LDAP 181AC_MSG_CHECKING(for LDAP support) 182AC_ARG_WITH(ldap, AC_HELP_STRING([--with-ldap],[enable LDAP support]), 183[WITH_LDAP=$withval], [WITH_LDAP=no]) 184AC_MSG_RESULT([$withval]) 185if test "$WITH_LDAP" != "no"; then 186 AC_CHECK_LIB(ldap, ldap_bind, [ 187 AC_CHECK_HEADERS([ldap.h],[ 188 LDAP_LIB=-lldap 189 AC_DEFINE([HAVE_LIBLDAP], [1], [libldap]) 190 AC_DEFINE([HAVE_LDAP_H], [1]) 191 AC_DEFINE([LDAP_DEPRECATED], [1], [Using deprecated ldap api]) 192 ]) 193 ]) 194 AC_SUBST(LDAP_LIB) 195 AC_CHECK_LIB(lber, ber_printf, [ 196 AC_CHECK_HEADERS([lber.h],[ 197 LBER_LIB=-llber 198 AC_DEFINE([HAVE_LIBLBER], [1], [liblber]) 199 AC_DEFINE([HAVE_LBER_H], [1]) 200 ]) 201 ]) 202 AC_SUBST(LBER_LIB) 203fi 204 205dnl Check for xattr 206AC_MSG_CHECKING(for extended attributes support) 207AC_ARG_WITH(attr, AC_HELP_STRING([--with-attr],[enable extended attribute support]), 208[WITH_ATTR=$withval],[WITH_ATTR=no]) 209AC_MSG_RESULT($withval) 210if test "$WITH_ATTR" != "no"; then 211 AC_CHECK_LIB(attr, attr_get, [ 212 AC_CHECK_HEADERS([attr/attributes.h],[ 213 ATTR_LIB=-lattr 214 AC_DEFINE([HAVE_XATTR], [1], [libattr]) 215 AC_DEFINE([HAVE_ATTR_ATTRIBUTES_H], [1]) 216 ]) 217 ]) 218 AC_SUBST(ATTR_LIB) 219fi 220 221dnl openssl on solaris needs -lsocket -lnsl 222AC_SEARCH_LIBS(socket,socket) 223AC_SEARCH_LIBS(gethostbyname,nsl socket) 224AC_SEARCH_LIBS(hstrerror,resolv) 225 226save_LIBS=$LIBS 227AC_SEARCH_LIBS(dlopen,dl,[ 228 AC_CHECK_HEADERS([dlfcn.h],[ 229 if test "$ac_cv_search_dlopen" != no; then 230 test "$ac_cv_search_dlopen" = "none required" || DL_LIB="$ac_cv_search_dlopen" 231 fi 232 233 AC_DEFINE([HAVE_LIBDL], [1], [libdl]) 234 AC_DEFINE([HAVE_DLFCN_H], [1]) 235 ]) 236]) 237LIBS=$save_LIBS 238AC_SUBST(DL_LIB) 239 240dnl Check for valgrind 241AC_MSG_CHECKING(for valgrind) 242AC_ARG_WITH(valgrind, AC_HELP_STRING([--with-valgrind],[enable internal support for valgrind]), 243[WITH_VALGRIND=$withval],[WITH_VALGRIND=no]) 244AC_MSG_RESULT([$WITH_VALGRIND]) 245if test "$WITH_VALGRIND" != "no"; then 246 AC_CHECK_HEADERS([valgrind/valgrind.h]) 247fi 248 249dnl Check for openssl 250AC_MSG_CHECKING(for OpenSSL) 251AC_ARG_WITH(openssl, 252 AC_HELP_STRING([--with-openssl@<:@=DIR@:>@],[Include openssl support (default no)]), 253 [WITH_OPENSSL=$withval],[WITH_OPENSSL=no]) 254 255if test "$WITH_OPENSSL" != "no"; then 256 use_openssl=yes 257 if test "$WITH_OPENSSL" != "yes"; then 258 CPPFLAGS="$CPPFLAGS -I$WITH_OPENSSL/include" 259 LDFLAGS="$LDFLAGS -L$WITH_OPENSSL/lib" 260 fi 261else 262 use_openssl=no 263fi 264AC_MSG_RESULT([$use_openssl]) 265 266AC_ARG_WITH(openssl-includes, 267 AC_HELP_STRING([--with-openssl-includes=DIR],[OpenSSL includes]), 268 [ use_openssl=yes CPPFLAGS="$CPPFLAGS -I$withval" ] 269) 270 271AC_ARG_WITH(openssl-libs, 272 AC_HELP_STRING([--with-openssl-libs=DIR],[OpenSSL libraries]), 273 [ use_openssl=yes LDFLAGS="$LDFLAGS -L$withval" ] 274) 275 276AC_ARG_WITH(kerberos5, 277 AC_HELP_STRING([--with-kerberos5],[use Kerberos5 support with OpenSSL]), 278 [ use_kerberos=yes ], [use_kerberos=no] 279) 280 281if test "x$use_openssl" = "xyes"; then 282 if test "x$use_kerberos" != "xyes"; then 283 CPPFLAGS="$CPPFLAGS -DOPENSSL_NO_KRB5" 284 fi 285 286 AC_CHECK_HEADERS([openssl/ssl.h]) 287 OLDLIBS="$LIBS" 288 AC_CHECK_LIB(crypto, BIO_f_base64, [ 289 AC_CHECK_LIB(ssl, SSL_new, [ SSL_LIB="-lssl -lcrypto" 290 AC_DEFINE(HAVE_LIBSSL, [], [Have libssl]) ], [], [ -lcrypto "$DL_LIB" ]) 291 ], [], []) 292 LIBS="$OLDLIBS" 293 AC_SUBST(SSL_LIB) 294fi 295 296AC_MSG_CHECKING(for perl regular expressions support) 297AC_ARG_WITH(pcre, AC_HELP_STRING([--with-pcre],[Enable pcre support (default yes)]), 298 [WITH_PCRE=$withval],[WITH_PCRE=yes]) 299AC_MSG_RESULT([$WITH_PCRE]) 300 301if test "$WITH_PCRE" != "no"; then 302 AC_PATH_PROG(PCRECONFIG, pcre-config) 303 304 if test x"$PCRECONFIG" != x; then 305 PCRE_LIB=`$PCRECONFIG --libs` 306 CPPFLAGS="$CPPFLAGS `$PCRECONFIG --cflags`" 307 AC_DEFINE([HAVE_LIBPCRE], [1], [libpcre]) 308 AC_DEFINE([HAVE_PCRE_H], [1], [pcre.h]) 309 else 310 AC_MSG_ERROR([pcre-config not found, install the pcre-devel package or build with --without-pcre]) 311 fi 312fi 313 314AC_SUBST(PCRE_LIB) 315 316AC_MSG_CHECKING(for zlib support) 317AC_ARG_WITH(zlib, AC_HELP_STRING([--with-zlib],[Enable zlib support for mod_compress]), 318 [WITH_ZLIB=$withval],[WITH_ZLIB=yes]) 319AC_MSG_RESULT([$WITH_ZLIB]) 320 321if test "$WITH_ZLIB" != "no"; then 322 AC_CHECK_LIB(z, deflate, [ 323 AC_CHECK_HEADERS([zlib.h],[ 324 Z_LIB=-lz 325 AC_DEFINE([HAVE_LIBZ], [1], [libz]) 326 AC_DEFINE([HAVE_ZLIB_H], [1]) 327 ]) 328 ]) 329 if test x$Z_LIB = x; then 330 AC_MSG_ERROR([zlib-headers and/or libs where not found, install them or build with --without-zlib]) 331 fi 332fi 333AC_SUBST(Z_LIB) 334 335AC_MSG_CHECKING(for bzip2 support) 336AC_ARG_WITH(bzip2, AC_HELP_STRING([--with-bzip2],[Enable bzip2 support for mod_compress]), 337 [WITH_BZIP2=$withval],[WITH_BZIP2=yes]) 338AC_MSG_RESULT([$WITH_BZIP2]) 339 340if test "$WITH_BZIP2" != "no"; then 341 AC_CHECK_LIB(bz2, BZ2_bzCompress, [ 342 AC_CHECK_HEADERS([bzlib.h],[ 343 BZ_LIB=-lbz2 344 AC_DEFINE([HAVE_LIBBZ2], [1], [libbz2]) 345 AC_DEFINE([HAVE_BZLIB_H], [1]) 346 ]) 347 ]) 348 if test x$BZ_LIB = x; then 349 AC_MSG_ERROR([bzip2-headers and/or libs where not found, install them or build with --without-bzip2]) 350 fi 351fi 352AC_SUBST(BZ_LIB) 353 354dnl Check for gamin 355AC_MSG_CHECKING(for FAM) 356AC_ARG_WITH(fam, AC_HELP_STRING([--with-fam],[fam/gamin for reducing number of stat() calls]), 357[WITH_FAM=$withval],[WITH_FAM=no]) 358AC_MSG_RESULT([$WITH_FAM]) 359 360if test "$WITH_FAM" != "no"; then 361 AC_CHECK_LIB(fam, FAMOpen2, [ 362 AC_CHECK_HEADERS([fam.h],[ 363 FAM_LIBS=-lfam 364 AC_DEFINE([HAVE_LIBFAM], [1], [libfam]) 365 AC_DEFINE([HAVE_FAM_H], [1], [fam.h]) 366 ]) 367 ]) 368 if test "x$FAM_LIBS" = x; then 369 PKG_CHECK_MODULES(FAM, gamin >= 0.1.0, [ 370 AC_DEFINE([HAVE_LIBFAM], [1], [libfam]) 371 AC_DEFINE([HAVE_FAM_H], [1], [fam.h]) 372 ]) 373 fi 374 OLD_LIBS=$LIBS 375 LIBS=$FAM_LIBS 376 AC_CHECK_FUNCS([FAMNoExists]) 377 LIBS=$OLD_LIBS 378 379 if test x$FAM_LIBS = x; then 380 AC_MSG_ERROR([fam/gamin-headers and/or libs where not found, install them or build with --without-fam]) 381 fi 382fi 383 384AC_MSG_CHECKING(for properties in mod_webdav) 385AC_ARG_WITH(webdav-props, AC_HELP_STRING([--with-webdav-props],[properties in mod_webdav]), 386[WITH_WEBDAV_PROPS=$withval],[WITH_WEBDAV_PROPS=no]) 387AC_MSG_RESULT([$WITH_WEBDAV_PROPS]) 388 389if test "$WITH_WEBDAV_PROPS" != "no"; then 390 PKG_CHECK_MODULES(XML, libxml-2.0, [ 391 AC_DEFINE([HAVE_LIBXML2], [1], [libxml2]) 392 AC_DEFINE([HAVE_LIBXML_H], [1], [libxml.h]) 393 ]) 394 PKG_CHECK_MODULES(SQLITE, sqlite3, [ 395 AC_DEFINE([HAVE_SQLITE3], [1], [libsqlite3]) 396 AC_DEFINE([HAVE_SQLITE3_H], [1], [sqlite3.h]) 397 ]) 398 399 AC_MSG_CHECKING(for locks in mod_webdav) 400 AC_ARG_WITH(webdav-locks, AC_HELP_STRING([--with-webdav-locks],[locks in mod_webdav]), 401 [WITH_WEBDAV_LOCKS=$withval],[WITH_WEBDAV_LOCKS=no]) 402 AC_MSG_RESULT([$WITH_WEBDAV_LOCKS]) 403 404 if test "$WITH_WEBDAV_LOCKS" != "no"; then 405 AC_CHECK_LIB(uuid, uuid_unparse, [ 406 AC_CHECK_HEADERS([uuid/uuid.h],[ 407 UUID_LIBS=-luuid 408 AC_DEFINE([HAVE_UUID], [1], [libuuid]) 409 AC_DEFINE([HAVE_UUID_H], [1], [uuid/uuid.h is available]) 410 ]) 411 ]) 412 413 fi 414fi 415AC_SUBST(UUID_LIBS) 416 417dnl Check for gdbm 418AC_MSG_CHECKING(for gdbm) 419AC_ARG_WITH(gdbm, AC_HELP_STRING([--with-gdbm],[gdbm storage for mod_trigger_b4_dl]), 420[WITH_GDBM=$withval],[WITH_GDBM=no]) 421AC_MSG_RESULT([$WITH_GDBM]) 422 423if test "$WITH_GDBM" != "no"; then 424 AC_CHECK_LIB(gdbm, gdbm_open, [ 425 AC_CHECK_HEADERS([gdbm.h],[ 426 GDBM_LIB=-lgdbm 427 AC_DEFINE([HAVE_GDBM], [1], [libgdbm]) 428 AC_DEFINE([HAVE_GDBM_H], [1]) 429 ]) 430 ]) 431 AC_SUBST(GDBM_LIB) 432fi 433 434dnl Check for memcache 435AC_MSG_CHECKING(for memcache) 436AC_ARG_WITH(memcache, AC_HELP_STRING([--with-memcache],[memcached storage for mod_trigger_b4_dl]), 437[WITH_MEMCACHE=$withval],[WITH_MEMCACHE=no]) 438AC_MSG_RESULT([$WITH_MEMCACHE]) 439if test "$WITH_MEMCACHE" != "no"; then 440 AC_CHECK_LIB(memcache, mc_new, [ 441 AC_CHECK_HEADERS([memcache.h],[ 442 MEMCACHE_LIB=-lmemcache 443 AC_DEFINE([HAVE_MEMCACHE], [1], [libmemcache]) 444 AC_DEFINE([HAVE_MEMCACHE_H], [1], [memcache.h]) 445 ]) 446 ]) 447 AC_SUBST(MEMCACHE_LIB) 448fi 449 450dnl Check for lua 451AC_MSG_CHECKING(if lua-support is requested) 452AC_ARG_WITH(lua, AC_HELP_STRING([--with-lua],[lua engine for mod_cml]), 453[WITH_LUA=$withval],[WITH_LUA=no]) 454 455AC_MSG_RESULT($WITH_LUA) 456if test "$WITH_LUA" != "no"; then 457 if test "$WITH_LUA" = "yes"; then 458 WITH_LUA=lua 459 fi 460 PKG_CHECK_MODULES(LUA, $WITH_LUA >= 5.1, [ 461 AC_DEFINE([HAVE_LUA], [1], [liblua]) 462 AC_DEFINE([HAVE_LUA_H], [1], [lua.h]) 463 ],[ 464 dnl for debian based systems 465 PKG_CHECK_MODULES(LUA, lua5.1 >= 5.1, [ 466 AC_DEFINE([HAVE_LUA], [1], [liblua]) 467 AC_DEFINE([HAVE_LUA_H], [1], [lua.h]) 468 ],[ 469 dnl for freebsd 470 PKG_CHECK_MODULES(LUA, lua-5.1 >= 5.1, [ 471 AC_DEFINE([HAVE_LUA], [1], [liblua]) 472 AC_DEFINE([HAVE_LUA_H], [1], [lua.h]) 473 ]) 474 ]) 475 ]) 476 477 AC_SUBST(LUA_CFLAGS) 478 AC_SUBST(LUA_LIBS) 479fi 480 481save_LIBS=$LIBS 482AC_SEARCH_LIBS(crypt,crypt,[ 483 AC_CHECK_HEADERS([crypt.h],[ 484 AC_DEFINE([HAVE_CRYPT_H], [1]) 485 ]) 486 487 AC_DEFINE([HAVE_LIBCRYPT], [1], [libcrypt]) 488 if test "$ac_cv_search_crypt" != no; then 489 test "$ac_cv_search_crypt" = "none required" || CRYPT_LIB="$ac_cv_search_crypt" 490 fi 491]) 492LIBS=$save_LIBS 493AC_SUBST(CRYPT_LIB) 494 495save_LIBS=$LIBS 496AC_SEARCH_LIBS(sendfilev,sendfile,[ 497 if test "$ac_cv_search_sendfilev" != no; then 498 test "$ac_cv_search_sendfilev" = "none required" || SENDFILE_LIB="$ac_cv_search_sendfilev" 499 AC_DEFINE([HAVE_SENDFILEV], [1], [solaris sendfilev]) 500 fi 501]) 502LIBS=$save_LIBS 503AC_SUBST(SENDFILE_LIB) 504 505case $host_os in 506 *mingw* ) LIBS="$LIBS -lwsock32";; 507 * ) ;; 508esac 509 510AC_CHECK_FUNCS([dup2 getcwd inet_ntoa inet_ntop memset mmap munmap strchr \ 511 strdup strerror strstr strtol sendfile getopt socket lstat \ 512 gethostbyname poll epoll_ctl getrlimit chroot \ 513 getuid select signal pathconf madvise posix_fadvise posix_madvise \ 514 writev sigaction sendfile64 send_file kqueue port_create localtime_r gmtime_r]) 515 516AC_MSG_CHECKING(for Large File System support) 517AC_ARG_ENABLE(lfs, 518 AC_HELP_STRING([--enable-lfs],[Turn on Large File System (default)]), 519 [case "${enableval}" in 520 yes) CPPFLAGS="${CPPFLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGE_FILES" ;; 521 no) ;; 522 *) AC_MSG_ERROR(bad value ${enableval} for --enable-lfs) ;; 523 esac],[CPPFLAGS="${CPPFLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGE_FILES" 524 enable_lfs=yes]) 525AC_MSG_RESULT($enableval) 526 527AC_CHECK_SIZEOF(long) 528AC_CHECK_SIZEOF(off_t) 529 530if test "x$ac_cv_func_sendfile" = xyes; then 531 dnl check if sendfile works 532 AC_MSG_CHECKING(if sendfile works) 533 if test "x$cross_compiling" = xno; then 534 AC_TRY_RUN([ 535 #ifdef HAVE_SYS_SENDFILE_H 536 #include <sys/sendfile.h> 537 #endif /* HAVE_SYS_SENDFILE_H */ 538 #include <errno.h> 539 int main() { 540 int o = 0; 541 if (-1 == sendfile(-1, 0, &o, 0) && errno == ENOSYS) return -1; 542 return 0; 543 } ], 544 AC_MSG_RESULT(yes), 545 [ AC_MSG_RESULT(no) 546 AC_DEFINE([HAVE_SENDFILE_BROKEN], [1], [broken sendfile]) ] ) 547 else 548 AC_MSG_RESULT(no, cross-compiling) 549 AC_DEFINE([HAVE_SENDFILE_BROKEN], [1], [broken sendfile]) 550 fi 551fi 552 553dnl Check for IPv6 support 554 555AC_ARG_ENABLE(ipv6, 556 AC_HELP_STRING([--disable-ipv6],[disable IPv6 support]), 557 [case "${enableval}" in 558 yes) ipv6=true ;; 559 no) ipv6=false ;; 560 *) AC_MSG_ERROR(bad value ${enableval} for --enable-ipv6) ;; 561 esac],[ipv6=true]) 562 563if test x$ipv6 = xtrue; then 564 AC_CACHE_CHECK([for IPv6 support], ac_cv_ipv6_support, 565 [AC_TRY_LINK([ #include <sys/types.h> 566#include <sys/socket.h> 567#include <netinet/in.h>], [struct sockaddr_in6 s; struct in6_addr t=in6addr_any; int i=AF_INET6; s; t.s6_addr[0] = 0; ], 568 [ac_cv_ipv6_support=yes], [ac_cv_ipv6_support=no])]) 569 570 if test "$ac_cv_ipv6_support" = yes; then 571 AC_DEFINE(HAVE_IPV6,1,[Whether to enable IPv6 support]) 572 fi 573fi 574 575# disable mmap by default; if a mmapped file gets truncated, the process gets a SIGBUS signal 576# on reading the truncated area which we can't handle (yet). 577# lighttpd may always use mmap with files it owns (created tmp files) 578AC_ARG_ENABLE(mmap, 579 AC_HELP_STRING([--enable-mmap],[use mmap if available (DANGEROUS, allows local users to trigger SIGBUS crashes)]), 580 [case "${enableval}" in 581 yes) mmap=true ;; 582 no) mmap=false ;; 583 *) AC_MSG_ERROR(bad value ${enableval} for --enable-mmap) ;; 584 esac],[mmap=false]) 585 586if test x$mmap = xtrue; then 587 AC_DEFINE(ENABLE_MMAP, [1], [Use mmap if available]) 588fi 589 590 591AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes) 592 593dnl check for fastcgi lib, for the tests only 594fastcgi_found=no 595AC_CHECK_LIB(fcgi, FCGI_Accept, [ 596 AC_CHECK_HEADERS([fastcgi.h fastcgi/fastcgi.h],[ 597 fastcgi_found=yes 598 ]) 599]) 600 601AM_CONDITIONAL(CHECK_WITH_FASTCGI, test "x$fastcgi_found" = xyes) 602 603 604dnl check for extra compiler options (warning options) 605if test "${GCC}" = "yes"; then 606 CFLAGS="${CFLAGS} -Wall -W -Wshadow -pedantic -std=gnu99" 607fi 608 609AC_ARG_ENABLE(extra-warnings, 610 AC_HELP_STRING([--enable-extra-warnings],[enable extra warnings (gcc specific)]), 611 [case "${enableval}" in 612 yes) extrawarnings=true ;; 613 no) extrawarnings=false ;; 614 *) AC_MSG_ERROR(bad value ${enableval} for --enable-extra-warnings) ;; 615 esac],[extrawarnings=false]) 616 617if test x$extrawarnings = xtrue; then 618 CFLAGS="${CFLAGS} -g -O2 -g2 -Wall -Wmissing-declarations -Wdeclaration-after-statement -Wno-pointer-sign -Wcast-align -Winline -Wsign-compare -Wnested-externs -Wpointer-arith -Wl,--as-needed -Wformat-security" 619fi 620 621AC_MSG_CHECKING(for multi-threading mode) 622AC_ARG_ENABLE(multithreading, 623 AC_HELP_STRING([--enable-multithreading],[enable posix multi-threading support]), 624 [case "${enableval}" in 625 yes) multithreading=true ;; 626 no) multithreading=false ;; 627 *) AC_MSG_ERROR(bad value ${enableval} for --enable-multithreading) ;; 628 esac],[multithreading=false]) 629 630if test x$multithreading = xtrue; then 631 CFLAGS="${CFLAGS} -DMULTI_THREADED" 632 LDFLAGS="${LDFLAGS} -lpthread -lnuma" 633 AC_MSG_RESULT(yes) 634else 635 AC_MSG_RESULT(no) 636fi 637 638dnl checking for mtcp 639AC_MSG_CHECKING(for mtcp support (multhreading mode enabled)) 640AC_ARG_WITH(libmtcp, 641 AC_HELP_STRING([--with-libmtcp@<:@=PATH@:>@],[Include libmtcp support in PATH/include and PATH/lib]), 642 [WITH_LIBMTCP=$withval],[WITH_LIBMTCP=no]) 643 644LIBMTCP_CFLAGS="" 645LIBMTCP_LIBS="" 646 647if test "$WITH_LIBMTCP" != "no"; then 648 LIBMTCP_CFLAGS="-I$WITH_LIBMTCP/lib/ -I$WITH_LIBMTCP/src/include/ -DMULTI_THREADED" 649 LIBMTCP_LIBS="$WITH_LIBMTCP/lib/libmtcp.a -lpthread -lnuma -lrt" 650 CFLAGS="${CFLAGS} ${LIBMTCP_CFLAGS}" 651 AC_DEFINE([HAVE_LIBMTCP], [1], [libmtcp support]) 652 AC_MSG_RESULT(yes) 653else 654 AC_MSG_RESULT(no) 655fi 656 657AC_SUBST(LIBMTCP_CFLAGS) 658AC_SUBST(LIBMTCP_LIBS) 659 660AC_MSG_CHECKING(for psio support) 661AC_ARG_WITH(libpsio, 662 AC_HELP_STRING([--with-libpsio@<:@=PATH@:>@],[Include libpsio support in PATH/include and PATH/lib]), 663 [WITH_LIBPSIO=$withval],[WITH_LIBPSIO=no]) 664 665LIBPSIO_CFLAGS="" 666LIBPSIO_LIBS="" 667 668if test "$WITH_LIBPSIO" != "no"; then 669 LIBPSIO_CFLAGS="-I$WITH_LIBPSIO/include/" 670 LIBPSIO_LIBS="$WITH_LIBPSIO/lib/libps.a" 671 CFLAGS="${CFLAGS} ${LIBPSIO_CFLAGS}" 672 AC_DEFINE([HAVE_LIBPSIO], [1], [libpsio support]) 673 AC_MSG_RESULT(yes) 674else 675 AC_MSG_RESULT(no) 676fi 677 678AC_SUBST(LIBPSIO_CFLAGS) 679AC_SUBST(LIBPSIO_LIBS) 680 681 682AC_MSG_CHECKING(for dpdk support) 683AC_ARG_WITH(libdpdk, 684 AC_HELP_STRING([--with-libdpdk@<:@=PATH@:>@],[Include libdpdk support in PATH/include and PATH/lib]), 685 [WITH_LIBDPDK=$withval],[WITH_LIBDPDK=no]) 686 687LIBDPDK_CFLAGS="" 688LIBDPDK_LIBS="" 689 690if test "$WITH_LIBDPDK" != "no"; then 691 LIBDPDK_CFLAGS="-I$WITH_LIBDPDK/include/" 692 LIBDPDK_LDFLAGS=`cat $WITH_LIBDPDK/lib/ldflags.txt` 693 LIBDPDK_LIBS="-L$WITH_LIBDPDK/lib/ -m64 -g -O3 -pthread -lrt -march=native -Wl,-export-dynamic -Wl,-lnuma -Wl,-lpthread -Wl,-lrt -Wl,-ldl -Wl,$LIBDPDK_LDFLAGS" 694 CFLAGS="${CFLAGS} ${LIBDPDK_CFLAGS}" 695 AC_DEFINE([HAVE_LIBDPDK], [1], [libdpdk support]) 696 AC_MSG_RESULT(yes) 697else 698 AC_MSG_RESULT(no) 699fi 700 701AC_SUBST(LIBDPDK_CFLAGS) 702AC_SUBST(LIBDPDK_LIBS) 703 704 705AC_MSG_CHECKING(for netmap support) 706AC_ARG_ENABLE(netmap, 707 AC_HELP_STRING([--enable-netmap],[Turn on Netmap support]), 708 [case "${enableval}" in 709 yes) CFLAGS="${CFLAGS} -DHAVE_NETMAP";; 710 no) ;; 711 *) AC_MSG_ERROR(bad value ${enableval} for --enable-lfs) ;; 712 esac],[CFLAGS="${CFLAGS}" 713 enable_netmap=no]) 714AC_MSG_RESULT($enableval) 715 716dnl build version-id 717LIGHTTPD_VERSION_ID=`echo $PACKAGE_VERSION | $AWK -F '.' '{print "(" $1 " << 16 | " $2 " << 8 | " $3 ")"}'` 718AC_DEFINE_UNQUOTED([LIGHTTPD_VERSION_ID], [$LIGHTTPD_VERSION_ID], [lighttpd-version-id]) 719 720AC_CONFIG_FILES([Makefile src/Makefile 721 doc/config/conf.d/Makefile \ 722 doc/config/vhosts.d/Makefile \ 723 doc/config/Makefile \ 724 doc/scripts/Makefile \ 725 doc/initscripts/Makefile \ 726 doc/systemd/Makefile \ 727 doc/outdated/Makefile \ 728 doc/Makefile \ 729 tests/Makefile \ 730 tests/docroot/Makefile \ 731 tests/docroot/123/Makefile \ 732 tests/docroot/www/Makefile \ 733 tests/docroot/www/go/Makefile \ 734 tests/docroot/www/indexfile/Makefile \ 735 tests/docroot/www/expire/Makefile \ 736 distribute.sh]) 737AC_OUTPUT 738 739 740do_build="mod_cgi mod_fastcgi mod_extforward mod_proxy mod_evhost mod_simple_vhost mod_access mod_alias mod_setenv mod_usertrack mod_auth mod_status mod_accesslog" 741do_build="$do_build mod_rrdtool mod_secdownload mod_expire mod_compress mod_dirlisting mod_indexfile mod_userdir mod_webdav mod_staticfile mod_scgi mod_flv_streaming" 742 743plugins="mod_rewrite mod_redirect mod_ssi mod_trigger_b4_dl" 744features="regex-conditionals" 745if test ! "x$PCRE_LIB" = x; then 746 do_build="$do_build $plugins" 747 enable_feature="$features" 748else 749 no_build="$no_build $plugins" 750 disable_feature="$features" 751fi 752 753plugins="mod_mysql_vhost" 754if test ! "x$MYSQL_LIBS" = x; then 755 do_build="$do_build $plugins" 756else 757 no_build="$no_build $plugins" 758fi 759 760plugins="mod_cml mod_magnet" 761if test ! "x$LUA_LIBS" = x; then 762 do_build="$do_build $plugins" 763else 764 no_build="$no_build $plugins" 765fi 766 767features="storage-gdbm" 768if test ! "x$GDBM_LIB" = x; then 769 enable_feature="$enable_feature $features" 770else 771 disable_feature="$disable_feature $features" 772fi 773 774features="storage-memcache" 775if test ! "x$MEMCACHE_LIB" = x; then 776 enable_feature="$enable_feature $features" 777else 778 disable_feature="$disable_feature $features" 779fi 780 781features="compress-gzip compress-deflate" 782if test ! "x$Z_LIB" = x; then 783 enable_feature="$enable_feature $features" 784else 785 disable_feature="$disable_feature $features" 786fi 787 788features="compress-bzip2" 789if test ! "x$BZ_LIB" = x; then 790 enable_feature="$enable_feature $features" 791else 792 disable_feature="$disable_feature $features" 793fi 794 795features="auth-ldap" 796if test ! "x$LDAP_LIB" = x; then 797 enable_feature="$enable_feature $features" 798else 799 disable_feature="$disable_feature $features" 800fi 801 802features="network-openssl" 803if test ! "x$SSL_LIB" = x; then 804 enable_feature="$enable_feature $features" 805else 806 disable_feature="$disable_feature $features" 807fi 808 809dnl no crypt call 810features="auth-crypt" 811if test "$ac_cv_search_crypt" = no; then 812 disable_feature="$disable_feature $features" 813else 814 enable_feature="$enable_feature $features" 815fi 816 817features="network-ipv6" 818if test "$ac_cv_ipv6_support" = yes; then 819 enable_feature="$enable_feature $features" 820else 821 disable_feature="$disable_feature $features" 822fi 823 824features="large-files" 825if test "$enable_lfs" = yes; then 826 enable_feature="$enable_feature $features" 827else 828 disable_feature="$disable_feature $features" 829fi 830 831features="multithreading" 832if test "$enable_multithreading" = yes; then 833 enable_feature="$enable_feature $features" 834else 835 disable_feature="$disable_feature $features" 836fi 837 838features="stat-cache-fam" 839if test ! "x$FAM_LIBS" = x; then 840 enable_feature="$enable_feature $features" 841else 842 disable_feature="$disable_feature $features" 843fi 844 845features="webdav-properties" 846if test "x$XML_LIBS" \!= x -a "x$SQLITE_LIBS" \!= x; then 847 enable_feature="$enable_feature $features" 848else 849 disable_feature="$disable_feature $features" 850fi 851 852features="webdav-locks" 853if test "x$UUID_LIBS" \!= x; then 854 enable_feature="$enable_feature $features" 855else 856 disable_feature="$disable_feature $features" 857fi 858 859 860dnl output 861 862$ECHO 863$ECHO "Plugins:" 864$ECHO 865 866$ECHO "enabled: " 867for p in $do_build; do 868 $ECHO " $p" 869done | sort 870 871$ECHO "disabled: " 872for p in $no_build; do 873 $ECHO " $p" 874done | sort 875 876$ECHO 877$ECHO "Features:" 878$ECHO 879 880$ECHO "enabled: " 881for p in $enable_feature; do 882 $ECHO " $p" 883done | sort 884 885$ECHO "disabled: " 886for p in $disable_feature; do 887 $ECHO " $p" 888done | sort 889 890$ECHO 891