[mod_scgi] use goto error for all error cases in mod_scgi_set_defaults
[lighttpd.git] / configure.ac
blob682023b46bcc3bf0e1473d90ff53d46aa46b82b7
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.35], [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_TARGET
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-bzip2 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])
26 dnl Checks for programs.
27 AC_PROG_CC
28 AM_PROG_CC_C_O
29 AC_PROG_LD
30 AC_PROG_INSTALL
31 AC_PROG_AWK
32 AC_PROG_CPP
33 dnl AC_PROG_CXX
34 AC_PROG_LN_S
35 AC_PROG_MAKE_SET
37 dnl AM_PROG_AR is needed for some linker stuff
38 dnl AC_USE_SYSTEM_EXTENSIONS requires autoconf 2.60
39 m4_ifdef([AC_USE_SYSTEM_EXTENSIONS], [AC_USE_SYSTEM_EXTENSIONS])
40 dnl AM_PROG_AR requires automake 1.11 (and uses AC_COMPILE_IFELSE which wants AC_USE_SYSTEM_EXTENSIONS)
41 m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
43 dnl check environment
44 AC_AIX
45 AC_ISC_POSIX
46 AC_MINIX
48 dnl AC_CANONICAL_HOST
49 case $host_os in
50         *darwin*|*cygwin*|*aix*|*mingw* ) NO_RDYNAMIC=yes;;
51         * ) NO_RDYNAMIC=no;;
52 esac
53 AM_CONDITIONAL(NO_RDYNAMIC, test x$NO_RDYNAMIC = xyes)
55 AC_EXEEXT
57 dnl libtool
58 AC_DISABLE_STATIC
59 AC_ENABLE_SHARED
61 AC_LIBTOOL_DLOPEN
62 AC_PROG_LIBTOOL
64 dnl for solaris
65 CPPFLAGS="${CPPFLAGS} -D_REENTRANT -D__EXTENSIONS__"
67 dnl Checks for header files.
68 AC_HEADER_STDC
69 AC_HEADER_SYS_WAIT
70 AC_CHECK_HEADERS([arpa/inet.h fcntl.h netinet/in.h stdlib.h string.h \
71 sys/socket.h sys/time.h unistd.h sys/sendfile.h sys/uio.h \
72 getopt.h sys/epoll.h sys/select.h poll.h sys/poll.h sys/devpoll.h sys/filio.h \
73 sys/mman.h sys/event.h port.h pwd.h sys/syslimits.h \
74 sys/resource.h sys/un.h syslog.h sys/prctl.h uuid/uuid.h])
76 dnl Checks for typedefs, structures, and compiler characteristics.
77 AC_C_CONST
78 AC_C_INLINE
79 AC_C_CHAR_UNSIGNED
80 AC_TYPE_OFF_T
81 AC_TYPE_PID_T
82 AC_TYPE_SIZE_T
84 AC_CHECK_MEMBER(struct tm.tm_gmtoff,[AC_DEFINE([HAVE_STRUCT_TM_GMTOFF],[1],[gmtoff in struct tm])],,[#include <time.h>])
85 AC_CHECK_TYPES(struct sockaddr_storage,,,[#include <sys/socket.h>])
86 AC_CHECK_TYPES(socklen_t,,,[#include <sys/types.h>
87 #include <sys/socket.h>])
89 dnl Checks for library functions.
90 AC_FUNC_FORK
91 dnl AC_FUNC_MALLOC
92 dnl AC_FUNC_MMAP
93 dnl AC_FUNC_REALLOC
94 AC_TYPE_SIGNAL
95 AC_FUNC_STAT
96 AC_FUNC_STRFTIME
97 AC_CHECK_FUNCS([issetugid inet_pton])
99 if test -z "$PKG_CONFIG"; then
100   AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
103 dnl checking for libev
104 AC_MSG_CHECKING(for libev support)
105 AC_ARG_WITH(libev,
106     AC_HELP_STRING([--with-libev@<:@=PATH@:>@],[Include libev support for fdevent handlers in PATH/include and PATH/lib]),
107     [WITH_LIBEV=$withval],[WITH_LIBEV=no])
109 LIBEV_CFLAGS=""
110 LIBEV_LIBS=""
112 if test "$WITH_LIBEV" != "no"; then
113         PKG_CHECK_MODULES(LIBEV, libev, [], [
114                 dnl no pkg-config for libev, searching manually:
116                 if test "$WITH_LIBEV" != "yes"; then
117                         LIBEV_CFLAGS="-I$WITH_LIBEV/include"
118                         LIBEV_LIBS="-L$WITH_LIBEV/lib -lev"
119                 else
120                         AC_CHECK_HEADERS([ev.h],[
121                                 AC_CHECK_LIB([ev], [ev_time], [
122                                                 LIBEV_CFLAGS=""
123                                                 LIBEV_LIBS="-lev"
124                                         ],[
125                                         AC_MSG_ERROR([libev not found])
126                                         ]
127                                 )],[
128                                         AC_MSG_ERROR([libev not found])
129                                 ]
130                         )
131                 fi
132         ])
134         AC_DEFINE([HAVE_LIBEV], [1], [libev support])
137 AC_SUBST(LIBEV_CFLAGS)
138 AC_SUBST(LIBEV_LIBS)
140 dnl Checks for database.
141 MYSQL_INCLUDE=""
142 MYSQL_LIBS=""
144 AC_MSG_CHECKING(for MySQL support)
145 AC_ARG_WITH(mysql,
146     AC_HELP_STRING([--with-mysql@<:@=PATH@:>@],[Include MySQL support. PATH is the path to 'mysql_config']),
147     [WITH_MYSQL=$withval],[WITH_MYSQL=no])
149 if test "$WITH_MYSQL" != "no"; then
150   AC_MSG_RESULT(yes)
151   if test "$WITH_MYSQL" = "yes"; then
152     AC_PATH_PROG(MYSQL_CONFIG, mysql_config)
153   else
154     MYSQL_CONFIG=$WITH_MYSQL
155   fi
157   if test "$MYSQL_CONFIG" = ""; then
158     AC_MSG_ERROR(mysql_config is not found)
159   fi
160   if test \! -x $MYSQL_CONFIG; then
161     AC_MSG_ERROR(mysql_config not exists or not executable, use --with-mysql=path-to-mysql_config)
162   fi
164   if $MYSQL_CONFIG | grep -- '--include' > /dev/null ; then
165     MYSQL_INCLUDE="`$MYSQL_CONFIG --include | sed s/\'//g`"
166   else
167     MYSQL_INCLUDE="`$MYSQL_CONFIG --cflags | sed s/\'//g`"
168   fi
169   MYSQL_LIBS="`$MYSQL_CONFIG --libs | sed s/\'//g`"
171   AC_MSG_CHECKING(for MySQL includes at)
172   AC_MSG_RESULT($MYSQL_INCLUDE)
174   AC_MSG_CHECKING(for MySQL libraries at)
175   AC_MSG_RESULT($MYSQL_LIBS)
176 dnl check for errmsg.h, which isn't installed by some versions of 3.21
177   old_CPPFLAGS="$CPPFLAGS"
178   CPPFLAGS="$CPPFLAGS $MYSQL_INCLUDE"
179   AC_CHECK_HEADERS(errmsg.h mysql.h)
180   CPPFLAGS="$old_CPPFLAGS"
182   AC_DEFINE([HAVE_MYSQL], [1], [mysql support])
183 else
184   AC_MSG_RESULT(no)
187 AC_SUBST(MYSQL_LIBS)
188 AC_SUBST(MYSQL_INCLUDE)
190 dnl Check for LDAP
191 AC_MSG_CHECKING(for LDAP support)
192 AC_ARG_WITH(ldap, AC_HELP_STRING([--with-ldap],[enable LDAP support]),
193 [WITH_LDAP=$withval], [WITH_LDAP=no])
194 AC_MSG_RESULT([$withval])
195 if test "$WITH_LDAP" != "no"; then
196  AC_CHECK_LIB(ldap, ldap_bind, [
197   AC_CHECK_HEADERS([ldap.h],[
198     LDAP_LIB=-lldap
199     AC_DEFINE([HAVE_LIBLDAP], [1], [libldap])
200     AC_DEFINE([HAVE_LDAP_H], [1])
201     AC_DEFINE([LDAP_DEPRECATED], [1], [Using deprecated ldap api])
202   ])
203  ])
204  AC_SUBST(LDAP_LIB)
205  AC_CHECK_LIB(lber, ber_printf, [
206   AC_CHECK_HEADERS([lber.h],[
207     LBER_LIB=-llber
208     AC_DEFINE([HAVE_LIBLBER], [1], [liblber])
209     AC_DEFINE([HAVE_LBER_H], [1])
210   ])
211  ])
212  AC_SUBST(LBER_LIB)
215 dnl Check for xattr
216 AC_MSG_CHECKING(for extended attributes support)
217 AC_ARG_WITH(attr, AC_HELP_STRING([--with-attr],[enable extended attribute support]),
218 [WITH_ATTR=$withval],[WITH_ATTR=no])
219 AC_MSG_RESULT($withval)
220 if test "$WITH_ATTR" != "no"; then
221  AC_CHECK_LIB(attr, attr_get, [
222         AC_CHECK_HEADERS([attr/attributes.h],[
223                 ATTR_LIB=-lattr
224                 AC_DEFINE([HAVE_XATTR], [1], [libattr])
225                 AC_DEFINE([HAVE_ATTR_ATTRIBUTES_H], [1])
226         ])
227  ])
228  AC_SUBST(ATTR_LIB)
231 dnl openssl on solaris needs -lsocket -lnsl
232 AC_SEARCH_LIBS(socket,socket)
233 AC_SEARCH_LIBS(gethostbyname,nsl socket)
234 AC_SEARCH_LIBS(hstrerror,resolv)
236 save_LIBS=$LIBS
237 AC_SEARCH_LIBS(dlopen,dl,[
238   AC_CHECK_HEADERS([dlfcn.h],[
239     if test "$ac_cv_search_dlopen" != no; then
240       test "$ac_cv_search_dlopen" = "none required" || DL_LIB="$ac_cv_search_dlopen"
241     fi
243     AC_DEFINE([HAVE_LIBDL], [1], [libdl])
244     AC_DEFINE([HAVE_DLFCN_H], [1])
245   ])
247 LIBS=$save_LIBS
248 AC_SUBST(DL_LIB)
250 dnl Check for valgrind
251 AC_MSG_CHECKING(for valgrind)
252 AC_ARG_WITH(valgrind, AC_HELP_STRING([--with-valgrind],[enable internal support for valgrind]),
253 [WITH_VALGRIND=$withval],[WITH_VALGRIND=no])
254 AC_MSG_RESULT([$WITH_VALGRIND])
255 if test "$WITH_VALGRIND" != "no"; then
256  AC_CHECK_HEADERS([valgrind/valgrind.h])
259 dnl Check for openssl
260 AC_MSG_CHECKING(for OpenSSL)
261 AC_ARG_WITH(openssl,
262     AC_HELP_STRING([--with-openssl@<:@=DIR@:>@],[Include openssl support (default no)]),
263     [WITH_OPENSSL=$withval],[WITH_OPENSSL=no])
265 if test "$WITH_OPENSSL" != "no"; then
266     use_openssl=yes
267     if test "$WITH_OPENSSL" != "yes"; then
268         CPPFLAGS="$CPPFLAGS -I$WITH_OPENSSL/include"
269         LDFLAGS="$LDFLAGS -L$WITH_OPENSSL/lib"
270     fi
271 else
272     use_openssl=no
274 AC_MSG_RESULT([$use_openssl])
276 AC_ARG_WITH(openssl-includes,
277     AC_HELP_STRING([--with-openssl-includes=DIR],[OpenSSL includes]),
278     [ use_openssl=yes CPPFLAGS="$CPPFLAGS -I$withval" ]
281 AC_ARG_WITH(openssl-libs,
282     AC_HELP_STRING([--with-openssl-libs=DIR],[OpenSSL libraries]),
283     [ use_openssl=yes LDFLAGS="$LDFLAGS -L$withval" ]
286 AC_ARG_WITH(kerberos5,
287     AC_HELP_STRING([--with-kerberos5],[use Kerberos5 support with OpenSSL]),
288     [ use_kerberos=yes ], [use_kerberos=no]
291 if test "x$use_openssl" = "xyes"; then
292     if test "x$use_kerberos" != "xyes"; then
293         CPPFLAGS="$CPPFLAGS -DOPENSSL_NO_KRB5"
294     fi
296     AC_CHECK_HEADERS([openssl/ssl.h])
297     OLDLIBS="$LIBS"
298     AC_CHECK_LIB(crypto, BIO_f_base64, [
299       AC_CHECK_LIB(ssl, SSL_new, [ SSL_LIB="-lssl -lcrypto"
300                                  AC_DEFINE(HAVE_LIBSSL, [], [Have libssl]) ], [], [ -lcrypto "$DL_LIB" ])
301     ], [], [])
302     LIBS="$OLDLIBS"
303     AC_SUBST(SSL_LIB)
306 AC_MSG_CHECKING(for perl regular expressions support)
307 AC_ARG_WITH(pcre, AC_HELP_STRING([--with-pcre],[Enable pcre support (default yes)]),
308     [WITH_PCRE=$withval],[WITH_PCRE=yes])
309 AC_MSG_RESULT([$WITH_PCRE])
311 if test "$WITH_PCRE" != "no"; then
312   AC_PATH_PROG(PCRECONFIG, pcre-config)
314   if test x"$PCRECONFIG" != x; then
315     PCRE_LIB=`$PCRECONFIG --libs`
316     CPPFLAGS="$CPPFLAGS `$PCRECONFIG --cflags`"
317     AC_DEFINE([HAVE_LIBPCRE], [1], [libpcre])
318     AC_DEFINE([HAVE_PCRE_H], [1], [pcre.h])
319   else
320      AC_MSG_ERROR([pcre-config not found, install the pcre-devel package or build with --without-pcre])
321   fi
324 AC_SUBST(PCRE_LIB)
326 AC_MSG_CHECKING(for zlib support)
327 AC_ARG_WITH(zlib, AC_HELP_STRING([--with-zlib],[Enable zlib support for mod_compress]),
328     [WITH_ZLIB=$withval],[WITH_ZLIB=yes])
329 AC_MSG_RESULT([$WITH_ZLIB])
331 if test "$WITH_ZLIB" != "no"; then
332   AC_CHECK_LIB(z, deflate, [
333     AC_CHECK_HEADERS([zlib.h],[
334       Z_LIB=-lz
335       AC_DEFINE([HAVE_LIBZ], [1], [libz])
336       AC_DEFINE([HAVE_ZLIB_H], [1])
337     ])
338   ])
339   if test x$Z_LIB = x; then
340      AC_MSG_ERROR([zlib-headers and/or libs where not found, install them or build with --without-zlib])
341   fi
343 AC_SUBST(Z_LIB)
345 AC_MSG_CHECKING(for bzip2 support)
346 AC_ARG_WITH(bzip2, AC_HELP_STRING([--with-bzip2],[Enable bzip2 support for mod_compress]),
347     [WITH_BZIP2=$withval],[WITH_BZIP2=yes])
348 AC_MSG_RESULT([$WITH_BZIP2])
350 if test "$WITH_BZIP2" != "no"; then
351   AC_CHECK_LIB(bz2, BZ2_bzCompress, [
352     AC_CHECK_HEADERS([bzlib.h],[
353       BZ_LIB=-lbz2
354       AC_DEFINE([HAVE_LIBBZ2], [1], [libbz2])
355       AC_DEFINE([HAVE_BZLIB_H], [1])
356     ])
357   ])
358   if test x$BZ_LIB = x; then
359      AC_MSG_ERROR([bzip2-headers and/or libs where not found, install them or build with --without-bzip2])
360   fi
362 AC_SUBST(BZ_LIB)
364 dnl Check for gamin
365 AC_MSG_CHECKING(for FAM)
366 AC_ARG_WITH(fam, AC_HELP_STRING([--with-fam],[fam/gamin for reducing number of stat() calls]),
367 [WITH_FAM=$withval],[WITH_FAM=no])
368 AC_MSG_RESULT([$WITH_FAM])
370 if test "$WITH_FAM" != "no"; then
371   AC_CHECK_LIB(fam, FAMOpen2, [
372     AC_CHECK_HEADERS([fam.h],[
373       FAM_LIBS=-lfam
374       AC_DEFINE([HAVE_LIBFAM], [1], [libfam])
375       AC_DEFINE([HAVE_FAM_H], [1], [fam.h])
376     ])
377   ])
378   if test "x$FAM_LIBS" = x; then
379     PKG_CHECK_MODULES(FAM, gamin >= 0.1.0, [
380       AC_DEFINE([HAVE_LIBFAM], [1], [libfam])
381       AC_DEFINE([HAVE_FAM_H], [1], [fam.h])
382     ])
383   fi
384   OLD_LIBS=$LIBS
385   LIBS=$FAM_LIBS
386   AC_CHECK_FUNCS([FAMNoExists])
387   LIBS=$OLD_LIBS
388   
389   if test x$FAM_LIBS = x; then
390      AC_MSG_ERROR([fam/gamin-headers and/or libs where not found, install them or build with --without-fam])
391   fi
394 AC_MSG_CHECKING(for properties in mod_webdav)
395 AC_ARG_WITH(webdav-props, AC_HELP_STRING([--with-webdav-props],[properties in mod_webdav]),
396 [WITH_WEBDAV_PROPS=$withval],[WITH_WEBDAV_PROPS=no])
397 AC_MSG_RESULT([$WITH_WEBDAV_PROPS])
399 if test "$WITH_WEBDAV_PROPS" != "no"; then
400  PKG_CHECK_MODULES(XML, libxml-2.0, [
401     AC_DEFINE([HAVE_LIBXML2], [1], [libxml2])
402     AC_DEFINE([HAVE_LIBXML_H], [1], [libxml.h])
403  ])
404  PKG_CHECK_MODULES(SQLITE, sqlite3, [
405     AC_DEFINE([HAVE_SQLITE3], [1], [libsqlite3])
406     AC_DEFINE([HAVE_SQLITE3_H], [1], [sqlite3.h])
407  ])
409  AC_MSG_CHECKING(for locks in mod_webdav)
410  AC_ARG_WITH(webdav-locks, AC_HELP_STRING([--with-webdav-locks],[locks in mod_webdav]),
411  [WITH_WEBDAV_LOCKS=$withval],[WITH_WEBDAV_LOCKS=no])
412  AC_MSG_RESULT([$WITH_WEBDAV_LOCKS])
414  if test "$WITH_WEBDAV_LOCKS" != "no"; then
415    AC_CHECK_LIB(uuid, uuid_unparse, [
416          AC_CHECK_HEADERS([uuid/uuid.h],[
417                  UUID_LIBS=-luuid
418                  AC_DEFINE([HAVE_UUID], [1], [libuuid])
419                  AC_DEFINE([HAVE_UUID_H], [1], [uuid/uuid.h is available])
420          ])
421  ])
423  fi
425 AC_SUBST(UUID_LIBS)
427 dnl Check for gdbm
428 AC_MSG_CHECKING(for gdbm)
429 AC_ARG_WITH(gdbm, AC_HELP_STRING([--with-gdbm],[gdbm storage for mod_trigger_b4_dl]),
430 [WITH_GDBM=$withval],[WITH_GDBM=no])
431 AC_MSG_RESULT([$WITH_GDBM])
433 if test "$WITH_GDBM" != "no"; then
434  AC_CHECK_LIB(gdbm, gdbm_open, [
435          AC_CHECK_HEADERS([gdbm.h],[
436                  GDBM_LIB=-lgdbm
437                  AC_DEFINE([HAVE_GDBM], [1], [libgdbm])
438                  AC_DEFINE([HAVE_GDBM_H], [1])
439          ])
440  ])
441  AC_SUBST(GDBM_LIB)
444 dnl Check for memcache
445 AC_MSG_CHECKING(for memcache)
446 AC_ARG_WITH(memcache, AC_HELP_STRING([--with-memcache],[memcached storage for mod_trigger_b4_dl]),
447 [WITH_MEMCACHE=$withval],[WITH_MEMCACHE=no])
448 AC_MSG_RESULT([$WITH_MEMCACHE])
449 if test "$WITH_MEMCACHE" != "no"; then
450  AC_CHECK_LIB(memcache, mc_new, [
451          AC_CHECK_HEADERS([memcache.h],[
452                  MEMCACHE_LIB=-lmemcache
453                  AC_DEFINE([HAVE_MEMCACHE], [1], [libmemcache])
454                  AC_DEFINE([HAVE_MEMCACHE_H], [1], [memcache.h])
455          ])
456  ])
457  AC_SUBST(MEMCACHE_LIB)
460 dnl Check for lua
461 AC_MSG_CHECKING(if lua-support is requested)
462 AC_ARG_WITH(lua, AC_HELP_STRING([--with-lua],[lua engine for mod_cml]),
463 [WITH_LUA=$withval],[WITH_LUA=no])
465 AC_MSG_RESULT($WITH_LUA)
466 if test "$WITH_LUA" != "no"; then
467  if test "$WITH_LUA" = "yes"; then
468   WITH_LUA=lua
469  fi
470  dnl first check for lua5.1 (debian and others), then lua-5.1 (freebsd), then $WITH_LUA (defaults to lua)
471  dnl check "lua" last now that lua5.2 is out
472  PKG_CHECK_MODULES(LUA, lua5.1 >= 5.1, [
473   AC_DEFINE([HAVE_LUA], [1], [liblua])
474   AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
475  ],[
476   PKG_CHECK_MODULES(LUA, lua-5.1 >= 5.1, [
477    AC_DEFINE([HAVE_LUA], [1], [liblua])
478    AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
479   ],[
480    PKG_CHECK_MODULES(LUA, $WITH_LUA >= 5.1, [
481     AC_DEFINE([HAVE_LUA], [1], [liblua])
482     AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
483    ])
484   ])
485  ])
487  AC_SUBST(LUA_CFLAGS)
488  AC_SUBST(LUA_LIBS)
491 save_LIBS=$LIBS
492 AC_SEARCH_LIBS(crypt,crypt,[
493   AC_CHECK_HEADERS([crypt.h],[
494     AC_DEFINE([HAVE_CRYPT_H], [1])
495   ])
497   AC_DEFINE([HAVE_LIBCRYPT], [1], [libcrypt])
498   if test "$ac_cv_search_crypt" != no; then
499     test "$ac_cv_search_crypt" = "none required" || CRYPT_LIB="$ac_cv_search_crypt"
500   fi
502 LIBS=$save_LIBS
503 AC_SUBST(CRYPT_LIB)
505 save_LIBS=$LIBS
506 AC_SEARCH_LIBS(sendfilev,sendfile,[
507   if test "$ac_cv_search_sendfilev" != no; then
508     test "$ac_cv_search_sendfilev" = "none required" || SENDFILE_LIB="$ac_cv_search_sendfilev"
509     AC_DEFINE([HAVE_SENDFILEV], [1], [solaris sendfilev])
510   fi
512 LIBS=$save_LIBS
513 AC_SUBST(SENDFILE_LIB)
515 case $host_os in
516         *mingw* ) LIBS="$LIBS -lwsock32";;
517         * ) ;;
518 esac
520 AC_CHECK_FUNCS([dup2 getcwd inet_ntoa inet_ntop memset mmap munmap strchr \
521                   strdup strerror strstr strtol sendfile  getopt socket lstat \
522                   gethostbyname poll epoll_ctl getrlimit chroot \
523                   getuid select signal pathconf madvise posix_fadvise posix_madvise \
524                   writev sigaction sendfile64 send_file kqueue port_create localtime_r gmtime_r])
526 AC_MSG_CHECKING(for Large File System support)
527 AC_ARG_ENABLE(lfs,
528  AC_HELP_STRING([--enable-lfs],[Turn on Large File System (default)]),
529  [case "${enableval}" in
530    yes) CPPFLAGS="${CPPFLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGE_FILES" ;;
531     no) ;;
532      *) AC_MSG_ERROR(bad value ${enableval} for --enable-lfs) ;;
533   esac],[CPPFLAGS="${CPPFLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGE_FILES"
534          enable_lfs=yes])
535 AC_MSG_RESULT($enableval)
537 AC_CHECK_SIZEOF(long)
538 AC_CHECK_SIZEOF(off_t)
540 if test "x$ac_cv_func_sendfile" = xyes; then
541         dnl check if sendfile works
542         AC_MSG_CHECKING(if sendfile works)
543         if test "x$cross_compiling" = xno; then
544         AC_TRY_RUN([
545                     #ifdef HAVE_SYS_SENDFILE_H
546                     #include <sys/sendfile.h>
547                     #endif /* HAVE_SYS_SENDFILE_H */
548                     #include <errno.h>
549                     int main() {
550                       int o = 0;
551                       if (-1 == sendfile(-1, 0, &o, 0) && errno == ENOSYS) return -1;
552                       return 0;
553                     } ],
554                     AC_MSG_RESULT(yes),
555                     [ AC_MSG_RESULT(no)
556                     AC_DEFINE([HAVE_SENDFILE_BROKEN], [1], [broken sendfile]) ] )
557         else
558               AC_MSG_RESULT(no, cross-compiling)
559               AC_DEFINE([HAVE_SENDFILE_BROKEN], [1], [broken sendfile])
560         fi
563 dnl Check for IPv6 support
565 AC_ARG_ENABLE(ipv6,
566  AC_HELP_STRING([--disable-ipv6],[disable IPv6 support]),
567  [case "${enableval}" in
568    yes) ipv6=true ;;
569     no) ipv6=false ;;
570      *) AC_MSG_ERROR(bad value ${enableval} for --enable-ipv6) ;;
571   esac],[ipv6=true])
573 if test x$ipv6 = xtrue; then
574   AC_CACHE_CHECK([for IPv6 support], ac_cv_ipv6_support,
575   [AC_TRY_LINK([ #include <sys/types.h>
576 #include <sys/socket.h>
577 #include <netinet/in.h>], [struct sockaddr_in6 s; struct in6_addr t=in6addr_any; int i=AF_INET6; s; t.s6_addr[0] = 0; ],
578   [ac_cv_ipv6_support=yes], [ac_cv_ipv6_support=no])])
580   if test "$ac_cv_ipv6_support" = yes; then
581     AC_DEFINE(HAVE_IPV6,1,[Whether to enable IPv6 support])
582   fi
585 # disable mmap by default; if a mmapped file gets truncated, the process gets a SIGBUS signal
586 # on reading the truncated area which we can't handle (yet).
587 # lighttpd may always use mmap with files it owns (created tmp files)
588 AC_ARG_ENABLE(mmap,
589   AC_HELP_STRING([--enable-mmap],[use mmap if available (DANGEROUS, allows local users to trigger SIGBUS crashes)]),
590   [case "${enableval}" in
591    yes) mmap=true ;;
592     no) mmap=false ;;
593      *) AC_MSG_ERROR(bad value ${enableval} for --enable-mmap) ;;
594   esac],[mmap=false])
596 if test x$mmap = xtrue; then
597   AC_DEFINE(ENABLE_MMAP, [1], [Use mmap if available])
601 AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes)
603 dnl check for fastcgi lib, for the tests only
604 fastcgi_found=no
605 AC_CHECK_LIB(fcgi, FCGI_Accept, [
606  AC_CHECK_HEADERS([fastcgi.h fastcgi/fastcgi.h],[
607    fastcgi_found=yes
608  ])
611 AM_CONDITIONAL(CHECK_WITH_FASTCGI, test "x$fastcgi_found" = xyes)
614 dnl check for extra compiler options (warning options)
615 if test "${GCC}" = "yes"; then
616     CFLAGS="${CFLAGS} -Wall -W -Wshadow -pedantic -std=gnu99"
619 AC_ARG_ENABLE(extra-warnings,
620  AC_HELP_STRING([--enable-extra-warnings],[enable extra warnings (gcc specific)]),
621  [case "${enableval}" in
622    yes) extrawarnings=true ;;
623     no) extrawarnings=false ;;
624      *) AC_MSG_ERROR(bad value ${enableval} for --enable-extra-warnings) ;;
625   esac],[extrawarnings=false])
627 if test x$extrawarnings = xtrue; then
628     CFLAGS="${CFLAGS} -g -O2 -g2 -Wall -Wmissing-declarations -Wdeclaration-after-statement -Wno-pointer-sign -Wcast-align -Winline -Wsign-compare -Wnested-externs -Wpointer-arith -Wl,--as-needed -Wformat-security"
631 dnl build version-id
632 LIGHTTPD_VERSION_ID=`echo $PACKAGE_VERSION | $AWK -F '.' '{print "(" $1 " << 16 | " $2 " << 8 | " $3 ")"}'`
633 AC_DEFINE_UNQUOTED([LIGHTTPD_VERSION_ID], [$LIGHTTPD_VERSION_ID], [lighttpd-version-id])
635 AC_CONFIG_FILES([Makefile src/Makefile
636                  doc/config/conf.d/Makefile \
637                  doc/config/vhosts.d/Makefile \
638                  doc/config/Makefile \
639                  doc/scripts/Makefile \
640                  doc/initscripts/Makefile \
641                  doc/systemd/Makefile \
642                  doc/outdated/Makefile \
643                  doc/Makefile \
644                  tests/Makefile \
645                  tests/docroot/Makefile \
646                  tests/docroot/123/Makefile \
647                  tests/docroot/www/Makefile \
648                  tests/docroot/www/go/Makefile \
649                  tests/docroot/www/indexfile/Makefile \
650                  tests/docroot/www/expire/Makefile \
651                  distribute.sh])
652 AC_OUTPUT
655 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"
656 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"
658 plugins="mod_rewrite mod_redirect mod_ssi mod_trigger_b4_dl"
659 features="regex-conditionals"
660 if test ! "x$PCRE_LIB" = x; then
661         do_build="$do_build $plugins"
662         enable_feature="$features"
663 else
664         no_build="$no_build $plugins"
665         disable_feature="$features"
668 plugins="mod_mysql_vhost"
669 if test ! "x$MYSQL_LIBS" = x; then
670         do_build="$do_build $plugins"
671 else
672         no_build="$no_build $plugins"
675 plugins="mod_cml mod_magnet"
676 if test ! "x$LUA_LIBS" = x; then
677         do_build="$do_build $plugins"
678 else
679         no_build="$no_build $plugins"
682 features="storage-gdbm"
683 if test ! "x$GDBM_LIB" = x; then
684         enable_feature="$enable_feature $features"
685 else
686         disable_feature="$disable_feature $features"
689 features="storage-memcache"
690 if test ! "x$MEMCACHE_LIB" = x; then
691         enable_feature="$enable_feature $features"
692 else
693         disable_feature="$disable_feature $features"
696 features="compress-gzip compress-deflate"
697 if test ! "x$Z_LIB" = x; then
698         enable_feature="$enable_feature $features"
699 else
700         disable_feature="$disable_feature $features"
703 features="compress-bzip2"
704 if test ! "x$BZ_LIB" = x; then
705         enable_feature="$enable_feature $features"
706 else
707         disable_feature="$disable_feature $features"
710 features="auth-ldap"
711 if test ! "x$LDAP_LIB" = x; then
712         enable_feature="$enable_feature $features"
713 else
714         disable_feature="$disable_feature $features"
717 features="network-openssl"
718 if test ! "x$SSL_LIB" = x; then
719         enable_feature="$enable_feature $features"
720 else
721         disable_feature="$disable_feature $features"
724 dnl no crypt call
725 features="auth-crypt"
726 if test "$ac_cv_search_crypt" = no; then
727         disable_feature="$disable_feature $features"
728 else
729         enable_feature="$enable_feature $features"
732 features="network-ipv6"
733 if test "$ac_cv_ipv6_support" = yes; then
734         enable_feature="$enable_feature $features"
735 else
736         disable_feature="$disable_feature $features"
739 features="large-files"
740 if test "$enable_lfs" = yes; then
741         enable_feature="$enable_feature $features"
742 else
743         disable_feature="$disable_feature $features"
746 features="stat-cache-fam"
747 if test ! "x$FAM_LIBS" = x; then
748         enable_feature="$enable_feature $features"
749 else
750         disable_feature="$disable_feature $features"
753 features="webdav-properties"
754 if test "x$XML_LIBS" \!= x -a "x$SQLITE_LIBS" \!= x; then
755         enable_feature="$enable_feature $features"
756 else
757         disable_feature="$disable_feature $features"
760 features="webdav-locks"
761 if test "x$UUID_LIBS" \!= x; then
762         enable_feature="$enable_feature $features"
763 else
764         disable_feature="$disable_feature $features"
768 dnl output
770 $ECHO
771 $ECHO "Plugins:"
772 $ECHO
774 $ECHO "enabled: "
775 for p in $do_build; do
776         $ECHO "  $p"
777 done | sort
779 $ECHO "disabled: "
780 for p in $no_build; do
781         $ECHO "  $p"
782 done | sort
784 $ECHO
785 $ECHO "Features:"
786 $ECHO
788 $ECHO "enabled: "
789 for p in $enable_feature; do
790         $ECHO "  $p"
791 done | sort
793 $ECHO "disabled: "
794 for p in $disable_feature; do
795         $ECHO "  $p"
796 done | sort
798 $ECHO