[mod_ssi] produce content in subrequest hook
[lighttpd.git] / configure.ac
blob421702da677c1db4d9ea3867ce173bfd3b48d328
1 dnl                                               -*- Autoconf -*-
2 dnl Process this file with autoconf to produce a configure script.
3 AC_PREREQ(2.57)
4 AC_INIT([lighttpd], [1.4.44], [contact@lighttpd.net])
5 AC_CONFIG_SRCDIR([src/server.c])
6 AC_CONFIG_HEADER([config.h])
7 AC_CONFIG_MACRO_DIR([m4])
9 AC_CANONICAL_HOST
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;;
18       esac])
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],
30 [dnl
31   AC_MSG_CHECKING([if $CC supports $1])
32   AC_LANG_PUSH([C])
33   ac_try_cflags_saved_cflags="${CFLAGS}"
34   CFLAGS="${CFLAGS} $1"
35   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])],
36     [AC_MSG_RESULT([yes])],
37     [
38       AC_MSG_ERROR([no])
39       CFLAGS="${ac_try_cflags_saved_cflags}"
40     ]
41   )
42   AC_LANG_POP([C])
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],
48 [dnl
49   AC_MSG_CHECKING([if $LD supports $1])
50   AC_LANG_PUSH([C])
51   ac_try_ldflags_saved_ldflags="${LDFLAGS}"
52   LDFLAGS="${LDFLAGS} $1"
53   AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
54     [AC_MSG_RESULT([yes])],
55     [
56       AC_MSG_ERROR([no])
57       LDFLAGS="${ac_try_ldflags_saved_cflags}"
58     ]
59   )
60   AC_LANG_POP([C])
63 dnl Checks for programs.
64 AC_PROG_CC
65 AX_PROG_CC_FOR_BUILD
66 AM_PROG_CC_C_O
67 AC_PROG_LD
68 AC_PROG_INSTALL
69 AC_PROG_AWK
70 AC_PROG_CPP
71 dnl AC_PROG_CXX
72 AC_PROG_LN_S
73 AC_PROG_MAKE_SET
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])
81 dnl check environment
82 AC_AIX
83 AC_ISC_POSIX
84 AC_MINIX
86 dnl AC_CANONICAL_HOST
87 case $host_os in
88         *darwin*|*cygwin*|*aix*|*mingw* ) NO_RDYNAMIC=yes;;
89         * ) NO_RDYNAMIC=no;;
90 esac
91 AM_CONDITIONAL(NO_RDYNAMIC, test x$NO_RDYNAMIC = xyes)
93 if test -z "$LIGHTTPD_STATIC"; then
94   LIGHTTPD_STATIC=no
96 AM_CONDITIONAL(LIGHTTPD_STATIC, test x$LIGHTTPD_STATIC = xyes)
98 AC_EXEEXT
100 dnl libtool
101 AC_DISABLE_STATIC
102 AC_ENABLE_SHARED
104 AC_LIBTOOL_DLOPEN
105 AC_PROG_LIBTOOL
107 dnl for solaris
108 CPPFLAGS="${CPPFLAGS} -D_REENTRANT -D__EXTENSIONS__"
110 dnl Checks for header files.
111 AC_HEADER_STDC
112 AC_HEADER_SYS_WAIT
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.
120 AC_C_CONST
121 AC_C_INLINE
122 AC_C_CHAR_UNSIGNED
123 AC_TYPE_OFF_T
124 AC_TYPE_PID_T
125 AC_TYPE_SIZE_T
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.
133 AC_FUNC_FORK
134 dnl AC_FUNC_MALLOC
135 dnl AC_FUNC_MMAP
136 dnl AC_FUNC_REALLOC
137 AC_TYPE_SIGNAL
138 AC_FUNC_STAT
139 AC_FUNC_STRFTIME
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)
147 AC_ARG_WITH(libev,
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])
151 LIBEV_CFLAGS=""
152 LIBEV_LIBS=""
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"
161                 else
162                         AC_CHECK_HEADERS([ev.h],[
163                                 AC_CHECK_LIB([ev], [ev_time], [
164                                                 LIBEV_CFLAGS=""
165                                                 LIBEV_LIBS="-lev"
166                                         ],[
167                                         AC_MSG_ERROR([libev not found])
168                                         ]
169                                 )],[
170                                         AC_MSG_ERROR([libev not found])
171                                 ]
172                         )
173                 fi
174         ])
176         AC_DEFINE([HAVE_LIBEV], [1], [libev support])
179 AC_SUBST(LIBEV_CFLAGS)
180 AC_SUBST(LIBEV_LIBS)
181 AC_MSG_RESULT([$WITH_LIBEV])
183 dnl Checks for database.
184 MYSQL_INCLUDE=""
185 MYSQL_LIBS=""
187 AC_MSG_CHECKING(for MySQL support)
188 AC_ARG_WITH(mysql,
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
193   AC_MSG_RESULT(yes)
194   if test "$WITH_MYSQL" = "yes"; then
195     AC_PATH_PROG(MYSQL_CONFIG, mysql_config)
196   else
197     MYSQL_CONFIG=$WITH_MYSQL
198   fi
200   if test "$MYSQL_CONFIG" = ""; then
201     AC_MSG_ERROR(mysql_config is not found)
202   fi
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)
205   fi
207   if $MYSQL_CONFIG | grep -- '--include' > /dev/null ; then
208     MYSQL_INCLUDE="`$MYSQL_CONFIG --include | sed s/\'//g`"
209   else
210     MYSQL_INCLUDE="`$MYSQL_CONFIG --cflags | sed s/\'//g`"
211   fi
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])
226 else
227   AC_MSG_RESULT(no)
229 AM_CONDITIONAL(BUILD_WITH_MYSQL, test ! $WITH_MYSQL = no)
231 AC_SUBST(MYSQL_LIBS)
232 AC_SUBST(MYSQL_INCLUDE)
234 dnl Check for LDAP
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],[
242     LDAP_LIB=-lldap
243     AC_DEFINE([HAVE_LIBLDAP], [1], [libldap])
244     AC_DEFINE([HAVE_LDAP_H], [1])
245     AC_DEFINE([LDAP_DEPRECATED], [1], [Using deprecated ldap api])
246   ])
247  ])
248  AC_SUBST(LDAP_LIB)
249  AC_CHECK_LIB(lber, ber_printf, [
250   AC_CHECK_HEADERS([lber.h],[
251     LBER_LIB=-llber
252     AC_DEFINE([HAVE_LIBLBER], [1], [liblber])
253     AC_DEFINE([HAVE_LBER_H], [1])
254   ])
255  ])
256  AC_SUBST(LBER_LIB)
258 AM_CONDITIONAL(BUILD_WITH_LDAP, test ! $WITH_LDAP = no)
260 dnl Check for xattr
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],[
269       ATTR_LIB=-lattr
270       AC_DEFINE([HAVE_XATTR], [1], [libattr])
271       AC_DEFINE([HAVE_ATTR_ATTRIBUTES_H], [1])
272     ])
273   ])
274   AC_SUBST(ATTR_LIB)
276   # (Free)BSD extattr
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])
281     ])
282   ])
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])
295 save_LIBS=$LIBS
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"
300     fi
302     AC_DEFINE([HAVE_LIBDL], [1], [libdl])
303     AC_DEFINE([HAVE_DLFCN_H], [1])
304   ])
306 LIBS=$save_LIBS
307 AC_SUBST(DL_LIB)
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)
332 AC_ARG_WITH(krb5,
333         AC_HELP_STRING([--with-krb5@<:@=DIR@:>@],[Use Kerberos 5]),
334         [WITH_KRB5=$withval],[WITH_KRB5=no])
335 if test "$WITH_KRB5" != "no"; then
336         use_krb5=yes
337         if test "x$WITH_KRB5" != "xyes"; then
338                 CPPFLAGS="$CPPFLAGS -I$WITH_KRB5/include"
339                 LDFLAGS="$LDFLAGS -L$WITH_KRB5/lib"
340         fi
341 else
342         use_krb5=no
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])
362                 ])
363         ])
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])
366         fi
368 AC_SUBST(KRB5_LIB)
370 dnl Check for openssl
371 AC_MSG_CHECKING(for OpenSSL)
372 AC_ARG_WITH(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
377     use_openssl=yes
378     if test "$WITH_OPENSSL" != "yes"; then
379         CPPFLAGS="$CPPFLAGS -I$WITH_OPENSSL/include"
380         LDFLAGS="$LDFLAGS -L$WITH_OPENSSL/lib"
381     fi
382 else
383     use_openssl=no
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])
400     fi
402     AC_CHECK_HEADERS([openssl/ssl.h])
403     OLDLIBS="$LIBS"
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" ])
407     ], [], [])
408     LIBS="$OLDLIBS"
409     AC_SUBST(SSL_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"
421                 else
422                         AC_PATH_PROG(PCRECONFIG, pcre-config)
423                         if test x"$PCRECONFIG" != x; then
424                                 PCRE_LIB=`$PCRECONFIG --libs`
425                                 CPPFLAGS="$CPPFLAGS `$PCRECONFIG --cflags`"
426                         fi
427                 fi
429   if test x"$PCRE_LIB" != x; then
430     AC_DEFINE([HAVE_LIBPCRE], [1], [libpcre])
431     AC_DEFINE([HAVE_PCRE_H], [1], [pcre.h])
432     AC_SUBST(PCRE_LIB)
433   else
434     AC_MSG_ERROR([pcre-config not found, install the pcre-devel package or build with --without-pcre])
435   fi
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"
447                 else
448                         AC_CHECK_LIB(z, deflate, [
449                           AC_CHECK_HEADERS([zlib.h],[Z_LIB=-lz])
450                         ])
451                 fi
453   if test x"$Z_LIB" != x; then
454     AC_DEFINE([HAVE_LIBZ], [1], [libz])
455     AC_DEFINE([HAVE_ZLIB_H], [1])
456     AC_SUBST(Z_LIB)
457   else
458     AC_MSG_ERROR([zlib-headers and/or libs were not found, install them or build with --without-zlib])
459   fi
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"
471                 else
472                         AC_CHECK_LIB(bz2, BZ2_bzCompress, [
473                           AC_CHECK_HEADERS([bzlib.h],[BZ_LIB=-lbz2])
474                         ])
475                 fi
477   if test x"$BZ_LIB" != x; then
478     AC_DEFINE([HAVE_LIBBZ2], [1], [libbz2])
479     AC_DEFINE([HAVE_BZLIB_H], [1])
480     AC_SUBST(BZ_LIB)
481   else
482     AC_MSG_ERROR([bzip2-headers and/or libs were not found, install them or build with --without-bzip2])
483   fi
486 dnl Check for gamin
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"
496                 else
497                         AC_CHECK_LIB(fam, FAMOpen2, [
498                           AC_CHECK_HEADERS([fam.h],[FAM_LIBS=-lfam])
499                         ])
500                         if test "x$FAM_LIBS" = x; then
501                           PKG_CHECK_MODULES(FAM, gamin >= 0.1.0)
502                         fi
503                 fi
505   if test x"$FAM_LIBS" != x; then
506     OLD_LIBS=$LIBS
507     LIBS=$FAM_LIBS
508     AC_CHECK_FUNCS([FAMNoExists])
509     LIBS=$OLD_LIBS
511     AC_DEFINE([HAVE_LIBFAM], [1], [libfam])
512     AC_DEFINE([HAVE_FAM_H], [1], [fam.h])
513     AC_SUBST(FAM_LIBS)
514   else
515      AC_MSG_ERROR([fam/gamin-headers and/or libs were not found, install them or build with --without-fam])
516   fi
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"
535                 else
536                         PKG_CHECK_MODULES(XML, libxml-2.0)
537                 fi
539     if test x"$XML_LIBS" != x; then
540       AC_DEFINE([HAVE_LIBXML2], [1], [libxml2])
541       AC_DEFINE([HAVE_LIBXML_H], [1], [libxml.h])
542       AC_SUBST(XML_LIBS)
543       AC_SUBST(XML_CFLAGS)
544     else
545       AC_MSG_ERROR([libxml2-headers and/or libs were not found, install them or build with --without-webdav-props])
546     fi
547   fi
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"
558                 else
559                         PKG_CHECK_MODULES(SQLITE, sqlite3)
560                 fi
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)
567     else
568       AC_MSG_ERROR([sqlite-headers and/or libs were not found, install them or build with --without-webdav-props])
569     fi
570   fi
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"
588                 else
589                         AC_CHECK_LIB(uuid, uuid_unparse, [
590                           AC_CHECK_HEADERS([uuid/uuid.h],[UUID_LIBS=-luuid])
591                         ])
592                 fi
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])
597         AC_SUBST(UUID_LIBS)
598       else
599         AC_MSG_ERROR([uuid-headers and/or libs were not found, install them or build with --without-webdav-locks])
600       fi
601     fi
603   fi
607 dnl Check for gdbm
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"
617                 else
618                         AC_CHECK_LIB(gdbm, gdbm_open, [
619                           AC_CHECK_HEADERS([gdbm.h],[GDBM_LIB=-lgdbm])
620                         ])
621                 fi
623   if test x"$GDBM_LIB" != x; then
624     AC_DEFINE([HAVE_GDBM], [1], [libgdbm])
625     AC_DEFINE([HAVE_GDBM_H], [1])
626     AC_SUBST(GDBM_LIB)
627   else
628     AC_MSG_ERROR([gdbm headers and/or libs were not found, install them or build with --without-gdbm])
629   fi
631 AM_CONDITIONAL(BUILD_WITH_GDBM, test ! $WITH_GDBM = no)
633 dnl Check for GeoIP
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"
643                 else
644                         AC_CHECK_LIB(GeoIP, GeoIP_country_name_by_addr, [
645                           AC_CHECK_HEADERS([GeoIP.h],[GEOIP_LIB=-lGeoIP])
646                         ])
647                 fi
649   if test x"$GEOIP_LIB" != x; then
650     AC_DEFINE([HAVE_GEOIP], [1], [libGeoIP])
651     AC_DEFINE([HAVE_GEOIP_H], [1])
652     AC_SUBST(GEOIP_LIB)
653   else
654     AC_MSG_ERROR([GeoIP headers and/or libs were not found, install them or build with --without-geoip])
655   fi
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"
669                 else
670                         AC_CHECK_LIB(memcached, memcached, [
671                           AC_CHECK_HEADERS([libmemcached/memcached.h],[
672                             MEMCACHED_LIB=-lmemcached
673                           ])
674                         ])
675                 fi
677   if test x"$MEMCACHED_LIB" != x; then
678     AC_DEFINE([USE_MEMCACHED], [1], [libmemcached])
679     AC_SUBST(MEMCACHED_LIB)
680   else
681     AC_MSG_ERROR([memcached headers and/or libs were not found, install them or build with --without-memcached])
682   fi
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)
688 dnl Check for lua
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
695   found_lua=0
696   if test "$WITH_LUA" != "yes"; then
697     PKG_CHECK_MODULES(LUA, $WITH_LUA >= 5.1, [
698       found_lua=1
699     ],[
700       AC_MSG_NOTICE([Couldn't find requested lua pkg-config module $WITH_LUA])
701     ])
702     if test "$found_lua" = "0"; then
703       LUA_LIBS="-L$WITH_LUA -llua"
704       LUA_CFLAGS="-I$WITH_LUA"
705     fi
706   else
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, [
710           found_lua=1
711         ], [
712           AC_MSG_NOTICE([Couldn't find $luaname])
713         ])
714       fi
715     done
716     if test "$found_lua" = "0"; then
717       AC_MSG_ERROR([Couldn't find any lua pkg-config module])
718     fi
719   fi
721   if test x"$LUA_LIBS" != x; then
722     AC_DEFINE([HAVE_LUA], [1], [liblua])
723     AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
724     AC_SUBST(LUA_LIBS)
725     AC_SUBST(LUA_CFLAGS)
726   else
727     AC_MSG_ERROR([lua headers and/or libs were not found, install them or build with --without-lua])
728   fi
730 AM_CONDITIONAL(BUILD_WITH_LUA, test ! $WITH_LUA = no)
732 dnl search for crypt_r and (fallback) for crypt
733 save_LIBS=$LIBS
734 LIBS=
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])
739   ])
741   CRYPT_LIB=$LIBS
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])
747     ])
749     CRYPT_LIB=$LIBS
750   ])
752 LIBS=$save_LIBS
753 AC_SUBST([CRYPT_LIB])
755 save_LIBS=$LIBS
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])
760   fi
762 LIBS=$save_LIBS
763 AC_SUBST(SENDFILE_LIB)
765 case $host_os in
766         *mingw* ) LIBS="$LIBS -lwsock32";;
767         * ) ;;
768 esac
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 \
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); }
785         ]])],
786         [
787                 AC_MSG_RESULT(yes)
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)
792 AC_ARG_ENABLE(lfs,
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" ;;
796     no) ;;
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"
799          enable_lfs=yes])
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
809         AC_TRY_RUN([
810                     #ifdef HAVE_SYS_SENDFILE_H
811                     #include <sys/sendfile.h>
812                     #endif /* HAVE_SYS_SENDFILE_H */
813                     #include <errno.h>
814                     int main() {
815                       int o = 0;
816                       if (-1 == sendfile(-1, 0, &o, 0) && errno == ENOSYS) return -1;
817                       return 0;
818                     } ],
819                     AC_MSG_RESULT(yes),
820                     [ AC_MSG_RESULT(no)
821                     AC_DEFINE([HAVE_SENDFILE_BROKEN], [1], [broken sendfile]) ] )
822         else
823               AC_MSG_RESULT(no, cross-compiling)
824               AC_DEFINE([HAVE_SENDFILE_BROKEN], [1], [broken sendfile])
825         fi
828 dnl Check for IPv6 support
830 AC_ARG_ENABLE(ipv6,
831  AC_HELP_STRING([--disable-ipv6],[disable IPv6 support]),
832  [case "${enableval}" in
833    yes) ipv6=true ;;
834     no) ipv6=false ;;
835      *) AC_MSG_ERROR(bad value ${enableval} for --enable-ipv6) ;;
836   esac],[ipv6=true])
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])
847   fi
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)
853 AC_ARG_ENABLE(mmap,
854   AC_HELP_STRING([--enable-mmap],[use mmap if available (DANGEROUS, allows local users to trigger SIGBUS crashes)]),
855   [case "${enableval}" in
856    yes) mmap=true ;;
857     no) mmap=false ;;
858      *) AC_MSG_ERROR(bad value ${enableval} for --enable-mmap) ;;
859   esac],[mmap=false])
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
866 fastcgi_found=no
867 AC_CHECK_LIB(fcgi, FCGI_Accept, [
868  AC_CHECK_HEADERS([fastcgi.h fastcgi/fastcgi.h],[
869    fastcgi_found=yes
870  ])
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])
895 dnl build version-id
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 \
907                  doc/Makefile \
908                  tests/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 \
915                  distribute.sh])
916 AC_OUTPUT
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"
927 else
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"
936 else
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"
944 else
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"
951 else
952         no_build="$no_build $plugins"
955 plugins="mod_geoip"
956 if test ! "x$GEOIP_LIB" = x; then
957         do_build="$do_build $plugins"
958 else
959         no_build="$no_build $plugins"
962 features="storage-gdbm"
963 if test ! "x$GDBM_LIB" = x; then
964         enable_feature="$enable_feature $features"
965 else
966         disable_feature="$disable_feature $features"
969 features="storage-memcached"
970 if test ! "x$MEMCACHED_LIB" = x; then
971         enable_feature="$enable_feature $features"
972 else
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"
979 else
980         disable_feature="$disable_feature $features"
983 features="compress-bzip2"
984 if test ! "x$BZ_LIB" = x; then
985         enable_feature="$enable_feature $features"
986 else
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"
993 else
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"
1000 else
1001         no_build="$no_build $plugins"
1004 features="network-openssl"
1005 if test ! "x$SSL_LIB" = x; then
1006         enable_feature="$enable_feature $features"
1007 else
1008         disable_feature="$disable_feature $features"
1011 dnl no crypt call
1012 features="auth-crypt"
1013 if test "$ac_cv_search_crypt" = no; then
1014         disable_feature="$disable_feature $features"
1015 else
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"
1022 else
1023         disable_feature="$disable_feature $features"
1026 features="large-files"
1027 if test "$enable_lfs" = yes; then
1028         enable_feature="$enable_feature $features"
1029 else
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"
1036 else
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"
1043 else
1044         disable_feature="$disable_feature $features"
1047 features="webdav-locks"
1048 if test "x$UUID_LIBS" \!= x; then
1049         enable_feature="$enable_feature $features"
1050 else
1051         disable_feature="$disable_feature $features"
1055 dnl output
1057 $ECHO
1058 $ECHO "Plugins:"
1059 $ECHO
1061 $ECHO "enabled: "
1062 for p in $do_build; do
1063         $ECHO "  $p"
1064 done | sort
1066 $ECHO "disabled: "
1067 for p in $no_build; do
1068         $ECHO "  $p"
1069 done | sort
1071 $ECHO
1072 $ECHO "Features:"
1073 $ECHO
1075 $ECHO "enabled: "
1076 for p in $enable_feature; do
1077         $ECHO "  $p"
1078 done | sort
1080 $ECHO "disabled: "
1081 for p in $disable_feature; do
1082         $ECHO "  $p"
1083 done | sort
1085 $ECHO