- next is 1.4.56
[lighttpd.git] / configure.ac
blobb219c8b73a6a0edbb3d5bafbc929e8e509e08c39
1 dnl                                               -*- Autoconf -*-
2 dnl Process this file with autoconf to produce a configure script.
3 dnl
4 dnl Indentation rules:
5 dnl - closing braces not at the beginning of a line must match opening
6 dnl   braces earlier on that line
7 dnl - closing braces at the beginning of a line:
8 dnl   - must not be followed by anything else apart from "," or comments
9 dnl   - must match opening braces from another line and indented the
10 dnl     same as that other line
11 dnl - if one argument was put on a new line, all following arguments
12 dnl   must be on their own line too
13 dnl - if an argument uses more than one line and is not a single
14 dnl   function call, the argument should be on different lines than the
15 dnl   wrapping braces
16 AC_PREREQ(2.60)
17 AC_INIT([lighttpd], [1.4.56], [contact@lighttpd.net])
18 AC_CONFIG_SRCDIR([src/server.c])
19 AC_CONFIG_HEADER([config.h])
20 AC_CONFIG_MACRO_DIR([m4])
22 AC_CANONICAL_HOST
24 AM_INIT_AUTOMAKE([1.13 -Wall -Wno-portability -Wno-override foreign dist-xz tar-ustar serial-tests silent-rules subdir-objects])
26 dnl @synopsis TRY_CFLAGS [compiler flags]
27 dnl @summary check whether compiler supports given flags and adds them to CFLAGS
28 AC_DEFUN([TRY_CFLAGS],
29 [dnl
30   AC_MSG_CHECKING([if $CC supports $1])
31   AC_LANG_PUSH([C])
32   ac_try_cflags_saved_cflags="${CFLAGS}"
33   CFLAGS="${CFLAGS} $1"
34   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])],
35     [AC_MSG_RESULT([yes])],
36     [
37       AC_MSG_ERROR([no])
38       CFLAGS="${ac_try_cflags_saved_cflags}"
39     ]
40   )
41   AC_LANG_POP([C])
44 dnl @synopsis TRY_LDFLAGS [linker flags]
45 dnl @summary check whether linker supports given flags and adds them to LDFLAGS
46 AC_DEFUN([TRY_LDFLAGS],
47 [dnl
48   AC_MSG_CHECKING([if $LD supports $1])
49   AC_LANG_PUSH([C])
50   ac_try_ldflags_saved_ldflags="${LDFLAGS}"
51   LDFLAGS="${LDFLAGS} $1"
52   AC_LINK_IFELSE([AC_LANG_PROGRAM([])],
53     [AC_MSG_RESULT([yes])],
54     [
55       AC_MSG_ERROR([no])
56       LDFLAGS="${ac_try_ldflags_saved_cflags}"
57     ]
58   )
59   AC_LANG_POP([C])
62 dnl Checks for programs.
63 AC_PROG_CC
64 AC_PROG_CC_STDC
65 AX_PROG_CC_FOR_BUILD
66 AC_PROG_LD
67 AC_PROG_INSTALL
68 AC_PROG_CPP
69 AC_PROG_MAKE_SET
71 AC_USE_SYSTEM_EXTENSIONS
72 AM_PROG_AR
74 dnl AC_CANONICAL_HOST
75 case "$host_os" in
76 *darwin*|*cygwin*|*aix*|*mingw*|*midipix* ) NO_RDYNAMIC=yes ;;
77 * ) NO_RDYNAMIC=no ;;
78 esac
79 AM_CONDITIONAL([NO_RDYNAMIC], [test "$NO_RDYNAMIC" = yes])
81 AM_CONDITIONAL([LIGHTTPD_STATIC], [test "$LIGHTTPD_STATIC" = yes])
83 AC_EXEEXT
85 dnl libtool
86 AC_DISABLE_STATIC
87 AC_ENABLE_SHARED
89 AC_LIBTOOL_DLOPEN
90 AC_PROG_LIBTOOL
92 dnl for solaris
93 CPPFLAGS="${CPPFLAGS} -D_REENTRANT"
95 dnl Checks for header files.
97 dnl check for:
98 dnl   inttypes.h => HAVE_INTTYPES_H
99 dnl   stdint.h => HAVE_STDINT_H
100 dnl and maybe more (which shouldn't be relied on)
101 AC_HEADER_STDC
102 dnl checks for sys/wait.h => HAVE_SYS_WAIT_H
103 AC_HEADER_SYS_WAIT
104 AC_CHECK_HEADERS([\
105   getopt.h \
106   poll.h \
107   port.h \
108   pwd.h \
109   stdlib.h \
110   strings.h \
111   sys/devpoll.h \
112   sys/epoll.h \
113   sys/event.h \
114   sys/filio.h \
115   sys/loadavg.h \
116   sys/mman.h \
117   sys/poll.h \
118   sys/prctl.h \
119   sys/resource.h \
120   sys/select.h \
121   sys/sendfile.h \
122   sys/time.h \
123   sys/uio.h \
124   sys/un.h \
125   syslog.h \
126   uuid/uuid.h \
129 dnl Checks for typedefs, structures, and compiler characteristics.
130 AC_C_CONST
131 AC_C_INLINE
132 AC_TYPE_OFF_T
133 AC_TYPE_PID_T
134 AC_TYPE_SIZE_T
136 AC_CHECK_MEMBER([struct tm.tm_gmtoff],
137   [AC_DEFINE([HAVE_STRUCT_TM_GMTOFF], [1], [gmtoff in struct tm])],
138   [],
139   [#include <time.h>]
141 AC_CHECK_TYPES([socklen_t],
142   [], dnl defines HAVE_SOCKLEN_T
143   [],
144   [
145     #include <sys/types.h>
146     #include <sys/socket.h>
147   ]
150 dnl openssl on solaris needs -lsocket -lnsl
151 AC_SEARCH_LIBS([socket], [socket])
152 AC_SEARCH_LIBS([gethostbyname], [nsl socket])
154 dnl On Haiku accept() and friends are in libnetwork
155 AC_SEARCH_LIBS([accept], [network])
157 dnl clock_gettime() needs -lrt with glibc < 2.17, and possibly other platforms
158 AC_SEARCH_LIBS([clock_gettime], [rt])
160 dnl FreeBSD elftc_copyfile()
161 save_LIBS=$LIBS
162 LIBS=
163 AC_SEARCH_LIBS([elftc_copyfile], [elftc], [
164   AC_CHECK_HEADERS([libelftc.h], [
165     ELFTC_LIB=$LIBS
166     AC_DEFINE([HAVE_LIBELFTC], [1], [libelftc])
167     AC_DEFINE([HAVE_ELFTC_COPYFILE], [1], [elftc_copyfile])
168   ])
170 LIBS=$save_LIBS
171 AC_SUBST([ELFTC_LIB])
173 dnl need dlopen/-ldl to load plugins (when not on windows)
174 save_LIBS=$LIBS
175 LIBS=
176 AC_SEARCH_LIBS([dlopen], [dl], [
177   AC_CHECK_HEADERS([dlfcn.h], [
178     DL_LIB=$LIBS
179     AC_DEFINE([HAVE_LIBDL], [1], [libdl])
180     AC_DEFINE([HAVE_DLFCN_H], [1])
181   ])
183 LIBS=$save_LIBS
184 AC_SUBST([DL_LIB])
186 dnl prepare pkg-config usage below
187 PKG_PROG_PKG_CONFIG
189 dnl checking for libev
190 AC_MSG_NOTICE([----------------------------------------])
191 AC_MSG_CHECKING([for libev support])
192 AC_ARG_WITH([libev],
193   [AC_HELP_STRING([--with-libev@<:@=PATH@:>@],
194     [Include libev support for fdevent handlers in PATH/include and PATH/lib]
195   )],
196   [WITH_LIBEV=$withval],
197   [WITH_LIBEV=no]
199 AC_MSG_RESULT([$WITH_LIBEV])
201 LIBEV_CFLAGS=
202 LIBEV_LIBS=
204 if test "$WITH_LIBEV" != no; then
205   PKG_CHECK_MODULES([LIBEV], [libev], [], [
206     dnl no pkg-config for libev, searching manually:
208     if test "$WITH_LIBEV" != yes; then
209       LIBEV_CFLAGS="-I$WITH_LIBEV/include"
210       LIBEV_LIBS="-L$WITH_LIBEV/lib -lev"
211     else
212       AC_CHECK_HEADERS([ev.h],
213         [AC_CHECK_LIB([ev], [ev_time],
214           [
215             LIBEV_CFLAGS=
216             LIBEV_LIBS="-lev"
217           ],
218           [AC_MSG_ERROR([libev not found])]
219         )],
220         [AC_MSG_ERROR([libev header not found])]
221       )
222     fi
223   ])
225   AC_DEFINE([HAVE_LIBEV], [1], [libev support])
228 AC_SUBST([LIBEV_CFLAGS])
229 AC_SUBST([LIBEV_LIBS])
231 dnl Checks for mysql
232 AC_MSG_NOTICE([----------------------------------------])
233 AC_MSG_CHECKING([for MySQL support])
234 AC_ARG_WITH([mysql],
235   [AC_HELP_STRING([--with-mysql@<:@=PATH@:>@],
236     [Include MySQL support. PATH is the path to 'mysql_config']
237   )],
238   [WITH_MYSQL=$withval],
239   [WITH_MYSQL=no]
241 AC_MSG_RESULT([$WITH_MYSQL])
243 MYSQL_CFLAGS=
244 MYSQL_LIBS=
246 if test "$WITH_MYSQL" != no; then
247   if test "$WITH_MYSQL" = yes; then
248     PKG_CHECK_MODULES([MYSQL],[mariadb],[
249       MYSQL_CONFIG=$PKG_CONFIG
250     ],[
251       PKG_CHECK_MODULES([MYSQL],[mysqlclient],[
252         MYSQL_CONFIG=$PKG_CONFIG
253       ],[
254         AC_PATH_PROG([MYSQL_CONFIG], [mysql_config])
255       ])
256     ])
257   else
258     MYSQL_CONFIG=$WITH_MYSQL
259   fi
261   if test "$MYSQL_CONFIG" != "$PKG_CONFIG"; then
262     if test -z "$MYSQL_CONFIG"; then
263       AC_MSG_ERROR([mysql_config is not found])
264     fi
265     if test ! -x "$MYSQL_CONFIG"; then
266       AC_MSG_ERROR([mysql_config not exists or not executable, use --with-mysql=path-to-mysql_config])
267     fi
269     if "$MYSQL_CONFIG" | grep -- '--include' > /dev/null ; then
270       MYSQL_CFLAGS=`"$MYSQL_CONFIG" --include | sed s/\'//g`
271     else
272       MYSQL_CFLAGS=`"$MYSQL_CONFIG" --cflags | sed s/\'//g`
273     fi
274     MYSQL_LIBS=`"$MYSQL_CONFIG" --libs | sed s/\'//g`
275   fi
277   AC_MSG_CHECKING([for MySQL includes at])
278   AC_MSG_RESULT([$MYSQL_CFLAGS])
280   AC_MSG_CHECKING([for MySQL libraries at])
281   AC_MSG_RESULT([$MYSQL_LIBS])
283   AC_DEFINE([HAVE_MYSQL], [1], [mysql support])
285 AM_CONDITIONAL([BUILD_WITH_MYSQL], [test "$WITH_MYSQL" != no])
287 AC_SUBST([MYSQL_LIBS])
288 AC_SUBST([MYSQL_CFLAGS])
290 dnl Checks for pgsql
291 AC_MSG_NOTICE([----------------------------------------])
292 AC_MSG_CHECKING([for PgSQL support])
293 AC_ARG_WITH([pgsql],
294   [AC_HELP_STRING([--with-pgsql@<:@=PATH@:>@],
295     [Include PgSQL support. PATH is the path to 'pg_config']
296   )],
297   [WITH_PGSQL=$withval],
298   [WITH_PGSQL=no]
300 AC_MSG_RESULT([$WITH_PGSQL])
302 PGSQL_CFLAGS=
303 PGSQL_LIBS=
305 if test "$WITH_PGSQL" != no; then
306   if test "$WITH_PGSQL" = yes; then
307     PKG_CHECK_MODULES([PGSQL],[libpq],[
308       PGSQL_CONFIG=$PKG_CONFIG
309     ],[
310       AC_PATH_PROG([PGSQL_CONFIG], [pg_config])
311     ])
312   else
313     PGSQL_CONFIG=$WITH_PGSQL
314   fi
316   if test "$PGSQL_CONFIG" != "$PKG_CONFIG"; then
317     if test -z "$PGSQL_CONFIG"; then
318       AC_MSG_ERROR([pg_config is not found])
319     fi
320     if test ! -x "$PGSQL_CONFIG"; then
321       AC_MSG_ERROR([pg_config not exists or not executable, use --with-pgsql=path-to-pg_config])
322     fi
324     PGSQL_CFLAGS="-I`"$PGSQL_CONFIG" --includedir`"
325     PGSQL_LIBS="-L`"$PGSQL_CONFIG" --libdir` -lpq"
326   fi
328   AC_MSG_CHECKING([for PgSQL includes at])
329   AC_MSG_RESULT([$PGSQL_CFLAGS])
331   AC_MSG_CHECKING([for PgSQL libraries at])
332   AC_MSG_RESULT([$PGSQL_LIBS])
334   AC_DEFINE([HAVE_PGSQL], [1], [pgsql support])
336 AM_CONDITIONAL([BUILD_WITH_PGSQL], [test "$WITH_PGSQL" != no])
338 AC_SUBST([PGSQL_LIBS])
339 AC_SUBST([PGSQL_CFLAGS])
341 dnl Checks for libdbi library
342 AC_MSG_NOTICE([----------------------------------------])
343 AC_MSG_CHECKING([for LibDBI support])
344 AC_ARG_WITH([dbi],
345   [AC_HELP_STRING([--with-dbi@<:@=PATH@:>@],
346     [Include DBI support in PATH/include/dbi.h and PATH/lib]
347   )],
348   [WITH_DBI=$withval],
349   [WITH_DBI=no]
351 AC_MSG_RESULT([$WITH_DBI])
353 DBI_INCLUDE=
354 DBI_LIBS=
356 if test "$WITH_DBI" != no; then
357   if test "$WITH_DBI" != yes; then
358     DBI_CFLAGS="-I$WITH_DBI/include"
359     DBI_LIBS="-L$WITH_DBI/lib -ldbi"
360   else
361     AC_CHECK_HEADERS([dbi/dbi.h],
362       [AC_CHECK_LIB([dbi], [dbi_version],
363         [
364           DBI_CFLAGS=
365           DBI_LIBS="-ldbi"
366         ],
367         [AC_MSG_ERROR([LibDBI not found])]
368       )],
369       [AC_MSG_ERROR([LibDBI header not found])]
370     )
371   fi
373   AC_DEFINE([HAVE_DBI], [1], [LibDBI support])
375 AM_CONDITIONAL([BUILD_WITH_DBI], [test "$WITH_DBI" != no])
377 AC_SUBST([DBI_LIBS])
378 AC_SUBST([DBI_CFLAGS])
380 dnl Checks for libsasl2 library
381 AC_MSG_NOTICE([----------------------------------------])
382 AC_MSG_CHECKING([for LibSASL support])
383 AC_ARG_WITH([sasl],
384   [AC_HELP_STRING([--with-sasl@<:@=PATH@:>@],
385     [Include SASL support in PATH/include/sasl/sasl.h and PATH/lib]
386   )],
387   [WITH_SASL=$withval],
388   [WITH_SASL=no]
390 AC_MSG_RESULT([$WITH_SASL])
392 SASL_INCLUDE=
393 SASL_LIBS=
395 if test "$WITH_SASL" != no; then
396   if test "$WITH_SASL" != yes; then
397     SASL_CFLAGS="-I$WITH_SASL/include"
398     SASL_LIBS="-L$WITH_SASL/lib -lsasl2"
399   else
400     AC_CHECK_HEADERS([sasl/sasl.h],
401       [AC_CHECK_LIB([sasl2], [sasl_server_init],
402         [
403           SASL_CFLAGS=
404           SASL_LIBS="-lsasl2"
405         ],
406         [AC_MSG_ERROR([libsasl2 not found])]
407       )],
408       [AC_MSG_ERROR([SASL header not found])]
409     )
410   fi
412   AC_DEFINE([HAVE_SASL], [1], [LibSASL support])
414 AM_CONDITIONAL([BUILD_WITH_SASL], [test "$WITH_SASL" != no])
416 AC_SUBST([SASL_LIBS])
417 AC_SUBST([SASL_CFLAGS])
420 dnl Check for LDAP
421 AC_MSG_NOTICE([----------------------------------------])
422 AC_MSG_CHECKING([for LDAP support])
423 AC_ARG_WITH([ldap],
424   [AC_HELP_STRING([--with-ldap], [enable LDAP support])],
425   [WITH_LDAP=$withval],
426   [WITH_LDAP=no]
428 AC_MSG_RESULT([$WITH_LDAP])
430 if test "$WITH_LDAP" != no; then
431   AC_CHECK_LIB([ldap], [ldap_sasl_bind_s],
432     [AC_CHECK_HEADERS([ldap.h],
433       [
434         LDAP_LIB=-lldap
435         AC_DEFINE([HAVE_LIBLDAP], [1], [libldap])
436         AC_DEFINE([HAVE_LDAP_H], [1])
437       ],
438       [AC_MSG_ERROR([ldap headers not found, install them or build without --with-ldap])]
439     )],
440     [AC_MSG_ERROR([ldap library not found, install it or build without --with-ldap])]
441   )
442   AC_SUBST([LDAP_LIB])
443   AC_CHECK_LIB([lber], [ber_printf],
444     [AC_CHECK_HEADERS([lber.h],
445       [
446         LBER_LIB=-llber
447         AC_DEFINE([HAVE_LIBLBER], [1], [liblber])
448         AC_DEFINE([HAVE_LBER_H], [1])
449       ],
450       [AC_MSG_ERROR([lber headers not found, install them or build without --with-ldap])]
451     )],
452     [AC_MSG_ERROR([lber library not found, install it or build without --with-ldap])]
453   )
454   AC_SUBST([LBER_LIB])
456 AM_CONDITIONAL([BUILD_WITH_LDAP], [test "$WITH_LDAP" != no])
458 dnl Check for PAM
459 AC_MSG_NOTICE([----------------------------------------])
460 AC_MSG_CHECKING(for PAM support)
461 AC_ARG_WITH([pam],
462   [AC_HELP_STRING([--with-pam],[enable PAM support])],
463   [WITH_PAM=$withval],
464   [WITH_PAM=no]
466 AC_MSG_RESULT([$withval])
468 if test "$WITH_PAM" != "no"; then
469   AC_CHECK_LIB([pam], [pam_start],
470     [AC_CHECK_HEADERS([security/pam_appl.h],[
471       PAM_LIB=-lpam
472       AC_DEFINE([HAVE_PAM], [1], [libpam])
473       AC_DEFINE([HAVE_SECURITY_PAM_APPL_H], [1])
474       ],
475       [AC_MSG_ERROR([pam headers not found, install them or build without --with-pam])]
476     )],
477     [AC_MSG_ERROR([pam library not found, install it or build without --with-pam])]
478   )
479   AC_SUBST(PAM_LIB)
481 AM_CONDITIONAL([BUILD_WITH_PAM], [test "$WITH_PAM" != no])
483 dnl Check for xattr
484 AC_MSG_NOTICE([----------------------------------------])
485 AC_MSG_CHECKING([for extended attributes support])
486 AC_ARG_WITH([attr],
487   [AC_HELP_STRING([--with-attr], [enable extended attribute support])],
488   [WITH_ATTR=$withval],
489   [WITH_ATTR=no]
491 AC_MSG_RESULT([$WITH_ATTR])
493 if test "$WITH_ATTR" != no; then
494   have_xattr=no
495   # libattr (linux only?)
496   AC_CHECK_LIB([attr], [attr_get], [
497     AC_CHECK_HEADERS([attr/attributes.h], [
498       ATTR_LIB=-lattr
499       AC_DEFINE([HAVE_XATTR], [1], [libattr])
500       AC_DEFINE([HAVE_ATTR_ATTRIBUTES_H], [1])
501       have_xattr=yes
502     ])
503   ])
504   AC_SUBST([ATTR_LIB])
506   # (Free)BSD extattr
507   AC_CHECK_FUNC([extattr_get_file], [
508     AC_CHECK_HEADERS([sys/extattr.h], [
509       AC_DEFINE([HAVE_EXTATTR], [1], [BSD extended attributes])
510       AC_DEFINE([HAVE_SYS_EXTATTR_H], [1])
511       have_xattr=yes
512     ])
513   ])
515   if test "$have_xattr" = no; then
516     AC_MSG_ERROR([no backend found implementing extended attributes])
517   fi
520 dnl Check for valgrind
521 AC_MSG_NOTICE([----------------------------------------])
522 AC_MSG_CHECKING([for valgrind])
523 AC_ARG_WITH([valgrind],
524   [AC_HELP_STRING([--with-valgrind],
525     [enable internal support for valgrind]
526   )],
527   [WITH_VALGRIND=$withval],
528   [WITH_VALGRIND=no]
530 AC_MSG_RESULT([$WITH_VALGRIND])
532 if test "$WITH_VALGRIND" != no; then
533   AC_CHECK_HEADERS([valgrind/valgrind.h], [], [
534     AC_MSG_ERROR([valgrind headers not found. install them or build without --with-valgrind])
535   ])
538 dnl Checking for libunwind
539 AC_MSG_NOTICE([----------------------------------------])
540 AC_MSG_CHECKING([for libunwind])
541 AC_ARG_WITH([libunwind],
542   [AC_HELP_STRING([--with-libunwind],
543     [Include libunwind support for backtraces on assert failures]
544   )],
545   [WITH_LIBUNWIND=$withval],
546   [WITH_LIBUNWIND=no]
548 AC_MSG_RESULT([$WITH_LIBUNWIND])
550 if test "$WITH_LIBUNWIND" != no; then
551   PKG_CHECK_MODULES([LIBUNWIND], [libunwind], [], [
552     AC_MSG_ERROR([libunwind not found. install it or build without --with-libunwind])
553   ])
554   AC_DEFINE([HAVE_LIBUNWIND], [1], [Have libunwind support])
557 dnl Checking for kerberos5
558 AC_MSG_NOTICE([----------------------------------------])
559 AC_MSG_CHECKING([for kerberos5])
560 AC_ARG_WITH([krb5],
561   [AC_HELP_STRING([--with-krb5@<:@=DIR@:>@], [Use Kerberos 5])],
562   [WITH_KRB5=$withval],
563   [WITH_KRB5=no]
565 AC_MSG_RESULT([$WITH_KRB5])
567 if test "$WITH_KRB5" != no; then
568   if test "$WITH_KRB5" != yes; then
569     krb5_append_CPPFLAGS=" -I$WITH_KRB5/include"
570     krb5_append_LDFLAGS=" -L$WITH_KRB5/lib"
571   fi
574 AC_MSG_CHECKING([custom include directory for kerberos5])
575 AC_ARG_WITH([krb5-includes],
576   [AC_HELP_STRING([--with-krb5-includes=DIR], [Kerberos includes])],
577   [
578     if test "$WITH_KRB5" = no; then
579       AC_MSG_ERROR([build --with-krb5 to use --with-krb5-includes])
580     fi
581     krb5_append_CPPFLAGS=" -I$withval"
582     AC_MSG_RESULT([$withval])
583   ],
584   [AC_MSG_RESULT([no])]
587 AC_MSG_CHECKING([custom lib directory for kerberos5])
588 AC_ARG_WITH([krb5-libs],
589   [AC_HELP_STRING([--with-krb5-libs=DIR], [Kerberos libraries])],
590   [
591     if test "$WITH_KRB5" = no; then
592       AC_MSG_ERROR([build --with-krb5 to use --with-krb5-libs])
593     fi
594     krb5_append_LDFLAGS=" -L$withval"
595     AC_MSG_RESULT([$withval])
596   ],
597   [AC_MSG_RESULT([no])]
600 if test "$WITH_KRB5" != no; then
601   CPPFLAGS="${CPPFLAGS}${krb5_append_CPPFLAGS}"
602   LDFLAGS="${LDFLAGS}${krb5_append_LDFLAGS}"
604   AC_CHECK_LIB([gssapi_krb5], [gss_acquire_cred],
605     [AC_CHECK_HEADERS([gssapi/gssapi_krb5.h],
606       [
607         KRB5_LIB="-lkrb5 -lgssapi_krb5"
608         AC_DEFINE([HAVE_KRB5], [1], [libgssapi_krb5])
609       ],
610       [AC_MSG_ERROR([gssapi_krb5 headers were not found, install them or build without --with-krb5])]
611     )],
612     [AC_MSG_ERROR([gssapi_krb5 libs were not found, install them or build without --with-krb5])]
613   )
614   case "$host_os" in
615   *darwin*|*cygwin* ) KRB5_LIB="$KRB5_LIB -lcom_err" ;;
616   * ) ;;
617   esac
620 AM_CONDITIONAL([BUILD_WITH_KRB5], [test "$WITH_KRB5" != no])
621 AC_SUBST([KRB5_LIB])
623 dnl Check for openssl
624 AC_MSG_NOTICE([----------------------------------------])
625 AC_MSG_CHECKING([for OpenSSL])
626 AC_ARG_WITH([openssl],
627   [AC_HELP_STRING([--with-openssl@<:@=DIR@:>@],
628     [Include openssl support (default no)]
629   )],
630   [WITH_OPENSSL=$withval],
631   [WITH_OPENSSL=no]
633 AC_MSG_RESULT([$WITH_OPENSSL])
635 if test "$WITH_OPENSSL" != no; then
636   if test "$WITH_OPENSSL" != yes; then
637     openssl_append_CPPFLAGS=" -I$WITH_OPENSSL/include"
638     openssl_append_LDFLAGS=" -L$WITH_OPENSSL/lib"
639   fi
642 AC_MSG_CHECKING([custom include directory for openssl])
643 AC_ARG_WITH([openssl-includes],
644   [AC_HELP_STRING([--with-openssl-includes=DIR], [OpenSSL includes])],
645   [
646     if test "$WITH_OPENSSL" = no; then
647       AC_MSG_ERROR([build --with-openssl to use --with-openssl-includes])
648     fi
649     openssl_append_CPPFLAGS=" -I$withval"
650     AC_MSG_RESULT([$withval])
651   ],
652   [AC_MSG_RESULT([no])]
655 AC_MSG_CHECKING([custom lib directory for openssl])
656 AC_ARG_WITH([openssl-libs],
657   [AC_HELP_STRING([--with-openssl-libs=DIR], [OpenSSL libraries])],
658   [
659     if test "$WITH_OPENSSL" = no; then
660       AC_MSG_ERROR([build --with-openssl to use --with-openssl-libs])
661     fi
662     openssl_append_LDFLAGS=" -L$withval"
663     AC_MSG_RESULT([$withval])
664   ],
665   [AC_MSG_RESULT([no])]
668 if test "$WITH_OPENSSL" != no; then
669   if test "$WITH_KRB5" != no; then
670     AC_DEFINE([USE_OPENSSL_KERBEROS], [1], [with kerberos])
671   fi
673   CPPFLAGS="${CPPFLAGS}${openssl_append_CPPFLAGS}"
674   LDFLAGS="${LDFLAGS}${openssl_append_LDFLAGS}"
676   AC_CHECK_HEADERS([openssl/ssl.h], [], [
677     AC_MSG_ERROR([openssl headers not found. install them or build without --with-openssl])
678   ])
679   AC_CHECK_LIB([crypto], [BIO_f_base64],
680     [CRYPTO_LIB="-lcrypto"],
681     [AC_MSG_ERROR([openssl crypto library not found. install it or build without --with-openssl])]
682   )
683   AC_CHECK_LIB([ssl], [SSL_new],
684     [SSL_LIB="-lssl -lcrypto"],
685     [AC_MSG_ERROR([openssl ssl library not found. install it or build without --with-openssl])],
686     [ -lcrypto "$DL_LIB" ]
687   )
689   AC_DEFINE([HAVE_LIBSSL], [], [Have libssl])
690   AC_SUBST([SSL_LIB])
691   AC_SUBST([CRYPTO_LIB])
694 dnl Check for wolfSSL
695 AC_MSG_NOTICE([----------------------------------------])
696 AC_MSG_CHECKING([for wolfSSL])
697 AC_ARG_WITH([wolfssl],
698   [AC_HELP_STRING([--with-wolfssl@<:@=DIR@:>@],
699     [Include openssl support (default no)]
700   )],
701   [WITH_WOLFSSL=$withval],
702   [WITH_WOLFSSL=no]
704 AC_MSG_RESULT([$WITH_WOLFSSL])
706 if test "$WITH_WOLFSSL" != no; then
707   if test "$WITH_WOLFSSL" = yes; then
708     WITH_WOLFSSL="/usr/local"
709   fi
711   CPPFLAGS="${CPPFLAGS} -I$WITH_WOLFSSL/include -I$WITH_WOLFSSL/include/wolfssl"
712   LDFLAGS="${LDFLAGS} -L$WITH_WOLFSSL/lib"
714   AC_CHECK_HEADERS([wolfssl/ssl.h], [], [
715     AC_MSG_ERROR([wolfssl headers not found. install them or build without --with-wolfssl])
716   ])
717   AC_CHECK_LIB([wolfssl], [wolfSSL_Init],
718     [CRYPTO_LIB="-lwolfssl"],
719     [AC_MSG_ERROR([wolfssl crypto library not found. install it or build without --with-wolfssl])]
720   )
721   AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
722     #include <wolfssl/options.h>
723     #if !defined(HAVE_LIGHTY) && !defined(OPENSSL_ALL)
724     #error HAVE_LIGHTY macro not defined
725     #endif
726   ]])], [], [AC_MSG_ERROR([wolfssl must be built with ./configure --enable-lighty])])
727   SSL_LIB="-lwolfssl"
729   AC_SUBST([SSL_LIB])
730   AC_SUBST([CRYPTO_LIB])
733 AM_CONDITIONAL([BUILD_WITH_OPENSSL],
734                [test "$WITH_OPENSSL" != no || test "$WITH_WOLFSSL" != no])
736 if test "$WITH_OPENSSL" != no && test "$WITH_WOLFSSL" != no; then
737   AC_MSG_ERROR([lighttpd should not be built with both --with-openssl and --with-wolfssl])
741 dnl pcre support
742 AC_MSG_NOTICE([----------------------------------------])
743 AC_MSG_CHECKING([for perl regular expressions support])
744 AC_ARG_WITH([pcre],
745   [AC_HELP_STRING([--with-pcre], [Enable pcre support (default yes)])],
746   [WITH_PCRE=$withval],
747   [WITH_PCRE=yes]
749 AC_MSG_RESULT([$WITH_PCRE])
751 if test "$WITH_PCRE" != no; then
752   if test "$WITH_PCRE" != yes; then
753     PCRE_LIB="-L$WITH_PCRE/lib -lpcre"
754     CPPFLAGS="$CPPFLAGS -I$WITH_PCRE/include"
755   else
756     AC_PATH_PROG([PCRECONFIG], [pcre-config])
757     if test -n "$PCRECONFIG"; then
758       PCRE_LIB=`"$PCRECONFIG" --libs`
759       CPPFLAGS="$CPPFLAGS `"$PCRECONFIG" --cflags`"
760     fi
761   fi
763   if test -z "$PCRE_LIB"; then
764     AC_MSG_ERROR([pcre-config not found, install the pcre-devel package or build with --without-pcre])
765   fi
767   AC_DEFINE([HAVE_LIBPCRE], [1], [libpcre])
768   AC_DEFINE([HAVE_PCRE_H], [1], [pcre.h])
769   AC_SUBST([PCRE_LIB])
772 dnl zlib
773 AC_MSG_NOTICE([----------------------------------------])
774 AC_MSG_CHECKING([for zlib support])
775 AC_ARG_WITH([zlib],
776   [AC_HELP_STRING([--with-zlib],
777     [Enable zlib support for mod_compress]
778   )],
779   [WITH_ZLIB=$withval],
780   [WITH_ZLIB=yes]
782 AC_MSG_RESULT([$WITH_ZLIB])
784 if test "$WITH_ZLIB" != no; then
785   if test "$WITH_ZLIB" != yes; then
786     Z_LIB="-L$WITH_ZLIB -lz"
787     CPPFLAGS="$CPPFLAGS -I$WITH_ZLIB"
788   else
789     AC_CHECK_HEADERS([zlib.h], [],
790       [AC_MSG_ERROR([zlib headers not found, install them or build without --with-zlib])]
791     )
792     AC_CHECK_LIB([z], [deflate],
793       [Z_LIB=-lz],
794       [AC_MSG_ERROR([zlib library not found, install it or build without --with-zlib])]
795     )
796   fi
798   AC_DEFINE([HAVE_LIBZ], [1], [libz])
799   AC_DEFINE([HAVE_ZLIB_H], [1])
800   AC_SUBST([Z_LIB])
803 dnl bzip2
804 AC_MSG_NOTICE([----------------------------------------])
805 AC_MSG_CHECKING([for bzip2 support])
806 AC_ARG_WITH([bzip2],
807   [AC_HELP_STRING([--with-bzip2],
808     [Enable bzip2 support for mod_compress]
809   )],
810   [WITH_BZIP2=$withval],
811   [WITH_BZIP2=yes]
813 AC_MSG_RESULT([$WITH_BZIP2])
815 if test "$WITH_BZIP2" != no; then
816   if test "$WITH_BZIP2" != yes; then
817     BZ_LIB="-L$WITH_BZIP2 -lbz2"
818     CPPFLAGS="$CPPFLAGS -I$WITH_BZIP2"
819   else
820     AC_CHECK_HEADERS([bzlib.h], [], [
821       AC_MSG_ERROR([bzip2 headers not found, install them or build without --with-bzip2])
822     ])
823     AC_CHECK_LIB([bz2], [BZ2_bzCompress],
824       [BZ_LIB=-lbz2],
825       [AC_MSG_ERROR([bzip2 library not found, install it or build without --with-bzip2])]
826     )
827   fi
829   AC_DEFINE([HAVE_LIBBZ2], [1], [libbz2])
830   AC_DEFINE([HAVE_BZLIB_H], [1])
831   AC_SUBST([BZ_LIB])
834 dnl Check for fam/gamin
835 AC_MSG_NOTICE([----------------------------------------])
836 AC_MSG_CHECKING([for FAM])
837 AC_ARG_WITH([fam],
838   [AC_HELP_STRING([--with-fam],
839     [fam/gamin for reducing number of stat() calls]
840   )],
841   [WITH_FAM=$withval],
842   [WITH_FAM=no]
844 AC_MSG_RESULT([$WITH_FAM])
846 if test "$WITH_FAM" != no; then
847   if test "$WITH_FAM" != yes; then
848     FAM_LIBS="-L$WITH_FAM -lfam"
849     CPPFLAGS="$CPPFLAGS -I$WITH_FAM"
850   else
851     AC_CHECK_LIB([fam], [FAMOpen2], [
852       AC_CHECK_HEADERS([fam.h], [FAM_LIBS=-lfam])
853     ])
854     dnl fam has no pkg-config so far, so just search for gamin as fallback
855     if test -z "$FAM_LIBS"; then
856       PKG_CHECK_MODULES([FAM], [gamin >= 0.1.0])
857     fi
858   fi
860   if test -z "$FAM_LIBS"; then
861     AC_MSG_ERROR([fam/gamin headers and/or libs were not found, install them or build without --with-fam])
862   fi
864   OLD_LIBS=$LIBS
865   LIBS=$FAM_LIBS
866   AC_CHECK_FUNCS([FAMNoExists])
867   LIBS=$OLD_LIBS
869   AC_DEFINE([HAVE_LIBFAM], [1], [libfam])
870   AC_DEFINE([HAVE_FAM_H], [1], [fam.h])
871   AC_SUBST([FAM_LIBS])
875 dnl webdav props (xml2 and sqlite3)
876 AC_MSG_NOTICE([----------------------------------------])
877 AC_MSG_CHECKING([for properties in mod_webdav])
878 AC_ARG_WITH([webdav-props],
879   [AC_HELP_STRING([--with-webdav-props], [properties in mod_webdav])],
880   [WITH_WEBDAV_PROPS=$withval],
881   [WITH_WEBDAV_PROPS=no]
883 AC_MSG_RESULT([$WITH_WEBDAV_PROPS])
885 if test "$WITH_WEBDAV_PROPS" != no; then
886   AC_MSG_CHECKING([for libxml2])
887   AC_ARG_WITH([libxml],
888     [AC_HELP_STRING([--with-libxml],
889       [libxml2 for properties in mod_webdav]
890     )],
891     [WITH_LIBXML=$withval],
892     [WITH_LIBXML=yes]
893   )
894   AC_MSG_RESULT([$WITH_LIBXML])
896   if test "$WITH_LIBXML" = no; then
897     AC_MSG_ERROR([--with-webdav-props requires libxml])
898   fi
900   if test "$WITH_LIBXML" != yes; then
901     XML_LIBS="-L$WITH_LIBXML/.libs -lxml2"
902     XML_CFLAGS="-I$WITH_LIBXML/include"
903   else
904     PKG_CHECK_MODULES([XML], [libxml-2.0], [], [
905       AC_MSG_ERROR([libxml2 not found, install it or build without --with-webdav-props])
906     ])
907   fi
909   AC_DEFINE([HAVE_LIBXML2], [1], [libxml2])
910   AC_DEFINE([HAVE_LIBXML_H], [1], [libxml.h])
911   AC_SUBST([XML_LIBS])
912   AC_SUBST([XML_CFLAGS])
914   AC_MSG_CHECKING([for sqlite])
915   AC_ARG_WITH([sqlite],
916     [AC_HELP_STRING([--with-sqlite],
917       [sqlite for properties in mod_webdav]
918     )],
919     [WITH_SQLITE=$withval],
920     [WITH_SQLITE=yes]
921   )
922   AC_MSG_RESULT([$WITH_SQLITE])
924   if test "$WITH_SQLITE" = no; then
925     AC_MSG_ERROR([--with-webdav-props requires sqlite])
926   fi
928   if test "$WITH_SQLITE" != yes; then
929     SQLITE_LIBS="-L$WITH_SQLITE/.libs -lsqlite3"
930     SQLITE_CFLAGS="-I$WITH_SQLITE"
931   else
932     PKG_CHECK_MODULES([SQLITE], [sqlite3], [], [
933       AC_MSG_ERROR([sqlite3 not found, install it or build without --with-webdav-props])
934     ])
935   fi
937   AC_DEFINE([HAVE_SQLITE3], [1], [libsqlite3])
938   AC_DEFINE([HAVE_SQLITE3_H], [1], [sqlite3.h])
939   AC_SUBST([SQLITE_LIBS])
940   AC_SUBST([SQLITE_CFLAGS])
944 dnl webdav locks (uuid)
945 AC_MSG_NOTICE([----------------------------------------])
946 AC_MSG_CHECKING([for locks in mod_webdav])
947 AC_ARG_WITH([webdav-locks],
948   [AC_HELP_STRING([--with-webdav-locks],
949     [locks in mod_webdav (requires webdav properties)]
950   )],
951   [WITH_WEBDAV_LOCKS=$withval],
952   [WITH_WEBDAV_LOCKS=no]
954 AC_MSG_RESULT([$WITH_WEBDAV_LOCKS])
956 if test "$WITH_WEBDAV_LOCKS" != no; then
957   if test "$WITH_WEBDAV_PROPS" = no; then
958     AC_MSG_ERROR([--with-webdav-locks requires --with-webdav-props])
959   fi
961   AC_MSG_CHECKING([for libuuid])
962   AC_ARG_WITH([uuid],
963     [AC_HELP_STRING([--with-uuid], [uuid for locks in mod_webdav])],
964     [WITH_UUID=$withval],
965     [WITH_UUID=yes]
966   )
967   AC_MSG_RESULT([$WITH_UUID])
969   if test "$WITH_UUID" = no; then
970     AC_MSG_ERROR([--with-webdav-locks requires uuid])
971   fi
973   if test "$WITH_UUID" != yes; then
974     UUID_LIBS="-L$WITH_UUID -luuid"
975     CPPFLAGS="$CPPFLAGS -I$WITH_UUID"
976   else
977     AC_CHECK_LIB([uuid], [uuid_unparse],
978       [UUID_LIBS=-luuid],
979       [AC_MSG_ERROR([uuid lib not found, install it or build without --with-webdav-locks])]
980     )
981     AC_CHECK_HEADERS([uuid/uuid.h], [],
982       [AC_MSG_ERROR([uuid headers not found, install them or build without --with-webdav-locks])]
983     )
984   fi
986   AC_DEFINE([HAVE_LIBUUID], [1], [libuuid])
987   AC_DEFINE([HAVE_UUID_UUID_H], [1], [uuid/uuid.h is available])
988   AC_SUBST([UUID_LIBS])
991 dnl Check for gdbm
992 AC_MSG_NOTICE([----------------------------------------])
993 AC_MSG_CHECKING([for gdbm])
994 AC_ARG_WITH([gdbm],
995   [AC_HELP_STRING([--with-gdbm], [gdbm storage for mod_trigger_b4_dl])],
996   [WITH_GDBM=$withval],
997   [WITH_GDBM=no]
999 AC_MSG_RESULT([$WITH_GDBM])
1001 if test "$WITH_GDBM" != no; then
1002   if test "$WITH_GDBM" != yes; then
1003     GDBM_LIB="-L$WITH_GDBM -lgdbm"
1004     CPPFLAGS="$CPPFLAGS -I$WITH_GDBM"
1005   else
1006     AC_CHECK_LIB([gdbm], [gdbm_open],
1007       [GDBM_LIB=-lgdbm],
1008       [AC_MSG_ERROR([gdbm lib not found, install it or build without --with-gdbm])]
1009     )
1010     AC_CHECK_HEADERS([gdbm.h], [],
1011       [AC_MSG_ERROR([gdbm headers not found, install them or build without --with-gdbm])]
1012     )
1013   fi
1015   AC_DEFINE([HAVE_GDBM], [1], [libgdbm])
1016   AC_DEFINE([HAVE_GDBM_H], [1])
1017   AC_SUBST([GDBM_LIB])
1019 AM_CONDITIONAL([BUILD_WITH_GDBM], [test "$WITH_GDBM" != no])
1021 dnl Check for GeoIP
1022 AC_MSG_NOTICE([----------------------------------------])
1023 AC_MSG_CHECKING([for GeoIP])
1024 AC_ARG_WITH([geoip],
1025   [AC_HELP_STRING([--with-geoip], [IP-based geolocation lookup])],
1026   [WITH_GEOIP=$withval],
1027   [WITH_GEOIP=no]
1029 AC_MSG_RESULT([$WITH_GEOIP])
1031 if test "$WITH_GEOIP" != no; then
1032   if test "$WITH_GEOIP" != yes; then
1033     GEOIP_LIB="-L$WITH_GEOIP -lGeoIP"
1034     CPPFLAGS="$CPPFLAGS -I$WITH_GEOIP"
1035   else
1036     AC_CHECK_LIB([GeoIP], [GeoIP_country_name_by_addr],
1037       [GEOIP_LIB=-lGeoIP],
1038       [AC_MSG_ERROR([GeoIP lib not found, install it or build without --with-geoip])]
1039     )
1040     AC_CHECK_HEADERS([GeoIP.h], [],
1041       [AC_MSG_ERROR([GeoIP headers not found, install them or build without --with-geoip])]
1042     )
1043   fi
1045   AC_DEFINE([HAVE_GEOIP], [1], [libGeoIP])
1046   AC_DEFINE([HAVE_GEOIP_H], [1])
1047   AC_SUBST([GEOIP_LIB])
1049 AM_CONDITIONAL([BUILD_WITH_GEOIP], [test "$WITH_GEOIP" != no])
1051 dnl Check for maxminddb
1052 AC_MSG_NOTICE([----------------------------------------])
1053 AC_MSG_CHECKING([for maxminddb])
1054 AC_ARG_WITH([maxminddb],
1055   [AC_HELP_STRING([--with-maxminddb], [IP-based geolocation lookup])],
1056   [WITH_MAXMINDDB=$withval],
1057   [WITH_MAXMINDDB=no]
1059 AC_MSG_RESULT([$WITH_MAXMINDDB])
1061 if test "$WITH_MAXMINDDB" != no; then
1062   if test "$WITH_MAXMINDDB" != yes; then
1063     MAXMINDDB_LIB="-L$WITH_MAXMINDDB -lmaxminddb"
1064     CPPFLAGS="$CPPFLAGS -I$WITH_MAXMINDDB"
1065   else
1066     AC_CHECK_LIB([maxminddb], [MMDB_open],
1067       [MAXMINDDB_LIB=-lmaxminddb],
1068       [AC_MSG_ERROR([maxminddb lib not found, install it or build without --with-maxminddb])]
1069     )
1070     AC_CHECK_HEADERS([maxminddb.h], [],
1071       [AC_MSG_ERROR([maxminddb headers not found, install them or build without --with-maxminddb])]
1072     )
1073   fi
1075   AC_DEFINE([HAVE_MAXMINDDB], [1], [libmaxminddb])
1076   AC_DEFINE([HAVE_MAXMINDDB_H], [1])
1077   AC_SUBST([MAXMINDDB_LIB])
1079 AM_CONDITIONAL([BUILD_WITH_MAXMINDDB], [test "$WITH_MAXMINDDB" != no])
1081 dnl Check for memcached
1082 AC_MSG_NOTICE([----------------------------------------])
1083 AC_MSG_CHECKING([for memcached])
1084 AC_ARG_WITH([memcached],
1085   [AC_HELP_STRING([--with-memcached],
1086     [memcached storage for mod_trigger_b4_dl/mod_cml]
1087   )],
1088   [WITH_MEMCACHED=$withval],
1089   [WITH_MEMCACHED=no]
1091 AC_MSG_RESULT([$WITH_MEMCACHED])
1093 if test "$WITH_MEMCACHED" != no; then
1094   if test "$WITH_MEMCACHED" != yes; then
1095     MEMCACHED_LIB="-L$WITH_MEMCACHED -lMEMCACHED"
1096     CPPFLAGS="$CPPFLAGS -I$WITH_MEMCACHED"
1097   else
1098     AC_CHECK_LIB([memcached], [memcached],
1099       [ MEMCACHED_LIB=-lmemcached ],
1100       [AC_MSG_ERROR([memcached lib not found, install it or build without --with-memcached])]
1101     )
1102     AC_CHECK_HEADERS([libmemcached/memcached.h], [],
1103       [AC_MSG_ERROR([memcached headers not found, install them or build without --with-memcached])]
1104     )
1105   fi
1107   AC_DEFINE([USE_MEMCACHED], [1], [libmemcached])
1108   AC_SUBST([MEMCACHED_LIB])
1110 AM_CONDITIONAL([BUILD_WITH_MEMCACHED], [test "$WITH_MEMCACHED" != no])
1112 BUILD_MOD_TRIGGER_B4_DL=no
1113 if test "$WITH_MEMCACHED" != no || test "$WITH_GDBM" != no ; then
1114   BUILD_MOD_TRIGGER_B4_DL=yes
1117 AM_CONDITIONAL([BUILD_MOD_TRIGGER_B4_DL], [test "$BUILD_MOD_TRIGGER_B4_DL" != no])
1119 dnl Check for lua
1120 AC_MSG_NOTICE([----------------------------------------])
1121 AC_MSG_CHECKING([if lua-support is requested])
1122 AC_ARG_WITH([lua],
1123   [AC_HELP_STRING([--with-lua], [lua engine for mod_magnet/mod_cml])],
1124   [WITH_LUA=$withval],
1125   [WITH_LUA=no]
1127 AC_MSG_RESULT([$WITH_LUA])
1129 if test "$WITH_LUA" != no; then
1130   found_lua=0
1131   if test "$WITH_LUA" != yes; then
1132     PKG_CHECK_MODULES([LUA], [$WITH_LUA >= 5.1],
1133       [found_lua=1],
1134       [AC_MSG_NOTICE([Couldn\'t find requested lua pkg-config module $WITH_LUA])]
1135     )
1136     if test "$found_lua" = "0"; then
1137       LUA_LIBS="-L$WITH_LUA -llua"
1138       LUA_CFLAGS="-I$WITH_LUA"
1139     fi
1140   else
1141     for luaname in lua5.3 lua-5.3 lua5.2 lua-5.2 lua5.1 lua-5.1 lua; do
1142       if test "$found_lua" = "0"; then
1143         PKG_CHECK_MODULES([LUA], [$luaname >= 5.1],
1144           [found_lua=1],
1145           [AC_MSG_NOTICE([Couldn\'t find $luaname])]
1146         )
1147       fi
1148     done
1149     if test "$found_lua" = "0"; then
1150       AC_MSG_ERROR([Couldn\'t find any lua pkg-config module])
1151     fi
1152   fi
1154   AC_DEFINE([HAVE_LUA], [1], [liblua])
1155   AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
1156   AC_SUBST([LUA_LIBS])
1157   AC_SUBST([LUA_CFLAGS])
1159 AM_CONDITIONAL([BUILD_WITH_LUA], [test "$WITH_LUA" != no])
1161 dnl "--with-FEATURE" blocks end
1162 AC_MSG_NOTICE([----------------------------------------])
1164 dnl search for crypt_r and (fallback) for crypt
1165 save_LIBS=$LIBS
1166 LIBS=
1167 found_crypt=no
1168 AC_SEARCH_LIBS([crypt_r], [crypt],
1169   [
1170     AC_DEFINE([HAVE_CRYPT_R], [1], [crypt_r])
1171     AC_CHECK_HEADERS([crypt.h])
1172     CRYPT_LIB=$LIBS
1173     found_crypt=crypt_r
1174   ],
1175   [AC_SEARCH_LIBS([crypt], [crypt], [
1176     AC_DEFINE([HAVE_CRYPT], [1], [crypt])
1177     AC_CHECK_HEADERS([crypt.h])
1178     CRYPT_LIB=$LIBS
1179     found_crypt=crypt
1180   ])]
1182 LIBS=$save_LIBS
1183 AC_SUBST([CRYPT_LIB])
1185 AC_MSG_CHECKING([crypt_r/crypt support])
1186 AC_MSG_RESULT([$found_crypt])
1188 dnl check whether sendfilev needs -lsendfile
1189 AC_MSG_NOTICE([----------------------------------------])
1190 save_LIBS=$LIBS
1191 LIBS=
1192 have_sendfilev=no
1193 AC_SEARCH_LIBS([sendfilev], [sendfile], [
1194   if test -z "$LIBS"; then
1195     have_sendfilev=yes
1196   else
1197     have_sendfilev=$LIBS
1198   fi
1199   SENDFILE_LIB=$LIBS
1200   AC_DEFINE([HAVE_SENDFILEV], [1], [solaris sendfilev])
1202 LIBS=$save_LIBS
1203 AC_SUBST([SENDFILE_LIB])
1205 AC_MSG_CHECKING([solaris sendfilev present])
1206 AC_MSG_RESULT([$have_sendfilev])
1208 AC_MSG_NOTICE([----------------------------------------])
1210 case "$host_os" in
1211 *mingw* ) LIBS="$LIBS -lwsock32" ;;
1212 * ) ;;
1213 esac
1215 AC_CHECK_FUNCS([\
1216   arc4random_buf \
1217   chroot \
1218   clock_gettime \
1219   epoll_ctl \
1220   explicit_bzero \
1221   explicit_memset \
1222   fork \
1223   getloadavg \
1224   getrlimit \
1225   getuid \
1226   gmtime_r \
1227   inet_pton \
1228   issetugid \
1229   jrand48 \
1230   kqueue \
1231   localtime_r \
1232   lstat \
1233   madvise \
1234   memset \
1235   memset_s \
1236   mmap \
1237   pathconf \
1238   pipe2 \
1239   poll \
1240   port_create \
1241   select \
1242   send_file \
1243   sendfile \
1244   sendfile64 \
1245   sigaction \
1246   signal \
1247   srandom \
1248   writev \
1250 AC_CHECK_HEADERS([sys/random.h], [AC_CHECK_FUNCS([getentropy])])
1251 AC_CHECK_HEADERS([linux/random.h], [AC_CHECK_FUNCS([getrandom])])
1253 AC_MSG_NOTICE([----------------------------------------])
1254 AC_MSG_CHECKING([if weak symbols are supported])
1255 AC_LINK_IFELSE(
1256   [AC_LANG_PROGRAM([[
1257     __attribute__((weak)) void __dummy(void *x) { }
1258     void f(void *x) { __dummy(x); }
1259   ]])],
1260   [
1261     AC_MSG_RESULT([yes])
1262     AC_DEFINE([HAVE_WEAK_SYMBOLS], [1], [weak symbols are supported])
1263   ],
1264   [AC_MSG_RESULT([no])]
1267 AC_MSG_NOTICE([----------------------------------------])
1268 AC_MSG_CHECKING([for Large File System support])
1269 AC_ARG_ENABLE([lfs],
1270   [AC_HELP_STRING([--enable-lfs],
1271     [Turn on Large File System (default)]
1272   )],
1273   [
1274     case "${enableval}" in
1275     yes) ENABLE_LFS=yes ;;
1276     no) ENABLE_LFS=no ;;
1277     *) AC_MSG_ERROR([bad value ${enableval} for --enable-lfs]) ;;
1278     esac
1279   ],
1280   [ ENABLE_LFS=yes ]
1282 AC_MSG_RESULT([$ENABLE_LFS])
1283 if test "$ENABLE_LFS" = yes; then
1284   CPPFLAGS="${CPPFLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGE_FILES"
1287 dnl check if sendfile works
1288 if test "$ac_cv_func_sendfile" = yes; then
1289   AC_MSG_NOTICE([----------------------------------------])
1290   AC_MSG_CHECKING([if sendfile works])
1291   if test "$cross_compiling" = no; then
1292     AC_TRY_RUN(
1293       [
1294         #ifdef HAVE_SYS_SENDFILE_H
1295         #include <sys/sendfile.h>
1296         #endif /* HAVE_SYS_SENDFILE_H */
1297         #include <errno.h>
1298         int main() {
1299           int o = 0;
1300           if (-1 == sendfile(-1, 0, &o, 0) && errno == ENOSYS) return -1;
1301           return 0;
1302         }
1303       ],
1304       [AC_MSG_RESULT([yes])],
1305       [
1306         AC_MSG_RESULT([no])
1307         AC_DEFINE([HAVE_SENDFILE_BROKEN], [1], [broken sendfile])
1308       ]
1309     )
1310   fi
1313 dnl Check for IPv6 support
1314 AC_MSG_NOTICE([----------------------------------------])
1315 AC_ARG_ENABLE([ipv6],
1316   [AC_HELP_STRING([--disable-ipv6], [disable IPv6 support])],
1317   [
1318     case "${enableval}" in
1319     yes) ipv6=true ;;
1320     no) ipv6=false ;;
1321     *) AC_MSG_ERROR([bad value ${enableval} for --enable-ipv6]) ;;
1322     esac
1323   ],
1324   [ipv6=true]
1327 if test "$ipv6" = true; then
1328   AC_CACHE_CHECK([for IPv6 support], [ac_cv_ipv6_support], [
1329     AC_TRY_LINK(
1330       [
1331         #include <sys/types.h>
1332         #include <sys/socket.h>
1333         #include <netinet/in.h>
1334       ],
1335       [
1336         struct sockaddr_in6 s; struct in6_addr t=in6addr_any; int i=AF_INET6; s; t.s6_addr[0] = 0;
1337       ],
1338       [ac_cv_ipv6_support=yes],
1339       [ac_cv_ipv6_support=no]
1340     )
1341   ])
1343   if test "$ac_cv_ipv6_support" = yes; then
1344     AC_DEFINE([HAVE_IPV6], [1], [Whether to enable IPv6 support])
1345   else
1346     AC_MSG_ERROR([IPv6 seems broken.  Fix it or build with --disable-ipv6])
1347   fi
1350 # disable mmap by default
1351 # lighttpd may always use mmap with files it owns (created tmp files)
1352 AC_MSG_NOTICE([----------------------------------------])
1353 AC_MSG_CHECKING([use mmap if available])
1354 AC_ARG_ENABLE([mmap],
1355   [AC_HELP_STRING([--enable-mmap],
1356     [use mmap if available]
1357   )],
1358   [
1359     case "${enableval}" in
1360     yes) mmap=true ;;
1361     no) mmap=false ;;
1362     *) AC_MSG_ERROR([bad value ${enableval} for --enable-mmap]) ;;
1363     esac
1364   ],
1365   [mmap=false]
1367 AC_MSG_RESULT([$mmap])
1369 if test "$mmap" = true; then
1370   AC_DEFINE([ENABLE_MMAP], [1], [Use mmap if available])
1373 dnl check for fastcgi lib, for the tests only
1374 AC_MSG_NOTICE([----------------------------------------])
1375 fastcgi_found=no
1376 AC_CHECK_LIB([fcgi], [FCGI_Accept], [
1377   AC_CHECK_HEADERS([fastcgi.h fastcgi/fastcgi.h], [
1378     fastcgi_found=yes
1379   ])
1382 AM_CONDITIONAL([CHECK_WITH_FASTCGI], [test "$fastcgi_found" = yes])
1385 AC_MSG_NOTICE([----------------------------------------])
1386 dnl check for extra compiler options (warning options)
1387 if test "${GCC}" = yes; then
1388   TRY_CFLAGS([-Wall -W -Wshadow -pedantic])
1391 AC_ARG_ENABLE([extra-warnings],
1392   [AC_HELP_STRING([--enable-extra-warnings],
1393     [enable extra warnings (gcc specific)]
1394   )],
1395   [
1396     case "${enableval}" in
1397     error) extrawarnings=error ;;
1398     yes) extrawarnings=true ;;
1399     no) extrawarnings=false ;;
1400     *) AC_MSG_ERROR([bad value ${enableval} for --enable-extra-warnings]) ;;
1401     esac
1402   ],
1403   [extrawarnings=false]
1406 if test "$extrawarnings" = true || test "$extrawarnings" = error; then
1407   TRY_CFLAGS([-g -O2 -g2 -Wall -Wmissing-declarations -Wcast-align -Wsign-compare -Wnested-externs -Wpointer-arith -D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security])
1408   TRY_LDFLAGS([-Wl,--as-needed])
1409   if test "$extrawarnings" = error; then
1410     AS_VAR_APPEND([CFLAGS], [" -Werror"])
1411     AS_VAR_APPEND([LDFLAGS], [" -Wl,--fatal-warnings"])
1412   fi
1415 dnl build version-id
1416 LIGHTTPD_VERSION_ID=m4_format([0x%x%02x%02x], m4_unquote(m4_split(AC_PACKAGE_VERSION, [\.])))
1417 AC_DEFINE_UNQUOTED([LIGHTTPD_VERSION_ID], [$LIGHTTPD_VERSION_ID], [lighttpd-version-id])
1419 AC_CONFIG_FILES([\
1420   distribute.sh \
1421   doc/config/conf.d/Makefile \
1422   doc/config/Makefile \
1423   doc/config/vhosts.d/Makefile \
1424   doc/Makefile \
1425   doc/outdated/Makefile \
1426   doc/scripts/Makefile \
1427   doc/systemd/Makefile \
1428   Makefile \
1429   src/Makefile \
1430   tests/docroot/123/Makefile \
1431   tests/docroot/Makefile \
1432   tests/docroot/www/expire/Makefile \
1433   tests/docroot/www/go/Makefile \
1434   tests/docroot/www/indexfile/Makefile \
1435   tests/docroot/www/Makefile \
1436   tests/Makefile \
1438 AC_OUTPUT
1440 do_build="\
1441   mod_access \
1442   mod_accesslog \
1443   mod_alias \
1444   mod_auth \
1445   mod_authn_file \
1446   mod_cgi \
1447   mod_compress \
1448   mod_deflate \
1449   mod_dirlisting \
1450   mod_evhost \
1451   mod_expire \
1452   mod_extforward \
1453   mod_fastcgi \
1454   mod_flv_streaming \
1455   mod_indexfile \
1456   mod_proxy \
1457   mod_redirect \
1458   mod_rewrite \
1459   mod_rrdtool \
1460   mod_scgi \
1461   mod_secdownload \
1462   mod_setenv \
1463   mod_simple_vhost \
1464   mod_sockproxy \
1465   mod_ssi \
1466   mod_staticfile \
1467   mod_status \
1468   mod_userdir \
1469   mod_usertrack \
1470   mod_vhostdb \
1471   mod_webdav \
1472   mod_wstunnel \
1475 lighty_track_feature() {
1476   if eval "$3"; then
1477     enable_feature="$enable_feature $1"
1478     do_build="$do_build $2"
1479   else
1480     disable_feature="$disable_feature $1"
1481     no_build="$no_build $2"
1482   fi
1485 lighty_track_feature "regex-conditionals" "" \
1486   'test "$WITH_PCRE" != no'
1488 lighty_track_feature "storage-gdbm" "" \
1489   'test "$WITH_GDBM" != no'
1491 lighty_track_feature "storage-memcached" "" \
1492   'test "$WITH_MEMCACHED" != no'
1494 lighty_track_feature "" "mod_trigger_b4_dl" \
1495   'test "$BUILD_MOD_TRIGGER_B4_DL" != no'
1497 lighty_track_feature "mysql" "mod_authn_mysql mod_mysql_vhost mod_vhostdb_mysql" \
1498   'test "$WITH_MYSQL" != no'
1500 lighty_track_feature "postgresql" "mod_vhostdb_pgsql" \
1501   'test "$WITH_PGSQL" != no'
1503 lighty_track_feature "dbi" "mod_vhostdb_dbi" \
1504   'test "$WITH_DBI" != no'
1506 lighty_track_feature "lua" "mod_cml mod_magnet" \
1507   'test "$WITH_LUA" != no'
1509 lighty_track_feature "geoip" "mod_geoip" \
1510   'test "$WITH_GEOIP" != no'
1512 lighty_track_feature "maxminddb" "mod_maxminddb" \
1513   'test "$WITH_MAXMINDDB" != no'
1515 lighty_track_feature "compress-gzip compress-deflate" "" \
1516   'test "$WITH_ZLIB" != no'
1518 lighty_track_feature "compress-bzip2" "" \
1519   'test "$WITH_BZIP2" != no'
1521 lighty_track_feature "kerberos" "mod_authn_gssapi" \
1522   'test "$WITH_KRB5" != no'
1524 lighty_track_feature "ldap" "mod_authn_ldap mod_vhostdb_ldap" \
1525   'test "$WITH_LDAP" != no'
1527 lighty_track_feature "pam" "mod_authn_pam" \
1528   'test "$WITH_PAM" != no'
1530 lighty_track_feature "network-openssl" "mod_openssl" \
1531   'test "$WITH_OPENSSL" != no || test "$WITH_WOLFSSL" != no'
1533 lighty_track_feature "auth-crypt" "" \
1534   'test "$found_crypt" != no'
1536 lighty_track_feature "network-ipv6" "" \
1537   'test "$ac_cv_ipv6_support" != no'
1539 lighty_track_feature "large-files" "" \
1540   'test "$ENABLE_LFS" = yes'
1542 lighty_track_feature "stat-cache-fam" "" \
1543   'test "$WITH_FAM" != no'
1545 lighty_track_feature "webdav-properties" "" \
1546   'test "$WITH_WEBDAV_PROPS" != no'
1548 lighty_track_feature "webdav-locks" "" \
1549   'test "$WITH_WEBDAV_LOCKS" != no'
1551 dnl output
1553 $ECHO
1554 $ECHO "Plugins:"
1555 $ECHO
1557 $ECHO "enabled: "
1558 for p in $do_build; do
1559   $ECHO "  $p"
1560 done | sort
1562 $ECHO "disabled: "
1563 for p in $no_build; do
1564   $ECHO "  $p"
1565 done | sort
1567 $ECHO
1568 $ECHO "Features:"
1569 $ECHO
1571 $ECHO "enabled: "
1572 for p in $enable_feature; do
1573   $ECHO "  $p"
1574 done | sort
1576 $ECHO "disabled: "
1577 for p in $disable_feature; do
1578   $ECHO "  $p"
1579 done | sort
1581 $ECHO