2 dnl Process this file with autoconf to produce a configure script.
4 AC_INIT([lighttpd], [1.4.42], [contact@lighttpd.net])
5 AC_CONFIG_SRCDIR([src/server.c])
6 AC_CONFIG_HEADER([config.h])
7 AC_CONFIG_MACRO_DIR([m4])
11 dnl HOW FUCKING BROKEN IS AUTOMAKE...
12 dnl serial-tests is not recognized before 1.12, and required for serial tests with 1.13, sane version checks "impossible"
13 dnl if you don't use the default (symlinked) automake on your box, set AUTOMAKE to the path you're using
14 m4_define([serial_tests], [
15 m4_esyscmd([case `${AUTOMAKE:-automake} --version | head -n 1` in
16 *1.11.*|*1.10.*|*1.9.*);;
17 *) echo serial-tests;;
21 AM_INIT_AUTOMAKE([-Wall -Wno-portability -Wno-override foreign dist-xz tar-ustar] serial_tests)
23 dnl enable with --enable-silent-rules or make V=0 (needs automake >= 1.11)
24 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES])
27 dnl @synopsis TRY_CFLAGS [compiler flags]
28 dnl @summary check whether compiler supports given flags and adds them to CFLAGS
29 AC_DEFUN([TRY_CFLAGS],
31 AC_MSG_CHECKING([if $CC supports $1])
33 ac_try_cflags_saved_cflags="${CFLAGS}"
35 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])],
36 [AC_MSG_RESULT([yes])],
39 CFLAGS="${ac_try_cflags_saved_cflags}"
45 dnl @synopsis TRY_LDFLAGS [linker flags]
46 dnl @summary check whether linker supports given flags and adds them to LDFLAGS
47 AC_DEFUN([TRY_LDFLAGS],
49 AC_MSG_CHECKING([if $LD supports $1])
51 ac_try_ldflags_saved_ldflags="${LDFLAGS}"
52 LDFLAGS="${LDFLAGS} $1"
53 AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
54 [AC_MSG_RESULT([yes])],
57 LDFLAGS="${ac_try_ldflags_saved_cflags}"
63 dnl Checks for programs.
74 dnl AM_PROG_AR is needed for some linker stuff
75 dnl AC_USE_SYSTEM_EXTENSIONS requires autoconf 2.60
76 m4_ifdef([AC_USE_SYSTEM_EXTENSIONS], [AC_USE_SYSTEM_EXTENSIONS])
77 dnl AM_PROG_AR requires automake 1.11 (and uses AC_COMPILE_IFELSE which wants AC_USE_SYSTEM_EXTENSIONS)
78 m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
87 *darwin*|*cygwin*|*aix*|*mingw* ) NO_RDYNAMIC=yes;;
90 AM_CONDITIONAL(NO_RDYNAMIC, test x$NO_RDYNAMIC = xyes)
92 if test -z "$LIGHTTPD_STATIC"; then
95 AM_CONDITIONAL(LIGHTTPD_STATIC, test x$LIGHTTPD_STATIC = xyes)
107 CPPFLAGS="${CPPFLAGS} -D_REENTRANT -D__EXTENSIONS__"
109 dnl Checks for header files.
112 AC_CHECK_HEADERS([arpa/inet.h fcntl.h netinet/in.h stdlib.h string.h \
113 sys/socket.h sys/time.h unistd.h sys/sendfile.h sys/uio.h \
114 getopt.h sys/epoll.h sys/select.h poll.h sys/poll.h sys/devpoll.h sys/filio.h \
115 sys/mman.h sys/event.h port.h pwd.h \
116 sys/resource.h sys/un.h syslog.h sys/prctl.h uuid/uuid.h])
118 dnl Checks for typedefs, structures, and compiler characteristics.
126 AC_CHECK_MEMBER(struct tm.tm_gmtoff,[AC_DEFINE([HAVE_STRUCT_TM_GMTOFF],[1],[gmtoff in struct tm])],,[#include <time.h>])
127 AC_CHECK_TYPES(struct sockaddr_storage,,,[#include <sys/socket.h>])
128 AC_CHECK_TYPES(socklen_t,,,[#include <sys/types.h>
129 #include <sys/socket.h>])
131 dnl Checks for library functions.
140 if test -z "$PKG_CONFIG"; then
141 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
144 dnl checking for libev
145 AC_MSG_CHECKING(for libev support)
147 AC_HELP_STRING([--with-libev@<:@=PATH@:>@],[Include libev support for fdevent handlers in PATH/include and PATH/lib]),
148 [WITH_LIBEV=$withval],[WITH_LIBEV=no])
153 if test "$WITH_LIBEV" != "no"; then
154 PKG_CHECK_MODULES(LIBEV, libev, [], [
155 dnl no pkg-config for libev, searching manually:
157 if test "$WITH_LIBEV" != "yes"; then
158 LIBEV_CFLAGS="-I$WITH_LIBEV/include"
159 LIBEV_LIBS="-L$WITH_LIBEV/lib -lev"
161 AC_CHECK_HEADERS([ev.h],[
162 AC_CHECK_LIB([ev], [ev_time], [
166 AC_MSG_ERROR([libev not found])
169 AC_MSG_ERROR([libev not found])
175 AC_DEFINE([HAVE_LIBEV], [1], [libev support])
178 AC_SUBST(LIBEV_CFLAGS)
181 dnl Checks for database.
185 AC_MSG_CHECKING(for MySQL support)
187 AC_HELP_STRING([--with-mysql@<:@=PATH@:>@],[Include MySQL support. PATH is the path to 'mysql_config']),
188 [WITH_MYSQL=$withval],[WITH_MYSQL=no])
190 if test "$WITH_MYSQL" != "no"; then
192 if test "$WITH_MYSQL" = "yes"; then
193 AC_PATH_PROG(MYSQL_CONFIG, mysql_config)
195 MYSQL_CONFIG=$WITH_MYSQL
198 if test "$MYSQL_CONFIG" = ""; then
199 AC_MSG_ERROR(mysql_config is not found)
201 if test \! -x $MYSQL_CONFIG; then
202 AC_MSG_ERROR(mysql_config not exists or not executable, use --with-mysql=path-to-mysql_config)
205 if $MYSQL_CONFIG | grep -- '--include' > /dev/null ; then
206 MYSQL_INCLUDE="`$MYSQL_CONFIG --include | sed s/\'//g`"
208 MYSQL_INCLUDE="`$MYSQL_CONFIG --cflags | sed s/\'//g`"
210 MYSQL_LIBS="`$MYSQL_CONFIG --libs | sed s/\'//g`"
212 AC_MSG_CHECKING(for MySQL includes at)
213 AC_MSG_RESULT($MYSQL_INCLUDE)
215 AC_MSG_CHECKING(for MySQL libraries at)
216 AC_MSG_RESULT($MYSQL_LIBS)
217 dnl check for errmsg.h, which isn't installed by some versions of 3.21
218 old_CPPFLAGS="$CPPFLAGS"
219 CPPFLAGS="$CPPFLAGS $MYSQL_INCLUDE"
220 AC_CHECK_HEADERS(errmsg.h mysql.h)
221 CPPFLAGS="$old_CPPFLAGS"
223 AC_DEFINE([HAVE_MYSQL], [1], [mysql support])
229 AC_SUBST(MYSQL_INCLUDE)
232 AC_MSG_CHECKING(for LDAP support)
233 AC_ARG_WITH(ldap, AC_HELP_STRING([--with-ldap],[enable LDAP support]),
234 [WITH_LDAP=$withval], [WITH_LDAP=no])
235 AC_MSG_RESULT([$withval])
236 if test "$WITH_LDAP" != "no"; then
237 AC_CHECK_LIB(ldap, ldap_bind, [
238 AC_CHECK_HEADERS([ldap.h],[
240 AC_DEFINE([HAVE_LIBLDAP], [1], [libldap])
241 AC_DEFINE([HAVE_LDAP_H], [1])
242 AC_DEFINE([LDAP_DEPRECATED], [1], [Using deprecated ldap api])
246 AC_CHECK_LIB(lber, ber_printf, [
247 AC_CHECK_HEADERS([lber.h],[
249 AC_DEFINE([HAVE_LIBLBER], [1], [liblber])
250 AC_DEFINE([HAVE_LBER_H], [1])
257 AC_MSG_CHECKING(for extended attributes support)
258 AC_ARG_WITH(attr, AC_HELP_STRING([--with-attr],[enable extended attribute support]),
259 [WITH_ATTR=$withval],[WITH_ATTR=no])
260 AC_MSG_RESULT($withval)
261 if test "$WITH_ATTR" != "no"; then
262 # libattr (linux only?)
263 AC_CHECK_LIB(attr, attr_get, [
264 AC_CHECK_HEADERS([attr/attributes.h],[
266 AC_DEFINE([HAVE_XATTR], [1], [libattr])
267 AC_DEFINE([HAVE_ATTR_ATTRIBUTES_H], [1])
273 AC_CHECK_FUNC([extattr_get_file], [
274 AC_CHECK_HEADERS([sys/extattr.h],[
275 AC_DEFINE([HAVE_EXTATTR], [1], [BSD extended attributes])
276 AC_DEFINE([HAVE_SYS_EXTATTR_H], [1])
281 dnl openssl on solaris needs -lsocket -lnsl
282 AC_SEARCH_LIBS(socket,socket)
283 AC_SEARCH_LIBS(gethostbyname,nsl socket)
284 AC_SEARCH_LIBS(hstrerror,resolv)
286 dnl On Haiku accept() and friends are in libnetwork
287 AC_SEARCH_LIBS(accept,network)
289 dnl clock_gettime() needs -lrt with glibc < 2.17, and possibly other platforms
290 AC_SEARCH_LIBS([clock_gettime],[rt])
293 AC_SEARCH_LIBS(dlopen,dl,[
294 AC_CHECK_HEADERS([dlfcn.h],[
295 if test "$ac_cv_search_dlopen" != no; then
296 test "$ac_cv_search_dlopen" = "none required" || DL_LIB="$ac_cv_search_dlopen"
299 AC_DEFINE([HAVE_LIBDL], [1], [libdl])
300 AC_DEFINE([HAVE_DLFCN_H], [1])
306 dnl Check for valgrind
307 AC_MSG_CHECKING(for valgrind)
308 AC_ARG_WITH(valgrind, AC_HELP_STRING([--with-valgrind],[enable internal support for valgrind]),
309 [WITH_VALGRIND=$withval],[WITH_VALGRIND=no])
310 AC_MSG_RESULT([$WITH_VALGRIND])
311 if test "$WITH_VALGRIND" != "no"; then
312 AC_CHECK_HEADERS([valgrind/valgrind.h])
315 dnl Checking for libunwind
316 AC_MSG_CHECKING(for libunwind)
317 AC_ARG_WITH(libunwind,
318 AC_HELP_STRING([--with-libunwind],[Include libunwind support for backtraces on assert failures]),
319 [WITH_LIBUNWIND=$withval],[WITH_LIBUNWIND=no])
321 if test "$WITH_LIBUNWIND" != "no"; then
322 PKG_CHECK_MODULES(LIBUNWIND, libunwind)
323 AC_DEFINE(HAVE_LIBUNWIND, 1, [Have libunwind support])
325 AC_MSG_RESULT([$WITH_LIBUNWIND])
327 dnl Checking for kerberos5
328 AC_MSG_CHECKING(for kerberos5)
330 AC_HELP_STRING([--with-krb5@<:@=DIR@:>@],[Use Kerberos 5]),
331 [WITH_KRB5=$withval],[WITH_KRB5=no])
332 if test "$WITH_KRB5" != "no"; then
334 if test "x$WITH_KRB5" != "xyes"; then
335 CPPFLAGS="$CPPFLAGS -I$WITH_KRB5/include"
336 LDFLAGS="$LDFLAGS -L$WITH_KRB5/lib"
341 AC_MSG_RESULT([$use_krb5])
343 AC_ARG_WITH(krb5-includes,
344 AC_HELP_STRING([--with-krb5-includes=DIR],[Kerberos includes]),
345 [ use_krb5=yes CPPFLAGS="$CPPFLAGS -I$withval" ]
348 AC_ARG_WITH(krb5-libs,
349 AC_HELP_STRING([--with-krb5-libs=DIR],[Kerberos libraries]),
350 [ use_krb5=yes LDFLAGS="$LDFLAGS -L$withval" ]
353 if test "x$use_krb5" = "xyes"; then
354 AC_CHECK_LIB(gssapi_krb5, gss_acquire_cred, [
355 AC_CHECK_HEADERS([gssapi/gssapi_krb5.h],[
356 KRB5_LIB="-lresolv -lkrb5 -lgssapi_krb5"
357 AC_DEFINE(HAVE_KRB5, [1], [libgssapi_krb5])
360 if test "x$KRB5_LIB" = x; then
361 AC_MSG_ERROR([gssapi_krb5 headers and/or libs where not found, install them or build with --without-krb5])
366 dnl Check for openssl
367 AC_MSG_CHECKING(for OpenSSL)
369 AC_HELP_STRING([--with-openssl@<:@=DIR@:>@],[Include openssl support (default no)]),
370 [WITH_OPENSSL=$withval],[WITH_OPENSSL=no])
372 if test "$WITH_OPENSSL" != "no"; then
374 if test "$WITH_OPENSSL" != "yes"; then
375 CPPFLAGS="$CPPFLAGS -I$WITH_OPENSSL/include"
376 LDFLAGS="$LDFLAGS -L$WITH_OPENSSL/lib"
381 AC_MSG_RESULT([$use_openssl])
383 AC_ARG_WITH(openssl-includes,
384 AC_HELP_STRING([--with-openssl-includes=DIR],[OpenSSL includes]),
385 [ use_openssl=yes CPPFLAGS="$CPPFLAGS -I$withval" ]
388 AC_ARG_WITH(openssl-libs,
389 AC_HELP_STRING([--with-openssl-libs=DIR],[OpenSSL libraries]),
390 [ use_openssl=yes LDFLAGS="$LDFLAGS -L$withval" ]
393 if test "x$use_openssl" = "xyes"; then
394 if test "x$use_krb5" = "xyes"; then
395 AC_DEFINE([USE_OPENSSL_KERBEROS], [1], [with kerberos])
398 AC_CHECK_HEADERS([openssl/ssl.h])
400 AC_CHECK_LIB(crypto, BIO_f_base64, [
401 AC_CHECK_LIB(ssl, SSL_new, [ SSL_LIB="-lssl -lcrypto"
402 AC_DEFINE(HAVE_LIBSSL, [], [Have libssl]) ], [], [ -lcrypto "$DL_LIB" ])
408 AC_MSG_CHECKING(for perl regular expressions support)
409 AC_ARG_WITH(pcre, AC_HELP_STRING([--with-pcre],[Enable pcre support (default yes)]),
410 [WITH_PCRE=$withval],[WITH_PCRE=yes])
411 AC_MSG_RESULT([$WITH_PCRE])
413 if test "$WITH_PCRE" != "no"; then
414 if test "$WITH_PCRE" != "yes"; then
415 PCRE_LIB="-L$WITH_PCRE/lib -lpcre"
416 CPPFLAGS="$CPPFLAGS -I$WITH_PCRE/include"
418 AC_PATH_PROG(PCRECONFIG, pcre-config)
419 if test x"$PCRECONFIG" != x; then
420 PCRE_LIB=`$PCRECONFIG --libs`
421 CPPFLAGS="$CPPFLAGS `$PCRECONFIG --cflags`"
425 if test x"$PCRE_LIB" != x; then
426 AC_DEFINE([HAVE_LIBPCRE], [1], [libpcre])
427 AC_DEFINE([HAVE_PCRE_H], [1], [pcre.h])
430 AC_MSG_ERROR([pcre-config not found, install the pcre-devel package or build with --without-pcre])
434 AC_MSG_CHECKING(for zlib support)
435 AC_ARG_WITH(zlib, AC_HELP_STRING([--with-zlib],[Enable zlib support for mod_compress]),
436 [WITH_ZLIB=$withval],[WITH_ZLIB=yes])
437 AC_MSG_RESULT([$WITH_ZLIB])
439 if test "$WITH_ZLIB" != "no"; then
440 if test "$WITH_ZLIB" != "yes"; then
441 Z_LIB="-L$WITH_ZLIB -lz"
442 CPPFLAGS="$CPPFLAGS -I$WITH_ZLIB"
444 AC_CHECK_LIB(z, deflate, [
445 AC_CHECK_HEADERS([zlib.h],[Z_LIB=-lz])
449 if test x"$Z_LIB" != x; then
450 AC_DEFINE([HAVE_LIBZ], [1], [libz])
451 AC_DEFINE([HAVE_ZLIB_H], [1])
454 AC_MSG_ERROR([zlib-headers and/or libs were not found, install them or build with --without-zlib])
458 AC_MSG_CHECKING(for bzip2 support)
459 AC_ARG_WITH(bzip2, AC_HELP_STRING([--with-bzip2],[Enable bzip2 support for mod_compress]),
460 [WITH_BZIP2=$withval],[WITH_BZIP2=yes])
461 AC_MSG_RESULT([$WITH_BZIP2])
463 if test "$WITH_BZIP2" != "no"; then
464 if test "$WITH_BZIP2" != "yes"; then
465 BZ_LIB="-L$WITH_BZIP2 -lbz2"
466 CPPFLAGS="$CPPFLAGS -I$WITH_BZIP2"
468 AC_CHECK_LIB(bz2, BZ2_bzCompress, [
469 AC_CHECK_HEADERS([bzlib.h],[BZ_LIB=-lbz2])
473 if test x"$BZ_LIB" != x; then
474 AC_DEFINE([HAVE_LIBBZ2], [1], [libbz2])
475 AC_DEFINE([HAVE_BZLIB_H], [1])
478 AC_MSG_ERROR([bzip2-headers and/or libs were not found, install them or build with --without-bzip2])
483 AC_MSG_CHECKING(for FAM)
484 AC_ARG_WITH(fam, AC_HELP_STRING([--with-fam],[fam/gamin for reducing number of stat() calls]),
485 [WITH_FAM=$withval],[WITH_FAM=no])
486 AC_MSG_RESULT([$WITH_FAM])
488 if test "$WITH_FAM" != "no"; then
489 if test "$WITH_FAM" != "yes"; then
490 FAM_LIBS="-L$WITH_FAM -lfam"
491 CPPFLAGS="$CPPFLAGS -I$WITH_FAM"
493 AC_CHECK_LIB(fam, FAMOpen2, [
494 AC_CHECK_HEADERS([fam.h],[FAM_LIBS=-lfam])
496 if test "x$FAM_LIBS" = x; then
497 PKG_CHECK_MODULES(FAM, gamin >= 0.1.0)
501 if test x"$FAM_LIBS" != x; then
504 AC_CHECK_FUNCS([FAMNoExists])
507 AC_DEFINE([HAVE_LIBFAM], [1], [libfam])
508 AC_DEFINE([HAVE_FAM_H], [1], [fam.h])
511 AC_MSG_ERROR([fam/gamin-headers and/or libs were not found, install them or build with --without-fam])
515 AC_MSG_CHECKING(for properties in mod_webdav)
516 AC_ARG_WITH(webdav-props, AC_HELP_STRING([--with-webdav-props],[properties in mod_webdav]),
517 [WITH_WEBDAV_PROPS=$withval],[WITH_WEBDAV_PROPS=no])
518 AC_MSG_RESULT([$WITH_WEBDAV_PROPS])
520 if test "$WITH_WEBDAV_PROPS" != "no"; then
522 AC_MSG_CHECKING(for libxml2)
523 AC_ARG_WITH(libxml, AC_HELP_STRING([--with-libxml],[libxml2 for properties in mod_webdav]),
524 [WITH_LIBXML=$withval],[WITH_LIBXML=yes])
525 AC_MSG_RESULT([$WITH_LIBXML])
527 if test "$WITH_LIBXML" != "no"; then
528 if test "$WITH_LIBXML" != "yes"; then
529 XML_LIBS="-L$WITH_LIBXML/.libs -lxml2"
530 XML_CFLAGS="-I$WITH_LIBXML/include"
532 PKG_CHECK_MODULES(XML, libxml-2.0)
535 if test x"$XML_LIBS" != x; then
536 AC_DEFINE([HAVE_LIBXML2], [1], [libxml2])
537 AC_DEFINE([HAVE_LIBXML_H], [1], [libxml.h])
541 AC_MSG_ERROR([libxml2-headers and/or libs were not found, install them or build with --without-webdav-props])
545 AC_MSG_CHECKING(for sqlite)
546 AC_ARG_WITH(sqlite, AC_HELP_STRING([--with-sqlite],[sqlite for properties in mod_webdav]),
547 [WITH_SQLITE=$withval],[WITH_SQLITE=yes])
548 AC_MSG_RESULT([$WITH_SQLITE])
550 if test "$WITH_SQLITE" != "no"; then
551 if test "$WITH_SQLITE" != "yes"; then
552 SQLITE_LIBS="-L$WITH_SQLITE/.libs -lsqlite3"
553 SQLITE_CFLAGS="-I$WITH_SQLITE"
555 PKG_CHECK_MODULES(SQLITE, sqlite3)
558 if test x"$SQLITE_LIBS" != x; then
559 AC_DEFINE([HAVE_SQLITE3], [1], [libsqlite3])
560 AC_DEFINE([HAVE_SQLITE3_H], [1], [sqlite3.h])
561 AC_SUBST(SQLITE_LIBS)
562 AC_SUBST(SQLITE_CFLAGS)
564 AC_MSG_ERROR([sqlite-headers and/or libs were not found, install them or build with --without-webdav-props])
568 AC_MSG_CHECKING(for locks in mod_webdav)
569 AC_ARG_WITH(webdav-locks, AC_HELP_STRING([--with-webdav-locks],[locks in mod_webdav]),
570 [WITH_WEBDAV_LOCKS=$withval],[WITH_WEBDAV_LOCKS=no])
571 AC_MSG_RESULT([$WITH_WEBDAV_LOCKS])
573 if test "$WITH_WEBDAV_LOCKS" != "no"; then
575 AC_MSG_CHECKING(for libuuid)
576 AC_ARG_WITH(uuid, AC_HELP_STRING([--with-uuid],[uuid for locks in mod_webdav]),
577 [WITH_UUID=$withval],[WITH_UUID=yes])
578 AC_MSG_RESULT([$WITH_UUID])
580 if test "$WITH_UUID" != "no"; then
581 if test "$WITH_UUID" != "yes"; then
582 UUID_LIBS="-L$WITH_UUID -luuid"
583 CPPFLAGS="$CPPFLAGS -I$WITH_UUID"
585 AC_CHECK_LIB(uuid, uuid_unparse, [
586 AC_CHECK_HEADERS([uuid/uuid.h],[UUID_LIBS=-luuid])
590 if test x"$UUID_LIBS" != x; then
591 AC_DEFINE([HAVE_UUID], [1], [libuuid])
592 AC_DEFINE([HAVE_UUID_H], [1], [uuid/uuid.h is available])
595 AC_MSG_ERROR([uuid-headers and/or libs were not found, install them or build with --without-webdav-locks])
604 AC_MSG_CHECKING(for gdbm)
605 AC_ARG_WITH(gdbm, AC_HELP_STRING([--with-gdbm],[gdbm storage for mod_trigger_b4_dl]),
606 [WITH_GDBM=$withval],[WITH_GDBM=no])
607 AC_MSG_RESULT([$WITH_GDBM])
609 if test "$WITH_GDBM" != "no"; then
610 if test "$WITH_GDBM" != "yes"; then
611 GDBM_LIB="-L$WITH_GDBM -lgdbm"
612 CPPFLAGS="$CPPFLAGS -I$WITH_GDBM"
614 AC_CHECK_LIB(gdbm, gdbm_open, [
615 AC_CHECK_HEADERS([gdbm.h],[GDBM_LIB=-lgdbm])
619 if test x"$GDBM_LIB" != x; then
620 AC_DEFINE([HAVE_GDBM], [1], [libgdbm])
621 AC_DEFINE([HAVE_GDBM_H], [1])
624 AC_MSG_ERROR([gdbm headers and/or libs were not found, install them or build with --without-gdbm])
629 AC_MSG_CHECKING(for GeoIP)
630 AC_ARG_WITH(geoip, AC_HELP_STRING([--with-geoip],[IP-based geolocation lookup]),
631 [WITH_GEOIP=$withval],[WITH_GEOIP=no])
632 AC_MSG_RESULT([$WITH_GEOIP])
634 if test "$WITH_GEOIP" != "no"; then
635 if test "$WITH_GEOIP" != "yes"; then
636 GEOIP_LIB="-L$WITH_GEOIP -lGeoIP"
637 CPPFLAGS="$CPPFLAGS -I$WITH_GEOIP"
639 AC_CHECK_LIB(GeoIP, GeoIP_country_name_by_addr, [
640 AC_CHECK_HEADERS([GeoIP.h],[GEOIP_LIB=-lGeoIP])
644 if test x"$GEOIP_LIB" != x; then
645 AC_DEFINE([HAVE_GEOIP], [1], [libGeoIP])
646 AC_DEFINE([HAVE_GEOIP_H], [1])
649 AC_MSG_ERROR([GeoIP headers and/or libs were not found, install them or build with --without-geoip])
653 dnl Check for memcached
654 AC_MSG_CHECKING(for memcached)
655 AC_ARG_WITH(memcached, AC_HELP_STRING([--with-memcached],[memcached storage for mod_trigger_b4_dl]),
656 [WITH_MEMCACHED=$withval],[WITH_MEMCACHED=no])
657 AC_MSG_RESULT([$WITH_MEMCACHED])
659 if test "$WITH_MEMCACHED" != "no"; then
660 if test "$WITH_MEMCACHED" != "yes"; then
661 MEMCACHED_LIB="-L$WITH_MEMCACHED -lMEMCACHED"
662 CPPFLAGS="$CPPFLAGS -I$WITH_MEMCACHED"
664 AC_CHECK_LIB(memcached, memcached, [
665 AC_CHECK_HEADERS([libmemcached/memcached.h],[
666 MEMCACHED_LIB=-lmemcached
671 if test x"$MEMCACHED_LIB" != x; then
672 AC_DEFINE([USE_MEMCACHED], [1], [libmemcached])
673 AC_SUBST(MEMCACHED_LIB)
675 AC_MSG_ERROR([memcached headers and/or libs were not found, install them or build with --without-memcached])
680 AC_MSG_CHECKING(if lua-support is requested)
681 AC_ARG_WITH(lua, AC_HELP_STRING([--with-lua],[lua engine for mod_cml]),
682 [WITH_LUA=$withval],[WITH_LUA=no])
684 AC_MSG_RESULT($WITH_LUA)
685 if test "$WITH_LUA" != "no"; then
687 if test "$WITH_LUA" != "yes"; then
688 PKG_CHECK_MODULES(LUA, $WITH_LUA >= 5.1, [
691 AC_MSG_NOTICE([Couldn't find requested lua pkg-config module $WITH_LUA])
693 if test "$found_lua" = "0"; then
694 LUA_LIBS="-L$WITH_LUA -llua"
695 LUA_CFLAGS="-I$WITH_LUA"
698 for luaname in lua5.3 lua-5.3 lua5.2 lua-5.2 lua5.1 lua-5.1 lua; do
699 if test "$found_lua" = "0"; then
700 PKG_CHECK_MODULES(LUA, $luaname >= 5.1, [
703 AC_MSG_NOTICE([Couldn't find $luaname])
707 if test "$found_lua" = "0"; then
708 AC_MSG_ERROR([Couldn't find any lua pkg-config module])
712 if test x"$LUA_LIBS" != x; then
713 AC_DEFINE([HAVE_LUA], [1], [liblua])
714 AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
718 AC_MSG_ERROR([lua headers and/or libs were not found, install them or build with --without-lua])
722 dnl search for crypt_r and (fallback) for crypt
725 AC_SEARCH_LIBS([crypt_r],[crypt],[
726 AC_DEFINE([HAVE_CRYPT_R], [1], [crypt_r])
727 AC_CHECK_HEADERS([crypt.h],[
728 AC_DEFINE([HAVE_CRYPT_H], [1], [crypt.h])
733 AC_SEARCH_LIBS([crypt],[crypt],[
734 AC_DEFINE([HAVE_CRYPT], [1], [crypt])
735 AC_CHECK_HEADERS([crypt.h],[
736 AC_DEFINE([HAVE_CRYPT_H], [1], [crypt.h])
743 AC_SUBST([CRYPT_LIB])
746 AC_SEARCH_LIBS(sendfilev,sendfile,[
747 if test "$ac_cv_search_sendfilev" != no; then
748 test "$ac_cv_search_sendfilev" = "none required" || SENDFILE_LIB="$ac_cv_search_sendfilev"
749 AC_DEFINE([HAVE_SENDFILEV], [1], [solaris sendfilev])
753 AC_SUBST(SENDFILE_LIB)
756 *mingw* ) LIBS="$LIBS -lwsock32";;
760 AC_CHECK_FUNCS([dup2 getcwd inet_ntoa inet_ntop inet_pton issetugid memset mmap munmap strchr \
761 strdup strerror strstr strtol sendfile getopt socket lstat \
762 gethostbyname poll epoll_ctl getrlimit chroot \
763 getuid select signal pathconf madvise posix_fadvise posix_madvise \
764 writev sigaction sendfile64 send_file kqueue port_create localtime_r gmtime_r \
765 memset_s explicit_bzero clock_gettime])
767 AC_MSG_CHECKING(if weak symbols are supported)
768 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
769 __attribute__((weak)) void __dummy(void *x) { }
770 void f(void *x) { __dummy(x); }
774 AC_DEFINE([HAVE_WEAK_SYMBOLS], [1], [weak symbols are supported])
775 ],[AC_MSG_RESULT(no)])
777 AC_MSG_CHECKING(for Large File System support)
779 AC_HELP_STRING([--enable-lfs],[Turn on Large File System (default)]),
780 [case "${enableval}" in
781 yes) CPPFLAGS="${CPPFLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGE_FILES" ;;
783 *) AC_MSG_ERROR(bad value ${enableval} for --enable-lfs) ;;
784 esac],[CPPFLAGS="${CPPFLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGE_FILES"
786 AC_MSG_RESULT($enableval)
788 AC_CHECK_SIZEOF(long)
789 AC_CHECK_SIZEOF(off_t)
791 if test "x$ac_cv_func_sendfile" = xyes; then
792 dnl check if sendfile works
793 AC_MSG_CHECKING(if sendfile works)
794 if test "x$cross_compiling" = xno; then
796 #ifdef HAVE_SYS_SENDFILE_H
797 #include <sys/sendfile.h>
798 #endif /* HAVE_SYS_SENDFILE_H */
802 if (-1 == sendfile(-1, 0, &o, 0) && errno == ENOSYS) return -1;
807 AC_DEFINE([HAVE_SENDFILE_BROKEN], [1], [broken sendfile]) ] )
809 AC_MSG_RESULT(no, cross-compiling)
810 AC_DEFINE([HAVE_SENDFILE_BROKEN], [1], [broken sendfile])
814 dnl Check for IPv6 support
817 AC_HELP_STRING([--disable-ipv6],[disable IPv6 support]),
818 [case "${enableval}" in
821 *) AC_MSG_ERROR(bad value ${enableval} for --enable-ipv6) ;;
824 if test x$ipv6 = xtrue; then
825 AC_CACHE_CHECK([for IPv6 support], ac_cv_ipv6_support,
826 [AC_TRY_LINK([ #include <sys/types.h>
827 #include <sys/socket.h>
828 #include <netinet/in.h>], [struct sockaddr_in6 s; struct in6_addr t=in6addr_any; int i=AF_INET6; s; t.s6_addr[0] = 0; ],
829 [ac_cv_ipv6_support=yes], [ac_cv_ipv6_support=no])])
831 if test "$ac_cv_ipv6_support" = yes; then
832 AC_DEFINE(HAVE_IPV6,1,[Whether to enable IPv6 support])
836 # disable mmap by default; if a mmapped file gets truncated, the process gets a SIGBUS signal
837 # on reading the truncated area which we can't handle (yet).
838 # lighttpd may always use mmap with files it owns (created tmp files)
840 AC_HELP_STRING([--enable-mmap],[use mmap if available (DANGEROUS, allows local users to trigger SIGBUS crashes)]),
841 [case "${enableval}" in
844 *) AC_MSG_ERROR(bad value ${enableval} for --enable-mmap) ;;
847 if test x$mmap = xtrue; then
848 AC_DEFINE(ENABLE_MMAP, [1], [Use mmap if available])
852 AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes)
854 dnl check for fastcgi lib, for the tests only
856 AC_CHECK_LIB(fcgi, FCGI_Accept, [
857 AC_CHECK_HEADERS([fastcgi.h fastcgi/fastcgi.h],[
862 AM_CONDITIONAL(CHECK_WITH_FASTCGI, test "x$fastcgi_found" = xyes)
865 dnl check for extra compiler options (warning options)
866 if test "${GCC}" = "yes"; then
867 TRY_CFLAGS([-Wall -W -Wshadow -pedantic])
868 TRY_CFLAGS([-std=gnu99])
871 AC_ARG_ENABLE(extra-warnings,
872 AC_HELP_STRING([--enable-extra-warnings],[enable extra warnings (gcc specific)]),
873 [case "${enableval}" in
874 yes) extrawarnings=true ;;
875 no) extrawarnings=false ;;
876 *) AC_MSG_ERROR(bad value ${enableval} for --enable-extra-warnings) ;;
877 esac],[extrawarnings=false])
879 if test x$extrawarnings = xtrue; then
880 TRY_CFLAGS([-g -O2 -g2 -Wall -Wmissing-declarations -Wdeclaration-after-statement -Wcast-align -Wsign-compare -Wnested-externs -Wpointer-arith -D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security])
881 TRY_LDFLAGS([-Wl,--as-needed])
885 LIGHTTPD_VERSION_ID=`echo $PACKAGE_VERSION | $AWK -F '.' '{print "(" $1 " << 16 | " $2 " << 8 | " $3 ")"}'`
886 AC_DEFINE_UNQUOTED([LIGHTTPD_VERSION_ID], [$LIGHTTPD_VERSION_ID], [lighttpd-version-id])
888 AC_CONFIG_FILES([Makefile src/Makefile
889 doc/config/conf.d/Makefile \
890 doc/config/vhosts.d/Makefile \
891 doc/config/Makefile \
892 doc/scripts/Makefile \
893 doc/initscripts/Makefile \
894 doc/systemd/Makefile \
895 doc/outdated/Makefile \
898 tests/docroot/Makefile \
899 tests/docroot/123/Makefile \
900 tests/docroot/www/Makefile \
901 tests/docroot/www/go/Makefile \
902 tests/docroot/www/indexfile/Makefile \
903 tests/docroot/www/expire/Makefile \
908 do_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_authn_file mod_authn_ldap mod_authn_mysql mod_status mod_accesslog"
909 do_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 mod_ssi mod_deflate"
911 plugins="mod_rewrite mod_redirect mod_trigger_b4_dl"
912 features="regex-conditionals"
913 if test ! "x$PCRE_LIB" = x; then
914 do_build="$do_build $plugins"
915 enable_feature="$features"
917 no_build="$no_build $plugins"
918 disable_feature="$features"
921 features="auth-mysql"
922 plugins="mod_mysql_vhost"
923 if test ! "x$MYSQL_LIBS" = x; then
924 do_build="$do_build $plugins"
925 enable_feature="$enable_feature $features"
927 no_build="$no_build $plugins"
928 disable_feature="$disable_feature $features"
931 plugins="mod_cml mod_magnet"
932 if test ! "x$LUA_LIBS" = x; then
933 do_build="$do_build $plugins"
935 no_build="$no_build $plugins"
938 features="storage-gdbm"
939 if test ! "x$GDBM_LIB" = x; then
940 enable_feature="$enable_feature $features"
942 disable_feature="$disable_feature $features"
945 features="storage-memcached"
946 if test ! "x$MEMCACHED_LIB" = x; then
947 enable_feature="$enable_feature $features"
949 disable_feature="$disable_feature $features"
952 features="compress-gzip compress-deflate"
953 if test ! "x$Z_LIB" = x; then
954 enable_feature="$enable_feature $features"
956 disable_feature="$disable_feature $features"
959 features="compress-bzip2"
960 if test ! "x$BZ_LIB" = x; then
961 enable_feature="$enable_feature $features"
963 disable_feature="$disable_feature $features"
967 plugins="mod_authn_gssapi"
968 if test ! "x$KRB5_LIB" = x; then
969 do_build="$do_build $plugins"
970 enable_feature="$enable_feature $features"
972 no_build="$no_build $plugins"
973 disable_feature="$disable_feature $features"
977 if test ! "x$LDAP_LIB" = x; then
978 enable_feature="$enable_feature $features"
980 disable_feature="$disable_feature $features"
983 features="network-openssl"
984 if test ! "x$SSL_LIB" = x; then
985 enable_feature="$enable_feature $features"
987 disable_feature="$disable_feature $features"
991 features="auth-crypt"
992 if test "$ac_cv_search_crypt" = no; then
993 disable_feature="$disable_feature $features"
995 enable_feature="$enable_feature $features"
998 features="network-ipv6"
999 if test "$ac_cv_ipv6_support" = yes; then
1000 enable_feature="$enable_feature $features"
1002 disable_feature="$disable_feature $features"
1005 features="large-files"
1006 if test "$enable_lfs" = yes; then
1007 enable_feature="$enable_feature $features"
1009 disable_feature="$disable_feature $features"
1012 features="stat-cache-fam"
1013 if test ! "x$FAM_LIBS" = x; then
1014 enable_feature="$enable_feature $features"
1016 disable_feature="$disable_feature $features"
1019 features="webdav-properties"
1020 if test "x$XML_LIBS" \!= x -a "x$SQLITE_LIBS" \!= x; then
1021 enable_feature="$enable_feature $features"
1023 disable_feature="$disable_feature $features"
1026 features="webdav-locks"
1027 if test "x$UUID_LIBS" \!= x; then
1028 enable_feature="$enable_feature $features"
1030 disable_feature="$disable_feature $features"
1041 for p in $do_build; do
1046 for p in $no_build; do
1055 for p in $enable_feature; do
1060 for p in $disable_feature; do