minor: make packdist.sh more convenient for me
[lighttpd.git] / configure.ac
blobca9919cae509f23eff9a921c46789adc743480e2
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.43], [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)
285 dnl On Haiku accept() and friends are in libnetwork
286 AC_SEARCH_LIBS(accept,network)
288 dnl clock_gettime() needs -lrt with glibc < 2.17, and possibly other platforms
289 AC_SEARCH_LIBS([clock_gettime],[rt])
291 save_LIBS=$LIBS
292 AC_SEARCH_LIBS(dlopen,dl,[
293   AC_CHECK_HEADERS([dlfcn.h],[
294     if test "$ac_cv_search_dlopen" != no; then
295       test "$ac_cv_search_dlopen" = "none required" || DL_LIB="$ac_cv_search_dlopen"
296     fi
298     AC_DEFINE([HAVE_LIBDL], [1], [libdl])
299     AC_DEFINE([HAVE_DLFCN_H], [1])
300   ])
302 LIBS=$save_LIBS
303 AC_SUBST(DL_LIB)
305 dnl Check for valgrind
306 AC_MSG_CHECKING(for valgrind)
307 AC_ARG_WITH(valgrind, AC_HELP_STRING([--with-valgrind],[enable internal support for valgrind]),
308 [WITH_VALGRIND=$withval],[WITH_VALGRIND=no])
309 AC_MSG_RESULT([$WITH_VALGRIND])
310 if test "$WITH_VALGRIND" != "no"; then
311  AC_CHECK_HEADERS([valgrind/valgrind.h])
314 dnl Checking for libunwind
315 AC_MSG_CHECKING(for libunwind)
316 AC_ARG_WITH(libunwind,
317     AC_HELP_STRING([--with-libunwind],[Include libunwind support for backtraces on assert failures]),
318     [WITH_LIBUNWIND=$withval],[WITH_LIBUNWIND=no])
320 if test "$WITH_LIBUNWIND" != "no"; then
321   PKG_CHECK_MODULES(LIBUNWIND, libunwind)
322   AC_DEFINE(HAVE_LIBUNWIND, 1, [Have libunwind support])
324 AC_MSG_RESULT([$WITH_LIBUNWIND])
326 dnl Checking for kerberos5
327 AC_MSG_CHECKING(for kerberos5)
328 AC_ARG_WITH(krb5,
329         AC_HELP_STRING([--with-krb5@<:@=DIR@:>@],[Use Kerberos 5]),
330         [WITH_KRB5=$withval],[WITH_KRB5=no])
331 if test "$WITH_KRB5" != "no"; then
332         use_krb5=yes
333         if test "x$WITH_KRB5" != "xyes"; then
334                 CPPFLAGS="$CPPFLAGS -I$WITH_KRB5/include"
335                 LDFLAGS="$LDFLAGS -L$WITH_KRB5/lib"
336         fi
337 else
338         use_krb5=no
340 AC_MSG_RESULT([$use_krb5])
342 AC_ARG_WITH(krb5-includes,
343         AC_HELP_STRING([--with-krb5-includes=DIR],[Kerberos includes]),
344         [ use_krb5=yes CPPFLAGS="$CPPFLAGS -I$withval" ]
347 AC_ARG_WITH(krb5-libs,
348         AC_HELP_STRING([--with-krb5-libs=DIR],[Kerberos libraries]),
349         [ use_krb5=yes LDFLAGS="$LDFLAGS -L$withval" ]
352 if test "x$use_krb5" = "xyes"; then
353         AC_CHECK_LIB(gssapi_krb5, gss_acquire_cred, [
354                 AC_CHECK_HEADERS([gssapi/gssapi_krb5.h],[
355                         KRB5_LIB="-lkrb5 -lgssapi_krb5"
356                         AC_DEFINE(HAVE_KRB5, [1], [libgssapi_krb5])
357                 ])
358         ])
359         if test "x$KRB5_LIB" = x; then
360                 AC_MSG_ERROR([gssapi_krb5 headers and/or libs where not found, install them or build with --without-krb5])
361         fi
363 AC_SUBST(KRB5_LIB)
365 dnl Check for openssl
366 AC_MSG_CHECKING(for OpenSSL)
367 AC_ARG_WITH(openssl,
368     AC_HELP_STRING([--with-openssl@<:@=DIR@:>@],[Include openssl support (default no)]),
369     [WITH_OPENSSL=$withval],[WITH_OPENSSL=no])
371 if test "$WITH_OPENSSL" != "no"; then
372     use_openssl=yes
373     if test "$WITH_OPENSSL" != "yes"; then
374         CPPFLAGS="$CPPFLAGS -I$WITH_OPENSSL/include"
375         LDFLAGS="$LDFLAGS -L$WITH_OPENSSL/lib"
376     fi
377 else
378     use_openssl=no
380 AC_MSG_RESULT([$use_openssl])
382 AC_ARG_WITH(openssl-includes,
383     AC_HELP_STRING([--with-openssl-includes=DIR],[OpenSSL includes]),
384     [ use_openssl=yes CPPFLAGS="$CPPFLAGS -I$withval" ]
387 AC_ARG_WITH(openssl-libs,
388     AC_HELP_STRING([--with-openssl-libs=DIR],[OpenSSL libraries]),
389     [ use_openssl=yes LDFLAGS="$LDFLAGS -L$withval" ]
392 if test "x$use_openssl" = "xyes"; then
393     if test "x$use_krb5" = "xyes"; then
394         AC_DEFINE([USE_OPENSSL_KERBEROS], [1], [with kerberos])
395     fi
397     AC_CHECK_HEADERS([openssl/ssl.h])
398     OLDLIBS="$LIBS"
399     AC_CHECK_LIB(crypto, BIO_f_base64, [
400       AC_CHECK_LIB(ssl, SSL_new, [ SSL_LIB="-lssl -lcrypto"
401                                  AC_DEFINE(HAVE_LIBSSL, [], [Have libssl]) ], [], [ -lcrypto "$DL_LIB" ])
402     ], [], [])
403     LIBS="$OLDLIBS"
404     AC_SUBST(SSL_LIB)
407 AC_MSG_CHECKING(for perl regular expressions support)
408 AC_ARG_WITH(pcre, AC_HELP_STRING([--with-pcre],[Enable pcre support (default yes)]),
409     [WITH_PCRE=$withval],[WITH_PCRE=yes])
410 AC_MSG_RESULT([$WITH_PCRE])
412 if test "$WITH_PCRE" != "no"; then
413                 if test "$WITH_PCRE" != "yes"; then
414                         PCRE_LIB="-L$WITH_PCRE/lib -lpcre"
415                         CPPFLAGS="$CPPFLAGS -I$WITH_PCRE/include"
416                 else
417                         AC_PATH_PROG(PCRECONFIG, pcre-config)
418                         if test x"$PCRECONFIG" != x; then
419                                 PCRE_LIB=`$PCRECONFIG --libs`
420                                 CPPFLAGS="$CPPFLAGS `$PCRECONFIG --cflags`"
421                         fi
422                 fi
424   if test x"$PCRE_LIB" != x; then
425     AC_DEFINE([HAVE_LIBPCRE], [1], [libpcre])
426     AC_DEFINE([HAVE_PCRE_H], [1], [pcre.h])
427     AC_SUBST(PCRE_LIB)
428   else
429     AC_MSG_ERROR([pcre-config not found, install the pcre-devel package or build with --without-pcre])
430   fi
433 AC_MSG_CHECKING(for zlib support)
434 AC_ARG_WITH(zlib, AC_HELP_STRING([--with-zlib],[Enable zlib support for mod_compress]),
435     [WITH_ZLIB=$withval],[WITH_ZLIB=yes])
436 AC_MSG_RESULT([$WITH_ZLIB])
438 if test "$WITH_ZLIB" != "no"; then
439                 if test "$WITH_ZLIB" != "yes"; then
440                         Z_LIB="-L$WITH_ZLIB -lz"
441                         CPPFLAGS="$CPPFLAGS -I$WITH_ZLIB"
442                 else
443                         AC_CHECK_LIB(z, deflate, [
444                           AC_CHECK_HEADERS([zlib.h],[Z_LIB=-lz])
445                         ])
446                 fi
448   if test x"$Z_LIB" != x; then
449     AC_DEFINE([HAVE_LIBZ], [1], [libz])
450     AC_DEFINE([HAVE_ZLIB_H], [1])
451     AC_SUBST(Z_LIB)
452   else
453     AC_MSG_ERROR([zlib-headers and/or libs were not found, install them or build with --without-zlib])
454   fi
457 AC_MSG_CHECKING(for bzip2 support)
458 AC_ARG_WITH(bzip2, AC_HELP_STRING([--with-bzip2],[Enable bzip2 support for mod_compress]),
459     [WITH_BZIP2=$withval],[WITH_BZIP2=yes])
460 AC_MSG_RESULT([$WITH_BZIP2])
462 if test "$WITH_BZIP2" != "no"; then
463                 if test "$WITH_BZIP2" != "yes"; then
464                         BZ_LIB="-L$WITH_BZIP2 -lbz2"
465                         CPPFLAGS="$CPPFLAGS -I$WITH_BZIP2"
466                 else
467                         AC_CHECK_LIB(bz2, BZ2_bzCompress, [
468                           AC_CHECK_HEADERS([bzlib.h],[BZ_LIB=-lbz2])
469                         ])
470                 fi
472   if test x"$BZ_LIB" != x; then
473     AC_DEFINE([HAVE_LIBBZ2], [1], [libbz2])
474     AC_DEFINE([HAVE_BZLIB_H], [1])
475     AC_SUBST(BZ_LIB)
476   else
477     AC_MSG_ERROR([bzip2-headers and/or libs were not found, install them or build with --without-bzip2])
478   fi
481 dnl Check for gamin
482 AC_MSG_CHECKING(for FAM)
483 AC_ARG_WITH(fam, AC_HELP_STRING([--with-fam],[fam/gamin for reducing number of stat() calls]),
484 [WITH_FAM=$withval],[WITH_FAM=no])
485 AC_MSG_RESULT([$WITH_FAM])
487 if test "$WITH_FAM" != "no"; then
488                 if test "$WITH_FAM" != "yes"; then
489                         FAM_LIBS="-L$WITH_FAM -lfam"
490                         CPPFLAGS="$CPPFLAGS -I$WITH_FAM"
491                 else
492                         AC_CHECK_LIB(fam, FAMOpen2, [
493                           AC_CHECK_HEADERS([fam.h],[FAM_LIBS=-lfam])
494                         ])
495                         if test "x$FAM_LIBS" = x; then
496                           PKG_CHECK_MODULES(FAM, gamin >= 0.1.0)
497                         fi
498                 fi
500   if test x"$FAM_LIBS" != x; then
501     OLD_LIBS=$LIBS
502     LIBS=$FAM_LIBS
503     AC_CHECK_FUNCS([FAMNoExists])
504     LIBS=$OLD_LIBS
506     AC_DEFINE([HAVE_LIBFAM], [1], [libfam])
507     AC_DEFINE([HAVE_FAM_H], [1], [fam.h])
508     AC_SUBST(FAM_LIBS)
509   else
510      AC_MSG_ERROR([fam/gamin-headers and/or libs were not found, install them or build with --without-fam])
511   fi
514 AC_MSG_CHECKING(for properties in mod_webdav)
515 AC_ARG_WITH(webdav-props, AC_HELP_STRING([--with-webdav-props],[properties in mod_webdav]),
516 [WITH_WEBDAV_PROPS=$withval],[WITH_WEBDAV_PROPS=no])
517 AC_MSG_RESULT([$WITH_WEBDAV_PROPS])
519 if test "$WITH_WEBDAV_PROPS" != "no"; then
521   AC_MSG_CHECKING(for libxml2)
522   AC_ARG_WITH(libxml, AC_HELP_STRING([--with-libxml],[libxml2 for properties in mod_webdav]),
523   [WITH_LIBXML=$withval],[WITH_LIBXML=yes])
524   AC_MSG_RESULT([$WITH_LIBXML])
526   if test "$WITH_LIBXML" != "no"; then
527                 if test "$WITH_LIBXML" != "yes"; then
528                         XML_LIBS="-L$WITH_LIBXML/.libs -lxml2"
529                         XML_CFLAGS="-I$WITH_LIBXML/include"
530                 else
531                         PKG_CHECK_MODULES(XML, libxml-2.0)
532                 fi
534     if test x"$XML_LIBS" != x; then
535       AC_DEFINE([HAVE_LIBXML2], [1], [libxml2])
536       AC_DEFINE([HAVE_LIBXML_H], [1], [libxml.h])
537       AC_SUBST(XML_LIBS)
538       AC_SUBST(XML_CFLAGS)
539     else
540       AC_MSG_ERROR([libxml2-headers and/or libs were not found, install them or build with --without-webdav-props])
541     fi
542   fi
544   AC_MSG_CHECKING(for sqlite)
545   AC_ARG_WITH(sqlite, AC_HELP_STRING([--with-sqlite],[sqlite for properties in mod_webdav]),
546   [WITH_SQLITE=$withval],[WITH_SQLITE=yes])
547   AC_MSG_RESULT([$WITH_SQLITE])
549   if test "$WITH_SQLITE" != "no"; then
550                 if test "$WITH_SQLITE" != "yes"; then
551                         SQLITE_LIBS="-L$WITH_SQLITE/.libs -lsqlite3"
552                         SQLITE_CFLAGS="-I$WITH_SQLITE"
553                 else
554                         PKG_CHECK_MODULES(SQLITE, sqlite3)
555                 fi
557     if test x"$SQLITE_LIBS" != x; then
558       AC_DEFINE([HAVE_SQLITE3], [1], [libsqlite3])
559       AC_DEFINE([HAVE_SQLITE3_H], [1], [sqlite3.h])
560       AC_SUBST(SQLITE_LIBS)
561       AC_SUBST(SQLITE_CFLAGS)
562     else
563       AC_MSG_ERROR([sqlite-headers and/or libs were not found, install them or build with --without-webdav-props])
564     fi
565   fi
567   AC_MSG_CHECKING(for locks in mod_webdav)
568   AC_ARG_WITH(webdav-locks, AC_HELP_STRING([--with-webdav-locks],[locks in mod_webdav]),
569   [WITH_WEBDAV_LOCKS=$withval],[WITH_WEBDAV_LOCKS=no])
570   AC_MSG_RESULT([$WITH_WEBDAV_LOCKS])
572   if test "$WITH_WEBDAV_LOCKS" != "no"; then
574     AC_MSG_CHECKING(for libuuid)
575     AC_ARG_WITH(uuid, AC_HELP_STRING([--with-uuid],[uuid for locks in mod_webdav]),
576     [WITH_UUID=$withval],[WITH_UUID=yes])
577     AC_MSG_RESULT([$WITH_UUID])
579     if test "$WITH_UUID" != "no"; then
580                 if test "$WITH_UUID" != "yes"; then
581                         UUID_LIBS="-L$WITH_UUID -luuid"
582                         CPPFLAGS="$CPPFLAGS -I$WITH_UUID"
583                 else
584                         AC_CHECK_LIB(uuid, uuid_unparse, [
585                           AC_CHECK_HEADERS([uuid/uuid.h],[UUID_LIBS=-luuid])
586                         ])
587                 fi
589       if test x"$UUID_LIBS" != x; then
590         AC_DEFINE([HAVE_UUID], [1], [libuuid])
591         AC_DEFINE([HAVE_UUID_H], [1], [uuid/uuid.h is available])
592         AC_SUBST(UUID_LIBS)
593       else
594         AC_MSG_ERROR([uuid-headers and/or libs were not found, install them or build with --without-webdav-locks])
595       fi
596     fi
598   fi
602 dnl Check for gdbm
603 AC_MSG_CHECKING(for gdbm)
604 AC_ARG_WITH(gdbm, AC_HELP_STRING([--with-gdbm],[gdbm storage for mod_trigger_b4_dl]),
605 [WITH_GDBM=$withval],[WITH_GDBM=no])
606 AC_MSG_RESULT([$WITH_GDBM])
608 if test "$WITH_GDBM" != "no"; then
609                 if test "$WITH_GDBM" != "yes"; then
610                         GDBM_LIB="-L$WITH_GDBM -lgdbm"
611                         CPPFLAGS="$CPPFLAGS -I$WITH_GDBM"
612                 else
613                         AC_CHECK_LIB(gdbm, gdbm_open, [
614                           AC_CHECK_HEADERS([gdbm.h],[GDBM_LIB=-lgdbm])
615                         ])
616                 fi
618   if test x"$GDBM_LIB" != x; then
619     AC_DEFINE([HAVE_GDBM], [1], [libgdbm])
620     AC_DEFINE([HAVE_GDBM_H], [1])
621     AC_SUBST(GDBM_LIB)
622   else
623     AC_MSG_ERROR([gdbm headers and/or libs were not found, install them or build with --without-gdbm])
624   fi
627 dnl Check for GeoIP
628 AC_MSG_CHECKING(for GeoIP)
629 AC_ARG_WITH(geoip, AC_HELP_STRING([--with-geoip],[IP-based geolocation lookup]),
630 [WITH_GEOIP=$withval],[WITH_GEOIP=no])
631 AC_MSG_RESULT([$WITH_GEOIP])
633 if test "$WITH_GEOIP" != "no"; then
634                 if test "$WITH_GEOIP" != "yes"; then
635                         GEOIP_LIB="-L$WITH_GEOIP -lGeoIP"
636                         CPPFLAGS="$CPPFLAGS -I$WITH_GEOIP"
637                 else
638                         AC_CHECK_LIB(GeoIP, GeoIP_country_name_by_addr, [
639                           AC_CHECK_HEADERS([GeoIP.h],[GEOIP_LIB=-lGeoIP])
640                         ])
641                 fi
643   if test x"$GEOIP_LIB" != x; then
644     AC_DEFINE([HAVE_GEOIP], [1], [libGeoIP])
645     AC_DEFINE([HAVE_GEOIP_H], [1])
646     AC_SUBST(GEOIP_LIB)
647   else
648     AC_MSG_ERROR([GeoIP headers and/or libs were not found, install them or build with --without-geoip])
649   fi
652 dnl Check for memcached
653 AC_MSG_CHECKING(for memcached)
654 AC_ARG_WITH(memcached, AC_HELP_STRING([--with-memcached],[memcached storage for mod_trigger_b4_dl]),
655 [WITH_MEMCACHED=$withval],[WITH_MEMCACHED=no])
656 AC_MSG_RESULT([$WITH_MEMCACHED])
658 if test "$WITH_MEMCACHED" != "no"; then
659                 if test "$WITH_MEMCACHED" != "yes"; then
660                         MEMCACHED_LIB="-L$WITH_MEMCACHED -lMEMCACHED"
661                         CPPFLAGS="$CPPFLAGS -I$WITH_MEMCACHED"
662                 else
663                         AC_CHECK_LIB(memcached, memcached, [
664                           AC_CHECK_HEADERS([libmemcached/memcached.h],[
665                             MEMCACHED_LIB=-lmemcached
666                           ])
667                         ])
668                 fi
670   if test x"$MEMCACHED_LIB" != x; then
671     AC_DEFINE([USE_MEMCACHED], [1], [libmemcached])
672     AC_SUBST(MEMCACHED_LIB)
673   else
674     AC_MSG_ERROR([memcached headers and/or libs were not found, install them or build with --without-memcached])
675   fi
678 dnl Check for lua
679 AC_MSG_CHECKING(if lua-support is requested)
680 AC_ARG_WITH(lua, AC_HELP_STRING([--with-lua],[lua engine for mod_cml]),
681 [WITH_LUA=$withval],[WITH_LUA=no])
683 AC_MSG_RESULT($WITH_LUA)
684 if test "$WITH_LUA" != "no"; then
685   found_lua=0
686   if test "$WITH_LUA" != "yes"; then
687     PKG_CHECK_MODULES(LUA, $WITH_LUA >= 5.1, [
688       found_lua=1
689     ],[
690       AC_MSG_NOTICE([Couldn't find requested lua pkg-config module $WITH_LUA])
691     ])
692     if test "$found_lua" = "0"; then
693       LUA_LIBS="-L$WITH_LUA -llua"
694       LUA_CFLAGS="-I$WITH_LUA"
695     fi
696   else
697     for luaname in lua5.3 lua-5.3 lua5.2 lua-5.2 lua5.1 lua-5.1 lua; do
698       if test "$found_lua" = "0"; then
699         PKG_CHECK_MODULES(LUA, $luaname >= 5.1, [
700           found_lua=1
701         ], [
702           AC_MSG_NOTICE([Couldn't find $luaname])
703         ])
704       fi
705     done
706     if test "$found_lua" = "0"; then
707       AC_MSG_ERROR([Couldn't find any lua pkg-config module])
708     fi
709   fi
711   if test x"$LUA_LIBS" != x; then
712     AC_DEFINE([HAVE_LUA], [1], [liblua])
713     AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
714     AC_SUBST(LUA_LIBS)
715     AC_SUBST(LUA_CFLAGS)
716   else
717     AC_MSG_ERROR([lua headers and/or libs were not found, install them or build with --without-lua])
718   fi
721 dnl search for crypt_r and (fallback) for crypt
722 save_LIBS=$LIBS
723 LIBS=
724 AC_SEARCH_LIBS([crypt_r],[crypt],[
725   AC_DEFINE([HAVE_CRYPT_R], [1], [crypt_r])
726   AC_CHECK_HEADERS([crypt.h],[
727     AC_DEFINE([HAVE_CRYPT_H], [1], [crypt.h])
728   ])
730   CRYPT_LIB=$LIBS
732   AC_SEARCH_LIBS([crypt],[crypt],[
733     AC_DEFINE([HAVE_CRYPT], [1], [crypt])
734     AC_CHECK_HEADERS([crypt.h],[
735       AC_DEFINE([HAVE_CRYPT_H], [1], [crypt.h])
736     ])
738     CRYPT_LIB=$LIBS
739   ])
741 LIBS=$save_LIBS
742 AC_SUBST([CRYPT_LIB])
744 save_LIBS=$LIBS
745 AC_SEARCH_LIBS(sendfilev,sendfile,[
746   if test "$ac_cv_search_sendfilev" != no; then
747     test "$ac_cv_search_sendfilev" = "none required" || SENDFILE_LIB="$ac_cv_search_sendfilev"
748     AC_DEFINE([HAVE_SENDFILEV], [1], [solaris sendfilev])
749   fi
751 LIBS=$save_LIBS
752 AC_SUBST(SENDFILE_LIB)
754 case $host_os in
755         *mingw* ) LIBS="$LIBS -lwsock32";;
756         * ) ;;
757 esac
759 AC_CHECK_FUNCS([dup2 getcwd inet_ntoa inet_ntop inet_pton issetugid memset mmap munmap strchr \
760                   strdup strerror strstr strtol sendfile  getopt socket lstat \
761                   gethostbyname poll epoll_ctl getrlimit chroot \
762                   getuid select signal pathconf madvise posix_fadvise posix_madvise \
763                   writev sigaction sendfile64 send_file kqueue port_create localtime_r gmtime_r \
764                   memset_s explicit_bzero clock_gettime \
765                   getentropy arc4random jrand48 srandom])
766 AC_CHECK_HEADERS([linux/random.h],[
767   AC_CHECK_FUNC([getrandom], AC_DEFINE([HAVE_GETRANDOM], [1], [getrandom]))
770 AC_MSG_CHECKING(if weak symbols are supported)
771 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
772                 __attribute__((weak)) void __dummy(void *x) { }
773                 void f(void *x) { __dummy(x); }
774         ]])],
775         [
776                 AC_MSG_RESULT(yes)
777                 AC_DEFINE([HAVE_WEAK_SYMBOLS], [1], [weak symbols are supported])
778         ],[AC_MSG_RESULT(no)])
780 AC_MSG_CHECKING(for Large File System support)
781 AC_ARG_ENABLE(lfs,
782  AC_HELP_STRING([--enable-lfs],[Turn on Large File System (default)]),
783  [case "${enableval}" in
784    yes) CPPFLAGS="${CPPFLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGE_FILES" ;;
785     no) ;;
786      *) AC_MSG_ERROR(bad value ${enableval} for --enable-lfs) ;;
787   esac],[CPPFLAGS="${CPPFLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGE_FILES"
788          enable_lfs=yes])
789 AC_MSG_RESULT($enableval)
791 AC_CHECK_SIZEOF(long)
792 AC_CHECK_SIZEOF(off_t)
794 if test "x$ac_cv_func_sendfile" = xyes; then
795         dnl check if sendfile works
796         AC_MSG_CHECKING(if sendfile works)
797         if test "x$cross_compiling" = xno; then
798         AC_TRY_RUN([
799                     #ifdef HAVE_SYS_SENDFILE_H
800                     #include <sys/sendfile.h>
801                     #endif /* HAVE_SYS_SENDFILE_H */
802                     #include <errno.h>
803                     int main() {
804                       int o = 0;
805                       if (-1 == sendfile(-1, 0, &o, 0) && errno == ENOSYS) return -1;
806                       return 0;
807                     } ],
808                     AC_MSG_RESULT(yes),
809                     [ AC_MSG_RESULT(no)
810                     AC_DEFINE([HAVE_SENDFILE_BROKEN], [1], [broken sendfile]) ] )
811         else
812               AC_MSG_RESULT(no, cross-compiling)
813               AC_DEFINE([HAVE_SENDFILE_BROKEN], [1], [broken sendfile])
814         fi
817 dnl Check for IPv6 support
819 AC_ARG_ENABLE(ipv6,
820  AC_HELP_STRING([--disable-ipv6],[disable IPv6 support]),
821  [case "${enableval}" in
822    yes) ipv6=true ;;
823     no) ipv6=false ;;
824      *) AC_MSG_ERROR(bad value ${enableval} for --enable-ipv6) ;;
825   esac],[ipv6=true])
827 if test x$ipv6 = xtrue; then
828   AC_CACHE_CHECK([for IPv6 support], ac_cv_ipv6_support,
829   [AC_TRY_LINK([ #include <sys/types.h>
830 #include <sys/socket.h>
831 #include <netinet/in.h>], [struct sockaddr_in6 s; struct in6_addr t=in6addr_any; int i=AF_INET6; s; t.s6_addr[0] = 0; ],
832   [ac_cv_ipv6_support=yes], [ac_cv_ipv6_support=no])])
834   if test "$ac_cv_ipv6_support" = yes; then
835     AC_DEFINE(HAVE_IPV6,1,[Whether to enable IPv6 support])
836   fi
839 # disable mmap by default; if a mmapped file gets truncated, the process gets a SIGBUS signal
840 # on reading the truncated area which we can't handle (yet).
841 # lighttpd may always use mmap with files it owns (created tmp files)
842 AC_ARG_ENABLE(mmap,
843   AC_HELP_STRING([--enable-mmap],[use mmap if available (DANGEROUS, allows local users to trigger SIGBUS crashes)]),
844   [case "${enableval}" in
845    yes) mmap=true ;;
846     no) mmap=false ;;
847      *) AC_MSG_ERROR(bad value ${enableval} for --enable-mmap) ;;
848   esac],[mmap=false])
850 if test x$mmap = xtrue; then
851   AC_DEFINE(ENABLE_MMAP, [1], [Use mmap if available])
855 AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes)
857 dnl check for fastcgi lib, for the tests only
858 fastcgi_found=no
859 AC_CHECK_LIB(fcgi, FCGI_Accept, [
860  AC_CHECK_HEADERS([fastcgi.h fastcgi/fastcgi.h],[
861    fastcgi_found=yes
862  ])
865 AM_CONDITIONAL(CHECK_WITH_FASTCGI, test "x$fastcgi_found" = xyes)
868 dnl check for extra compiler options (warning options)
869 if test "${GCC}" = "yes"; then
870   TRY_CFLAGS([-Wall -W -Wshadow -pedantic])
871   TRY_CFLAGS([-std=gnu99])
874 AC_ARG_ENABLE(extra-warnings,
875  AC_HELP_STRING([--enable-extra-warnings],[enable extra warnings (gcc specific)]),
876  [case "${enableval}" in
877    yes) extrawarnings=true ;;
878     no) extrawarnings=false ;;
879      *) AC_MSG_ERROR(bad value ${enableval} for --enable-extra-warnings) ;;
880   esac],[extrawarnings=false])
882 if test x$extrawarnings = xtrue; then
883   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])
884   TRY_LDFLAGS([-Wl,--as-needed])
887 dnl build version-id
888 LIGHTTPD_VERSION_ID=`echo $PACKAGE_VERSION | $AWK -F '.' '{print "(" $1 " << 16 | " $2 " << 8 | " $3 ")"}'`
889 AC_DEFINE_UNQUOTED([LIGHTTPD_VERSION_ID], [$LIGHTTPD_VERSION_ID], [lighttpd-version-id])
891 AC_CONFIG_FILES([Makefile src/Makefile
892                  doc/config/conf.d/Makefile \
893                  doc/config/vhosts.d/Makefile \
894                  doc/config/Makefile \
895                  doc/scripts/Makefile \
896                  doc/initscripts/Makefile \
897                  doc/systemd/Makefile \
898                  doc/outdated/Makefile \
899                  doc/Makefile \
900                  tests/Makefile \
901                  tests/docroot/Makefile \
902                  tests/docroot/123/Makefile \
903                  tests/docroot/www/Makefile \
904                  tests/docroot/www/go/Makefile \
905                  tests/docroot/www/indexfile/Makefile \
906                  tests/docroot/www/expire/Makefile \
907                  distribute.sh])
908 AC_OUTPUT
911 do_build="mod_cgi mod_fastcgi mod_extforward mod_proxy mod_evhost mod_simple_vhost mod_access mod_alias mod_setenv mod_usertrack mod_auth mod_authn_file mod_authn_ldap mod_authn_mysql mod_status mod_accesslog"
912 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"
914 plugins="mod_rewrite mod_redirect mod_trigger_b4_dl"
915 features="regex-conditionals"
916 if test ! "x$PCRE_LIB" = x; then
917         do_build="$do_build $plugins"
918         enable_feature="$features"
919 else
920         no_build="$no_build $plugins"
921         disable_feature="$features"
924 features="auth-mysql"
925 plugins="mod_mysql_vhost"
926 if test ! "x$MYSQL_LIBS" = x; then
927         do_build="$do_build $plugins"
928         enable_feature="$enable_feature $features"
929 else
930         no_build="$no_build $plugins"
931         disable_feature="$disable_feature $features"
934 plugins="mod_cml mod_magnet"
935 if test ! "x$LUA_LIBS" = x; then
936         do_build="$do_build $plugins"
937 else
938         no_build="$no_build $plugins"
941 features="storage-gdbm"
942 if test ! "x$GDBM_LIB" = x; then
943         enable_feature="$enable_feature $features"
944 else
945         disable_feature="$disable_feature $features"
948 features="storage-memcached"
949 if test ! "x$MEMCACHED_LIB" = x; then
950         enable_feature="$enable_feature $features"
951 else
952         disable_feature="$disable_feature $features"
955 features="compress-gzip compress-deflate"
956 if test ! "x$Z_LIB" = x; then
957         enable_feature="$enable_feature $features"
958 else
959         disable_feature="$disable_feature $features"
962 features="compress-bzip2"
963 if test ! "x$BZ_LIB" = x; then
964         enable_feature="$enable_feature $features"
965 else
966         disable_feature="$disable_feature $features"
969 features="auth-krb5"
970 plugins="mod_authn_gssapi"
971 if test ! "x$KRB5_LIB" = x; then
972         do_build="$do_build $plugins"
973         enable_feature="$enable_feature $features"
974 else
975         no_build="$no_build $plugins"
976         disable_feature="$disable_feature $features"
979 features="auth-ldap"
980 if test ! "x$LDAP_LIB" = x; then
981         enable_feature="$enable_feature $features"
982 else
983         disable_feature="$disable_feature $features"
986 features="network-openssl"
987 if test ! "x$SSL_LIB" = x; then
988         enable_feature="$enable_feature $features"
989 else
990         disable_feature="$disable_feature $features"
993 dnl no crypt call
994 features="auth-crypt"
995 if test "$ac_cv_search_crypt" = no; then
996         disable_feature="$disable_feature $features"
997 else
998         enable_feature="$enable_feature $features"
1001 features="network-ipv6"
1002 if test "$ac_cv_ipv6_support" = yes; then
1003         enable_feature="$enable_feature $features"
1004 else
1005         disable_feature="$disable_feature $features"
1008 features="large-files"
1009 if test "$enable_lfs" = yes; then
1010         enable_feature="$enable_feature $features"
1011 else
1012         disable_feature="$disable_feature $features"
1015 features="stat-cache-fam"
1016 if test ! "x$FAM_LIBS" = x; then
1017         enable_feature="$enable_feature $features"
1018 else
1019         disable_feature="$disable_feature $features"
1022 features="webdav-properties"
1023 if test "x$XML_LIBS" \!= x -a "x$SQLITE_LIBS" \!= x; then
1024         enable_feature="$enable_feature $features"
1025 else
1026         disable_feature="$disable_feature $features"
1029 features="webdav-locks"
1030 if test "x$UUID_LIBS" \!= x; then
1031         enable_feature="$enable_feature $features"
1032 else
1033         disable_feature="$disable_feature $features"
1037 dnl output
1039 $ECHO
1040 $ECHO "Plugins:"
1041 $ECHO
1043 $ECHO "enabled: "
1044 for p in $do_build; do
1045         $ECHO "  $p"
1046 done | sort
1048 $ECHO "disabled: "
1049 for p in $no_build; do
1050         $ECHO "  $p"
1051 done | sort
1053 $ECHO
1054 $ECHO "Features:"
1055 $ECHO
1057 $ECHO "enabled: "
1058 for p in $enable_feature; do
1059         $ECHO "  $p"
1060 done | sort
1062 $ECHO "disabled: "
1063 for p in $disable_feature; do
1064         $ECHO "  $p"
1065 done | sort
1067 $ECHO