1dnl                                               -*- Autoconf -*-
2dnl Process this file with autoconf to produce a configure script.
3AC_PREREQ(2.57)
4AC_INIT([lighttpd], [1.4.39], [contact@lighttpd.net])
5AC_CONFIG_SRCDIR([src/server.c])
6AC_CONFIG_HEADER([config.h])
7AC_CONFIG_MACRO_DIR([m4])
8
9AC_CANONICAL_TARGET
10
11AM_INIT_AUTOMAKE([-Wall -Wportability -Wno-override -Werror foreign dist-bzip2 tar-ustar])
12
13dnl enable with --enable-silent-rules or make V=0 (needs automake >= 1.11)
14m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES])
15
16dnl Checks for programs.
17AC_PROG_CC
18AM_PROG_CC_C_O
19AC_PROG_LD
20AC_PROG_INSTALL
21AC_PROG_AWK
22AC_PROG_CPP
23dnl AC_PROG_CXX
24AC_PROG_LN_S
25AC_PROG_MAKE_SET
26
27dnl check environment
28AC_AIX
29AC_ISC_POSIX
30AC_MINIX
31
32dnl AC_CANONICAL_HOST
33case $host_os in
34	*darwin*|*cygwin*|*aix*|*mingw* ) NO_RDYNAMIC=yes;;
35	* ) NO_RDYNAMIC=no;;
36esac
37AM_CONDITIONAL(NO_RDYNAMIC, test x$NO_RDYNAMIC = xyes)
38
39AC_EXEEXT
40
41dnl more automake stuff
42AM_C_PROTOTYPES
43
44dnl libtool
45AC_DISABLE_STATIC
46AC_ENABLE_SHARED
47
48AC_LIBTOOL_DLOPEN
49AC_PROG_LIBTOOL
50
51dnl for solaris
52CPPFLAGS="${CPPFLAGS} -D_REENTRANT -D__EXTENSIONS__"
53
54dnl Checks for header files.
55AC_HEADER_STDC
56AC_HEADER_SYS_WAIT
57AC_CHECK_HEADERS([arpa/inet.h fcntl.h netinet/in.h stdlib.h string.h \
58sys/socket.h sys/time.h unistd.h sys/sendfile.h sys/uio.h \
59getopt.h sys/epoll.h sys/select.h poll.h sys/poll.h sys/devpoll.h sys/filio.h \
60sys/mman.h sys/event.h port.h pwd.h sys/syslimits.h \
61sys/resource.h sys/un.h syslog.h sys/prctl.h uuid/uuid.h])
62
63dnl Checks for typedefs, structures, and compiler characteristics.
64AC_C_CONST
65AC_C_INLINE
66AC_C_CHAR_UNSIGNED
67AC_TYPE_OFF_T
68AC_TYPE_PID_T
69AC_TYPE_SIZE_T
70
71AC_CHECK_MEMBER(struct tm.tm_gmtoff,[AC_DEFINE([HAVE_STRUCT_TM_GMTOFF],[1],[gmtoff in struct tm])],,[#include <time.h>])
72AC_CHECK_TYPES(struct sockaddr_storage,,,[#include <sys/socket.h>])
73AC_CHECK_TYPES(socklen_t,,,[#include <sys/types.h>
74#include <sys/socket.h>])
75
76dnl Checks for library functions.
77AC_FUNC_FORK
78dnl AC_FUNC_MALLOC
79dnl AC_FUNC_MMAP
80dnl AC_FUNC_REALLOC
81AC_TYPE_SIGNAL
82AC_FUNC_STAT
83AC_FUNC_STRFTIME
84AC_CHECK_FUNCS([issetugid inet_pton])
85
86if test -z "$PKG_CONFIG"; then
87  AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
88fi
89
90dnl checking for libev
91AC_MSG_CHECKING(for libev support)
92AC_ARG_WITH(libev,
93    AC_HELP_STRING([--with-libev@<:@=PATH@:>@],[Include libev support for fdevent handlers in PATH/include and PATH/lib]),
94    [WITH_LIBEV=$withval],[WITH_LIBEV=no])
95
96LIBEV_CFLAGS=""
97LIBEV_LIBS=""
98
99if test "$WITH_LIBEV" != "no"; then
100	PKG_CHECK_MODULES(LIBEV, libev, [], [
101		dnl no pkg-config for libev, searching manually:
102
103		if test "$WITH_LIBEV" != "yes"; then
104			LIBEV_CFLAGS="-I$WITH_LIBEV/include"
105			LIBEV_LIBS="-L$WITH_LIBEV/lib -lev"
106		else
107			AC_CHECK_HEADERS([ev.h],[
108				AC_CHECK_LIB([ev], [ev_time], [
109						LIBEV_CFLAGS=""
110						LIBEV_LIBS="-lev"
111					],[
112					AC_MSG_ERROR([libev not found])
113					]
114				)],[
115					AC_MSG_ERROR([libev not found])
116				]
117			)
118		fi
119	])
120
121	AC_DEFINE([HAVE_LIBEV], [1], [libev support])
122fi
123
124AC_SUBST(LIBEV_CFLAGS)
125AC_SUBST(LIBEV_LIBS)
126
127dnl checking for libsmbclient
128AC_MSG_CHECKING(for libsmbclient support)
129AC_ARG_WITH(libsmbclient,
130    AC_HELP_STRING([--with-libsmbclient@<:@=PATH@:>@],[Include libsmbclient support for fdevent handlers in PATH/include and PATH/bin]),
131    [WITH_LIBSMBCLIENT=$withval],[WITH_LIBSMBCLIENT=no])
132
133LIBSMBCLIENT_CFLAGS=""
134LIBSMBCLIENT_LIBS=""
135
136if test "$WITH_LIBSMBCLIENT" != "no"; then
137	PKG_CHECK_MODULES(LIBSMBCLIENT, libsmbclient, [], [
138		dnl no pkg-config for libsmbclient, searching manually:
139
140		if test "$WITH_LIBSMBCLINET" != "yes"; then
141			LIBSMBCLIENT_CFLAGS="-I$WITH_LIBSMBCLIENT/include"
142			LIBSMBCLIENT_LIBS="-L$WITH_LIBSMBCLIENT/bin -lsmbclient"
143		else
144			AC_CHECK_HEADERS([libsmbclient.h],[
145				AC_CHECK_LIB([smbclient], [smbc_open], [
146						LIBSMBCLIENT_CFLAGS=""
147						LIBSMBCLIENT_LIBS="-lsmbclient"
148					],[
149					AC_MSG_ERROR([libsmbclient not found])
150					]
151				)],[
152					AC_MSG_ERROR([libsmbclient not found])
153				]
154			)
155		fi
156	])
157
158	AC_DEFINE([HAVE_LIBSMBCLIENT], [1], [libsmbclient support])
159    	AC_DEFINE([HAVE_LIBSMBCLIENT_H], [1])
160fi
161
162AC_SUBST(LIBSMBCLIENT_CFLAGS)
163AC_SUBST(LIBSMBCLIENT_LIBS)
164
165
166
167
168dnl Checks for database.
169MYSQL_INCLUDE=""
170MYSQL_LIBS=""
171
172AC_MSG_CHECKING(for MySQL support)
173AC_ARG_WITH(mysql,
174    AC_HELP_STRING([--with-mysql@<:@=PATH@:>@],[Include MySQL support. PATH is the path to 'mysql_config']),
175    [WITH_MYSQL=$withval],[WITH_MYSQL=no])
176
177if test "$WITH_MYSQL" != "no"; then
178  AC_MSG_RESULT(yes)
179  if test "$WITH_MYSQL" = "yes"; then
180    AC_PATH_PROG(MYSQL_CONFIG, mysql_config)
181  else
182    MYSQL_CONFIG=$WITH_MYSQL
183  fi
184
185  if test "$MYSQL_CONFIG" = ""; then
186    AC_MSG_ERROR(mysql_config is not found)
187  fi
188  if test \! -x $MYSQL_CONFIG; then
189    AC_MSG_ERROR(mysql_config not exists or not executable, use --with-mysql=path-to-mysql_config)
190  fi
191
192  if $MYSQL_CONFIG | grep -- '--include' > /dev/null ; then
193    MYSQL_INCLUDE="`$MYSQL_CONFIG --include | sed s/\'//g`"
194  else
195    MYSQL_INCLUDE="`$MYSQL_CONFIG --cflags | sed s/\'//g`"
196  fi
197  MYSQL_LIBS="`$MYSQL_CONFIG --libs | sed s/\'//g`"
198
199  AC_MSG_CHECKING(for MySQL includes at)
200  AC_MSG_RESULT($MYSQL_INCLUDE)
201
202  AC_MSG_CHECKING(for MySQL libraries at)
203  AC_MSG_RESULT($MYSQL_LIBS)
204dnl check for errmsg.h, which isn't installed by some versions of 3.21
205  old_CPPFLAGS="$CPPFLAGS"
206  CPPFLAGS="$CPPFLAGS $MYSQL_INCLUDE"
207  AC_CHECK_HEADERS(errmsg.h mysql.h)
208  CPPFLAGS="$old_CPPFLAGS"
209
210  AC_DEFINE([HAVE_MYSQL], [1], [mysql support])
211else
212  AC_MSG_RESULT(no)
213fi
214
215AC_SUBST(MYSQL_LIBS)
216AC_SUBST(MYSQL_INCLUDE)
217
218dnl Check for LDAP
219AC_MSG_CHECKING(for LDAP support)
220AC_ARG_WITH(ldap, AC_HELP_STRING([--with-ldap],[enable LDAP support]),
221[WITH_LDAP=$withval], [WITH_LDAP=no])
222AC_MSG_RESULT([$withval])
223if test "$WITH_LDAP" != "no"; then
224 AC_CHECK_LIB(ldap, ldap_bind, [
225  AC_CHECK_HEADERS([ldap.h],[
226    LDAP_LIB=-lldap
227    AC_DEFINE([HAVE_LIBLDAP], [1], [libldap])
228    AC_DEFINE([HAVE_LDAP_H], [1])
229    AC_DEFINE([LDAP_DEPRECATED], [1], [Using deprecated ldap api])
230  ])
231 ])
232 AC_SUBST(LDAP_LIB)
233 AC_CHECK_LIB(lber, ber_printf, [
234  AC_CHECK_HEADERS([lber.h],[
235    LBER_LIB=-llber
236    AC_DEFINE([HAVE_LIBLBER], [1], [liblber])
237    AC_DEFINE([HAVE_LBER_H], [1])
238  ])
239 ])
240 AC_SUBST(LBER_LIB)
241fi
242
243dnl Check for xattr
244AC_MSG_CHECKING(for extended attributes support)
245AC_ARG_WITH(attr, AC_HELP_STRING([--with-attr],[enable extended attribute support]),
246[WITH_ATTR=$withval],[WITH_ATTR=no])
247AC_MSG_RESULT($withval)
248if test "$WITH_ATTR" != "no"; then
249 AC_CHECK_LIB(attr, attr_get, [
250	AC_CHECK_HEADERS([attr/attributes.h],[
251		ATTR_LIB=-lattr
252		AC_DEFINE([HAVE_XATTR], [1], [libattr])
253		AC_DEFINE([HAVE_ATTR_ATTRIBUTES_H], [1])
254	])
255 ])
256 AC_SUBST(ATTR_LIB)
257fi
258
259dnl openssl on solaris needs -lsocket -lnsl
260AC_SEARCH_LIBS(socket,socket)
261AC_SEARCH_LIBS(gethostbyname,nsl socket)
262AC_SEARCH_LIBS(hstrerror,resolv)
263
264save_LIBS=$LIBS
265AC_SEARCH_LIBS(dlopen,dl,[
266  AC_CHECK_HEADERS([dlfcn.h],[
267    if test "$ac_cv_search_dlopen" != no; then
268      test "$ac_cv_search_dlopen" = "none required" || DL_LIB="$ac_cv_search_dlopen"
269    fi
270
271    AC_DEFINE([HAVE_LIBDL], [1], [libdl])
272    AC_DEFINE([HAVE_DLFCN_H], [1])
273  ])
274])
275LIBS=$save_LIBS
276AC_SUBST(DL_LIB)
277
278dnl Check for valgrind
279AC_MSG_CHECKING(for valgrind)
280AC_ARG_WITH(valgrind, AC_HELP_STRING([--with-valgrind],[enable internal support for valgrind]),
281[WITH_VALGRIND=$withval],[WITH_VALGRIND=no])
282AC_MSG_RESULT([$WITH_VALGRIND])
283if test "$WITH_VALGRIND" != "no"; then
284 AC_CHECK_HEADERS([valgrind/valgrind.h])
285fi
286
287dnl Check for openssl
288AC_MSG_CHECKING(for OpenSSL)
289AC_ARG_WITH(openssl,
290    AC_HELP_STRING([--with-openssl@<:@=DIR@:>@],[Include openssl support (default no)]),
291    [WITH_OPENSSL=$withval],[WITH_OPENSSL=no])
292
293if test "$WITH_OPENSSL" != "no"; then
294    use_openssl=yes
295    if test "$WITH_OPENSSL" != "yes"; then
296	CPPFLAGS="$CPPFLAGS -I$WITH_OPENSSL/include"
297	LDFLAGS="$LDFLAGS -L$WITH_OPENSSL/lib"
298    fi
299else
300    use_openssl=no
301fi
302AC_MSG_RESULT([$use_openssl])
303
304AC_ARG_WITH(openssl-includes,
305    AC_HELP_STRING([--with-openssl-includes=DIR],[OpenSSL includes]),
306    [ use_openssl=yes CPPFLAGS="$CPPFLAGS -I$withval" ]
307)
308
309AC_ARG_WITH(openssl-libs,
310    AC_HELP_STRING([--with-openssl-libs=DIR],[OpenSSL libraries]),
311    [ use_openssl=yes LDFLAGS="$LDFLAGS -L$withval" ]
312)
313
314AC_ARG_WITH(kerberos5,
315    AC_HELP_STRING([--with-kerberos5],[use Kerberos5 support with OpenSSL]),
316    [ use_kerberos=yes ], [use_kerberos=no]
317)
318
319if test "x$use_openssl" = "xyes"; then
320    if test "x$use_kerberos" != "xyes"; then
321        CPPFLAGS="$CPPFLAGS -DOPENSSL_NO_KRB5"
322    fi
323
324    AC_CHECK_HEADERS([openssl/ssl.h])
325    OLDLIBS="$LIBS"
326    AC_CHECK_LIB(crypto, BIO_f_base64, [
327      AC_CHECK_LIB(ssl, SSL_new, [ SSL_LIB="-lssl -lcrypto"
328				 AC_DEFINE(HAVE_LIBSSL, [], [Have libssl]) ], [], [ -lcrypto "$DL_LIB" ])
329    ], [], [])
330    LIBS="$OLDLIBS"
331    AC_SUBST(SSL_LIB)
332fi
333
334AC_MSG_CHECKING(for perl regular expressions support)
335AC_ARG_WITH(pcre, AC_HELP_STRING([--with-pcre],[Enable pcre support (default yes)]),
336    [WITH_PCRE=$withval],[WITH_PCRE=yes])
337AC_MSG_RESULT([$WITH_PCRE])
338
339if test "$WITH_PCRE" != "no"; then
340  AC_PATH_PROG(PCRECONFIG, pcre-config)
341
342  if test x"$PCRECONFIG" != x; then
343    PCRE_LIB=`$PCRECONFIG --libs`
344    CPPFLAGS="$CPPFLAGS `$PCRECONFIG --cflags`"
345    AC_DEFINE([HAVE_LIBPCRE], [1], [libpcre])
346    AC_DEFINE([HAVE_PCRE_H], [1], [pcre.h])
347  else
348     AC_MSG_ERROR([pcre-config not found, install the pcre-devel package or build with --without-pcre])
349  fi
350fi
351
352AC_SUBST(PCRE_LIB)
353
354AC_MSG_CHECKING(for zlib support)
355AC_ARG_WITH(zlib, AC_HELP_STRING([--with-zlib],[Enable zlib support for mod_compress]),
356    [WITH_ZLIB=$withval],[WITH_ZLIB=yes])
357AC_MSG_RESULT([$WITH_ZLIB])
358
359if test "$WITH_ZLIB" != "no"; then
360  AC_CHECK_LIB(z, deflate, [
361    AC_CHECK_HEADERS([zlib.h],[
362      Z_LIB=-lz
363      AC_DEFINE([HAVE_LIBZ], [1], [libz])
364      AC_DEFINE([HAVE_ZLIB_H], [1])
365    ])
366  ])
367  if test x$Z_LIB = x; then
368     AC_MSG_ERROR([zlib-headers and/or libs where not found, install them or build with --without-zlib])
369  fi
370fi
371AC_SUBST(Z_LIB)
372
373AC_MSG_CHECKING(for bzip2 support)
374AC_ARG_WITH(bzip2, AC_HELP_STRING([--with-bzip2],[Enable bzip2 support for mod_compress]),
375    [WITH_BZIP2=$withval],[WITH_BZIP2=yes])
376AC_MSG_RESULT([$WITH_BZIP2])
377
378if test "$WITH_BZIP2" != "no"; then
379  AC_CHECK_LIB(bz2, BZ2_bzCompress, [
380    AC_CHECK_HEADERS([bzlib.h],[
381      BZ_LIB=-lbz2
382      AC_DEFINE([HAVE_LIBBZ2], [1], [libbz2])
383      AC_DEFINE([HAVE_BZLIB_H], [1])
384    ])
385  ])
386  if test x$BZ_LIB = x; then
387     AC_MSG_ERROR([bzip2-headers and/or libs where not found, install them or build with --without-bzip2])
388  fi
389fi
390
391AC_SUBST(BZ_LIB)
392
393
394dnl Check for gamin
395AC_MSG_CHECKING(for FAM)
396AC_ARG_WITH(fam, AC_HELP_STRING([--with-fam],[fam/gamin for reducing number of stat() calls]),
397[WITH_FAM=$withval],[WITH_FAM=no])
398AC_MSG_RESULT([$WITH_FAM])
399
400if test "$WITH_FAM" != "no"; then
401  AC_CHECK_LIB(fam, FAMOpen2, [
402    AC_CHECK_HEADERS([fam.h],[
403      FAM_LIBS=-lfam
404      AC_DEFINE([HAVE_LIBFAM], [1], [libfam])
405      AC_DEFINE([HAVE_FAM_H], [1], [fam.h])
406    ])
407  ])
408  if test "x$FAM_LIBS" = x; then
409    PKG_CHECK_MODULES(FAM, gamin >= 0.1.0, [
410      AC_DEFINE([HAVE_LIBFAM], [1], [libfam])
411      AC_DEFINE([HAVE_FAM_H], [1], [fam.h])
412    ])
413  fi
414  OLD_LIBS=$LIBS
415  LIBS=$FAM_LIBS
416  AC_CHECK_FUNCS([FAMNoExists])
417  LIBS=$OLD_LIBS
418  
419  if test x$FAM_LIBS = x; then
420     AC_MSG_ERROR([fam/gamin-headers and/or libs where not found, install them or build with --without-fam])
421  fi
422fi
423
424AC_MSG_CHECKING(for properties in mod_webdav)
425AC_ARG_WITH(webdav-props, AC_HELP_STRING([--with-webdav-props],[properties in mod_webdav]),
426[WITH_WEBDAV_PROPS=$withval],[WITH_WEBDAV_PROPS=no])
427AC_MSG_RESULT([$WITH_WEBDAV_PROPS])
428
429if test "$WITH_WEBDAV_PROPS" != "no"; then
430 PKG_CHECK_MODULES(XML, libxml-2.0, [
431    AC_DEFINE([HAVE_LIBXML2], [1], [libxml2])
432    AC_DEFINE([HAVE_LIBXML_H], [1], [libxml.h])
433 ])
434 PKG_CHECK_MODULES(SQLITE, sqlite3, [
435    AC_DEFINE([HAVE_SQLITE3], [1], [libsqlite3])
436    AC_DEFINE([HAVE_SQLITE3_H], [1], [sqlite3.h])
437 ])
438
439 AC_MSG_CHECKING(for locks in mod_webdav)
440 AC_ARG_WITH(webdav-locks, AC_HELP_STRING([--with-webdav-locks],[locks in mod_webdav]),
441 [WITH_WEBDAV_LOCKS=$withval],[WITH_WEBDAV_LOCKS=no])
442 AC_MSG_RESULT([$WITH_WEBDAV_LOCKS])
443
444 if test "$WITH_WEBDAV_LOCKS" != "no"; then
445   AC_CHECK_LIB(uuid, uuid_unparse, [
446         AC_CHECK_HEADERS([uuid/uuid.h],[
447                 UUID_LIBS=-luuid
448                 AC_DEFINE([HAVE_UUID], [1], [libuuid])
449		 AC_DEFINE([HAVE_UUID_H], [1], [uuid/uuid.h is available])
450         ])
451 ])
452
453 fi
454fi
455AC_SUBST(UUID_LIBS)
456
457AC_MSG_CHECKING(for properties in mod_smbdav)
458AC_ARG_WITH(smbdav-props, AC_HELP_STRING([--with-smbdav-props],[properties in mod_smbdav]),
459[WITH_SMBDAV_PROPS=$withval],[WITH_SMBDAV_PROPS=no])
460AC_MSG_RESULT([$WITH_SMBDAV_PROPS])
461
462if test "$WITH_SMBDAV_PROPS" != "no"; then
463 PKG_CHECK_MODULES(XML, libxml-2.0, [
464    AC_DEFINE([HAVE_LIBXML2], [1], [libxml2])
465    AC_DEFINE([HAVE_LIBXML_H], [1], [libxml.h])
466 ])
467 PKG_CHECK_MODULES(SQLITE, sqlite3, [
468    AC_DEFINE([HAVE_SQLITE3], [1], [libsqlite3])
469    AC_DEFINE([HAVE_SQLITE3_H], [1], [sqlite3.h])
470 ])
471
472 AC_MSG_CHECKING(for locks in mod_smbdav)
473 AC_ARG_WITH(smbdav-locks, AC_HELP_STRING([--with-smbdav-locks],[locks in mod_smbdav]),
474 [WITH_SMBDAV_LOCKS=$withval],[WITH_SMBDAV_LOCKS=no])
475 AC_MSG_RESULT([$WITH_SMBDAV_LOCKS])
476
477 if test "$WITH_SMBDAV_LOCKS" != "no"; then
478   AC_CHECK_LIB(uuid, uuid_unparse, [
479         AC_CHECK_HEADERS([uuid/uuid.h],[
480                 UUID_LIBS=-luuid
481                 AC_DEFINE([HAVE_UUID], [1], [libuuid])
482		 AC_DEFINE([HAVE_UUID_H], [1], [uuid/uuid.h is available])
483         ])
484 ])
485
486 fi
487fi
488
489
490
491
492dnl Check for gdbm
493AC_MSG_CHECKING(for gdbm)
494AC_ARG_WITH(gdbm, AC_HELP_STRING([--with-gdbm],[gdbm storage for mod_trigger_b4_dl]),
495[WITH_GDBM=$withval],[WITH_GDBM=no])
496AC_MSG_RESULT([$WITH_GDBM])
497
498if test "$WITH_GDBM" != "no"; then
499 AC_CHECK_LIB(gdbm, gdbm_open, [
500         AC_CHECK_HEADERS([gdbm.h],[
501                 GDBM_LIB=-lgdbm
502                 AC_DEFINE([HAVE_GDBM], [1], [libgdbm])
503		 AC_DEFINE([HAVE_GDBM_H], [1])
504         ])
505 ])
506 AC_SUBST(GDBM_LIB)
507fi
508
509dnl Check for memcache
510AC_MSG_CHECKING(for memcache)
511AC_ARG_WITH(memcache, AC_HELP_STRING([--with-memcache],[memcached storage for mod_trigger_b4_dl]),
512[WITH_MEMCACHE=$withval],[WITH_MEMCACHE=no])
513AC_MSG_RESULT([$WITH_MEMCACHE])
514if test "$WITH_MEMCACHE" != "no"; then
515 AC_CHECK_LIB(memcache, mc_new, [
516         AC_CHECK_HEADERS([memcache.h],[
517                 MEMCACHE_LIB=-lmemcache
518                 AC_DEFINE([HAVE_MEMCACHE], [1], [libmemcache])
519		 AC_DEFINE([HAVE_MEMCACHE_H], [1], [memcache.h])
520         ])
521 ])
522 AC_SUBST(MEMCACHE_LIB)
523fi
524
525dnl Check for lua
526AC_MSG_CHECKING(if lua-support is requested)
527AC_ARG_WITH(lua, AC_HELP_STRING([--with-lua],[lua engine for mod_cml]),
528[WITH_LUA=$withval],[WITH_LUA=no])
529
530AC_MSG_RESULT($WITH_LUA)
531if test "$WITH_LUA" != "no"; then
532 if test "$WITH_LUA" = "yes"; then
533  WITH_LUA=lua
534 fi
535 PKG_CHECK_MODULES(LUA, $WITH_LUA >= 5.1, [
536   AC_DEFINE([HAVE_LUA], [1], [liblua])
537   AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
538 ],[
539 dnl for debian based systems
540 PKG_CHECK_MODULES(LUA, lua5.1 >= 5.1, [
541   AC_DEFINE([HAVE_LUA], [1], [liblua])
542   AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
543 ],[
544 dnl for freebsd
545 PKG_CHECK_MODULES(LUA, lua-5.1 >= 5.1, [
546   AC_DEFINE([HAVE_LUA], [1], [liblua])
547   AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
548 ])
549 ])
550 ])
551
552 AC_SUBST(LUA_CFLAGS)
553 AC_SUBST(LUA_LIBS)
554fi
555
556save_LIBS=$LIBS
557AC_SEARCH_LIBS(crypt,crypt,[
558  AC_CHECK_HEADERS([crypt.h],[
559    AC_DEFINE([HAVE_CRYPT_H], [1])
560  ])
561
562  AC_DEFINE([HAVE_LIBCRYPT], [1], [libcrypt])
563  if test "$ac_cv_search_crypt" != no; then
564    test "$ac_cv_search_crypt" = "none required" || CRYPT_LIB="$ac_cv_search_crypt"
565  fi
566])
567LIBS=$save_LIBS
568AC_SUBST(CRYPT_LIB)
569
570save_LIBS=$LIBS
571AC_SEARCH_LIBS(sendfilev,sendfile,[
572  if test "$ac_cv_search_sendfilev" != no; then
573    test "$ac_cv_search_sendfilev" = "none required" || SENDFILE_LIB="$ac_cv_search_sendfilev"
574    AC_DEFINE([HAVE_SENDFILEV], [1], [solaris sendfilev])
575  fi
576])
577LIBS=$save_LIBS
578AC_SUBST(SENDFILE_LIB)
579
580case $host_os in
581	*mingw* ) LIBS="$LIBS -lwsock32";;
582        * ) ;;
583esac
584
585AC_CHECK_FUNCS([dup2 getcwd inet_ntoa inet_ntop memset mmap munmap strchr \
586		  strdup strerror strstr strtol sendfile  getopt socket lstat \
587		  gethostbyname poll epoll_ctl getrlimit chroot \
588		  getuid select signal pathconf madvise posix_fadvise posix_madvise \
589		  writev sigaction sendfile64 send_file kqueue port_create localtime_r gmtime_r])
590
591AC_MSG_CHECKING(for Large File System support)
592AC_ARG_ENABLE(lfs,
593 AC_HELP_STRING([--enable-lfs],[Turn on Large File System (default)]),
594 [case "${enableval}" in
595   yes) CPPFLAGS="${CPPFLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGE_FILES" ;;
596    no) ;;
597     *) AC_MSG_ERROR(bad value ${enableval} for --enable-lfs) ;;
598  esac],[CPPFLAGS="${CPPFLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGE_FILES"
599	 enable_lfs=yes])
600AC_MSG_RESULT($enableval)
601
602AC_CHECK_SIZEOF(long)
603AC_CHECK_SIZEOF(off_t)
604
605if test "x$ac_cv_func_sendfile" = xyes; then
606	dnl check if sendfile works
607        AC_MSG_CHECKING(if sendfile works)
608	if test "x$cross_compiling" = xno; then
609	AC_TRY_RUN([
610		    #ifdef HAVE_SYS_SENDFILE_H
611		    #include <sys/sendfile.h>
612		    #endif /* HAVE_SYS_SENDFILE_H */
613		    #include <errno.h>
614		    int main() {
615		      int o = 0;
616		      if (-1 == sendfile(-1, 0, &o, 0) && errno == ENOSYS) return -1;
617		      return 0;
618		    } ],
619		    AC_MSG_RESULT(yes),
620		    [ AC_MSG_RESULT(no)
621		    AC_DEFINE([HAVE_SENDFILE_BROKEN], [1], [broken sendfile]) ] )
622	else
623	      AC_MSG_RESULT(no, cross-compiling)
624	      AC_DEFINE([HAVE_SENDFILE_BROKEN], [1], [broken sendfile])
625	fi
626fi
627
628dnl Check for IPv6 support
629
630AC_ARG_ENABLE(ipv6,
631 AC_HELP_STRING([--disable-ipv6],[disable IPv6 support]),
632 [case "${enableval}" in
633   yes) ipv6=true ;;
634    no) ipv6=false ;;
635     *) AC_MSG_ERROR(bad value ${enableval} for --enable-ipv6) ;;
636  esac],[ipv6=true])
637
638if test x$ipv6 = xtrue; then
639  AC_CACHE_CHECK([for IPv6 support], ac_cv_ipv6_support,
640  [AC_TRY_LINK([ #include <sys/types.h>
641#include <sys/socket.h>
642#include <netinet/in.h>], [struct sockaddr_in6 s; struct in6_addr t=in6addr_any; int i=AF_INET6; s; t.s6_addr[0] = 0; ],
643  [ac_cv_ipv6_support=yes], [ac_cv_ipv6_support=no])])
644
645  if test "$ac_cv_ipv6_support" = yes; then
646    AC_DEFINE(HAVE_IPV6,1,[Whether to enable IPv6 support])
647  fi
648fi
649
650
651AM_CONDITIONAL(CROSS_COMPILING, test "x$cross_compiling" = xyes)
652
653dnl check for fastcgi lib, for the tests only
654fastcgi_found=no
655AC_CHECK_LIB(fcgi, FCGI_Accept, [
656 AC_CHECK_HEADERS([fastcgi.h fastcgi/fastcgi.h],[
657   fastcgi_found=yes
658 ])
659])
660
661AM_CONDITIONAL(CHECK_WITH_FASTCGI, test "x$fastcgi_found" = xyes)
662
663
664dnl check for extra compiler options (warning options)
665if test "${GCC}" = "yes"; then
666    CFLAGS="${CFLAGS} -Wall -W -Wshadow -pedantic -std=gnu99"
667fi
668
669AC_ARG_ENABLE(extra-warnings,
670 AC_HELP_STRING([--enable-extra-warnings],[enable extra warnings (gcc specific)]),
671 [case "${enableval}" in
672   yes) extrawarnings=true ;;
673    no) extrawarnings=false ;;
674     *) AC_MSG_ERROR(bad value ${enableval} for --enable-extra-warnings) ;;
675  esac],[extrawarnings=false])
676
677if test x$extrawarnings = xtrue; then
678    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"
679fi
680
681dnl build version-id
682LIGHTTPD_VERSION_ID=`echo $PACKAGE_VERSION | $AWK -F '.' '{print "(" $1 " << 16 | " $2 " << 8 | " $3 ")"}'`
683AC_DEFINE_UNQUOTED([LIGHTTPD_VERSION_ID], [$LIGHTTPD_VERSION_ID], [lighttpd-version-id])
684
685AC_CONFIG_FILES([Makefile src/Makefile distribute.sh])
686AC_OUTPUT
687
688
689do_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"
690do_build="$do_build mod_rrdtool mod_secdownload mod_expire mod_compress mod_dirlisting mod_indexfile mod_userdir mod_webdav mod_smbdav mod_staticfile mod_scgi mod_flv_streaming"
691
692plugins="mod_rewrite mod_redirect mod_ssi mod_trigger_b4_dl"
693features="regex-conditionals"
694if test ! "x$PCRE_LIB" = x; then
695	do_build="$do_build $plugins"
696	enable_feature="$features"
697else
698	no_build="$no_build $plugins"
699	disable_feature="$features"
700fi
701
702plugins="mod_mysql_vhost"
703if test ! "x$MYSQL_LIBS" = x; then
704	do_build="$do_build $plugins"
705else
706	no_build="$no_build $plugins"
707fi
708
709plugins="mod_cml mod_magnet"
710if test ! "x$LUA_LIBS" = x; then
711	do_build="$do_build $plugins"
712else
713	no_build="$no_build $plugins"
714fi
715
716features="storage-gdbm"
717if test ! "x$GDBM_LIB" = x; then
718	enable_feature="$enable_feature $features"
719else
720	disable_feature="$disable_feature $features"
721fi
722
723features="storage-memcache"
724if test ! "x$MEMCACHE_LIB" = x; then
725	enable_feature="$enable_feature $features"
726else
727	disable_feature="$disable_feature $features"
728fi
729
730features="compress-gzip compress-deflate"
731if test ! "x$Z_LIB" = x; then
732	enable_feature="$enable_feature $features"
733else
734	disable_feature="$disable_feature $features"
735fi
736
737features="compress-bzip2"
738if test ! "x$BZ_LIB" = x; then
739	enable_feature="$enable_feature $features"
740else
741	disable_feature="$disable_feature $features"
742fi
743
744features="auth-ldap"
745if test ! "x$LDAP_LIB" = x; then
746	enable_feature="$enable_feature $features"
747else
748	disable_feature="$disable_feature $features"
749fi
750
751features="network-openssl"
752if test ! "x$SSL_LIB" = x; then
753	enable_feature="$enable_feature $features"
754else
755	disable_feature="$disable_feature $features"
756fi
757
758dnl no crypt call
759features="auth-crypt"
760if test "$ac_cv_search_crypt" = no; then
761	disable_feature="$disable_feature $features"
762else
763	enable_feature="$enable_feature $features"
764fi
765
766features="network-ipv6"
767if test "$ac_cv_ipv6_support" = yes; then
768	enable_feature="$enable_feature $features"
769else
770	disable_feature="$disable_feature $features"
771fi
772
773features="large-files"
774if test "$enable_lfs" = yes; then
775	enable_feature="$enable_feature $features"
776else
777	disable_feature="$disable_feature $features"
778fi
779
780features="stat-cache-fam"
781if test ! "x$FAM_LIBS" = x; then
782	enable_feature="$enable_feature $features"
783else
784	disable_feature="$disable_feature $features"
785fi
786
787
788features="webdav-properties"
789if test "x$XML_LIBS" \!= x -a "x$SQLITE_LIBS" \!= x; then
790	enable_feature="$enable_feature $features"
791else
792	disable_feature="$disable_feature $features"
793fi
794
795features="webdav-locks"
796if test "x$UUID_LIBS" \!= x; then
797	enable_feature="$enable_feature $features"
798else
799	disable_feature="$disable_feature $features"
800fi
801
802features="smbdav-properties"
803if test "x$XML_LIBS" \!= x -a "x$SQLITE_LIBS" \!= x; then
804	enable_feature="$enable_feature $features"
805else
806	disable_feature="$disable_feature $features"
807fi
808
809features="smbdav-locks"
810if test "x$UUID_LIBS" \!= x; then
811	enable_feature="$enable_feature $features"
812else
813	disable_feature="$disable_feature $features"
814fi
815
816dnl output
817
818$ECHO
819$ECHO "Plugins:"
820$ECHO
821
822$ECHO "enabled: "
823for p in $do_build; do
824	$ECHO "  $p"
825done | sort
826
827$ECHO "disabled: "
828for p in $no_build; do
829	$ECHO "  $p"
830done | sort
831
832$ECHO
833$ECHO "Features:"
834$ECHO
835
836$ECHO "enabled: "
837for p in $enable_feature; do
838	$ECHO "  $p"
839done | sort
840
841$ECHO "disabled: "
842for p in $disable_feature; do
843	$ECHO "  $p"
844done | sort
845
846$ECHO
847