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