[TLS] read all available records from SSL_read()
[lighttpd.git] / configure.ac
blob1d172a1a292680a82775886bf35675b1280f7122
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.41], [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 AM_PROG_CC_C_O
66 AC_PROG_LD
67 AC_PROG_INSTALL
68 AC_PROG_AWK
69 AC_PROG_CPP
70 dnl AC_PROG_CXX
71 AC_PROG_LN_S
72 AC_PROG_MAKE_SET
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])
80 dnl check environment
81 AC_AIX
82 AC_ISC_POSIX
83 AC_MINIX
85 dnl AC_CANONICAL_HOST
86 case $host_os in
87         *darwin*|*cygwin*|*aix*|*mingw* ) NO_RDYNAMIC=yes;;
88         * ) NO_RDYNAMIC=no;;
89 esac
90 AM_CONDITIONAL(NO_RDYNAMIC, test x$NO_RDYNAMIC = xyes)
92 if test -z "$LIGHTTPD_STATIC"; then
93   LIGHTTPD_STATIC=no
95 AM_CONDITIONAL(LIGHTTPD_STATIC, test x$LIGHTTPD_STATIC = xyes)
97 AC_EXEEXT
99 dnl libtool
100 AC_DISABLE_STATIC
101 AC_ENABLE_SHARED
103 AC_LIBTOOL_DLOPEN
104 AC_PROG_LIBTOOL
106 dnl for solaris
107 CPPFLAGS="${CPPFLAGS} -D_REENTRANT -D__EXTENSIONS__"
109 dnl Checks for header files.
110 AC_HEADER_STDC
111 AC_HEADER_SYS_WAIT
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.
119 AC_C_CONST
120 AC_C_INLINE
121 AC_C_CHAR_UNSIGNED
122 AC_TYPE_OFF_T
123 AC_TYPE_PID_T
124 AC_TYPE_SIZE_T
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.
132 AC_FUNC_FORK
133 dnl AC_FUNC_MALLOC
134 dnl AC_FUNC_MMAP
135 dnl AC_FUNC_REALLOC
136 AC_TYPE_SIGNAL
137 AC_FUNC_STAT
138 AC_FUNC_STRFTIME
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)
146 AC_ARG_WITH(libev,
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])
150 LIBEV_CFLAGS=""
151 LIBEV_LIBS=""
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"
160                 else
161                         AC_CHECK_HEADERS([ev.h],[
162                                 AC_CHECK_LIB([ev], [ev_time], [
163                                                 LIBEV_CFLAGS=""
164                                                 LIBEV_LIBS="-lev"
165                                         ],[
166                                         AC_MSG_ERROR([libev not found])
167                                         ]
168                                 )],[
169                                         AC_MSG_ERROR([libev not found])
170                                 ]
171                         )
172                 fi
173         ])
175         AC_DEFINE([HAVE_LIBEV], [1], [libev support])
178 AC_SUBST(LIBEV_CFLAGS)
179 AC_SUBST(LIBEV_LIBS)
181 dnl Checks for database.
182 MYSQL_INCLUDE=""
183 MYSQL_LIBS=""
185 AC_MSG_CHECKING(for MySQL support)
186 AC_ARG_WITH(mysql,
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
191   AC_MSG_RESULT(yes)
192   if test "$WITH_MYSQL" = "yes"; then
193     AC_PATH_PROG(MYSQL_CONFIG, mysql_config)
194   else
195     MYSQL_CONFIG=$WITH_MYSQL
196   fi
198   if test "$MYSQL_CONFIG" = ""; then
199     AC_MSG_ERROR(mysql_config is not found)
200   fi
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)
203   fi
205   if $MYSQL_CONFIG | grep -- '--include' > /dev/null ; then
206     MYSQL_INCLUDE="`$MYSQL_CONFIG --include | sed s/\'//g`"
207   else
208     MYSQL_INCLUDE="`$MYSQL_CONFIG --cflags | sed s/\'//g`"
209   fi
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])
224 else
225   AC_MSG_RESULT(no)
228 AC_SUBST(MYSQL_LIBS)
229 AC_SUBST(MYSQL_INCLUDE)
231 dnl Check for LDAP
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],[
239     LDAP_LIB=-lldap
240     AC_DEFINE([HAVE_LIBLDAP], [1], [libldap])
241     AC_DEFINE([HAVE_LDAP_H], [1])
242     AC_DEFINE([LDAP_DEPRECATED], [1], [Using deprecated ldap api])
243   ])
244  ])
245  AC_SUBST(LDAP_LIB)
246  AC_CHECK_LIB(lber, ber_printf, [
247   AC_CHECK_HEADERS([lber.h],[
248     LBER_LIB=-llber
249     AC_DEFINE([HAVE_LIBLBER], [1], [liblber])
250     AC_DEFINE([HAVE_LBER_H], [1])
251   ])
252  ])
253  AC_SUBST(LBER_LIB)
256 dnl Check for xattr
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],[
265       ATTR_LIB=-lattr
266       AC_DEFINE([HAVE_XATTR], [1], [libattr])
267       AC_DEFINE([HAVE_ATTR_ATTRIBUTES_H], [1])
268     ])
269   ])
270   AC_SUBST(ATTR_LIB)
272   # (Free)BSD extattr
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])
277     ])
278   ])
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])
292 save_LIBS=$LIBS
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"
297     fi
299     AC_DEFINE([HAVE_LIBDL], [1], [libdl])
300     AC_DEFINE([HAVE_DLFCN_H], [1])
301   ])
303 LIBS=$save_LIBS
304 AC_SUBST(DL_LIB)
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])
326 dnl Check for openssl
327 AC_MSG_CHECKING(for OpenSSL)
328 AC_ARG_WITH(openssl,
329     AC_HELP_STRING([--with-openssl@<:@=DIR@:>@],[Include openssl support (default no)]),
330     [WITH_OPENSSL=$withval],[WITH_OPENSSL=no])
332 if test "$WITH_OPENSSL" != "no"; then
333     use_openssl=yes
334     if test "$WITH_OPENSSL" != "yes"; then
335         CPPFLAGS="$CPPFLAGS -I$WITH_OPENSSL/include"
336         LDFLAGS="$LDFLAGS -L$WITH_OPENSSL/lib"
337     fi
338 else
339     use_openssl=no
341 AC_MSG_RESULT([$use_openssl])
343 AC_ARG_WITH(openssl-includes,
344     AC_HELP_STRING([--with-openssl-includes=DIR],[OpenSSL includes]),
345     [ use_openssl=yes CPPFLAGS="$CPPFLAGS -I$withval" ]
348 AC_ARG_WITH(openssl-libs,
349     AC_HELP_STRING([--with-openssl-libs=DIR],[OpenSSL libraries]),
350     [ use_openssl=yes LDFLAGS="$LDFLAGS -L$withval" ]
353 AC_ARG_WITH(kerberos5,
354     AC_HELP_STRING([--with-kerberos5],[use Kerberos5 support with OpenSSL]),
355     [ use_kerberos=yes ], [use_kerberos=no]
358 if test "x$use_openssl" = "xyes"; then
359     if test "x$use_kerberos" = "xyes"; then
360         AC_DEFINE([USE_OPENSSL_KERBEROS], [1], [with kerberos])
361     fi
363     AC_CHECK_HEADERS([openssl/ssl.h])
364     OLDLIBS="$LIBS"
365     AC_CHECK_LIB(crypto, BIO_f_base64, [
366       AC_CHECK_LIB(ssl, SSL_new, [ SSL_LIB="-lssl -lcrypto"
367                                  AC_DEFINE(HAVE_LIBSSL, [], [Have libssl]) ], [], [ -lcrypto "$DL_LIB" ])
368     ], [], [])
369     LIBS="$OLDLIBS"
370     AC_SUBST(SSL_LIB)
373 AC_MSG_CHECKING(for perl regular expressions support)
374 AC_ARG_WITH(pcre, AC_HELP_STRING([--with-pcre],[Enable pcre support (default yes)]),
375     [WITH_PCRE=$withval],[WITH_PCRE=yes])
376 AC_MSG_RESULT([$WITH_PCRE])
378 if test "$WITH_PCRE" != "no"; then
379                 if test "$WITH_PCRE" != "yes"; then
380                         PCRE_LIB="-L$WITH_PCRE/lib -lpcre"
381                         CPPFLAGS="$CPPFLAGS -I$WITH_PCRE/include"
382                 else
383                         AC_PATH_PROG(PCRECONFIG, pcre-config)
384                         if test x"$PCRECONFIG" != x; then
385                                 PCRE_LIB=`$PCRECONFIG --libs`
386                                 CPPFLAGS="$CPPFLAGS `$PCRECONFIG --cflags`"
387                         fi
388                 fi
390   if test x"$PCRE_LIB" != x; then
391     AC_DEFINE([HAVE_LIBPCRE], [1], [libpcre])
392     AC_DEFINE([HAVE_PCRE_H], [1], [pcre.h])
393     AC_SUBST(PCRE_LIB)
394   else
395     AC_MSG_ERROR([pcre-config not found, install the pcre-devel package or build with --without-pcre])
396   fi
399 AC_MSG_CHECKING(for zlib support)
400 AC_ARG_WITH(zlib, AC_HELP_STRING([--with-zlib],[Enable zlib support for mod_compress]),
401     [WITH_ZLIB=$withval],[WITH_ZLIB=yes])
402 AC_MSG_RESULT([$WITH_ZLIB])
404 if test "$WITH_ZLIB" != "no"; then
405                 if test "$WITH_ZLIB" != "yes"; then
406                         Z_LIB="-L$WITH_ZLIB -lz"
407                         CPPFLAGS="$CPPFLAGS -I$WITH_ZLIB"
408                 else
409                         AC_CHECK_LIB(z, deflate, [
410                           AC_CHECK_HEADERS([zlib.h],[Z_LIB=-lz])
411                         ])
412                 fi
414   if test x"$Z_LIB" != x; then
415     AC_DEFINE([HAVE_LIBZ], [1], [libz])
416     AC_DEFINE([HAVE_ZLIB_H], [1])
417     AC_SUBST(Z_LIB)
418   else
419     AC_MSG_ERROR([zlib-headers and/or libs were not found, install them or build with --without-zlib])
420   fi
423 AC_MSG_CHECKING(for bzip2 support)
424 AC_ARG_WITH(bzip2, AC_HELP_STRING([--with-bzip2],[Enable bzip2 support for mod_compress]),
425     [WITH_BZIP2=$withval],[WITH_BZIP2=yes])
426 AC_MSG_RESULT([$WITH_BZIP2])
428 if test "$WITH_BZIP2" != "no"; then
429                 if test "$WITH_BZIP2" != "yes"; then
430                         BZ_LIB="-L$WITH_BZIP2 -lbz2"
431                         CPPFLAGS="$CPPFLAGS -I$WITH_BZIP2"
432                 else
433                         AC_CHECK_LIB(bz2, BZ2_bzCompress, [
434                           AC_CHECK_HEADERS([bzlib.h],[BZ_LIB=-lbz2])
435                         ])
436                 fi
438   if test x"$BZ_LIB" != x; then
439     AC_DEFINE([HAVE_LIBBZ2], [1], [libbz2])
440     AC_DEFINE([HAVE_BZLIB_H], [1])
441     AC_SUBST(BZ_LIB)
442   else
443     AC_MSG_ERROR([bzip2-headers and/or libs were not found, install them or build with --without-bzip2])
444   fi
447 dnl Check for gamin
448 AC_MSG_CHECKING(for FAM)
449 AC_ARG_WITH(fam, AC_HELP_STRING([--with-fam],[fam/gamin for reducing number of stat() calls]),
450 [WITH_FAM=$withval],[WITH_FAM=no])
451 AC_MSG_RESULT([$WITH_FAM])
453 if test "$WITH_FAM" != "no"; then
454                 if test "$WITH_FAM" != "yes"; then
455                         FAM_LIBS="-L$WITH_FAM -lfam"
456                         CPPFLAGS="$CPPFLAGS -I$WITH_FAM"
457                 else
458                         AC_CHECK_LIB(fam, FAMOpen2, [
459                           AC_CHECK_HEADERS([fam.h],[FAM_LIBS=-lfam])
460                         ])
461                         if test "x$FAM_LIBS" = x; then
462                           PKG_CHECK_MODULES(FAM, gamin >= 0.1.0)
463                         fi
464                 fi
466   if test x"$FAM_LIBS" != x; then
467     OLD_LIBS=$LIBS
468     LIBS=$FAM_LIBS
469     AC_CHECK_FUNCS([FAMNoExists])
470     LIBS=$OLD_LIBS
472     AC_DEFINE([HAVE_LIBFAM], [1], [libfam])
473     AC_DEFINE([HAVE_FAM_H], [1], [fam.h])
474     AC_SUBST(FAM_LIBS)
475   else
476      AC_MSG_ERROR([fam/gamin-headers and/or libs were not found, install them or build with --without-fam])
477   fi
480 AC_MSG_CHECKING(for properties in mod_webdav)
481 AC_ARG_WITH(webdav-props, AC_HELP_STRING([--with-webdav-props],[properties in mod_webdav]),
482 [WITH_WEBDAV_PROPS=$withval],[WITH_WEBDAV_PROPS=no])
483 AC_MSG_RESULT([$WITH_WEBDAV_PROPS])
485 if test "$WITH_WEBDAV_PROPS" != "no"; then
487   AC_MSG_CHECKING(for libxml2)
488   AC_ARG_WITH(libxml, AC_HELP_STRING([--with-libxml],[libxml2 for properties in mod_webdav]),
489   [WITH_LIBXML=$withval],[WITH_LIBXML=yes])
490   AC_MSG_RESULT([$WITH_LIBXML])
492   if test "$WITH_LIBXML" != "no"; then
493                 if test "$WITH_LIBXML" != "yes"; then
494                         XML_LIBS="-L$WITH_LIBXML/.libs -lxml2"
495                         XML_CFLAGS="-I$WITH_LIBXML/include"
496                 else
497                         PKG_CHECK_MODULES(XML, libxml-2.0)
498                 fi
500     if test x"$XML_LIBS" != x; then
501       AC_DEFINE([HAVE_LIBXML2], [1], [libxml2])
502       AC_DEFINE([HAVE_LIBXML_H], [1], [libxml.h])
503       AC_SUBST(XML_LIBS)
504       AC_SUBST(XML_CFLAGS)
505     else
506       AC_MSG_ERROR([libxml2-headers and/or libs were not found, install them or build with --without-webdav-props])
507     fi
508   fi
510   AC_MSG_CHECKING(for sqlite)
511   AC_ARG_WITH(sqlite, AC_HELP_STRING([--with-sqlite],[sqlite for properties in mod_webdav]),
512   [WITH_SQLITE=$withval],[WITH_SQLITE=yes])
513   AC_MSG_RESULT([$WITH_SQLITE])
515   if test "$WITH_SQLITE" != "no"; then
516                 if test "$WITH_SQLITE" != "yes"; then
517                         SQLITE_LIBS="-L$WITH_SQLITE/.libs -lsqlite3"
518                         SQLITE_CFLAGS="-I$WITH_SQLITE"
519                 else
520                         PKG_CHECK_MODULES(SQLITE, sqlite3)
521                 fi
523     if test x"$SQLITE_LIBS" != x; then
524       AC_DEFINE([HAVE_SQLITE3], [1], [libsqlite3])
525       AC_DEFINE([HAVE_SQLITE3_H], [1], [sqlite3.h])
526       AC_SUBST(SQLITE_LIBS)
527       AC_SUBST(SQLITE_CFLAGS)
528     else
529       AC_MSG_ERROR([sqlite-headers and/or libs were not found, install them or build with --without-webdav-props])
530     fi
531   fi
533   AC_MSG_CHECKING(for locks in mod_webdav)
534   AC_ARG_WITH(webdav-locks, AC_HELP_STRING([--with-webdav-locks],[locks in mod_webdav]),
535   [WITH_WEBDAV_LOCKS=$withval],[WITH_WEBDAV_LOCKS=no])
536   AC_MSG_RESULT([$WITH_WEBDAV_LOCKS])
538   if test "$WITH_WEBDAV_LOCKS" != "no"; then
540     AC_MSG_CHECKING(for libuuid)
541     AC_ARG_WITH(uuid, AC_HELP_STRING([--with-uuid],[uuid for locks in mod_webdav]),
542     [WITH_UUID=$withval],[WITH_UUID=yes])
543     AC_MSG_RESULT([$WITH_UUID])
545     if test "$WITH_UUID" != "no"; then
546                 if test "$WITH_UUID" != "yes"; then
547                         UUID_LIBS="-L$WITH_UUID -luuid"
548                         CPPFLAGS="$CPPFLAGS -I$WITH_UUID"
549                 else
550                         AC_CHECK_LIB(uuid, uuid_unparse, [
551                           AC_CHECK_HEADERS([uuid/uuid.h],[UUID_LIBS=-luuid])
552                         ])
553                 fi
555       if test x"$UUID_LIBS" != x; then
556         AC_DEFINE([HAVE_UUID], [1], [libuuid])
557         AC_DEFINE([HAVE_UUID_H], [1], [uuid/uuid.h is available])
558         AC_SUBST(UUID_LIBS)
559       else
560         AC_MSG_ERROR([uuid-headers and/or libs were not found, install them or build with --without-webdav-locks])
561       fi
562     fi
564   fi
568 dnl Check for gdbm
569 AC_MSG_CHECKING(for gdbm)
570 AC_ARG_WITH(gdbm, AC_HELP_STRING([--with-gdbm],[gdbm storage for mod_trigger_b4_dl]),
571 [WITH_GDBM=$withval],[WITH_GDBM=no])
572 AC_MSG_RESULT([$WITH_GDBM])
574 if test "$WITH_GDBM" != "no"; then
575                 if test "$WITH_GDBM" != "yes"; then
576                         GDBM_LIB="-L$WITH_GDBM -lgdbm"
577                         CPPFLAGS="$CPPFLAGS -I$WITH_GDBM"
578                 else
579                         AC_CHECK_LIB(gdbm, gdbm_open, [
580                           AC_CHECK_HEADERS([gdbm.h],[GDBM_LIB=-lgdbm])
581                         ])
582                 fi
584   if test x"$GDBM_LIB" != x; then
585     AC_DEFINE([HAVE_GDBM], [1], [libgdbm])
586     AC_DEFINE([HAVE_GDBM_H], [1])
587     AC_SUBST(GDBM_LIB)
588   else
589     AC_MSG_ERROR([gdbm headers and/or libs were not found, install them or build with --without-gdbm])
590   fi
593 dnl Check for memcached
594 AC_MSG_CHECKING(for memcached)
595 AC_ARG_WITH(memcached, AC_HELP_STRING([--with-memcached],[memcached storage for mod_trigger_b4_dl]),
596 [WITH_MEMCACHED=$withval],[WITH_MEMCACHED=no])
597 AC_MSG_RESULT([$WITH_MEMCACHED])
599 if test "$WITH_MEMCACHED" != "no"; then
600                 if test "$WITH_MEMCACHED" != "yes"; then
601                         MEMCACHED_LIB="-L$WITH_MEMCACHED -lMEMCACHED"
602                         CPPFLAGS="$CPPFLAGS -I$WITH_MEMCACHED"
603                 else
604                         AC_CHECK_LIB(memcached, memcached, [
605                           AC_CHECK_HEADERS([libmemcached/memcached.h],[
606                             MEMCACHED_LIB=-lmemcached
607                           ])
608                         ])
609                 fi
611   if test x"$MEMCACHED_LIB" != x; then
612     AC_DEFINE([USE_MEMCACHED], [1], [libmemcached])
613     AC_SUBST(MEMCACHED_LIB)
614   else
615     AC_MSG_ERROR([memcached headers and/or libs were not found, install them or build with --without-memcached])
616   fi
619 dnl Check for lua
620 AC_MSG_CHECKING(if lua-support is requested)
621 AC_ARG_WITH(lua, AC_HELP_STRING([--with-lua],[lua engine for mod_cml]),
622 [WITH_LUA=$withval],[WITH_LUA=no])
624 AC_MSG_RESULT($WITH_LUA)
625 if test "$WITH_LUA" != "no"; then
626   found_lua=0
627   if test "$WITH_LUA" != "yes"; then
628     PKG_CHECK_MODULES(LUA, $WITH_LUA >= 5.1, [
629       found_lua=1
630     ],[
631       AC_MSG_NOTICE([Couldn't find requested lua pkg-config module $WITH_LUA])
632     ])
633     if test "$found_lua" = "0"; then
634       LUA_LIBS="-L$WITH_LUA -llua"
635       LUA_CFLAGS="-I$WITH_LUA"
636     fi
637   else
638     for luaname in lua5.3 lua-5.3 lua5.2 lua-5.2 lua5.1 lua-5.1 lua; do
639       if test "$found_lua" = "0"; then
640         PKG_CHECK_MODULES(LUA, $luaname >= 5.1, [
641           found_lua=1
642         ], [
643           AC_MSG_NOTICE([Couldn't find $luaname])
644         ])
645       fi
646     done
647     if test "$found_lua" = "0"; then
648       AC_MSG_ERROR([Couldn't find any lua pkg-config module])
649     fi
650   fi
652   if test x"$LUA_LIBS" != x; then
653     AC_DEFINE([HAVE_LUA], [1], [liblua])
654     AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
655     AC_SUBST(LUA_LIBS)
656     AC_SUBST(LUA_CFLAGS)
657   else
658     AC_MSG_ERROR([lua headers and/or libs were not found, install them or build with --without-lua])
659   fi
662 dnl search for crypt_r and (fallback) for crypt
663 save_LIBS=$LIBS
664 LIBS=
665 AC_SEARCH_LIBS([crypt_r],[crypt],[
666   AC_DEFINE([HAVE_CRYPT_R], [1], [crypt_r])
667   AC_CHECK_HEADERS([crypt.h],[
668     AC_DEFINE([HAVE_CRYPT_H], [1], [crypt.h])
669   ])
671   CRYPT_LIB=$LIBS
673   AC_SEARCH_LIBS([crypt],[crypt],[
674     AC_DEFINE([HAVE_CRYPT], [1], [crypt])
675     AC_CHECK_HEADERS([crypt.h],[
676       AC_DEFINE([HAVE_CRYPT_H], [1], [crypt.h])
677     ])
679     CRYPT_LIB=$LIBS
680   ])
682 LIBS=$save_LIBS
683 AC_SUBST([CRYPT_LIB])
685 save_LIBS=$LIBS
686 AC_SEARCH_LIBS(sendfilev,sendfile,[
687   if test "$ac_cv_search_sendfilev" != no; then
688     test "$ac_cv_search_sendfilev" = "none required" || SENDFILE_LIB="$ac_cv_search_sendfilev"
689     AC_DEFINE([HAVE_SENDFILEV], [1], [solaris sendfilev])
690   fi
692 LIBS=$save_LIBS
693 AC_SUBST(SENDFILE_LIB)
695 case $host_os in
696         *mingw* ) LIBS="$LIBS -lwsock32";;
697         * ) ;;
698 esac
700 AC_CHECK_FUNCS([dup2 getcwd inet_ntoa inet_ntop inet_pton issetugid memset mmap munmap strchr \
701                   strdup strerror strstr strtol sendfile  getopt socket lstat \
702                   gethostbyname poll epoll_ctl getrlimit chroot \
703                   getuid select signal pathconf madvise posix_fadvise posix_madvise \
704                   writev sigaction sendfile64 send_file kqueue port_create localtime_r gmtime_r \
705                   memset_s explicit_bzero clock_gettime])
707 AC_MSG_CHECKING(if weak symbols are supported)
708 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
709                 __attribute__((weak)) void __dummy(void *x) { }
710                 void f(void *x) { __dummy(x); }
711         ]])],
712         [
713                 AC_MSG_RESULT(yes)
714                 AC_DEFINE([HAVE_WEAK_SYMBOLS], [1], [weak symbols are supported])
715         ],[AC_MSG_RESULT(no)])
717 AC_MSG_CHECKING(for Large File System support)
718 AC_ARG_ENABLE(lfs,
719  AC_HELP_STRING([--enable-lfs],[Turn on Large File System (default)]),
720  [case "${enableval}" in
721    yes) CPPFLAGS="${CPPFLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGE_FILES" ;;
722     no) ;;
723      *) AC_MSG_ERROR(bad value ${enableval} for --enable-lfs) ;;
724   esac],[CPPFLAGS="${CPPFLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGE_FILES"
725          enable_lfs=yes])
726 AC_MSG_RESULT($enableval)
728 AC_CHECK_SIZEOF(long)
729 AC_CHECK_SIZEOF(off_t)
731 if test "x$ac_cv_func_sendfile" = xyes; then
732         dnl check if sendfile works
733         AC_MSG_CHECKING(if sendfile works)
734         if test "x$cross_compiling" = xno; then
735         AC_TRY_RUN([
736                     #ifdef HAVE_SYS_SENDFILE_H
737                     #include <sys/sendfile.h>
738                     #endif /* HAVE_SYS_SENDFILE_H */
739                     #include <errno.h>
740                     int main() {
741                       int o = 0;
742                       if (-1 == sendfile(-1, 0, &o, 0) && errno == ENOSYS) return -1;
743                       return 0;
744                     } ],
745                     AC_MSG_RESULT(yes),
746                     [ AC_MSG_RESULT(no)
747                     AC_DEFINE([HAVE_SENDFILE_BROKEN], [1], [broken sendfile]) ] )
748         else
749               AC_MSG_RESULT(no, cross-compiling)
750               AC_DEFINE([HAVE_SENDFILE_BROKEN], [1], [broken sendfile])
751         fi
754 dnl Check for IPv6 support
756 AC_ARG_ENABLE(ipv6,
757  AC_HELP_STRING([--disable-ipv6],[disable IPv6 support]),
758  [case "${enableval}" in
759    yes) ipv6=true ;;
760     no) ipv6=false ;;
761      *) AC_MSG_ERROR(bad value ${enableval} for --enable-ipv6) ;;
762   esac],[ipv6=true])
764 if test x$ipv6 = xtrue; then
765   AC_CACHE_CHECK([for IPv6 support], ac_cv_ipv6_support,
766   [AC_TRY_LINK([ #include <sys/types.h>
767 #include <sys/socket.h>
768 #include <netinet/in.h>], [struct sockaddr_in6 s; struct in6_addr t=in6addr_any; int i=AF_INET6; s; t.s6_addr[0] = 0; ],
769   [ac_cv_ipv6_support=yes], [ac_cv_ipv6_support=no])])
771   if test "$ac_cv_ipv6_support" = yes; then
772     AC_DEFINE(HAVE_IPV6,1,[Whether to enable IPv6 support])
773   fi
776 # disable mmap by default; if a mmapped file gets truncated, the process gets a SIGBUS signal
777 # on reading the truncated area which we can't handle (yet).
778 # lighttpd may always use mmap with files it owns (created tmp files)
779 AC_ARG_ENABLE(mmap,
780   AC_HELP_STRING([--enable-mmap],[use mmap if available (DANGEROUS, allows local users to trigger SIGBUS crashes)]),
781   [case "${enableval}" in
782    yes) mmap=true ;;
783     no) mmap=false ;;
784      *) AC_MSG_ERROR(bad value ${enableval} for --enable-mmap) ;;
785   esac],[mmap=false])
787 if test x$mmap = xtrue; then
788   AC_DEFINE(ENABLE_MMAP, [1], [Use mmap if available])
792 AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes)
794 dnl check for fastcgi lib, for the tests only
795 fastcgi_found=no
796 AC_CHECK_LIB(fcgi, FCGI_Accept, [
797  AC_CHECK_HEADERS([fastcgi.h fastcgi/fastcgi.h],[
798    fastcgi_found=yes
799  ])
802 AM_CONDITIONAL(CHECK_WITH_FASTCGI, test "x$fastcgi_found" = xyes)
805 dnl check for extra compiler options (warning options)
806 if test "${GCC}" = "yes"; then
807   TRY_CFLAGS([-Wall -W -Wshadow -pedantic])
808   TRY_CFLAGS([-std=gnu99])
811 AC_ARG_ENABLE(extra-warnings,
812  AC_HELP_STRING([--enable-extra-warnings],[enable extra warnings (gcc specific)]),
813  [case "${enableval}" in
814    yes) extrawarnings=true ;;
815     no) extrawarnings=false ;;
816      *) AC_MSG_ERROR(bad value ${enableval} for --enable-extra-warnings) ;;
817   esac],[extrawarnings=false])
819 if test x$extrawarnings = xtrue; then
820   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])
821   TRY_LDFLAGS([-Wl,--as-needed])
824 dnl build version-id
825 LIGHTTPD_VERSION_ID=`echo $PACKAGE_VERSION | $AWK -F '.' '{print "(" $1 " << 16 | " $2 " << 8 | " $3 ")"}'`
826 AC_DEFINE_UNQUOTED([LIGHTTPD_VERSION_ID], [$LIGHTTPD_VERSION_ID], [lighttpd-version-id])
828 AC_CONFIG_FILES([Makefile src/Makefile
829                  doc/config/conf.d/Makefile \
830                  doc/config/vhosts.d/Makefile \
831                  doc/config/Makefile \
832                  doc/scripts/Makefile \
833                  doc/initscripts/Makefile \
834                  doc/systemd/Makefile \
835                  doc/outdated/Makefile \
836                  doc/Makefile \
837                  tests/Makefile \
838                  tests/docroot/Makefile \
839                  tests/docroot/123/Makefile \
840                  tests/docroot/www/Makefile \
841                  tests/docroot/www/go/Makefile \
842                  tests/docroot/www/indexfile/Makefile \
843                  tests/docroot/www/expire/Makefile \
844                  distribute.sh])
845 AC_OUTPUT
848 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_status mod_accesslog"
849 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"
851 plugins="mod_rewrite mod_redirect mod_trigger_b4_dl"
852 features="regex-conditionals"
853 if test ! "x$PCRE_LIB" = x; then
854         do_build="$do_build $plugins"
855         enable_feature="$features"
856 else
857         no_build="$no_build $plugins"
858         disable_feature="$features"
861 plugins="mod_mysql_vhost"
862 if test ! "x$MYSQL_LIBS" = x; then
863         do_build="$do_build $plugins"
864 else
865         no_build="$no_build $plugins"
868 plugins="mod_cml mod_magnet"
869 if test ! "x$LUA_LIBS" = x; then
870         do_build="$do_build $plugins"
871 else
872         no_build="$no_build $plugins"
875 features="storage-gdbm"
876 if test ! "x$GDBM_LIB" = x; then
877         enable_feature="$enable_feature $features"
878 else
879         disable_feature="$disable_feature $features"
882 features="storage-memcached"
883 if test ! "x$MEMCACHED_LIB" = x; then
884         enable_feature="$enable_feature $features"
885 else
886         disable_feature="$disable_feature $features"
889 features="compress-gzip compress-deflate"
890 if test ! "x$Z_LIB" = x; then
891         enable_feature="$enable_feature $features"
892 else
893         disable_feature="$disable_feature $features"
896 features="compress-bzip2"
897 if test ! "x$BZ_LIB" = x; then
898         enable_feature="$enable_feature $features"
899 else
900         disable_feature="$disable_feature $features"
903 features="auth-ldap"
904 if test ! "x$LDAP_LIB" = x; then
905         enable_feature="$enable_feature $features"
906 else
907         disable_feature="$disable_feature $features"
910 features="network-openssl"
911 if test ! "x$SSL_LIB" = x; then
912         enable_feature="$enable_feature $features"
913 else
914         disable_feature="$disable_feature $features"
917 dnl no crypt call
918 features="auth-crypt"
919 if test "$ac_cv_search_crypt" = no; then
920         disable_feature="$disable_feature $features"
921 else
922         enable_feature="$enable_feature $features"
925 features="network-ipv6"
926 if test "$ac_cv_ipv6_support" = yes; then
927         enable_feature="$enable_feature $features"
928 else
929         disable_feature="$disable_feature $features"
932 features="large-files"
933 if test "$enable_lfs" = yes; then
934         enable_feature="$enable_feature $features"
935 else
936         disable_feature="$disable_feature $features"
939 features="stat-cache-fam"
940 if test ! "x$FAM_LIBS" = x; then
941         enable_feature="$enable_feature $features"
942 else
943         disable_feature="$disable_feature $features"
946 features="webdav-properties"
947 if test "x$XML_LIBS" \!= x -a "x$SQLITE_LIBS" \!= x; then
948         enable_feature="$enable_feature $features"
949 else
950         disable_feature="$disable_feature $features"
953 features="webdav-locks"
954 if test "x$UUID_LIBS" \!= x; then
955         enable_feature="$enable_feature $features"
956 else
957         disable_feature="$disable_feature $features"
961 dnl output
963 $ECHO
964 $ECHO "Plugins:"
965 $ECHO
967 $ECHO "enabled: "
968 for p in $do_build; do
969         $ECHO "  $p"
970 done | sort
972 $ECHO "disabled: "
973 for p in $no_build; do
974         $ECHO "  $p"
975 done | sort
977 $ECHO
978 $ECHO "Features:"
979 $ECHO
981 $ECHO "enabled: "
982 for p in $enable_feature; do
983         $ECHO "  $p"
984 done | sort
986 $ECHO "disabled: "
987 for p in $disable_feature; do
988         $ECHO "  $p"
989 done | sort
991 $ECHO