[mod_ssi] more flexible quoting (fixes #1768)
[lighttpd.git] / configure.ac
blob993eee0d7666e4f7f20d353c462429ea02ce6f59
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.40], [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
139 AC_CHECK_FUNCS([issetugid inet_pton])
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)
182 dnl Checks for database.
183 MYSQL_INCLUDE=""
184 MYSQL_LIBS=""
186 AC_MSG_CHECKING(for MySQL support)
187 AC_ARG_WITH(mysql,
188     AC_HELP_STRING([--with-mysql@<:@=PATH@:>@],[Include MySQL support. PATH is the path to 'mysql_config']),
189     [WITH_MYSQL=$withval],[WITH_MYSQL=no])
191 if test "$WITH_MYSQL" != "no"; then
192   AC_MSG_RESULT(yes)
193   if test "$WITH_MYSQL" = "yes"; then
194     AC_PATH_PROG(MYSQL_CONFIG, mysql_config)
195   else
196     MYSQL_CONFIG=$WITH_MYSQL
197   fi
199   if test "$MYSQL_CONFIG" = ""; then
200     AC_MSG_ERROR(mysql_config is not found)
201   fi
202   if test \! -x $MYSQL_CONFIG; then
203     AC_MSG_ERROR(mysql_config not exists or not executable, use --with-mysql=path-to-mysql_config)
204   fi
206   if $MYSQL_CONFIG | grep -- '--include' > /dev/null ; then
207     MYSQL_INCLUDE="`$MYSQL_CONFIG --include | sed s/\'//g`"
208   else
209     MYSQL_INCLUDE="`$MYSQL_CONFIG --cflags | sed s/\'//g`"
210   fi
211   MYSQL_LIBS="`$MYSQL_CONFIG --libs | sed s/\'//g`"
213   AC_MSG_CHECKING(for MySQL includes at)
214   AC_MSG_RESULT($MYSQL_INCLUDE)
216   AC_MSG_CHECKING(for MySQL libraries at)
217   AC_MSG_RESULT($MYSQL_LIBS)
218 dnl check for errmsg.h, which isn't installed by some versions of 3.21
219   old_CPPFLAGS="$CPPFLAGS"
220   CPPFLAGS="$CPPFLAGS $MYSQL_INCLUDE"
221   AC_CHECK_HEADERS(errmsg.h mysql.h)
222   CPPFLAGS="$old_CPPFLAGS"
224   AC_DEFINE([HAVE_MYSQL], [1], [mysql support])
225 else
226   AC_MSG_RESULT(no)
229 AC_SUBST(MYSQL_LIBS)
230 AC_SUBST(MYSQL_INCLUDE)
232 dnl Check for LDAP
233 AC_MSG_CHECKING(for LDAP support)
234 AC_ARG_WITH(ldap, AC_HELP_STRING([--with-ldap],[enable LDAP support]),
235 [WITH_LDAP=$withval], [WITH_LDAP=no])
236 AC_MSG_RESULT([$withval])
237 if test "$WITH_LDAP" != "no"; then
238  AC_CHECK_LIB(ldap, ldap_bind, [
239   AC_CHECK_HEADERS([ldap.h],[
240     LDAP_LIB=-lldap
241     AC_DEFINE([HAVE_LIBLDAP], [1], [libldap])
242     AC_DEFINE([HAVE_LDAP_H], [1])
243     AC_DEFINE([LDAP_DEPRECATED], [1], [Using deprecated ldap api])
244   ])
245  ])
246  AC_SUBST(LDAP_LIB)
247  AC_CHECK_LIB(lber, ber_printf, [
248   AC_CHECK_HEADERS([lber.h],[
249     LBER_LIB=-llber
250     AC_DEFINE([HAVE_LIBLBER], [1], [liblber])
251     AC_DEFINE([HAVE_LBER_H], [1])
252   ])
253  ])
254  AC_SUBST(LBER_LIB)
257 dnl Check for xattr
258 AC_MSG_CHECKING(for extended attributes support)
259 AC_ARG_WITH(attr, AC_HELP_STRING([--with-attr],[enable extended attribute support]),
260 [WITH_ATTR=$withval],[WITH_ATTR=no])
261 AC_MSG_RESULT($withval)
262 if test "$WITH_ATTR" != "no"; then
263   # libattr (linux only?)
264   AC_CHECK_LIB(attr, attr_get, [
265     AC_CHECK_HEADERS([attr/attributes.h],[
266       ATTR_LIB=-lattr
267       AC_DEFINE([HAVE_XATTR], [1], [libattr])
268       AC_DEFINE([HAVE_ATTR_ATTRIBUTES_H], [1])
269     ])
270   ])
271   AC_SUBST(ATTR_LIB)
273   # (Free)BSD extattr
274   AC_CHECK_FUNC([extattr_get_file], [
275     AC_CHECK_HEADERS([sys/extattr.h],[
276       AC_DEFINE([HAVE_EXTATTR], [1], [BSD extended attributes])
277       AC_DEFINE([HAVE_SYS_EXTATTR_H], [1])
278     ])
279   ])
282 dnl openssl on solaris needs -lsocket -lnsl
283 AC_SEARCH_LIBS(socket,socket)
284 AC_SEARCH_LIBS(gethostbyname,nsl socket)
285 AC_SEARCH_LIBS(hstrerror,resolv)
287 save_LIBS=$LIBS
288 AC_SEARCH_LIBS(dlopen,dl,[
289   AC_CHECK_HEADERS([dlfcn.h],[
290     if test "$ac_cv_search_dlopen" != no; then
291       test "$ac_cv_search_dlopen" = "none required" || DL_LIB="$ac_cv_search_dlopen"
292     fi
294     AC_DEFINE([HAVE_LIBDL], [1], [libdl])
295     AC_DEFINE([HAVE_DLFCN_H], [1])
296   ])
298 LIBS=$save_LIBS
299 AC_SUBST(DL_LIB)
301 dnl Check for valgrind
302 AC_MSG_CHECKING(for valgrind)
303 AC_ARG_WITH(valgrind, AC_HELP_STRING([--with-valgrind],[enable internal support for valgrind]),
304 [WITH_VALGRIND=$withval],[WITH_VALGRIND=no])
305 AC_MSG_RESULT([$WITH_VALGRIND])
306 if test "$WITH_VALGRIND" != "no"; then
307  AC_CHECK_HEADERS([valgrind/valgrind.h])
310 dnl Checking for libunwind
311 AC_MSG_CHECKING(for libunwind)
312 AC_ARG_WITH(libunwind,
313     AC_HELP_STRING([--with-libunwind],[Include libunwind support for backtraces on assert failures]),
314     [WITH_LIBUNWIND=$withval],[WITH_LIBUNWIND=no])
316 if test "$WITH_LIBUNWIND" != "no"; then
317   PKG_CHECK_MODULES(LIBUNWIND, libunwind)
318   AC_DEFINE(HAVE_LIBUNWIND, 1, [Have libunwind support])
321 dnl Check for openssl
322 AC_MSG_CHECKING(for OpenSSL)
323 AC_ARG_WITH(openssl,
324     AC_HELP_STRING([--with-openssl@<:@=DIR@:>@],[Include openssl support (default no)]),
325     [WITH_OPENSSL=$withval],[WITH_OPENSSL=no])
327 if test "$WITH_OPENSSL" != "no"; then
328     use_openssl=yes
329     if test "$WITH_OPENSSL" != "yes"; then
330         CPPFLAGS="$CPPFLAGS -I$WITH_OPENSSL/include"
331         LDFLAGS="$LDFLAGS -L$WITH_OPENSSL/lib"
332     fi
333 else
334     use_openssl=no
336 AC_MSG_RESULT([$use_openssl])
338 AC_ARG_WITH(openssl-includes,
339     AC_HELP_STRING([--with-openssl-includes=DIR],[OpenSSL includes]),
340     [ use_openssl=yes CPPFLAGS="$CPPFLAGS -I$withval" ]
343 AC_ARG_WITH(openssl-libs,
344     AC_HELP_STRING([--with-openssl-libs=DIR],[OpenSSL libraries]),
345     [ use_openssl=yes LDFLAGS="$LDFLAGS -L$withval" ]
348 AC_ARG_WITH(kerberos5,
349     AC_HELP_STRING([--with-kerberos5],[use Kerberos5 support with OpenSSL]),
350     [ use_kerberos=yes ], [use_kerberos=no]
353 if test "x$use_openssl" = "xyes"; then
354     if test "x$use_kerberos" = "xyes"; then
355         AC_DEFINE([USE_OPENSSL_KERBEROS], [1], [with kerberos])
356     fi
358     AC_CHECK_HEADERS([openssl/ssl.h])
359     OLDLIBS="$LIBS"
360     AC_CHECK_LIB(crypto, BIO_f_base64, [
361       AC_CHECK_LIB(ssl, SSL_new, [ SSL_LIB="-lssl -lcrypto"
362                                  AC_DEFINE(HAVE_LIBSSL, [], [Have libssl]) ], [], [ -lcrypto "$DL_LIB" ])
363     ], [], [])
364     LIBS="$OLDLIBS"
365     AC_SUBST(SSL_LIB)
368 AC_MSG_CHECKING(for perl regular expressions support)
369 AC_ARG_WITH(pcre, AC_HELP_STRING([--with-pcre],[Enable pcre support (default yes)]),
370     [WITH_PCRE=$withval],[WITH_PCRE=yes])
371 AC_MSG_RESULT([$WITH_PCRE])
373 if test "$WITH_PCRE" != "no"; then
374                 if test "$WITH_PCRE" != "yes"; then
375                         PCRE_LIB="-L$WITH_PCRE/lib -lpcre"
376                         CPPFLAGS="$CPPFLAGS -I$WITH_PCRE/include"
377                 else
378                         AC_PATH_PROG(PCRECONFIG, pcre-config)
379                         if test x"$PCRECONFIG" != x; then
380                                 PCRE_LIB=`$PCRECONFIG --libs`
381                                 CPPFLAGS="$CPPFLAGS `$PCRECONFIG --cflags`"
382                         fi
383                 fi
385   if test x"$PCRE_LIB" != x; then
386     AC_DEFINE([HAVE_LIBPCRE], [1], [libpcre])
387     AC_DEFINE([HAVE_PCRE_H], [1], [pcre.h])
388     AC_SUBST(PCRE_LIB)
389   else
390     AC_MSG_ERROR([pcre-config not found, install the pcre-devel package or build with --without-pcre])
391   fi
394 AC_MSG_CHECKING(for zlib support)
395 AC_ARG_WITH(zlib, AC_HELP_STRING([--with-zlib],[Enable zlib support for mod_compress]),
396     [WITH_ZLIB=$withval],[WITH_ZLIB=yes])
397 AC_MSG_RESULT([$WITH_ZLIB])
399 if test "$WITH_ZLIB" != "no"; then
400                 if test "$WITH_ZLIB" != "yes"; then
401                         Z_LIB="-L$WITH_ZLIB -lz"
402                         CPPFLAGS="$CPPFLAGS -I$WITH_ZLIB"
403                 else
404                         AC_CHECK_LIB(z, deflate, [
405                           AC_CHECK_HEADERS([zlib.h],[Z_LIB=-lz])
406                         ])
407                 fi
409   if test x"$Z_LIB" != x; then
410     AC_DEFINE([HAVE_LIBZ], [1], [libz])
411     AC_DEFINE([HAVE_ZLIB_H], [1])
412     AC_SUBST(Z_LIB)
413   else
414     AC_MSG_ERROR([zlib-headers and/or libs were not found, install them or build with --without-zlib])
415   fi
418 AC_MSG_CHECKING(for bzip2 support)
419 AC_ARG_WITH(bzip2, AC_HELP_STRING([--with-bzip2],[Enable bzip2 support for mod_compress]),
420     [WITH_BZIP2=$withval],[WITH_BZIP2=yes])
421 AC_MSG_RESULT([$WITH_BZIP2])
423 if test "$WITH_BZIP2" != "no"; then
424                 if test "$WITH_BZIP2" != "yes"; then
425                         BZ_LIB="-L$WITH_BZIP2 -lbz2"
426                         CPPFLAGS="$CPPFLAGS -I$WITH_BZIP2"
427                 else
428                         AC_CHECK_LIB(bz2, BZ2_bzCompress, [
429                           AC_CHECK_HEADERS([bzlib.h],[BZ_LIB=-lbz2])
430                         ])
431                 fi
433   if test x"$BZ_LIB" != x; then
434     AC_DEFINE([HAVE_LIBBZ2], [1], [libbz2])
435     AC_DEFINE([HAVE_BZLIB_H], [1])
436     AC_SUBST(BZ_LIB)
437   else
438     AC_MSG_ERROR([bzip2-headers and/or libs were not found, install them or build with --without-bzip2])
439   fi
442 dnl Check for gamin
443 AC_MSG_CHECKING(for FAM)
444 AC_ARG_WITH(fam, AC_HELP_STRING([--with-fam],[fam/gamin for reducing number of stat() calls]),
445 [WITH_FAM=$withval],[WITH_FAM=no])
446 AC_MSG_RESULT([$WITH_FAM])
448 if test "$WITH_FAM" != "no"; then
449                 if test "$WITH_FAM" != "yes"; then
450                         FAM_LIBS="-L$WITH_FAM -lfam"
451                         CPPFLAGS="$CPPFLAGS -I$WITH_FAM"
452                 else
453                         AC_CHECK_LIB(fam, FAMOpen2, [
454                           AC_CHECK_HEADERS([fam.h],[FAM_LIBS=-lfam])
455                         ])
456                         if test "x$FAM_LIBS" = x; then
457                           PKG_CHECK_MODULES(FAM, gamin >= 0.1.0)
458                         fi
459                 fi
461   if test x"$FAM_LIBS" != x; then
462     OLD_LIBS=$LIBS
463     LIBS=$FAM_LIBS
464     AC_CHECK_FUNCS([FAMNoExists])
465     LIBS=$OLD_LIBS
467     AC_DEFINE([HAVE_LIBFAM], [1], [libfam])
468     AC_DEFINE([HAVE_FAM_H], [1], [fam.h])
469     AC_SUBST(FAM_LIBS)
470   else
471      AC_MSG_ERROR([fam/gamin-headers and/or libs were not found, install them or build with --without-fam])
472   fi
475 AC_MSG_CHECKING(for properties in mod_webdav)
476 AC_ARG_WITH(webdav-props, AC_HELP_STRING([--with-webdav-props],[properties in mod_webdav]),
477 [WITH_WEBDAV_PROPS=$withval],[WITH_WEBDAV_PROPS=no])
478 AC_MSG_RESULT([$WITH_WEBDAV_PROPS])
480 if test "$WITH_WEBDAV_PROPS" != "no"; then
482   AC_MSG_CHECKING(for libxml2)
483   AC_ARG_WITH(libxml, AC_HELP_STRING([--with-libxml],[libxml2 for properties in mod_webdav]),
484   [WITH_LIBXML=$withval],[WITH_LIBXML=yes])
485   AC_MSG_RESULT([$WITH_LIBXML])
487   if test "$WITH_LIBXML" != "no"; then
488                 if test "$WITH_LIBXML" != "yes"; then
489                         XML_LIBS="-L$WITH_LIBXML/.libs -lxml2"
490                         XML_CFLAGS="-I$WITH_LIBXML/include"
491                 else
492                         PKG_CHECK_MODULES(XML, libxml-2.0)
493                 fi
495     if test x"$XML_LIBS" != x; then
496       AC_DEFINE([HAVE_LIBXML2], [1], [libxml2])
497       AC_DEFINE([HAVE_LIBXML_H], [1], [libxml.h])
498       AC_SUBST(XML_LIBS)
499       AC_SUBST(XML_CFLAGS)
500     else
501       AC_MSG_ERROR([libxml2-headers and/or libs were not found, install them or build with --without-webdav-props])
502     fi
503   fi
505   AC_MSG_CHECKING(for sqlite)
506   AC_ARG_WITH(sqlite, AC_HELP_STRING([--with-sqlite],[sqlite for properties in mod_webdav]),
507   [WITH_SQLITE=$withval],[WITH_SQLITE=yes])
508   AC_MSG_RESULT([$WITH_SQLITE])
510   if test "$WITH_SQLITE" != "no"; then
511                 if test "$WITH_SQLITE" != "yes"; then
512                         SQLITE_LIBS="-L$WITH_SQLITE/.libs -lsqlite3"
513                         SQLITE_CFLAGS="-I$WITH_SQLITE"
514                 else
515                         PKG_CHECK_MODULES(SQLITE, sqlite3)
516                 fi
518     if test x"$SQLITE_LIBS" != x; then
519       AC_DEFINE([HAVE_SQLITE3], [1], [libsqlite3])
520       AC_DEFINE([HAVE_SQLITE3_H], [1], [sqlite3.h])
521       AC_SUBST(SQLITE_LIBS)
522       AC_SUBST(SQLITE_CFLAGS)
523     else
524       AC_MSG_ERROR([sqlite-headers and/or libs were not found, install them or build with --without-webdav-props])
525     fi
526   fi
528   AC_MSG_CHECKING(for locks in mod_webdav)
529   AC_ARG_WITH(webdav-locks, AC_HELP_STRING([--with-webdav-locks],[locks in mod_webdav]),
530   [WITH_WEBDAV_LOCKS=$withval],[WITH_WEBDAV_LOCKS=no])
531   AC_MSG_RESULT([$WITH_WEBDAV_LOCKS])
533   if test "$WITH_WEBDAV_LOCKS" != "no"; then
535     AC_MSG_CHECKING(for libuuid)
536     AC_ARG_WITH(uuid, AC_HELP_STRING([--with-uuid],[uuid for locks in mod_webdav]),
537     [WITH_UUID=$withval],[WITH_UUID=yes])
538     AC_MSG_RESULT([$WITH_UUID])
540     if test "$WITH_UUID" != "no"; then
541                 if test "$WITH_UUID" != "yes"; then
542                         UUID_LIBS="-L$WITH_UUID -luuid"
543                         CPPFLAGS="$CPPFLAGS -I$WITH_UUID"
544                 else
545                         AC_CHECK_LIB(uuid, uuid_unparse, [
546                           AC_CHECK_HEADERS([uuid/uuid.h],[UUID_LIBS=-luuid])
547                         ])
548                 fi
550       if test x"$UUID_LIBS" != x; then
551         AC_DEFINE([HAVE_UUID], [1], [libuuid])
552         AC_DEFINE([HAVE_UUID_H], [1], [uuid/uuid.h is available])
553         AC_SUBST(UUID_LIBS)
554       else
555         AC_MSG_ERROR([uuid-headers and/or libs were not found, install them or build with --without-webdav-locks])
556       fi
557     fi
559   fi
563 dnl Check for gdbm
564 AC_MSG_CHECKING(for gdbm)
565 AC_ARG_WITH(gdbm, AC_HELP_STRING([--with-gdbm],[gdbm storage for mod_trigger_b4_dl]),
566 [WITH_GDBM=$withval],[WITH_GDBM=no])
567 AC_MSG_RESULT([$WITH_GDBM])
569 if test "$WITH_GDBM" != "no"; then
570                 if test "$WITH_GDBM" != "yes"; then
571                         GDBM_LIB="-L$WITH_GDBM -lgdbm"
572                         CPPFLAGS="$CPPFLAGS -I$WITH_GDBM"
573                 else
574                         AC_CHECK_LIB(gdbm, gdbm_open, [
575                           AC_CHECK_HEADERS([gdbm.h],[GDBM_LIB=-lgdbm])
576                         ])
577                 fi
579   if test x"$GDBM_LIB" != x; then
580     AC_DEFINE([HAVE_GDBM], [1], [libgdbm])
581     AC_DEFINE([HAVE_GDBM_H], [1])
582     AC_SUBST(GDBM_LIB)
583   else
584     AC_MSG_ERROR([gdbm headers and/or libs were not found, install them or build with --without-gdbm])
585   fi
588 dnl Check for memcached
589 AC_MSG_CHECKING(for memcached)
590 AC_ARG_WITH(memcached, AC_HELP_STRING([--with-memcached],[memcached storage for mod_trigger_b4_dl]),
591 [WITH_MEMCACHED=$withval],[WITH_MEMCACHED=no])
592 AC_MSG_RESULT([$WITH_MEMCACHED])
594 if test "$WITH_MEMCACHED" != "no"; then
595                 if test "$WITH_MEMCACHED" != "yes"; then
596                         MEMCACHED_LIB="-L$WITH_MEMCACHED -lMEMCACHED"
597                         CPPFLAGS="$CPPFLAGS -I$WITH_MEMCACHED"
598                 else
599                         AC_CHECK_LIB(memcached, memcached, [
600                           AC_CHECK_HEADERS([libmemcached/memcached.h],[
601                             MEMCACHED_LIB=-lmemcached
602                           ])
603                         ])
604                 fi
606   if test x"$MEMCACHED_LIB" != x; then
607     AC_DEFINE([USE_MEMCACHED], [1], [libmemcached])
608     AC_SUBST(MEMCACHED_LIB)
609   else
610     AC_MSG_ERROR([memcached headers and/or libs were not found, install them or build with --without-memcached])
611   fi
614 dnl Check for lua
615 AC_MSG_CHECKING(if lua-support is requested)
616 AC_ARG_WITH(lua, AC_HELP_STRING([--with-lua],[lua engine for mod_cml]),
617 [WITH_LUA=$withval],[WITH_LUA=no])
619 AC_MSG_RESULT($WITH_LUA)
620 if test "$WITH_LUA" != "no"; then
621   found_lua=0
622   if test "$WITH_LUA" != "yes"; then
623     PKG_CHECK_MODULES(LUA, $WITH_LUA >= 5.1, [
624       found_lua=1
625     ],[
626       AC_MSG_NOTICE([Couldn't find requested lua pkg-config module $WITH_LUA])
627     ])
628     if test "$found_lua" = "0"; then
629       LUA_LIBS="-L$WITH_LUA -llua"
630       LUA_CFLAGS="-I$WITH_LUA"
631     fi
632   else
633     for luaname in lua5.3 lua-5.3 lua5.2 lua-5.2 lua5.1 lua-5.1 lua; do
634       if test "$found_lua" = "0"; then
635         PKG_CHECK_MODULES(LUA, $luaname >= 5.1, [
636           found_lua=1
637         ], [
638           AC_MSG_NOTICE([Couldn't find $luaname])
639         ])
640       fi
641     done
642     if test "$found_lua" = "0"; then
643       AC_MSG_ERROR([Couldn't find any lua pkg-config module])
644     fi
645   fi
647   if test x"$LUA_LIBS" != x; then
648     AC_DEFINE([HAVE_LUA], [1], [liblua])
649     AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
650     AC_SUBST(LUA_LIBS)
651     AC_SUBST(LUA_CFLAGS)
652   else
653     AC_MSG_ERROR([lua headers and/or libs were not found, install them or build with --without-lua])
654   fi
657 dnl search for crypt_r and (fallback) for crypt
658 save_LIBS=$LIBS
659 LIBS=
660 AC_SEARCH_LIBS([crypt_r],[crypt],[
661   AC_DEFINE([HAVE_CRYPT_R], [1], [crypt_r])
662   AC_CHECK_HEADERS([crypt.h],[
663     AC_DEFINE([HAVE_CRYPT_H], [1], [crypt.h])
664   ])
666   CRYPT_LIB=$LIBS
668   AC_SEARCH_LIBS([crypt],[crypt],[
669     AC_DEFINE([HAVE_CRYPT], [1], [crypt])
670     AC_CHECK_HEADERS([crypt.h],[
671       AC_DEFINE([HAVE_CRYPT_H], [1], [crypt.h])
672     ])
674     CRYPT_LIB=$LIBS
675   ])
677 LIBS=$save_LIBS
678 AC_SUBST([CRYPT_LIB])
680 save_LIBS=$LIBS
681 AC_SEARCH_LIBS(sendfilev,sendfile,[
682   if test "$ac_cv_search_sendfilev" != no; then
683     test "$ac_cv_search_sendfilev" = "none required" || SENDFILE_LIB="$ac_cv_search_sendfilev"
684     AC_DEFINE([HAVE_SENDFILEV], [1], [solaris sendfilev])
685   fi
687 LIBS=$save_LIBS
688 AC_SUBST(SENDFILE_LIB)
690 case $host_os in
691         *mingw* ) LIBS="$LIBS -lwsock32";;
692         * ) ;;
693 esac
695 AC_CHECK_FUNCS([dup2 getcwd inet_ntoa inet_ntop memset mmap munmap strchr \
696                   strdup strerror strstr strtol sendfile  getopt socket lstat \
697                   gethostbyname poll epoll_ctl getrlimit chroot \
698                   getuid select signal pathconf madvise posix_fadvise posix_madvise \
699                   writev sigaction sendfile64 send_file kqueue port_create localtime_r gmtime_r \
700                   memset_s explicit_bzero])
702 AC_MSG_CHECKING(if weak symbols are supported)
703 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
704                 __attribute__((weak)) void __dummy(void *x) { }
705                 void f(void *x) { __dummy(x); }
706         ]])],
707         [
708                 AC_MSG_RESULT(yes)
709                 AC_DEFINE([HAVE_WEAK_SYMBOLS], [1], [weak symbols are supported])
710         ],[AC_MSG_RESULT(no)])
712 AC_MSG_CHECKING(for Large File System support)
713 AC_ARG_ENABLE(lfs,
714  AC_HELP_STRING([--enable-lfs],[Turn on Large File System (default)]),
715  [case "${enableval}" in
716    yes) CPPFLAGS="${CPPFLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGE_FILES" ;;
717     no) ;;
718      *) AC_MSG_ERROR(bad value ${enableval} for --enable-lfs) ;;
719   esac],[CPPFLAGS="${CPPFLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGE_FILES"
720          enable_lfs=yes])
721 AC_MSG_RESULT($enableval)
723 AC_CHECK_SIZEOF(long)
724 AC_CHECK_SIZEOF(off_t)
726 if test "x$ac_cv_func_sendfile" = xyes; then
727         dnl check if sendfile works
728         AC_MSG_CHECKING(if sendfile works)
729         if test "x$cross_compiling" = xno; then
730         AC_TRY_RUN([
731                     #ifdef HAVE_SYS_SENDFILE_H
732                     #include <sys/sendfile.h>
733                     #endif /* HAVE_SYS_SENDFILE_H */
734                     #include <errno.h>
735                     int main() {
736                       int o = 0;
737                       if (-1 == sendfile(-1, 0, &o, 0) && errno == ENOSYS) return -1;
738                       return 0;
739                     } ],
740                     AC_MSG_RESULT(yes),
741                     [ AC_MSG_RESULT(no)
742                     AC_DEFINE([HAVE_SENDFILE_BROKEN], [1], [broken sendfile]) ] )
743         else
744               AC_MSG_RESULT(no, cross-compiling)
745               AC_DEFINE([HAVE_SENDFILE_BROKEN], [1], [broken sendfile])
746         fi
749 dnl Check for IPv6 support
751 AC_ARG_ENABLE(ipv6,
752  AC_HELP_STRING([--disable-ipv6],[disable IPv6 support]),
753  [case "${enableval}" in
754    yes) ipv6=true ;;
755     no) ipv6=false ;;
756      *) AC_MSG_ERROR(bad value ${enableval} for --enable-ipv6) ;;
757   esac],[ipv6=true])
759 if test x$ipv6 = xtrue; then
760   AC_CACHE_CHECK([for IPv6 support], ac_cv_ipv6_support,
761   [AC_TRY_LINK([ #include <sys/types.h>
762 #include <sys/socket.h>
763 #include <netinet/in.h>], [struct sockaddr_in6 s; struct in6_addr t=in6addr_any; int i=AF_INET6; s; t.s6_addr[0] = 0; ],
764   [ac_cv_ipv6_support=yes], [ac_cv_ipv6_support=no])])
766   if test "$ac_cv_ipv6_support" = yes; then
767     AC_DEFINE(HAVE_IPV6,1,[Whether to enable IPv6 support])
768   fi
771 # disable mmap by default; if a mmapped file gets truncated, the process gets a SIGBUS signal
772 # on reading the truncated area which we can't handle (yet).
773 # lighttpd may always use mmap with files it owns (created tmp files)
774 AC_ARG_ENABLE(mmap,
775   AC_HELP_STRING([--enable-mmap],[use mmap if available (DANGEROUS, allows local users to trigger SIGBUS crashes)]),
776   [case "${enableval}" in
777    yes) mmap=true ;;
778     no) mmap=false ;;
779      *) AC_MSG_ERROR(bad value ${enableval} for --enable-mmap) ;;
780   esac],[mmap=false])
782 if test x$mmap = xtrue; then
783   AC_DEFINE(ENABLE_MMAP, [1], [Use mmap if available])
787 AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes)
789 dnl check for fastcgi lib, for the tests only
790 fastcgi_found=no
791 AC_CHECK_LIB(fcgi, FCGI_Accept, [
792  AC_CHECK_HEADERS([fastcgi.h fastcgi/fastcgi.h],[
793    fastcgi_found=yes
794  ])
797 AM_CONDITIONAL(CHECK_WITH_FASTCGI, test "x$fastcgi_found" = xyes)
800 dnl check for extra compiler options (warning options)
801 if test "${GCC}" = "yes"; then
802   TRY_CFLAGS([-Wall -W -Wshadow -pedantic])
803   TRY_CFLAGS([-std=gnu99])
806 AC_ARG_ENABLE(extra-warnings,
807  AC_HELP_STRING([--enable-extra-warnings],[enable extra warnings (gcc specific)]),
808  [case "${enableval}" in
809    yes) extrawarnings=true ;;
810     no) extrawarnings=false ;;
811      *) AC_MSG_ERROR(bad value ${enableval} for --enable-extra-warnings) ;;
812   esac],[extrawarnings=false])
814 if test x$extrawarnings = xtrue; then
815   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])
816   TRY_LDFLAGS([-Wl,--as-needed])
819 dnl build version-id
820 LIGHTTPD_VERSION_ID=`echo $PACKAGE_VERSION | $AWK -F '.' '{print "(" $1 " << 16 | " $2 " << 8 | " $3 ")"}'`
821 AC_DEFINE_UNQUOTED([LIGHTTPD_VERSION_ID], [$LIGHTTPD_VERSION_ID], [lighttpd-version-id])
823 AC_CONFIG_FILES([Makefile src/Makefile
824                  doc/config/conf.d/Makefile \
825                  doc/config/vhosts.d/Makefile \
826                  doc/config/Makefile \
827                  doc/scripts/Makefile \
828                  doc/initscripts/Makefile \
829                  doc/systemd/Makefile \
830                  doc/outdated/Makefile \
831                  doc/Makefile \
832                  tests/Makefile \
833                  tests/docroot/Makefile \
834                  tests/docroot/123/Makefile \
835                  tests/docroot/www/Makefile \
836                  tests/docroot/www/go/Makefile \
837                  tests/docroot/www/indexfile/Makefile \
838                  tests/docroot/www/expire/Makefile \
839                  distribute.sh])
840 AC_OUTPUT
843 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"
844 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"
846 plugins="mod_rewrite mod_redirect mod_trigger_b4_dl"
847 features="regex-conditionals"
848 if test ! "x$PCRE_LIB" = x; then
849         do_build="$do_build $plugins"
850         enable_feature="$features"
851 else
852         no_build="$no_build $plugins"
853         disable_feature="$features"
856 plugins="mod_mysql_vhost"
857 if test ! "x$MYSQL_LIBS" = x; then
858         do_build="$do_build $plugins"
859 else
860         no_build="$no_build $plugins"
863 plugins="mod_cml mod_magnet"
864 if test ! "x$LUA_LIBS" = x; then
865         do_build="$do_build $plugins"
866 else
867         no_build="$no_build $plugins"
870 features="storage-gdbm"
871 if test ! "x$GDBM_LIB" = x; then
872         enable_feature="$enable_feature $features"
873 else
874         disable_feature="$disable_feature $features"
877 features="storage-memcached"
878 if test ! "x$MEMCACHED_LIB" = x; then
879         enable_feature="$enable_feature $features"
880 else
881         disable_feature="$disable_feature $features"
884 features="compress-gzip compress-deflate"
885 if test ! "x$Z_LIB" = x; then
886         enable_feature="$enable_feature $features"
887 else
888         disable_feature="$disable_feature $features"
891 features="compress-bzip2"
892 if test ! "x$BZ_LIB" = x; then
893         enable_feature="$enable_feature $features"
894 else
895         disable_feature="$disable_feature $features"
898 features="auth-ldap"
899 if test ! "x$LDAP_LIB" = x; then
900         enable_feature="$enable_feature $features"
901 else
902         disable_feature="$disable_feature $features"
905 features="network-openssl"
906 if test ! "x$SSL_LIB" = x; then
907         enable_feature="$enable_feature $features"
908 else
909         disable_feature="$disable_feature $features"
912 dnl no crypt call
913 features="auth-crypt"
914 if test "$ac_cv_search_crypt" = no; then
915         disable_feature="$disable_feature $features"
916 else
917         enable_feature="$enable_feature $features"
920 features="network-ipv6"
921 if test "$ac_cv_ipv6_support" = yes; then
922         enable_feature="$enable_feature $features"
923 else
924         disable_feature="$disable_feature $features"
927 features="large-files"
928 if test "$enable_lfs" = yes; then
929         enable_feature="$enable_feature $features"
930 else
931         disable_feature="$disable_feature $features"
934 features="stat-cache-fam"
935 if test ! "x$FAM_LIBS" = x; then
936         enable_feature="$enable_feature $features"
937 else
938         disable_feature="$disable_feature $features"
941 features="webdav-properties"
942 if test "x$XML_LIBS" \!= x -a "x$SQLITE_LIBS" \!= x; then
943         enable_feature="$enable_feature $features"
944 else
945         disable_feature="$disable_feature $features"
948 features="webdav-locks"
949 if test "x$UUID_LIBS" \!= x; then
950         enable_feature="$enable_feature $features"
951 else
952         disable_feature="$disable_feature $features"
956 dnl output
958 $ECHO
959 $ECHO "Plugins:"
960 $ECHO
962 $ECHO "enabled: "
963 for p in $do_build; do
964         $ECHO "  $p"
965 done | sort
967 $ECHO "disabled: "
968 for p in $no_build; do
969         $ECHO "  $p"
970 done | sort
972 $ECHO
973 $ECHO "Features:"
974 $ECHO
976 $ECHO "enabled: "
977 for p in $enable_feature; do
978         $ECHO "  $p"
979 done | sort
981 $ECHO "disabled: "
982 for p in $disable_feature; do
983         $ECHO "  $p"
984 done | sort
986 $ECHO