2 dnl Process this file with autoconf to produce a configure script.
4 AC_INIT([lighttpd], [1.4.45], [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.
75 dnl AM_PROG_AR is needed for some linker stuff
76 dnl AC_USE_SYSTEM_EXTENSIONS requires autoconf 2.60
77 m4_ifdef([AC_USE_SYSTEM_EXTENSIONS], [AC_USE_SYSTEM_EXTENSIONS])
78 dnl AM_PROG_AR requires automake 1.11 (and uses AC_COMPILE_IFELSE which wants AC_USE_SYSTEM_EXTENSIONS)
79 m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
88 *darwin*|*cygwin*|*aix*|*mingw*|*midipix* ) NO_RDYNAMIC=yes;;
91 AM_CONDITIONAL(NO_RDYNAMIC, test x$NO_RDYNAMIC = xyes)
93 if test -z "$LIGHTTPD_STATIC"; then
96 AM_CONDITIONAL(LIGHTTPD_STATIC, test x$LIGHTTPD_STATIC = xyes)
108 CPPFLAGS="${CPPFLAGS} -D_REENTRANT -D__EXTENSIONS__"
110 dnl Checks for header files.
113 AC_CHECK_HEADERS([arpa/inet.h fcntl.h netinet/in.h stdlib.h string.h \
114 sys/socket.h sys/time.h unistd.h sys/sendfile.h sys/uio.h \
115 getopt.h sys/epoll.h sys/select.h poll.h sys/poll.h sys/devpoll.h sys/filio.h \
116 sys/mman.h sys/event.h port.h pwd.h \
117 sys/resource.h sys/un.h syslog.h sys/prctl.h uuid/uuid.h])
119 dnl Checks for typedefs, structures, and compiler characteristics.
127 AC_CHECK_MEMBER(struct tm.tm_gmtoff,[AC_DEFINE([HAVE_STRUCT_TM_GMTOFF],[1],[gmtoff in struct tm])],,[#include <time.h>])
128 AC_CHECK_TYPES(struct sockaddr_storage,,,[#include <sys/socket.h>])
129 AC_CHECK_TYPES(socklen_t,,,[#include <sys/types.h>
130 #include <sys/socket.h>])
132 dnl Checks for library functions.
141 if test -z "$PKG_CONFIG"; then
142 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
145 dnl checking for libev
146 AC_MSG_CHECKING(for libev support)
148 AC_HELP_STRING([--with-libev@<:@=PATH@:>@],[Include libev support for fdevent handlers in PATH/include and PATH/lib]),
149 [WITH_LIBEV=$withval],[WITH_LIBEV=no])
154 if test "$WITH_LIBEV" != "no"; then
155 PKG_CHECK_MODULES(LIBEV, libev, [], [
156 dnl no pkg-config for libev, searching manually:
158 if test "$WITH_LIBEV" != "yes"; then
159 LIBEV_CFLAGS="-I$WITH_LIBEV/include"
160 LIBEV_LIBS="-L$WITH_LIBEV/lib -lev"
162 AC_CHECK_HEADERS([ev.h],[
163 AC_CHECK_LIB([ev], [ev_time], [
167 AC_MSG_ERROR([libev not found])
170 AC_MSG_ERROR([libev not found])
176 AC_DEFINE([HAVE_LIBEV], [1], [libev support])
179 AC_SUBST(LIBEV_CFLAGS)
181 AC_MSG_RESULT([$WITH_LIBEV])
183 dnl Checks for database.
187 AC_MSG_CHECKING(for MySQL support)
189 AC_HELP_STRING([--with-mysql@<:@=PATH@:>@],[Include MySQL support. PATH is the path to 'mysql_config']),
190 [WITH_MYSQL=$withval],[WITH_MYSQL=no])
192 if test "$WITH_MYSQL" != "no"; then
194 if test "$WITH_MYSQL" = "yes"; then
195 AC_PATH_PROG(MYSQL_CONFIG, mysql_config)
197 MYSQL_CONFIG=$WITH_MYSQL
200 if test "$MYSQL_CONFIG" = ""; then
201 AC_MSG_ERROR(mysql_config is not found)
203 if test \! -x $MYSQL_CONFIG; then
204 AC_MSG_ERROR(mysql_config not exists or not executable, use --with-mysql=path-to-mysql_config)
207 if $MYSQL_CONFIG | grep -- '--include' > /dev/null ; then
208 MYSQL_INCLUDE="`$MYSQL_CONFIG --include | sed s/\'//g`"
210 MYSQL_INCLUDE="`$MYSQL_CONFIG --cflags | sed s/\'//g`"
212 MYSQL_LIBS="`$MYSQL_CONFIG --libs | sed s/\'//g`"
214 AC_MSG_CHECKING(for MySQL includes at)
215 AC_MSG_RESULT($MYSQL_INCLUDE)
217 AC_MSG_CHECKING(for MySQL libraries at)
218 AC_MSG_RESULT($MYSQL_LIBS)
219 dnl check for errmsg.h, which isn't installed by some versions of 3.21
220 old_CPPFLAGS="$CPPFLAGS"
221 CPPFLAGS="$CPPFLAGS $MYSQL_INCLUDE"
222 AC_CHECK_HEADERS(errmsg.h mysql.h)
223 CPPFLAGS="$old_CPPFLAGS"
225 AC_DEFINE([HAVE_MYSQL], [1], [mysql support])
229 AM_CONDITIONAL(BUILD_WITH_MYSQL, test ! $WITH_MYSQL = no)
232 AC_SUBST(MYSQL_INCLUDE)
235 AC_MSG_CHECKING(for LDAP support)
236 AC_ARG_WITH(ldap, AC_HELP_STRING([--with-ldap],[enable LDAP support]),
237 [WITH_LDAP=$withval], [WITH_LDAP=no])
238 AC_MSG_RESULT([$withval])
239 if test "$WITH_LDAP" != "no"; then
240 AC_CHECK_LIB(ldap, ldap_bind, [
241 AC_CHECK_HEADERS([ldap.h],[
243 AC_DEFINE([HAVE_LIBLDAP], [1], [libldap])
244 AC_DEFINE([HAVE_LDAP_H], [1])
245 AC_DEFINE([LDAP_DEPRECATED], [1], [Using deprecated ldap api])
249 AC_CHECK_LIB(lber, ber_printf, [
250 AC_CHECK_HEADERS([lber.h],[
252 AC_DEFINE([HAVE_LIBLBER], [1], [liblber])
253 AC_DEFINE([HAVE_LBER_H], [1])
258 AM_CONDITIONAL(BUILD_WITH_LDAP, test ! $WITH_LDAP = no)
261 AC_MSG_CHECKING(for extended attributes support)
262 AC_ARG_WITH(attr, AC_HELP_STRING([--with-attr],[enable extended attribute support]),
263 [WITH_ATTR=$withval],[WITH_ATTR=no])
264 AC_MSG_RESULT($withval)
265 if test "$WITH_ATTR" != "no"; then
266 # libattr (linux only?)
267 AC_CHECK_LIB(attr, attr_get, [
268 AC_CHECK_HEADERS([attr/attributes.h],[
270 AC_DEFINE([HAVE_XATTR], [1], [libattr])
271 AC_DEFINE([HAVE_ATTR_ATTRIBUTES_H], [1])
277 AC_CHECK_FUNC([extattr_get_file], [
278 AC_CHECK_HEADERS([sys/extattr.h],[
279 AC_DEFINE([HAVE_EXTATTR], [1], [BSD extended attributes])
280 AC_DEFINE([HAVE_SYS_EXTATTR_H], [1])
285 dnl openssl on solaris needs -lsocket -lnsl
286 AC_SEARCH_LIBS(socket,socket)
287 AC_SEARCH_LIBS(gethostbyname,nsl socket)
289 dnl On Haiku accept() and friends are in libnetwork
290 AC_SEARCH_LIBS(accept,network)
292 dnl clock_gettime() needs -lrt with glibc < 2.17, and possibly other platforms
293 AC_SEARCH_LIBS([clock_gettime],[rt])
296 AC_SEARCH_LIBS(dlopen,dl,[
297 AC_CHECK_HEADERS([dlfcn.h],[
298 if test "$ac_cv_search_dlopen" != no; then
299 test "$ac_cv_search_dlopen" = "none required" || DL_LIB="$ac_cv_search_dlopen"
302 AC_DEFINE([HAVE_LIBDL], [1], [libdl])
303 AC_DEFINE([HAVE_DLFCN_H], [1])
309 dnl Check for valgrind
310 AC_MSG_CHECKING(for valgrind)
311 AC_ARG_WITH(valgrind, AC_HELP_STRING([--with-valgrind],[enable internal support for valgrind]),
312 [WITH_VALGRIND=$withval],[WITH_VALGRIND=no])
313 AC_MSG_RESULT([$WITH_VALGRIND])
314 if test "$WITH_VALGRIND" != "no"; then
315 AC_CHECK_HEADERS([valgrind/valgrind.h])
318 dnl Checking for libunwind
319 AC_MSG_CHECKING(for libunwind)
320 AC_ARG_WITH(libunwind,
321 AC_HELP_STRING([--with-libunwind],[Include libunwind support for backtraces on assert failures]),
322 [WITH_LIBUNWIND=$withval],[WITH_LIBUNWIND=no])
324 if test "$WITH_LIBUNWIND" != "no"; then
325 PKG_CHECK_MODULES(LIBUNWIND, libunwind)
326 AC_DEFINE(HAVE_LIBUNWIND, 1, [Have libunwind support])
328 AC_MSG_RESULT([$WITH_LIBUNWIND])
330 dnl Checking for kerberos5
331 AC_MSG_CHECKING(for kerberos5)
333 AC_HELP_STRING([--with-krb5@<:@=DIR@:>@],[Use Kerberos 5]),
334 [WITH_KRB5=$withval],[WITH_KRB5=no])
335 if test "$WITH_KRB5" != "no"; then
337 if test "x$WITH_KRB5" != "xyes"; then
338 CPPFLAGS="$CPPFLAGS -I$WITH_KRB5/include"
339 LDFLAGS="$LDFLAGS -L$WITH_KRB5/lib"
344 AC_MSG_RESULT([$use_krb5])
345 AM_CONDITIONAL(BUILD_WITH_KRB5, test ! $WITH_KRB5 = no)
347 AC_ARG_WITH(krb5-includes,
348 AC_HELP_STRING([--with-krb5-includes=DIR],[Kerberos includes]),
349 [ use_krb5=yes CPPFLAGS="$CPPFLAGS -I$withval" ]
352 AC_ARG_WITH(krb5-libs,
353 AC_HELP_STRING([--with-krb5-libs=DIR],[Kerberos libraries]),
354 [ use_krb5=yes LDFLAGS="$LDFLAGS -L$withval" ]
357 if test "x$use_krb5" = "xyes"; then
358 AC_CHECK_LIB(gssapi_krb5, gss_acquire_cred, [
359 AC_CHECK_HEADERS([gssapi/gssapi_krb5.h],[
360 KRB5_LIB="-lkrb5 -lgssapi_krb5"
361 AC_DEFINE(HAVE_KRB5, [1], [libgssapi_krb5])
364 if test "x$KRB5_LIB" = x; then
365 AC_MSG_ERROR([gssapi_krb5 headers and/or libs where not found, install them or build with --without-krb5])
370 dnl Check for openssl
371 AC_MSG_CHECKING(for OpenSSL)
373 AC_HELP_STRING([--with-openssl@<:@=DIR@:>@],[Include openssl support (default no)]),
374 [WITH_OPENSSL=$withval],[WITH_OPENSSL=no])
376 if test "$WITH_OPENSSL" != "no"; then
378 if test "$WITH_OPENSSL" != "yes"; then
379 CPPFLAGS="$CPPFLAGS -I$WITH_OPENSSL/include"
380 LDFLAGS="$LDFLAGS -L$WITH_OPENSSL/lib"
385 AC_MSG_RESULT([$use_openssl])
387 AC_ARG_WITH(openssl-includes,
388 AC_HELP_STRING([--with-openssl-includes=DIR],[OpenSSL includes]),
389 [ use_openssl=yes CPPFLAGS="$CPPFLAGS -I$withval" ]
392 AC_ARG_WITH(openssl-libs,
393 AC_HELP_STRING([--with-openssl-libs=DIR],[OpenSSL libraries]),
394 [ use_openssl=yes LDFLAGS="$LDFLAGS -L$withval" ]
397 if test "x$use_openssl" = "xyes"; then
398 if test "x$use_krb5" = "xyes"; then
399 AC_DEFINE([USE_OPENSSL_KERBEROS], [1], [with kerberos])
402 AC_CHECK_HEADERS([openssl/ssl.h])
404 AC_CHECK_LIB(crypto, BIO_f_base64, [
405 AC_CHECK_LIB(ssl, SSL_new, [ SSL_LIB="-lssl -lcrypto"
406 AC_DEFINE(HAVE_LIBSSL, [], [Have libssl]) ], [], [ -lcrypto "$DL_LIB" ])
412 AC_MSG_CHECKING(for perl regular expressions support)
413 AC_ARG_WITH(pcre, AC_HELP_STRING([--with-pcre],[Enable pcre support (default yes)]),
414 [WITH_PCRE=$withval],[WITH_PCRE=yes])
415 AC_MSG_RESULT([$WITH_PCRE])
417 if test "$WITH_PCRE" != "no"; then
418 if test "$WITH_PCRE" != "yes"; then
419 PCRE_LIB="-L$WITH_PCRE/lib -lpcre"
420 CPPFLAGS="$CPPFLAGS -I$WITH_PCRE/include"
422 AC_PATH_PROG(PCRECONFIG, pcre-config)
423 if test x"$PCRECONFIG" != x; then
424 PCRE_LIB=`$PCRECONFIG --libs`
425 CPPFLAGS="$CPPFLAGS `$PCRECONFIG --cflags`"
429 if test x"$PCRE_LIB" != x; then
430 AC_DEFINE([HAVE_LIBPCRE], [1], [libpcre])
431 AC_DEFINE([HAVE_PCRE_H], [1], [pcre.h])
434 AC_MSG_ERROR([pcre-config not found, install the pcre-devel package or build with --without-pcre])
438 AC_MSG_CHECKING(for zlib support)
439 AC_ARG_WITH(zlib, AC_HELP_STRING([--with-zlib],[Enable zlib support for mod_compress]),
440 [WITH_ZLIB=$withval],[WITH_ZLIB=yes])
441 AC_MSG_RESULT([$WITH_ZLIB])
443 if test "$WITH_ZLIB" != "no"; then
444 if test "$WITH_ZLIB" != "yes"; then
445 Z_LIB="-L$WITH_ZLIB -lz"
446 CPPFLAGS="$CPPFLAGS -I$WITH_ZLIB"
448 AC_CHECK_LIB(z, deflate, [
449 AC_CHECK_HEADERS([zlib.h],[Z_LIB=-lz])
453 if test x"$Z_LIB" != x; then
454 AC_DEFINE([HAVE_LIBZ], [1], [libz])
455 AC_DEFINE([HAVE_ZLIB_H], [1])
458 AC_MSG_ERROR([zlib-headers and/or libs were not found, install them or build with --without-zlib])
462 AC_MSG_CHECKING(for bzip2 support)
463 AC_ARG_WITH(bzip2, AC_HELP_STRING([--with-bzip2],[Enable bzip2 support for mod_compress]),
464 [WITH_BZIP2=$withval],[WITH_BZIP2=yes])
465 AC_MSG_RESULT([$WITH_BZIP2])
467 if test "$WITH_BZIP2" != "no"; then
468 if test "$WITH_BZIP2" != "yes"; then
469 BZ_LIB="-L$WITH_BZIP2 -lbz2"
470 CPPFLAGS="$CPPFLAGS -I$WITH_BZIP2"
472 AC_CHECK_LIB(bz2, BZ2_bzCompress, [
473 AC_CHECK_HEADERS([bzlib.h],[BZ_LIB=-lbz2])
477 if test x"$BZ_LIB" != x; then
478 AC_DEFINE([HAVE_LIBBZ2], [1], [libbz2])
479 AC_DEFINE([HAVE_BZLIB_H], [1])
482 AC_MSG_ERROR([bzip2-headers and/or libs were not found, install them or build with --without-bzip2])
487 AC_MSG_CHECKING(for FAM)
488 AC_ARG_WITH(fam, AC_HELP_STRING([--with-fam],[fam/gamin for reducing number of stat() calls]),
489 [WITH_FAM=$withval],[WITH_FAM=no])
490 AC_MSG_RESULT([$WITH_FAM])
492 if test "$WITH_FAM" != "no"; then
493 if test "$WITH_FAM" != "yes"; then
494 FAM_LIBS="-L$WITH_FAM -lfam"
495 CPPFLAGS="$CPPFLAGS -I$WITH_FAM"
497 AC_CHECK_LIB(fam, FAMOpen2, [
498 AC_CHECK_HEADERS([fam.h],[FAM_LIBS=-lfam])
500 if test "x$FAM_LIBS" = x; then
501 PKG_CHECK_MODULES(FAM, gamin >= 0.1.0)
505 if test x"$FAM_LIBS" != x; then
508 AC_CHECK_FUNCS([FAMNoExists])
511 AC_DEFINE([HAVE_LIBFAM], [1], [libfam])
512 AC_DEFINE([HAVE_FAM_H], [1], [fam.h])
515 AC_MSG_ERROR([fam/gamin-headers and/or libs were not found, install them or build with --without-fam])
519 AC_MSG_CHECKING(for properties in mod_webdav)
520 AC_ARG_WITH(webdav-props, AC_HELP_STRING([--with-webdav-props],[properties in mod_webdav]),
521 [WITH_WEBDAV_PROPS=$withval],[WITH_WEBDAV_PROPS=no])
522 AC_MSG_RESULT([$WITH_WEBDAV_PROPS])
524 if test "$WITH_WEBDAV_PROPS" != "no"; then
526 AC_MSG_CHECKING(for libxml2)
527 AC_ARG_WITH(libxml, AC_HELP_STRING([--with-libxml],[libxml2 for properties in mod_webdav]),
528 [WITH_LIBXML=$withval],[WITH_LIBXML=yes])
529 AC_MSG_RESULT([$WITH_LIBXML])
531 if test "$WITH_LIBXML" != "no"; then
532 if test "$WITH_LIBXML" != "yes"; then
533 XML_LIBS="-L$WITH_LIBXML/.libs -lxml2"
534 XML_CFLAGS="-I$WITH_LIBXML/include"
536 PKG_CHECK_MODULES(XML, libxml-2.0)
539 if test x"$XML_LIBS" != x; then
540 AC_DEFINE([HAVE_LIBXML2], [1], [libxml2])
541 AC_DEFINE([HAVE_LIBXML_H], [1], [libxml.h])
545 AC_MSG_ERROR([libxml2-headers and/or libs were not found, install them or build with --without-webdav-props])
549 AC_MSG_CHECKING(for sqlite)
550 AC_ARG_WITH(sqlite, AC_HELP_STRING([--with-sqlite],[sqlite for properties in mod_webdav]),
551 [WITH_SQLITE=$withval],[WITH_SQLITE=yes])
552 AC_MSG_RESULT([$WITH_SQLITE])
554 if test "$WITH_SQLITE" != "no"; then
555 if test "$WITH_SQLITE" != "yes"; then
556 SQLITE_LIBS="-L$WITH_SQLITE/.libs -lsqlite3"
557 SQLITE_CFLAGS="-I$WITH_SQLITE"
559 PKG_CHECK_MODULES(SQLITE, sqlite3)
562 if test x"$SQLITE_LIBS" != x; then
563 AC_DEFINE([HAVE_SQLITE3], [1], [libsqlite3])
564 AC_DEFINE([HAVE_SQLITE3_H], [1], [sqlite3.h])
565 AC_SUBST(SQLITE_LIBS)
566 AC_SUBST(SQLITE_CFLAGS)
568 AC_MSG_ERROR([sqlite-headers and/or libs were not found, install them or build with --without-webdav-props])
572 AC_MSG_CHECKING(for locks in mod_webdav)
573 AC_ARG_WITH(webdav-locks, AC_HELP_STRING([--with-webdav-locks],[locks in mod_webdav]),
574 [WITH_WEBDAV_LOCKS=$withval],[WITH_WEBDAV_LOCKS=no])
575 AC_MSG_RESULT([$WITH_WEBDAV_LOCKS])
577 if test "$WITH_WEBDAV_LOCKS" != "no"; then
579 AC_MSG_CHECKING(for libuuid)
580 AC_ARG_WITH(uuid, AC_HELP_STRING([--with-uuid],[uuid for locks in mod_webdav]),
581 [WITH_UUID=$withval],[WITH_UUID=yes])
582 AC_MSG_RESULT([$WITH_UUID])
584 if test "$WITH_UUID" != "no"; then
585 if test "$WITH_UUID" != "yes"; then
586 UUID_LIBS="-L$WITH_UUID -luuid"
587 CPPFLAGS="$CPPFLAGS -I$WITH_UUID"
589 AC_CHECK_LIB(uuid, uuid_unparse, [
590 AC_CHECK_HEADERS([uuid/uuid.h],[UUID_LIBS=-luuid])
594 if test x"$UUID_LIBS" != x; then
595 AC_DEFINE([HAVE_UUID], [1], [libuuid])
596 AC_DEFINE([HAVE_UUID_H], [1], [uuid/uuid.h is available])
599 AC_MSG_ERROR([uuid-headers and/or libs were not found, install them or build with --without-webdav-locks])
608 AC_MSG_CHECKING(for gdbm)
609 AC_ARG_WITH(gdbm, AC_HELP_STRING([--with-gdbm],[gdbm storage for mod_trigger_b4_dl]),
610 [WITH_GDBM=$withval],[WITH_GDBM=no])
611 AC_MSG_RESULT([$WITH_GDBM])
613 if test "$WITH_GDBM" != "no"; then
614 if test "$WITH_GDBM" != "yes"; then
615 GDBM_LIB="-L$WITH_GDBM -lgdbm"
616 CPPFLAGS="$CPPFLAGS -I$WITH_GDBM"
618 AC_CHECK_LIB(gdbm, gdbm_open, [
619 AC_CHECK_HEADERS([gdbm.h],[GDBM_LIB=-lgdbm])
623 if test x"$GDBM_LIB" != x; then
624 AC_DEFINE([HAVE_GDBM], [1], [libgdbm])
625 AC_DEFINE([HAVE_GDBM_H], [1])
628 AC_MSG_ERROR([gdbm headers and/or libs were not found, install them or build with --without-gdbm])
631 AM_CONDITIONAL(BUILD_WITH_GDBM, test ! $WITH_GDBM = no)
634 AC_MSG_CHECKING(for GeoIP)
635 AC_ARG_WITH(geoip, AC_HELP_STRING([--with-geoip],[IP-based geolocation lookup]),
636 [WITH_GEOIP=$withval],[WITH_GEOIP=no])
637 AC_MSG_RESULT([$WITH_GEOIP])
639 if test "$WITH_GEOIP" != "no"; then
640 if test "$WITH_GEOIP" != "yes"; then
641 GEOIP_LIB="-L$WITH_GEOIP -lGeoIP"
642 CPPFLAGS="$CPPFLAGS -I$WITH_GEOIP"
644 AC_CHECK_LIB(GeoIP, GeoIP_country_name_by_addr, [
645 AC_CHECK_HEADERS([GeoIP.h],[GEOIP_LIB=-lGeoIP])
649 if test x"$GEOIP_LIB" != x; then
650 AC_DEFINE([HAVE_GEOIP], [1], [libGeoIP])
651 AC_DEFINE([HAVE_GEOIP_H], [1])
654 AC_MSG_ERROR([GeoIP headers and/or libs were not found, install them or build with --without-geoip])
657 AM_CONDITIONAL(BUILD_WITH_GEOIP, test ! $WITH_GEOIP = no)
659 dnl Check for memcached
660 AC_MSG_CHECKING(for memcached)
661 AC_ARG_WITH(memcached, AC_HELP_STRING([--with-memcached],[memcached storage for mod_trigger_b4_dl]),
662 [WITH_MEMCACHED=$withval],[WITH_MEMCACHED=no])
663 AC_MSG_RESULT([$WITH_MEMCACHED])
665 if test "$WITH_MEMCACHED" != "no"; then
666 if test "$WITH_MEMCACHED" != "yes"; then
667 MEMCACHED_LIB="-L$WITH_MEMCACHED -lMEMCACHED"
668 CPPFLAGS="$CPPFLAGS -I$WITH_MEMCACHED"
670 AC_CHECK_LIB(memcached, memcached, [
671 AC_CHECK_HEADERS([libmemcached/memcached.h],[
672 MEMCACHED_LIB=-lmemcached
677 if test x"$MEMCACHED_LIB" != x; then
678 AC_DEFINE([USE_MEMCACHED], [1], [libmemcached])
679 AC_SUBST(MEMCACHED_LIB)
681 AC_MSG_ERROR([memcached headers and/or libs were not found, install them or build with --without-memcached])
684 AM_CONDITIONAL(BUILD_WITH_MEMCACHED, test ! $WITH_MEMCACHED = no)
686 AM_CONDITIONAL(BUILD_MOD_TRIGGER_B4_DL, test ! $WITH_MEMCACHED = no || test ! $WITH_GDBM = no)
689 AC_MSG_CHECKING(if lua-support is requested)
690 AC_ARG_WITH(lua, AC_HELP_STRING([--with-lua],[lua engine for mod_cml]),
691 [WITH_LUA=$withval],[WITH_LUA=no])
693 AC_MSG_RESULT($WITH_LUA)
694 if test "$WITH_LUA" != "no"; then
696 if test "$WITH_LUA" != "yes"; then
697 PKG_CHECK_MODULES(LUA, $WITH_LUA >= 5.1, [
700 AC_MSG_NOTICE([Couldn't find requested lua pkg-config module $WITH_LUA])
702 if test "$found_lua" = "0"; then
703 LUA_LIBS="-L$WITH_LUA -llua"
704 LUA_CFLAGS="-I$WITH_LUA"
707 for luaname in lua5.3 lua-5.3 lua5.2 lua-5.2 lua5.1 lua-5.1 lua; do
708 if test "$found_lua" = "0"; then
709 PKG_CHECK_MODULES(LUA, $luaname >= 5.1, [
712 AC_MSG_NOTICE([Couldn't find $luaname])
716 if test "$found_lua" = "0"; then
717 AC_MSG_ERROR([Couldn't find any lua pkg-config module])
721 if test x"$LUA_LIBS" != x; then
722 AC_DEFINE([HAVE_LUA], [1], [liblua])
723 AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
727 AC_MSG_ERROR([lua headers and/or libs were not found, install them or build with --without-lua])
730 AM_CONDITIONAL(BUILD_WITH_LUA, test ! $WITH_LUA = no)
732 dnl search for crypt_r and (fallback) for crypt
735 AC_SEARCH_LIBS([crypt_r],[crypt],[
736 AC_DEFINE([HAVE_CRYPT_R], [1], [crypt_r])
737 AC_CHECK_HEADERS([crypt.h],[
738 AC_DEFINE([HAVE_CRYPT_H], [1], [crypt.h])
743 AC_SEARCH_LIBS([crypt],[crypt],[
744 AC_DEFINE([HAVE_CRYPT], [1], [crypt])
745 AC_CHECK_HEADERS([crypt.h],[
746 AC_DEFINE([HAVE_CRYPT_H], [1], [crypt.h])
753 AC_SUBST([CRYPT_LIB])
756 AC_SEARCH_LIBS(sendfilev,sendfile,[
757 if test "$ac_cv_search_sendfilev" != no; then
758 test "$ac_cv_search_sendfilev" = "none required" || SENDFILE_LIB="$ac_cv_search_sendfilev"
759 AC_DEFINE([HAVE_SENDFILEV], [1], [solaris sendfilev])
763 AC_SUBST(SENDFILE_LIB)
766 *mingw* ) LIBS="$LIBS -lwsock32";;
770 AC_CHECK_FUNCS([dup2 getcwd inet_ntoa inet_ntop inet_pton issetugid memset mmap munmap strchr \
771 strdup strerror strstr strtol sendfile getopt socket lstat \
772 gethostbyname poll epoll_ctl getrlimit chroot \
773 getuid select signal pathconf madvise posix_fadvise posix_madvise \
774 writev sigaction sendfile64 send_file kqueue port_create localtime_r gmtime_r \
775 memset_s explicit_bzero clock_gettime pipe2 \
776 getentropy arc4random_buf jrand48 srandom getloadavg])
777 AC_CHECK_HEADERS([linux/random.h],[
778 AC_CHECK_FUNC([getrandom], AC_DEFINE([HAVE_GETRANDOM], [1], [getrandom]))
781 AC_MSG_CHECKING(if weak symbols are supported)
782 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
783 __attribute__((weak)) void __dummy(void *x) { }
784 void f(void *x) { __dummy(x); }
788 AC_DEFINE([HAVE_WEAK_SYMBOLS], [1], [weak symbols are supported])
789 ],[AC_MSG_RESULT(no)])
791 AC_MSG_CHECKING(for Large File System support)
793 AC_HELP_STRING([--enable-lfs],[Turn on Large File System (default)]),
794 [case "${enableval}" in
795 yes) CPPFLAGS="${CPPFLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGE_FILES" ;;
797 *) AC_MSG_ERROR(bad value ${enableval} for --enable-lfs) ;;
798 esac],[CPPFLAGS="${CPPFLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGE_FILES"
800 AC_MSG_RESULT($enableval)
802 AC_CHECK_SIZEOF(long)
803 AC_CHECK_SIZEOF(off_t)
805 if test "x$ac_cv_func_sendfile" = xyes; then
806 dnl check if sendfile works
807 AC_MSG_CHECKING(if sendfile works)
808 if test "x$cross_compiling" = xno; then
810 #ifdef HAVE_SYS_SENDFILE_H
811 #include <sys/sendfile.h>
812 #endif /* HAVE_SYS_SENDFILE_H */
816 if (-1 == sendfile(-1, 0, &o, 0) && errno == ENOSYS) return -1;
821 AC_DEFINE([HAVE_SENDFILE_BROKEN], [1], [broken sendfile]) ] )
823 AC_MSG_RESULT(no, cross-compiling)
824 AC_DEFINE([HAVE_SENDFILE_BROKEN], [1], [broken sendfile])
828 dnl Check for IPv6 support
831 AC_HELP_STRING([--disable-ipv6],[disable IPv6 support]),
832 [case "${enableval}" in
835 *) AC_MSG_ERROR(bad value ${enableval} for --enable-ipv6) ;;
838 if test x$ipv6 = xtrue; then
839 AC_CACHE_CHECK([for IPv6 support], ac_cv_ipv6_support,
840 [AC_TRY_LINK([ #include <sys/types.h>
841 #include <sys/socket.h>
842 #include <netinet/in.h>], [struct sockaddr_in6 s; struct in6_addr t=in6addr_any; int i=AF_INET6; s; t.s6_addr[0] = 0; ],
843 [ac_cv_ipv6_support=yes], [ac_cv_ipv6_support=no])])
845 if test "$ac_cv_ipv6_support" = yes; then
846 AC_DEFINE(HAVE_IPV6,1,[Whether to enable IPv6 support])
850 # disable mmap by default; if a mmapped file gets truncated, the process gets a SIGBUS signal
851 # on reading the truncated area which we can't handle (yet).
852 # lighttpd may always use mmap with files it owns (created tmp files)
854 AC_HELP_STRING([--enable-mmap],[use mmap if available (DANGEROUS, allows local users to trigger SIGBUS crashes)]),
855 [case "${enableval}" in
858 *) AC_MSG_ERROR(bad value ${enableval} for --enable-mmap) ;;
861 if test x$mmap = xtrue; then
862 AC_DEFINE(ENABLE_MMAP, [1], [Use mmap if available])
865 dnl check for fastcgi lib, for the tests only
867 AC_CHECK_LIB(fcgi, FCGI_Accept, [
868 AC_CHECK_HEADERS([fastcgi.h fastcgi/fastcgi.h],[
873 AM_CONDITIONAL(CHECK_WITH_FASTCGI, test "x$fastcgi_found" = xyes)
876 dnl check for extra compiler options (warning options)
877 if test "${GCC}" = "yes"; then
878 TRY_CFLAGS([-Wall -W -Wshadow -pedantic])
879 TRY_CFLAGS([-std=gnu99])
882 AC_ARG_ENABLE(extra-warnings,
883 AC_HELP_STRING([--enable-extra-warnings],[enable extra warnings (gcc specific)]),
884 [case "${enableval}" in
885 yes) extrawarnings=true ;;
886 no) extrawarnings=false ;;
887 *) AC_MSG_ERROR(bad value ${enableval} for --enable-extra-warnings) ;;
888 esac],[extrawarnings=false])
890 if test x$extrawarnings = xtrue; then
891 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])
892 TRY_LDFLAGS([-Wl,--as-needed])
896 LIGHTTPD_VERSION_ID=`echo $PACKAGE_VERSION | $AWK -F '.' '{print "(" $1 " << 16 | " $2 " << 8 | " $3 ")"}'`
897 AC_DEFINE_UNQUOTED([LIGHTTPD_VERSION_ID], [$LIGHTTPD_VERSION_ID], [lighttpd-version-id])
899 AC_CONFIG_FILES([Makefile src/Makefile
900 doc/config/conf.d/Makefile \
901 doc/config/vhosts.d/Makefile \
902 doc/config/Makefile \
903 doc/scripts/Makefile \
904 doc/initscripts/Makefile \
905 doc/systemd/Makefile \
906 doc/outdated/Makefile \
909 tests/docroot/Makefile \
910 tests/docroot/123/Makefile \
911 tests/docroot/www/Makefile \
912 tests/docroot/www/go/Makefile \
913 tests/docroot/www/indexfile/Makefile \
914 tests/docroot/www/expire/Makefile \
919 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_status mod_accesslog"
920 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"
922 plugins="mod_rewrite mod_redirect"
923 features="regex-conditionals"
924 if test ! "x$PCRE_LIB" = x; then
925 do_build="$do_build $plugins"
926 enable_feature="$features"
928 no_build="$no_build $plugins"
929 disable_feature="$features"
932 plugins="mod_trigger_b4_dl"
933 if test ! "x$PCRE_LIB" = x; then
934 if test ! "x$WITH_MEMCACHED" = xno || test ! "x$WITH_GDBM" = xno; then
935 do_build="$do_build $plugins"
937 no_build="$no_build $plugins"
941 plugins="mod_authn_mysql mod_mysql_vhost"
942 if test ! "x$MYSQL_LIBS" = x; then
943 do_build="$do_build $plugins"
945 no_build="$no_build $plugins"
948 plugins="mod_cml mod_magnet"
949 if test ! "x$LUA_LIBS" = x; then
950 do_build="$do_build $plugins"
952 no_build="$no_build $plugins"
956 if test ! "x$GEOIP_LIB" = x; then
957 do_build="$do_build $plugins"
959 no_build="$no_build $plugins"
962 features="storage-gdbm"
963 if test ! "x$GDBM_LIB" = x; then
964 enable_feature="$enable_feature $features"
966 disable_feature="$disable_feature $features"
969 features="storage-memcached"
970 if test ! "x$MEMCACHED_LIB" = x; then
971 enable_feature="$enable_feature $features"
973 disable_feature="$disable_feature $features"
976 features="compress-gzip compress-deflate"
977 if test ! "x$Z_LIB" = x; then
978 enable_feature="$enable_feature $features"
980 disable_feature="$disable_feature $features"
983 features="compress-bzip2"
984 if test ! "x$BZ_LIB" = x; then
985 enable_feature="$enable_feature $features"
987 disable_feature="$disable_feature $features"
990 plugins="mod_authn_gssapi"
991 if test ! "x$KRB5_LIB" = x; then
992 do_build="$do_build $plugins"
994 no_build="$no_build $plugins"
997 plugins="mod_authn_ldap"
998 if test ! "x$LDAP_LIB" = x; then
999 do_build="$do_build $plugins"
1001 no_build="$no_build $plugins"
1004 features="network-openssl"
1005 if test ! "x$SSL_LIB" = x; then
1006 enable_feature="$enable_feature $features"
1008 disable_feature="$disable_feature $features"
1012 features="auth-crypt"
1013 if test "$ac_cv_search_crypt" = no; then
1014 disable_feature="$disable_feature $features"
1016 enable_feature="$enable_feature $features"
1019 features="network-ipv6"
1020 if test "$ac_cv_ipv6_support" = yes; then
1021 enable_feature="$enable_feature $features"
1023 disable_feature="$disable_feature $features"
1026 features="large-files"
1027 if test "$enable_lfs" = yes; then
1028 enable_feature="$enable_feature $features"
1030 disable_feature="$disable_feature $features"
1033 features="stat-cache-fam"
1034 if test ! "x$FAM_LIBS" = x; then
1035 enable_feature="$enable_feature $features"
1037 disable_feature="$disable_feature $features"
1040 features="webdav-properties"
1041 if test "x$XML_LIBS" \!= x -a "x$SQLITE_LIBS" \!= x; then
1042 enable_feature="$enable_feature $features"
1044 disable_feature="$disable_feature $features"
1047 features="webdav-locks"
1048 if test "x$UUID_LIBS" \!= x; then
1049 enable_feature="$enable_feature $features"
1051 disable_feature="$disable_feature $features"
1062 for p in $do_build; do
1067 for p in $no_build; do
1076 for p in $enable_feature; do
1081 for p in $disable_feature; do