static build instructions using SCons or make
[lighttpd.git] / configure.ac
blob4c923e5140bb5ed83876fdaf5e02a7c6330f5da6
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   AC_PATH_PROG(PCRECONFIG, pcre-config)
376   if test x"$PCRECONFIG" != x; then
377     PCRE_LIB=`$PCRECONFIG --libs`
378     CPPFLAGS="$CPPFLAGS `$PCRECONFIG --cflags`"
379     AC_DEFINE([HAVE_LIBPCRE], [1], [libpcre])
380     AC_DEFINE([HAVE_PCRE_H], [1], [pcre.h])
381   else
382      AC_MSG_ERROR([pcre-config not found, install the pcre-devel package or build with --without-pcre])
383   fi
386 AC_SUBST(PCRE_LIB)
388 AC_MSG_CHECKING(for zlib support)
389 AC_ARG_WITH(zlib, AC_HELP_STRING([--with-zlib],[Enable zlib support for mod_compress]),
390     [WITH_ZLIB=$withval],[WITH_ZLIB=yes])
391 AC_MSG_RESULT([$WITH_ZLIB])
393 if test "$WITH_ZLIB" != "no"; then
394   AC_CHECK_LIB(z, deflate, [
395     AC_CHECK_HEADERS([zlib.h],[
396       Z_LIB=-lz
397       AC_DEFINE([HAVE_LIBZ], [1], [libz])
398       AC_DEFINE([HAVE_ZLIB_H], [1])
399     ])
400   ])
401   if test x$Z_LIB = x; then
402      AC_MSG_ERROR([zlib-headers and/or libs where not found, install them or build with --without-zlib])
403   fi
405 AC_SUBST(Z_LIB)
407 AC_MSG_CHECKING(for bzip2 support)
408 AC_ARG_WITH(bzip2, AC_HELP_STRING([--with-bzip2],[Enable bzip2 support for mod_compress]),
409     [WITH_BZIP2=$withval],[WITH_BZIP2=yes])
410 AC_MSG_RESULT([$WITH_BZIP2])
412 if test "$WITH_BZIP2" != "no"; then
413   AC_CHECK_LIB(bz2, BZ2_bzCompress, [
414     AC_CHECK_HEADERS([bzlib.h],[
415       BZ_LIB=-lbz2
416       AC_DEFINE([HAVE_LIBBZ2], [1], [libbz2])
417       AC_DEFINE([HAVE_BZLIB_H], [1])
418     ])
419   ])
420   if test x$BZ_LIB = x; then
421      AC_MSG_ERROR([bzip2-headers and/or libs where not found, install them or build with --without-bzip2])
422   fi
424 AC_SUBST(BZ_LIB)
426 dnl Check for gamin
427 AC_MSG_CHECKING(for FAM)
428 AC_ARG_WITH(fam, AC_HELP_STRING([--with-fam],[fam/gamin for reducing number of stat() calls]),
429 [WITH_FAM=$withval],[WITH_FAM=no])
430 AC_MSG_RESULT([$WITH_FAM])
432 if test "$WITH_FAM" != "no"; then
433   AC_CHECK_LIB(fam, FAMOpen2, [
434     AC_CHECK_HEADERS([fam.h],[
435       FAM_LIBS=-lfam
436       AC_DEFINE([HAVE_LIBFAM], [1], [libfam])
437       AC_DEFINE([HAVE_FAM_H], [1], [fam.h])
438     ])
439   ])
440   if test "x$FAM_LIBS" = x; then
441     PKG_CHECK_MODULES(FAM, gamin >= 0.1.0, [
442       AC_DEFINE([HAVE_LIBFAM], [1], [libfam])
443       AC_DEFINE([HAVE_FAM_H], [1], [fam.h])
444     ])
445   fi
446   OLD_LIBS=$LIBS
447   LIBS=$FAM_LIBS
448   AC_CHECK_FUNCS([FAMNoExists])
449   LIBS=$OLD_LIBS
451   if test x$FAM_LIBS = x; then
452      AC_MSG_ERROR([fam/gamin-headers and/or libs where not found, install them or build with --without-fam])
453   fi
456 AC_MSG_CHECKING(for properties in mod_webdav)
457 AC_ARG_WITH(webdav-props, AC_HELP_STRING([--with-webdav-props],[properties in mod_webdav]),
458 [WITH_WEBDAV_PROPS=$withval],[WITH_WEBDAV_PROPS=no])
459 AC_MSG_RESULT([$WITH_WEBDAV_PROPS])
461 if test "$WITH_WEBDAV_PROPS" != "no"; then
462   PKG_CHECK_MODULES(XML, libxml-2.0, [
463     AC_DEFINE([HAVE_LIBXML2], [1], [libxml2])
464     AC_DEFINE([HAVE_LIBXML_H], [1], [libxml.h])
465   ])
466   PKG_CHECK_MODULES(SQLITE, sqlite3, [
467     AC_DEFINE([HAVE_SQLITE3], [1], [libsqlite3])
468     AC_DEFINE([HAVE_SQLITE3_H], [1], [sqlite3.h])
469   ])
471   AC_MSG_CHECKING(for locks in mod_webdav)
472   AC_ARG_WITH(webdav-locks, AC_HELP_STRING([--with-webdav-locks],[locks in mod_webdav]),
473   [WITH_WEBDAV_LOCKS=$withval],[WITH_WEBDAV_LOCKS=no])
474   AC_MSG_RESULT([$WITH_WEBDAV_LOCKS])
476   if test "$WITH_WEBDAV_LOCKS" != "no"; then
477     AC_CHECK_LIB(uuid, uuid_unparse, [
478       AC_CHECK_HEADERS([uuid/uuid.h],[
479         UUID_LIBS=-luuid
480         AC_DEFINE([HAVE_UUID], [1], [libuuid])
481         AC_DEFINE([HAVE_UUID_H], [1], [uuid/uuid.h is available])
482       ])
483     ])
484   fi
486 AC_SUBST(UUID_LIBS)
488 dnl Check for gdbm
489 AC_MSG_CHECKING(for gdbm)
490 AC_ARG_WITH(gdbm, AC_HELP_STRING([--with-gdbm],[gdbm storage for mod_trigger_b4_dl]),
491 [WITH_GDBM=$withval],[WITH_GDBM=no])
492 AC_MSG_RESULT([$WITH_GDBM])
494 if test "$WITH_GDBM" != "no"; then
495  AC_CHECK_LIB(gdbm, gdbm_open, [
496          AC_CHECK_HEADERS([gdbm.h],[
497                  GDBM_LIB=-lgdbm
498                  AC_DEFINE([HAVE_GDBM], [1], [libgdbm])
499                  AC_DEFINE([HAVE_GDBM_H], [1])
500          ])
501  ])
502  AC_SUBST(GDBM_LIB)
505 dnl Check for memcached
506 AC_MSG_CHECKING(for memcached)
507 AC_ARG_WITH(memcached, AC_HELP_STRING([--with-memcached],[memcached storage for mod_trigger_b4_dl]),
508 [WITH_MEMCACHED=$withval],[WITH_MEMCACHED=no])
509 AC_MSG_RESULT([$WITH_MEMCACHED])
510 if test "$WITH_MEMCACHED" != "no"; then
511   AC_CHECK_LIB(memcached, memcached, [
512     AC_CHECK_HEADERS([libmemcached/memcached.h],[
513       MEMCACHED_LIB=-lmemcached
514       AC_DEFINE([USE_MEMCACHED], [1], [libmemcached])
515     ])
516   ])
517   AC_SUBST(MEMCACHED_LIB)
520 dnl Check for lua
521 AC_MSG_CHECKING(if lua-support is requested)
522 AC_ARG_WITH(lua, AC_HELP_STRING([--with-lua],[lua engine for mod_cml]),
523 [WITH_LUA=$withval],[WITH_LUA=no])
525 AC_MSG_RESULT($WITH_LUA)
526 if test "$WITH_LUA" != "no"; then
527   if test "$WITH_LUA" != "yes"; then
528     PKG_CHECK_MODULES(LUA, $WITH_LUA >= 5.1, [
529       AC_DEFINE([HAVE_LUA], [1], [liblua])
530       AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
531     ],[
532       AC_MSG_ERROR([Couldn't find requested lua pkg-config module $WITH_LUA])
533     ])
534   else
535     found_lua=0
536     for luaname in lua5.3 lua-5.3 lua5.2 lua-5.2 lua5.1 lua-5.1 lua; do
537       if test "$found_lua" = "0"; then
538         PKG_CHECK_MODULES(LUA, $luaname >= 5.1, [
539           AC_DEFINE([HAVE_LUA], [1], [liblua])
540           AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
541           found_lua=1
542         ], [
543           AC_MSG_NOTICE([Couldn't find $luaname])
544         ])
545       fi
546     done
547     if test "$found_lua" = "0"; then
548       AC_MSG_ERROR([Couldn't find any lua pkg-config module])
549     fi
550   fi
552   AC_SUBST(LUA_CFLAGS)
553   AC_SUBST(LUA_LIBS)
556 dnl search for crypt_r and (fallback) for crypt
557 save_LIBS=$LIBS
558 LIBS=
559 AC_SEARCH_LIBS([crypt_r],[crypt],[
560   AC_DEFINE([HAVE_CRYPT_R], [1], [crypt_r])
561   AC_CHECK_HEADERS([crypt.h],[
562     AC_DEFINE([HAVE_CRYPT_H], [1], [crypt.h])
563   ])
565   CRYPT_LIB=$LIBS
567   AC_SEARCH_LIBS([crypt],[crypt],[
568     AC_DEFINE([HAVE_CRYPT], [1], [crypt])
569     AC_CHECK_HEADERS([crypt.h],[
570       AC_DEFINE([HAVE_CRYPT_H], [1], [crypt.h])
571     ])
573     CRYPT_LIB=$LIBS
574   ])
576 LIBS=$save_LIBS
577 AC_SUBST([CRYPT_LIB])
579 save_LIBS=$LIBS
580 AC_SEARCH_LIBS(sendfilev,sendfile,[
581   if test "$ac_cv_search_sendfilev" != no; then
582     test "$ac_cv_search_sendfilev" = "none required" || SENDFILE_LIB="$ac_cv_search_sendfilev"
583     AC_DEFINE([HAVE_SENDFILEV], [1], [solaris sendfilev])
584   fi
586 LIBS=$save_LIBS
587 AC_SUBST(SENDFILE_LIB)
589 case $host_os in
590         *mingw* ) LIBS="$LIBS -lwsock32";;
591         * ) ;;
592 esac
594 AC_CHECK_FUNCS([dup2 getcwd inet_ntoa inet_ntop memset mmap munmap strchr \
595                   strdup strerror strstr strtol sendfile  getopt socket lstat \
596                   gethostbyname poll epoll_ctl getrlimit chroot \
597                   getuid select signal pathconf madvise posix_fadvise posix_madvise \
598                   writev sigaction sendfile64 send_file kqueue port_create localtime_r gmtime_r \
599                   memset_s explicit_bzero])
601 AC_MSG_CHECKING(if weak symbols are supported)
602 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
603                 __attribute__((weak)) void __dummy(void *x) { }
604                 void f(void *x) { __dummy(x); }
605         ]])],
606         [
607                 AC_MSG_RESULT(yes)
608                 AC_DEFINE([HAVE_WEAK_SYMBOLS], [1], [weak symbols are supported])
609         ],[AC_MSG_RESULT(no)])
611 AC_MSG_CHECKING(for Large File System support)
612 AC_ARG_ENABLE(lfs,
613  AC_HELP_STRING([--enable-lfs],[Turn on Large File System (default)]),
614  [case "${enableval}" in
615    yes) CPPFLAGS="${CPPFLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGE_FILES" ;;
616     no) ;;
617      *) AC_MSG_ERROR(bad value ${enableval} for --enable-lfs) ;;
618   esac],[CPPFLAGS="${CPPFLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGE_FILES"
619          enable_lfs=yes])
620 AC_MSG_RESULT($enableval)
622 AC_CHECK_SIZEOF(long)
623 AC_CHECK_SIZEOF(off_t)
625 if test "x$ac_cv_func_sendfile" = xyes; then
626         dnl check if sendfile works
627         AC_MSG_CHECKING(if sendfile works)
628         if test "x$cross_compiling" = xno; then
629         AC_TRY_RUN([
630                     #ifdef HAVE_SYS_SENDFILE_H
631                     #include <sys/sendfile.h>
632                     #endif /* HAVE_SYS_SENDFILE_H */
633                     #include <errno.h>
634                     int main() {
635                       int o = 0;
636                       if (-1 == sendfile(-1, 0, &o, 0) && errno == ENOSYS) return -1;
637                       return 0;
638                     } ],
639                     AC_MSG_RESULT(yes),
640                     [ AC_MSG_RESULT(no)
641                     AC_DEFINE([HAVE_SENDFILE_BROKEN], [1], [broken sendfile]) ] )
642         else
643               AC_MSG_RESULT(no, cross-compiling)
644               AC_DEFINE([HAVE_SENDFILE_BROKEN], [1], [broken sendfile])
645         fi
648 dnl Check for IPv6 support
650 AC_ARG_ENABLE(ipv6,
651  AC_HELP_STRING([--disable-ipv6],[disable IPv6 support]),
652  [case "${enableval}" in
653    yes) ipv6=true ;;
654     no) ipv6=false ;;
655      *) AC_MSG_ERROR(bad value ${enableval} for --enable-ipv6) ;;
656   esac],[ipv6=true])
658 if test x$ipv6 = xtrue; then
659   AC_CACHE_CHECK([for IPv6 support], ac_cv_ipv6_support,
660   [AC_TRY_LINK([ #include <sys/types.h>
661 #include <sys/socket.h>
662 #include <netinet/in.h>], [struct sockaddr_in6 s; struct in6_addr t=in6addr_any; int i=AF_INET6; s; t.s6_addr[0] = 0; ],
663   [ac_cv_ipv6_support=yes], [ac_cv_ipv6_support=no])])
665   if test "$ac_cv_ipv6_support" = yes; then
666     AC_DEFINE(HAVE_IPV6,1,[Whether to enable IPv6 support])
667   fi
670 # disable mmap by default; if a mmapped file gets truncated, the process gets a SIGBUS signal
671 # on reading the truncated area which we can't handle (yet).
672 # lighttpd may always use mmap with files it owns (created tmp files)
673 AC_ARG_ENABLE(mmap,
674   AC_HELP_STRING([--enable-mmap],[use mmap if available (DANGEROUS, allows local users to trigger SIGBUS crashes)]),
675   [case "${enableval}" in
676    yes) mmap=true ;;
677     no) mmap=false ;;
678      *) AC_MSG_ERROR(bad value ${enableval} for --enable-mmap) ;;
679   esac],[mmap=false])
681 if test x$mmap = xtrue; then
682   AC_DEFINE(ENABLE_MMAP, [1], [Use mmap if available])
686 AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes)
688 dnl check for fastcgi lib, for the tests only
689 fastcgi_found=no
690 AC_CHECK_LIB(fcgi, FCGI_Accept, [
691  AC_CHECK_HEADERS([fastcgi.h fastcgi/fastcgi.h],[
692    fastcgi_found=yes
693  ])
696 AM_CONDITIONAL(CHECK_WITH_FASTCGI, test "x$fastcgi_found" = xyes)
699 dnl check for extra compiler options (warning options)
700 if test "${GCC}" = "yes"; then
701   TRY_CFLAGS([-Wall -W -Wshadow -pedantic])
702   TRY_CFLAGS([-std=gnu99])
705 AC_ARG_ENABLE(extra-warnings,
706  AC_HELP_STRING([--enable-extra-warnings],[enable extra warnings (gcc specific)]),
707  [case "${enableval}" in
708    yes) extrawarnings=true ;;
709     no) extrawarnings=false ;;
710      *) AC_MSG_ERROR(bad value ${enableval} for --enable-extra-warnings) ;;
711   esac],[extrawarnings=false])
713 if test x$extrawarnings = xtrue; then
714   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])
715   TRY_LDFLAGS([-Wl,--as-needed])
718 dnl build version-id
719 LIGHTTPD_VERSION_ID=`echo $PACKAGE_VERSION | $AWK -F '.' '{print "(" $1 " << 16 | " $2 " << 8 | " $3 ")"}'`
720 AC_DEFINE_UNQUOTED([LIGHTTPD_VERSION_ID], [$LIGHTTPD_VERSION_ID], [lighttpd-version-id])
722 AC_CONFIG_FILES([Makefile src/Makefile
723                  doc/config/conf.d/Makefile \
724                  doc/config/vhosts.d/Makefile \
725                  doc/config/Makefile \
726                  doc/scripts/Makefile \
727                  doc/initscripts/Makefile \
728                  doc/systemd/Makefile \
729                  doc/outdated/Makefile \
730                  doc/Makefile \
731                  tests/Makefile \
732                  tests/docroot/Makefile \
733                  tests/docroot/123/Makefile \
734                  tests/docroot/www/Makefile \
735                  tests/docroot/www/go/Makefile \
736                  tests/docroot/www/indexfile/Makefile \
737                  tests/docroot/www/expire/Makefile \
738                  distribute.sh])
739 AC_OUTPUT
742 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"
743 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"
745 plugins="mod_rewrite mod_redirect mod_ssi mod_trigger_b4_dl"
746 features="regex-conditionals"
747 if test ! "x$PCRE_LIB" = x; then
748         do_build="$do_build $plugins"
749         enable_feature="$features"
750 else
751         no_build="$no_build $plugins"
752         disable_feature="$features"
755 plugins="mod_mysql_vhost"
756 if test ! "x$MYSQL_LIBS" = x; then
757         do_build="$do_build $plugins"
758 else
759         no_build="$no_build $plugins"
762 plugins="mod_cml mod_magnet"
763 if test ! "x$LUA_LIBS" = x; then
764         do_build="$do_build $plugins"
765 else
766         no_build="$no_build $plugins"
769 features="storage-gdbm"
770 if test ! "x$GDBM_LIB" = x; then
771         enable_feature="$enable_feature $features"
772 else
773         disable_feature="$disable_feature $features"
776 features="storage-memcached"
777 if test ! "x$MEMCACHED_LIB" = x; then
778         enable_feature="$enable_feature $features"
779 else
780         disable_feature="$disable_feature $features"
783 features="compress-gzip compress-deflate"
784 if test ! "x$Z_LIB" = x; then
785         enable_feature="$enable_feature $features"
786 else
787         disable_feature="$disable_feature $features"
790 features="compress-bzip2"
791 if test ! "x$BZ_LIB" = x; then
792         enable_feature="$enable_feature $features"
793 else
794         disable_feature="$disable_feature $features"
797 features="auth-ldap"
798 if test ! "x$LDAP_LIB" = x; then
799         enable_feature="$enable_feature $features"
800 else
801         disable_feature="$disable_feature $features"
804 features="network-openssl"
805 if test ! "x$SSL_LIB" = x; then
806         enable_feature="$enable_feature $features"
807 else
808         disable_feature="$disable_feature $features"
811 dnl no crypt call
812 features="auth-crypt"
813 if test "$ac_cv_search_crypt" = no; then
814         disable_feature="$disable_feature $features"
815 else
816         enable_feature="$enable_feature $features"
819 features="network-ipv6"
820 if test "$ac_cv_ipv6_support" = yes; then
821         enable_feature="$enable_feature $features"
822 else
823         disable_feature="$disable_feature $features"
826 features="large-files"
827 if test "$enable_lfs" = yes; then
828         enable_feature="$enable_feature $features"
829 else
830         disable_feature="$disable_feature $features"
833 features="stat-cache-fam"
834 if test ! "x$FAM_LIBS" = x; then
835         enable_feature="$enable_feature $features"
836 else
837         disable_feature="$disable_feature $features"
840 features="webdav-properties"
841 if test "x$XML_LIBS" \!= x -a "x$SQLITE_LIBS" \!= x; then
842         enable_feature="$enable_feature $features"
843 else
844         disable_feature="$disable_feature $features"
847 features="webdav-locks"
848 if test "x$UUID_LIBS" \!= x; then
849         enable_feature="$enable_feature $features"
850 else
851         disable_feature="$disable_feature $features"
855 dnl output
857 $ECHO
858 $ECHO "Plugins:"
859 $ECHO
861 $ECHO "enabled: "
862 for p in $do_build; do
863         $ECHO "  $p"
864 done | sort
866 $ECHO "disabled: "
867 for p in $no_build; do
868         $ECHO "  $p"
869 done | sort
871 $ECHO
872 $ECHO "Features:"
873 $ECHO
875 $ECHO "enabled: "
876 for p in $enable_feature; do
877         $ECHO "  $p"
878 done | sort
880 $ECHO "disabled: "
881 for p in $disable_feature; do
882         $ECHO "  $p"
883 done | sort
885 $ECHO