xref: /lighttpd1.4/configure.ac (revision d5e899e2)
1dnl                                               -*- Autoconf -*-
2dnl Process this file with autoconf to produce a configure script.
3dnl
4dnl Indentation rules:
5dnl - closing braces not at the beginning of a line must match opening
6dnl   braces earlier on that line
7dnl - closing braces at the beginning of a line:
8dnl   - must not be followed by anything else apart from "," or comments
9dnl   - must match opening braces from another line and indented the
10dnl     same as that other line
11dnl - if one argument was put on a new line, all following arguments
12dnl   must be on their own line too
13dnl - if an argument uses more than one line and is not a single
14dnl   function call, the argument should be on different lines than the
15dnl   wrapping braces
16AC_PREREQ(2.60)
17AC_INIT([lighttpd], [1.4.56], [https://redmine.lighttpd.net/projects/lighttpd/boards/2], [lighttpd], [https://www.lighttpd.net/])
18AC_CONFIG_SRCDIR([src/server.c])
19AC_CONFIG_HEADER([config.h])
20AC_CONFIG_MACRO_DIR([m4])
21
22AC_CANONICAL_HOST
23
24AM_INIT_AUTOMAKE([1.13 -Wall -Wno-portability -Wno-override foreign dist-xz tar-ustar serial-tests silent-rules subdir-objects])
25
26dnl @synopsis TRY_CFLAGS [compiler flags]
27dnl @summary check whether compiler supports given flags and adds them to CFLAGS
28AC_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])
42])
43
44dnl @synopsis TRY_LDFLAGS [linker flags]
45dnl @summary check whether linker supports given flags and adds them to LDFLAGS
46AC_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])
60])
61
62dnl Checks for programs.
63AC_PROG_CC
64AC_PROG_CC_STDC
65AX_PROG_CC_FOR_BUILD
66AC_PROG_LD
67AC_PROG_INSTALL
68AC_PROG_CPP
69AC_PROG_MAKE_SET
70
71AC_USE_SYSTEM_EXTENSIONS
72AM_PROG_AR
73
74dnl AC_CANONICAL_HOST
75case "$host_os" in
76*darwin*|*cygwin*|*aix*|*mingw*|*midipix* ) NO_RDYNAMIC=yes ;;
77* ) NO_RDYNAMIC=no ;;
78esac
79AM_CONDITIONAL([NO_RDYNAMIC], [test "$NO_RDYNAMIC" = yes])
80
81AM_CONDITIONAL([LIGHTTPD_STATIC], [test "$LIGHTTPD_STATIC" = yes])
82
83AC_EXEEXT
84
85dnl libtool
86AC_DISABLE_STATIC
87AC_ENABLE_SHARED
88
89AC_LIBTOOL_DLOPEN
90AC_PROG_LIBTOOL
91
92dnl for solaris
93CPPFLAGS="${CPPFLAGS} -D_REENTRANT"
94
95dnl Checks for header files.
96
97dnl check for:
98dnl   inttypes.h => HAVE_INTTYPES_H
99dnl   stdint.h => HAVE_STDINT_H
100dnl and maybe more (which shouldn't be relied on)
101AC_HEADER_STDC
102dnl checks for sys/wait.h => HAVE_SYS_WAIT_H
103AC_HEADER_SYS_WAIT
104AC_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 \
127])
128
129dnl Checks for typedefs, structures, and compiler characteristics.
130AC_C_CONST
131AC_C_INLINE
132AC_TYPE_OFF_T
133AC_TYPE_PID_T
134AC_TYPE_SIZE_T
135
136AC_CHECK_MEMBER([struct tm.tm_gmtoff],
137  [AC_DEFINE([HAVE_STRUCT_TM_GMTOFF], [1], [gmtoff in struct tm])],
138  [],
139  [#include <time.h>]
140)
141AC_CHECK_TYPES([socklen_t],
142  [], dnl defines HAVE_SOCKLEN_T
143  [],
144  [
145    #include <sys/types.h>
146    #include <sys/socket.h>
147  ]
148)
149
150dnl openssl on solaris needs -lsocket -lnsl
151AC_SEARCH_LIBS([socket], [socket])
152AC_SEARCH_LIBS([gethostbyname], [nsl socket])
153
154dnl On Haiku accept() and friends are in libnetwork
155AC_SEARCH_LIBS([accept], [network])
156
157dnl clock_gettime() needs -lrt with glibc < 2.17, and possibly other platforms
158AC_SEARCH_LIBS([clock_gettime], [rt])
159
160dnl FreeBSD elftc_copyfile()
161save_LIBS=$LIBS
162LIBS=
163AC_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  ])
169])
170LIBS=$save_LIBS
171AC_SUBST([ELFTC_LIB])
172
173dnl need dlopen/-ldl to load plugins (when not on windows)
174save_LIBS=$LIBS
175LIBS=
176AC_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  ])
182])
183LIBS=$save_LIBS
184AC_SUBST([DL_LIB])
185
186dnl prepare pkg-config usage below
187PKG_PROG_PKG_CONFIG
188
189dnl checking for libev
190AC_MSG_NOTICE([----------------------------------------])
191AC_MSG_CHECKING([for libev support])
192AC_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]
198)
199AC_MSG_RESULT([$WITH_LIBEV])
200
201LIBEV_CFLAGS=
202LIBEV_LIBS=
203
204if test "$WITH_LIBEV" != no; then
205  PKG_CHECK_MODULES([LIBEV], [libev], [], [
206    dnl no pkg-config for libev, searching manually:
207
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  ])
224
225  AC_DEFINE([HAVE_LIBEV], [1], [libev support])
226fi
227
228AC_SUBST([LIBEV_CFLAGS])
229AC_SUBST([LIBEV_LIBS])
230
231dnl Checks for mysql
232AC_MSG_NOTICE([----------------------------------------])
233AC_MSG_CHECKING([for MySQL support])
234AC_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]
240)
241AC_MSG_RESULT([$WITH_MYSQL])
242
243MYSQL_CFLAGS=
244MYSQL_LIBS=
245
246if 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
260
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
268
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
276
277  AC_MSG_CHECKING([for MySQL includes at])
278  AC_MSG_RESULT([$MYSQL_CFLAGS])
279
280  AC_MSG_CHECKING([for MySQL libraries at])
281  AC_MSG_RESULT([$MYSQL_LIBS])
282
283  AC_DEFINE([HAVE_MYSQL], [1], [mysql support])
284fi
285AM_CONDITIONAL([BUILD_WITH_MYSQL], [test "$WITH_MYSQL" != no])
286
287AC_SUBST([MYSQL_LIBS])
288AC_SUBST([MYSQL_CFLAGS])
289
290dnl Checks for pgsql
291AC_MSG_NOTICE([----------------------------------------])
292AC_MSG_CHECKING([for PgSQL support])
293AC_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]
299)
300AC_MSG_RESULT([$WITH_PGSQL])
301
302PGSQL_CFLAGS=
303PGSQL_LIBS=
304
305if 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
315
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
323
324    PGSQL_CFLAGS="-I`"$PGSQL_CONFIG" --includedir`"
325    PGSQL_LIBS="-L`"$PGSQL_CONFIG" --libdir` -lpq"
326  fi
327
328  AC_MSG_CHECKING([for PgSQL includes at])
329  AC_MSG_RESULT([$PGSQL_CFLAGS])
330
331  AC_MSG_CHECKING([for PgSQL libraries at])
332  AC_MSG_RESULT([$PGSQL_LIBS])
333
334  AC_DEFINE([HAVE_PGSQL], [1], [pgsql support])
335fi
336AM_CONDITIONAL([BUILD_WITH_PGSQL], [test "$WITH_PGSQL" != no])
337
338AC_SUBST([PGSQL_LIBS])
339AC_SUBST([PGSQL_CFLAGS])
340
341dnl Checks for libdbi library
342AC_MSG_NOTICE([----------------------------------------])
343AC_MSG_CHECKING([for LibDBI support])
344AC_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]
350)
351AC_MSG_RESULT([$WITH_DBI])
352
353DBI_INCLUDE=
354DBI_LIBS=
355
356if 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
372
373  AC_DEFINE([HAVE_DBI], [1], [LibDBI support])
374fi
375AM_CONDITIONAL([BUILD_WITH_DBI], [test "$WITH_DBI" != no])
376
377AC_SUBST([DBI_LIBS])
378AC_SUBST([DBI_CFLAGS])
379
380dnl Checks for libsasl2 library
381AC_MSG_NOTICE([----------------------------------------])
382AC_MSG_CHECKING([for LibSASL support])
383AC_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]
389)
390AC_MSG_RESULT([$WITH_SASL])
391
392SASL_INCLUDE=
393SASL_LIBS=
394
395if 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
411
412  AC_DEFINE([HAVE_SASL], [1], [LibSASL support])
413fi
414AM_CONDITIONAL([BUILD_WITH_SASL], [test "$WITH_SASL" != no])
415
416AC_SUBST([SASL_LIBS])
417AC_SUBST([SASL_CFLAGS])
418
419
420dnl Check for LDAP
421AC_MSG_NOTICE([----------------------------------------])
422AC_MSG_CHECKING([for LDAP support])
423AC_ARG_WITH([ldap],
424  [AC_HELP_STRING([--with-ldap], [enable LDAP support])],
425  [WITH_LDAP=$withval],
426  [WITH_LDAP=no]
427)
428AC_MSG_RESULT([$WITH_LDAP])
429
430if 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])
455fi
456AM_CONDITIONAL([BUILD_WITH_LDAP], [test "$WITH_LDAP" != no])
457
458dnl Check for PAM
459AC_MSG_NOTICE([----------------------------------------])
460AC_MSG_CHECKING(for PAM support)
461AC_ARG_WITH([pam],
462  [AC_HELP_STRING([--with-pam],[enable PAM support])],
463  [WITH_PAM=$withval],
464  [WITH_PAM=no]
465)
466AC_MSG_RESULT([$withval])
467
468if 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)
480fi
481AM_CONDITIONAL([BUILD_WITH_PAM], [test "$WITH_PAM" != no])
482
483dnl Check for xattr
484AC_MSG_NOTICE([----------------------------------------])
485AC_MSG_CHECKING([for extended attributes support])
486AC_ARG_WITH([attr],
487  [AC_HELP_STRING([--with-attr], [enable extended attribute support])],
488  [WITH_ATTR=$withval],
489  [WITH_ATTR=no]
490)
491AC_MSG_RESULT([$WITH_ATTR])
492
493if 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])
505
506  # Linux getxattr
507  AC_CHECK_FUNC([getxattr], [
508    AC_CHECK_HEADERS([sys/xattr.h], [
509      AC_DEFINE([HAVE_XATTR], [1], [Linux extended attributes])
510      AC_DEFINE([HAVE_SYS_XATTR_H], [1])
511      have_xattr=yes
512    ])
513  ])
514
515  # (Free)BSD extattr
516  AC_CHECK_FUNC([extattr_get_file], [
517    AC_CHECK_HEADERS([sys/extattr.h], [
518      AC_DEFINE([HAVE_EXTATTR], [1], [BSD extended attributes])
519      AC_DEFINE([HAVE_SYS_EXTATTR_H], [1])
520      have_xattr=yes
521    ])
522  ])
523
524  if test "$have_xattr" = no; then
525    AC_MSG_ERROR([no backend found implementing extended attributes])
526  fi
527fi
528
529dnl Check for valgrind
530AC_MSG_NOTICE([----------------------------------------])
531AC_MSG_CHECKING([for valgrind])
532AC_ARG_WITH([valgrind],
533  [AC_HELP_STRING([--with-valgrind],
534    [enable internal support for valgrind]
535  )],
536  [WITH_VALGRIND=$withval],
537  [WITH_VALGRIND=no]
538)
539AC_MSG_RESULT([$WITH_VALGRIND])
540
541if test "$WITH_VALGRIND" != no; then
542  AC_CHECK_HEADERS([valgrind/valgrind.h], [], [
543    AC_MSG_ERROR([valgrind headers not found. install them or build without --with-valgrind])
544  ])
545fi
546
547dnl Checking for libunwind
548AC_MSG_NOTICE([----------------------------------------])
549AC_MSG_CHECKING([for libunwind])
550AC_ARG_WITH([libunwind],
551  [AC_HELP_STRING([--with-libunwind],
552    [Include libunwind support for backtraces on assert failures]
553  )],
554  [WITH_LIBUNWIND=$withval],
555  [WITH_LIBUNWIND=no]
556)
557AC_MSG_RESULT([$WITH_LIBUNWIND])
558
559if test "$WITH_LIBUNWIND" != no; then
560  PKG_CHECK_MODULES([LIBUNWIND], [libunwind], [], [
561    AC_MSG_ERROR([libunwind not found. install it or build without --with-libunwind])
562  ])
563  AC_DEFINE([HAVE_LIBUNWIND], [1], [Have libunwind support])
564fi
565
566dnl Checking for kerberos5
567AC_MSG_NOTICE([----------------------------------------])
568AC_MSG_CHECKING([for kerberos5])
569AC_ARG_WITH([krb5],
570  [AC_HELP_STRING([--with-krb5@<:@=DIR@:>@], [Use Kerberos 5])],
571  [WITH_KRB5=$withval],
572  [WITH_KRB5=no]
573)
574AC_MSG_RESULT([$WITH_KRB5])
575
576if test "$WITH_KRB5" != no; then
577  if test "$WITH_KRB5" != yes; then
578    krb5_append_CPPFLAGS=" -I$WITH_KRB5/include"
579    krb5_append_LDFLAGS=" -L$WITH_KRB5/lib"
580  fi
581fi
582
583AC_MSG_CHECKING([custom include directory for kerberos5])
584AC_ARG_WITH([krb5-includes],
585  [AC_HELP_STRING([--with-krb5-includes=DIR], [Kerberos includes])],
586  [
587    if test "$WITH_KRB5" = no; then
588      AC_MSG_ERROR([build --with-krb5 to use --with-krb5-includes])
589    fi
590    krb5_append_CPPFLAGS=" -I$withval"
591    AC_MSG_RESULT([$withval])
592  ],
593  [AC_MSG_RESULT([no])]
594)
595
596AC_MSG_CHECKING([custom lib directory for kerberos5])
597AC_ARG_WITH([krb5-libs],
598  [AC_HELP_STRING([--with-krb5-libs=DIR], [Kerberos libraries])],
599  [
600    if test "$WITH_KRB5" = no; then
601      AC_MSG_ERROR([build --with-krb5 to use --with-krb5-libs])
602    fi
603    krb5_append_LDFLAGS=" -L$withval"
604    AC_MSG_RESULT([$withval])
605  ],
606  [AC_MSG_RESULT([no])]
607)
608
609if test "$WITH_KRB5" != no; then
610  CPPFLAGS="${CPPFLAGS}${krb5_append_CPPFLAGS}"
611  LDFLAGS="${LDFLAGS}${krb5_append_LDFLAGS}"
612
613  AC_CHECK_LIB([gssapi_krb5], [gss_acquire_cred],
614    [AC_CHECK_HEADERS([gssapi/gssapi_krb5.h],
615      [
616        KRB5_LIB="-lkrb5 -lgssapi_krb5"
617        AC_DEFINE([HAVE_KRB5], [1], [libgssapi_krb5])
618      ],
619      [AC_MSG_ERROR([gssapi_krb5 headers were not found, install them or build without --with-krb5])]
620    )],
621    [AC_MSG_ERROR([gssapi_krb5 libs were not found, install them or build without --with-krb5])]
622  )
623  case "$host_os" in
624  *darwin*|*cygwin* ) KRB5_LIB="$KRB5_LIB -lcom_err" ;;
625  * ) ;;
626  esac
627fi
628
629AM_CONDITIONAL([BUILD_WITH_KRB5], [test "$WITH_KRB5" != no])
630AC_SUBST([KRB5_LIB])
631
632dnl Check for openssl
633AC_MSG_NOTICE([----------------------------------------])
634AC_MSG_CHECKING([for OpenSSL])
635AC_ARG_WITH([openssl],
636  [AC_HELP_STRING([--with-openssl@<:@=DIR@:>@],
637    [Include openssl support (default no)]
638  )],
639  [WITH_OPENSSL=$withval],
640  [WITH_OPENSSL=no]
641)
642AC_MSG_RESULT([$WITH_OPENSSL])
643AM_CONDITIONAL([BUILD_WITH_OPENSSL], test ! "$WITH_OPENSSL" = no)
644
645if test "$WITH_OPENSSL" != no; then
646  if test "$WITH_OPENSSL" != yes; then
647    openssl_append_CPPFLAGS=" -I$WITH_OPENSSL/include"
648    openssl_append_LDFLAGS=" -L$WITH_OPENSSL/lib"
649  fi
650fi
651
652AC_MSG_CHECKING([custom include directory for openssl])
653AC_ARG_WITH([openssl-includes],
654  [AC_HELP_STRING([--with-openssl-includes=DIR], [OpenSSL includes])],
655  [
656    if test "$WITH_OPENSSL" = no; then
657      AC_MSG_ERROR([build --with-openssl to use --with-openssl-includes])
658    fi
659    openssl_append_CPPFLAGS=" -I$withval"
660    AC_MSG_RESULT([$withval])
661  ],
662  [AC_MSG_RESULT([no])]
663)
664
665AC_MSG_CHECKING([custom lib directory for openssl])
666AC_ARG_WITH([openssl-libs],
667  [AC_HELP_STRING([--with-openssl-libs=DIR], [OpenSSL libraries])],
668  [
669    if test "$WITH_OPENSSL" = no; then
670      AC_MSG_ERROR([build --with-openssl to use --with-openssl-libs])
671    fi
672    openssl_append_LDFLAGS=" -L$withval"
673    AC_MSG_RESULT([$withval])
674  ],
675  [AC_MSG_RESULT([no])]
676)
677
678if test "$WITH_OPENSSL" != no; then
679  if test "$WITH_KRB5" != no; then
680    AC_DEFINE([USE_OPENSSL_KERBEROS], [1], [with kerberos])
681  fi
682
683  CPPFLAGS="${CPPFLAGS}${openssl_append_CPPFLAGS}"
684  LDFLAGS="${LDFLAGS}${openssl_append_LDFLAGS}"
685
686  AC_CHECK_HEADERS([openssl/ssl.h], [], [
687    AC_MSG_ERROR([openssl headers not found. install them or build without --with-openssl])
688  ])
689  AC_CHECK_LIB([crypto], [BIO_f_base64],
690    [CRYPTO_LIB="-lcrypto"],
691    [AC_MSG_ERROR([openssl crypto library not found. install it or build without --with-openssl])]
692  )
693  AC_CHECK_LIB([ssl], [SSL_new],
694    [OPENSSL_LIBS="${openssl_append_LDFLAGS} -lssl -lcrypto"],
695    [AC_MSG_ERROR([openssl ssl library not found. install it or build without --with-openssl])],
696    [ -lcrypto "$DL_LIB" ]
697  )
698
699  AC_DEFINE([HAVE_LIBSSL], [1], [Have libssl])
700  OPENSSL_CFLAGS="${openssl_append_CPPFLAGS}"
701  AC_SUBST([OPENSSL_CFLAGS])
702  AC_SUBST([OPENSSL_LIBS])
703  AC_SUBST([CRYPTO_LIB])
704fi
705
706dnl Check for wolfSSL
707AC_MSG_NOTICE([----------------------------------------])
708AC_MSG_CHECKING([for wolfSSL])
709AC_ARG_WITH([wolfssl],
710  [AC_HELP_STRING([--with-wolfssl@<:@=DIR@:>@],
711    [Include wolfSSL support (default no)]
712  )],
713  [WITH_WOLFSSL=$withval],
714  [WITH_WOLFSSL=no]
715)
716AC_MSG_RESULT([$WITH_WOLFSSL])
717AM_CONDITIONAL([BUILD_WITH_WOLFSSL], test ! "$WITH_WOLFSSL" = no)
718
719if test "$WITH_WOLFSSL" != no; then
720  CPPFLAGS_SAVE="${CPPFLAGS}"
721  LDFLAGS_SAVE="${LDFLAGS}"
722  if test "$WITH_WOLFSSL" != yes; then
723    WOLFSSL_CFLAGS="-I$WITH_WOLFSSL/include -I$WITH_WOLFSSL/include/wolfssl"
724    WOLFSSL_LIBS="-L$WITH_WOLFSSL/lib -lwolfssl"
725    LDFLAGS="${LDFLAGS} -L$WITH_WOLFSSL/lib"
726  else
727    PKG_CHECK_MODULES([WOLFSSL], [wolfssl], [], [
728      AC_MSG_ERROR([wolfssl not found, install it or build without --with-wolfssl])
729    ])
730    if test "$WOLFSSL_LIBS" != "-lwolfssl"; then
731      LDFLAGS="${LDFLAGS} ${WOLFSSL_LIBS% -lwolfssl}"
732    fi
733  fi
734
735  CPPFLAGS="${CPPFLAGS} $WOLFSSL_CFLAGS"
736  AC_CHECK_HEADERS([wolfssl/ssl.h], [], [
737    AC_MSG_ERROR([wolfssl headers not found. install them or build without --with-wolfssl])
738  ])
739  AC_CHECK_LIB([wolfssl], [wolfSSL_Init],
740    [WOLFSSL_CRYPTO_LIB="-lwolfssl"],
741    [AC_MSG_ERROR([wolfssl crypto library not found. install it or build without --with-wolfssl])]
742  )
743  AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
744    #include <wolfssl/options.h>
745    #if !defined(HAVE_LIGHTY) && !defined(OPENSSL_EXTRA)
746    #error HAVE_LIGHTY macro not defined
747    #endif
748  ]])], [], [AC_MSG_ERROR([wolfssl must be built with ./configure --enable-lighty])])
749
750  AC_SUBST([WOLFSSL_CFLAGS])
751  AC_SUBST([WOLFSSL_LIBS])
752  if test "$WITH_OPENSSL" = no; then
753    CRYPTO_LIB="$WOLFSSL_CRYPTO_LIB"
754    AC_SUBST([CRYPTO_LIB])
755  else
756    CPPFLAGS="${CPPFLAGS_SAVE}"
757    LDFLAGS="${LDFLAGS_SAVE}"
758  fi
759fi
760
761dnl Check for mbedTLS
762AC_MSG_NOTICE([----------------------------------------])
763AC_MSG_CHECKING([for mbedTLS])
764AC_ARG_WITH([mbedtls],
765  AC_HELP_STRING([--with-mbedtls@<:@=DIR@:>@],[Include mbedTLS support. DIR points to the installation root. (default no)]),
766  [WITH_MBEDTLS=$withval],
767  [WITH_MBEDTLS=no]
768)
769
770if test "$WITH_MBEDTLS" != "no"; then
771  use_mbedtls=yes
772  if test "$WITH_MBEDTLS" != "yes"; then
773      CPPFLAGS="$CPPFLAGS -I$WITH_MBEDTLS/include"
774      LDFLAGS="$LDFLAGS -L$WITH_MBEDTLS/lib"
775  fi
776else
777  use_mbedtls=no
778fi
779AC_MSG_RESULT([$use_mbedtls])
780AM_CONDITIONAL(BUILD_WITH_MBEDTLS, test ! $WITH_MBEDTLS = no)
781
782if test "x$use_mbedtls" = "xyes"; then
783  AC_CHECK_HEADERS([mbedtls/ssl.h])
784  OLDLIBS="$LIBS"
785  AC_CHECK_LIB(mbedcrypto,mbedtls_base64_encode,
786    [AC_CHECK_LIB(mbedx509, mbedtls_x509_get_name,
787      [AC_CHECK_LIB(mbedtls, mbedtls_cipher_info_from_type,
788        [MTLS_LIBS="-lmbedtls -lmbedx509 -lmbedcrypto"
789         CRYPTO_LIB="-lmbedcrypto"
790         AC_DEFINE(HAVE_LIBMBEDTLS, [1], [Have libmbedtls library])
791         AC_DEFINE(HAVE_LIBMBEDX509, [1], [Have libmbedx509 library])
792         AC_DEFINE(HAVE_LIBMBEDCRYPTO, [1], [Have libmbedcrypto library]) ],
793        [],[-lmbedcrypto "$DL_LIB"])
794      ],[],[-lmbedcrypto "$DL_LIB"])
795    ],[],[])
796  LIBS="$OLDLIBS"
797  AC_SUBST(MTLS_LIBS)
798  AC_SUBST(CRYPTO_LIB)
799fi
800
801dnl Check for Nettle (and overwrite CRYPTO_LIB if set by OpenSSL or wolfSSL)
802AC_MSG_NOTICE([----------------------------------------])
803AC_MSG_CHECKING([for Nettle])
804AC_ARG_WITH([nettle],
805  [AC_HELP_STRING([--with-nettle@<:@=DIR@:>@],
806    [Include Nettle support (default no)]
807  )],
808  [WITH_NETTLE=$withval],
809  [WITH_NETTLE=no]
810)
811AC_MSG_RESULT([$WITH_NETTLE])
812
813if test "$WITH_NETTLE" != no; then
814  if test "$WITH_NETTLE" != yes; then
815    CPPFLAGS="${CPPFLAGS} -I$WITH_NETTLE/include"
816    LDFLAGS="${LDFLAGS} -L$WITH_NETTLE/lib"
817  fi
818
819  AC_CHECK_HEADERS([nettle/nettle-types.h], [], [
820    AC_MSG_ERROR([nettle headers not found. install them or build without --with-nettle])
821  ])
822  AC_CHECK_LIB([nettle], [nettle_md5_init],
823    [CRYPTO_LIB="-lnettle"],
824    [AC_MSG_ERROR([nettle crypto library not found. install it or build without --with-nettle])]
825  )
826
827  AC_SUBST([CRYPTO_LIB])
828fi
829
830dnl Check for GnuTLS
831AC_MSG_NOTICE([----------------------------------------])
832AC_MSG_CHECKING([for GnuTLS])
833AC_ARG_WITH([gnutls],
834  AC_HELP_STRING([--with-gnutls@<:@=DIR@:>@],[Include GnuTLS support. DIR points to the installation root. (default no)]),
835  [WITH_GNUTLS=$withval],
836  [WITH_GNUTLS=no]
837)
838
839if test "$WITH_GNUTLS" != "no"; then
840  use_gnutls=yes
841else
842  use_gnutls=no
843fi
844AC_MSG_RESULT([$use_gnutls])
845AM_CONDITIONAL(BUILD_WITH_GNUTLS, test ! $WITH_GNUTLS = no)
846
847GNUTLS_CFLAGS=
848GNUTLS_LIBS=
849
850if test "x$use_gnutls" = "xyes"; then
851  if test "$WITH_GNUTLS" != "yes"; then
852      GNUTLS_CFLAGS="-I$WITH_GNUTLS/include"
853      GNUTLS_LIBS="-L$WITH_GNUTLS/lib -lgnutls"
854  else
855      dnl oldest GnuTLS supported release is 3.3.x at time this is being written
856      PKG_CHECK_MODULES([GNUTLS], [gnutls >= 3.3.0])
857  fi
858  AC_SUBST([GNUTLS_CFLAGS])
859  AC_SUBST([GNUTLS_LIBS])
860  AC_DEFINE([HAVE_GNUTLS_CRYPTO_H], [1], [gnutls/crypto.h])
861  if test "$WITH_OPENSSL" = no && test "$WITH_WOLFSSL" = no && \
862     test "$WITH_MBEDTLS" = no && test "$WITH_NETTLE" = no; then
863      AC_SUBST([CRYPTO_LIB],[$GNUTLS_LIBS])
864  fi
865fi
866
867dnl Check for NSS
868AC_MSG_NOTICE([----------------------------------------])
869AC_MSG_CHECKING([for NSS])
870AC_ARG_WITH([nss],
871  AC_HELP_STRING([--with-nss@<:@=DIR@:>@],[Include NSS support. DIR points to the installation root. (default no)]),
872  [WITH_NSS=$withval],
873  [WITH_NSS=no]
874)
875
876if test "$WITH_NSS" != "no"; then
877  use_nss=yes
878else
879  use_nss=no
880fi
881AC_MSG_RESULT([$use_nss])
882AM_CONDITIONAL(BUILD_WITH_NSS, test ! $WITH_NSS = no)
883
884NSS_CFLAGS=
885NSS_LIBS=
886
887if test "x$use_nss" = "xyes"; then
888  if test "$WITH_NSS" != "yes"; then
889      NSS_CFLAGS="-I$WITH_NSS/include"
890      NSS_LIBS="-L$WITH_NSS/lib -lnss3"
891  else
892      PKG_CHECK_MODULES([NSS],[nss])
893      CPPFLAGS="$CPPFLAGS -I/usr/include/nspr4"
894  fi
895  AC_DEFINE([HAVE_NSS_NSS_H], [1], [nss/nss.h])
896  AC_DEFINE([HAVE_NSS3_NSS_H], [1], [nss3/nss.h])
897  AC_SUBST([NSS_CFLAGS])
898  AC_SUBST([NSS_LIBS])
899  if test "x$CRYPTO_LIB" = "x"; then
900    CRYPTO_LIB="-lnss3"
901    AC_SUBST([CRYPTO_LIB])
902  fi
903fi
904
905
906dnl pcre support
907AC_MSG_NOTICE([----------------------------------------])
908AC_MSG_CHECKING([for perl regular expressions support])
909AC_ARG_WITH([pcre],
910  [AC_HELP_STRING([--with-pcre], [Enable pcre support (default yes)])],
911  [WITH_PCRE=$withval],
912  [WITH_PCRE=yes]
913)
914AC_MSG_RESULT([$WITH_PCRE])
915
916if test "$WITH_PCRE" != no; then
917  if test "$WITH_PCRE" != yes; then
918    PCRE_LIB="-L$WITH_PCRE/lib -lpcre"
919    CPPFLAGS="$CPPFLAGS -I$WITH_PCRE/include"
920  else
921    AC_PATH_PROG([PCRECONFIG], [pcre-config])
922    if test -n "$PCRECONFIG"; then
923      PCRE_LIB=`"$PCRECONFIG" --libs`
924      CPPFLAGS="$CPPFLAGS `"$PCRECONFIG" --cflags`"
925    fi
926  fi
927
928  if test -z "$PCRE_LIB"; then
929    AC_MSG_ERROR([pcre-config not found, install the pcre-devel package or build with --without-pcre])
930  fi
931
932  AC_DEFINE([HAVE_LIBPCRE], [1], [libpcre])
933  AC_DEFINE([HAVE_PCRE_H], [1], [pcre.h])
934  AC_SUBST([PCRE_LIB])
935fi
936
937dnl zlib
938AC_MSG_NOTICE([----------------------------------------])
939AC_MSG_CHECKING([for zlib support])
940AC_ARG_WITH([zlib],
941  [AC_HELP_STRING([--with-zlib],
942    [Enable zlib support for mod_deflate]
943  )],
944  [WITH_ZLIB=$withval],
945  [WITH_ZLIB=yes]
946)
947AC_MSG_RESULT([$WITH_ZLIB])
948
949if test "$WITH_ZLIB" != no; then
950  if test "$WITH_ZLIB" != yes; then
951    Z_LIB="-L$WITH_ZLIB -lz"
952    CPPFLAGS="$CPPFLAGS -I$WITH_ZLIB"
953  else
954    AC_CHECK_HEADERS([zlib.h], [],
955      [AC_MSG_ERROR([zlib headers not found, install them or build without --with-zlib])]
956    )
957    AC_CHECK_LIB([z], [deflate],
958      [Z_LIB=-lz],
959      [AC_MSG_ERROR([zlib library not found, install it or build without --with-zlib])]
960    )
961  fi
962
963  AC_DEFINE([HAVE_LIBZ], [1], [libz])
964  AC_DEFINE([HAVE_ZLIB_H], [1])
965  AC_SUBST([Z_LIB])
966fi
967
968dnl bzip2
969AC_MSG_NOTICE([----------------------------------------])
970AC_MSG_CHECKING([for bzip2 support])
971AC_ARG_WITH([bzip2],
972  [AC_HELP_STRING([--with-bzip2],
973    [Enable bzip2 support for mod_deflate]
974  )],
975  [WITH_BZIP2=$withval],
976  [WITH_BZIP2=no]
977)
978AC_MSG_RESULT([$WITH_BZIP2])
979
980if test "$WITH_BZIP2" != no; then
981  if test "$WITH_BZIP2" != yes; then
982    BZ_LIB="-L$WITH_BZIP2 -lbz2"
983    CPPFLAGS="$CPPFLAGS -I$WITH_BZIP2"
984  else
985    AC_CHECK_HEADERS([bzlib.h], [], [
986      AC_MSG_ERROR([bzip2 headers not found, install them or build without --with-bzip2])
987    ])
988    AC_CHECK_LIB([bz2], [BZ2_bzCompress],
989      [BZ_LIB=-lbz2],
990      [AC_MSG_ERROR([bzip2 library not found, install it or build without --with-bzip2])]
991    )
992  fi
993
994  AC_DEFINE([HAVE_LIBBZ2], [1], [libbz2])
995  AC_DEFINE([HAVE_BZLIB_H], [1])
996  AC_SUBST([BZ_LIB])
997fi
998
999dnl brotli
1000AC_MSG_NOTICE([----------------------------------------])
1001AC_MSG_CHECKING([for brotli support])
1002AC_ARG_WITH([brotli],
1003  [AC_HELP_STRING([--with-brotli],
1004    [Enable brotli support for mod_deflate]
1005  )],
1006  [WITH_BROTLI=$withval],
1007  [WITH_BROTLI=no]
1008)
1009AC_MSG_RESULT([$WITH_BROTLI])
1010
1011if test "$WITH_BROTLI" != no; then
1012  if test "$WITH_BROTLI" != yes; then
1013    BROTLI_LIBS="-L$WITH_BROTLI -lbrotlienc"
1014    CPPFLAGS="$CPPFLAGS -I$WITH_BROTLI"
1015  else
1016    PKG_CHECK_MODULES([BROTLI], [libbrotlienc], [], [
1017      AC_MSG_ERROR([brotli not found, install it or build without --with-brotli])
1018    ])
1019  fi
1020
1021  AC_DEFINE([HAVE_BROTLI_ENCODE_H], [1], [brotli/encode.h])
1022  AC_DEFINE([HAVE_BROTLI], [1], [libbrotlienc])
1023  AC_SUBST([BROTLI_CFLAGS])
1024  AC_SUBST([BROTLI_LIBS])
1025fi
1026
1027dnl Check for fam/gamin
1028AC_MSG_NOTICE([----------------------------------------])
1029AC_MSG_CHECKING([for FAM])
1030AC_ARG_WITH([fam],
1031  [AC_HELP_STRING([--with-fam],
1032    [fam/gamin for reducing number of stat() calls]
1033  )],
1034  [WITH_FAM=$withval],
1035  [WITH_FAM=no]
1036)
1037AC_MSG_RESULT([$WITH_FAM])
1038
1039if test "$WITH_FAM" != no; then
1040  if test "$WITH_FAM" != yes; then
1041    FAM_LIBS="-L$WITH_FAM -lfam"
1042    CPPFLAGS="$CPPFLAGS -I$WITH_FAM"
1043  else
1044    AC_CHECK_LIB([fam], [FAMOpen2], [
1045      AC_CHECK_HEADERS([fam.h], [FAM_LIBS=-lfam])
1046    ])
1047    dnl fam has no pkg-config so far, so just search for gamin as fallback
1048    if test -z "$FAM_LIBS"; then
1049      PKG_CHECK_MODULES([FAM], [gamin >= 0.1.0])
1050    fi
1051  fi
1052
1053  if test -z "$FAM_LIBS"; then
1054    AC_MSG_ERROR([fam/gamin headers and/or libs were not found, install them or build without --with-fam])
1055  fi
1056
1057  OLD_LIBS=$LIBS
1058  LIBS=$FAM_LIBS
1059  AC_CHECK_FUNCS([FAMNoExists])
1060  LIBS=$OLD_LIBS
1061
1062  AC_DEFINE([HAVE_LIBFAM], [1], [libfam])
1063  AC_DEFINE([HAVE_FAM_H], [1], [fam.h])
1064  AC_SUBST([FAM_LIBS])
1065fi
1066
1067
1068dnl webdav props (xml2 and sqlite3)
1069AC_MSG_NOTICE([----------------------------------------])
1070AC_MSG_CHECKING([for properties in mod_webdav])
1071AC_ARG_WITH([webdav-props],
1072  [AC_HELP_STRING([--with-webdav-props], [properties in mod_webdav])],
1073  [WITH_WEBDAV_PROPS=$withval],
1074  [WITH_WEBDAV_PROPS=no]
1075)
1076AC_MSG_RESULT([$WITH_WEBDAV_PROPS])
1077
1078if test "$WITH_WEBDAV_PROPS" != no; then
1079  AC_MSG_CHECKING([for libxml2])
1080  AC_ARG_WITH([libxml],
1081    [AC_HELP_STRING([--with-libxml],
1082      [libxml2 for properties in mod_webdav]
1083    )],
1084    [WITH_LIBXML=$withval],
1085    [WITH_LIBXML=yes]
1086  )
1087  AC_MSG_RESULT([$WITH_LIBXML])
1088
1089  if test "$WITH_LIBXML" = no; then
1090    AC_MSG_ERROR([--with-webdav-props requires libxml])
1091  fi
1092
1093  if test "$WITH_LIBXML" != yes; then
1094    XML_LIBS="-L$WITH_LIBXML/.libs -lxml2"
1095    XML_CFLAGS="-I$WITH_LIBXML/include"
1096  else
1097    PKG_CHECK_MODULES([XML], [libxml-2.0], [], [
1098      AC_MSG_ERROR([libxml2 not found, install it or build without --with-webdav-props])
1099    ])
1100  fi
1101
1102  AC_DEFINE([HAVE_LIBXML2], [1], [libxml2])
1103  AC_DEFINE([HAVE_LIBXML_H], [1], [libxml.h])
1104  AC_SUBST([XML_LIBS])
1105  AC_SUBST([XML_CFLAGS])
1106
1107  AC_MSG_CHECKING([for sqlite])
1108  AC_ARG_WITH([sqlite],
1109    [AC_HELP_STRING([--with-sqlite],
1110      [sqlite for properties in mod_webdav]
1111    )],
1112    [WITH_SQLITE=$withval],
1113    [WITH_SQLITE=yes]
1114  )
1115  AC_MSG_RESULT([$WITH_SQLITE])
1116
1117  if test "$WITH_SQLITE" = no; then
1118    AC_MSG_ERROR([--with-webdav-props requires sqlite])
1119  fi
1120
1121  if test "$WITH_SQLITE" != yes; then
1122    SQLITE_LIBS="-L$WITH_SQLITE/.libs -lsqlite3"
1123    SQLITE_CFLAGS="-I$WITH_SQLITE"
1124  else
1125    PKG_CHECK_MODULES([SQLITE], [sqlite3], [], [
1126      AC_MSG_ERROR([sqlite3 not found, install it or build without --with-webdav-props])
1127    ])
1128  fi
1129
1130  AC_DEFINE([HAVE_SQLITE3], [1], [libsqlite3])
1131  AC_DEFINE([HAVE_SQLITE3_H], [1], [sqlite3.h])
1132  AC_SUBST([SQLITE_LIBS])
1133  AC_SUBST([SQLITE_CFLAGS])
1134fi
1135
1136
1137dnl webdav locks (uuid)
1138AC_MSG_NOTICE([----------------------------------------])
1139AC_MSG_CHECKING([for locks in mod_webdav])
1140AC_ARG_WITH([webdav-locks],
1141  [AC_HELP_STRING([--with-webdav-locks],
1142    [locks in mod_webdav (requires webdav properties)]
1143  )],
1144  [WITH_WEBDAV_LOCKS=$withval],
1145  [WITH_WEBDAV_LOCKS=no]
1146)
1147AC_MSG_RESULT([$WITH_WEBDAV_LOCKS])
1148
1149if test "$WITH_WEBDAV_LOCKS" != no; then
1150  if test "$WITH_WEBDAV_PROPS" = no; then
1151    AC_MSG_ERROR([--with-webdav-locks requires --with-webdav-props])
1152  fi
1153
1154  AC_MSG_CHECKING([for libuuid])
1155  AC_ARG_WITH([uuid],
1156    [AC_HELP_STRING([--with-uuid], [uuid for locks in mod_webdav])],
1157    [WITH_UUID=$withval],
1158    [WITH_UUID=yes]
1159  )
1160  AC_MSG_RESULT([$WITH_UUID])
1161
1162  if test "$WITH_UUID" = no; then
1163    AC_MSG_ERROR([--with-webdav-locks requires uuid])
1164  fi
1165
1166  if test "$WITH_UUID" != yes; then
1167    UUID_LIBS="-L$WITH_UUID -luuid"
1168    CPPFLAGS="$CPPFLAGS -I$WITH_UUID"
1169  else
1170    AC_CHECK_LIB([uuid], [uuid_unparse],
1171      [UUID_LIBS=-luuid],
1172      [AC_MSG_ERROR([uuid lib not found, install it or build without --with-webdav-locks])]
1173    )
1174    AC_CHECK_HEADERS([uuid/uuid.h], [],
1175      [AC_MSG_ERROR([uuid headers not found, install them or build without --with-webdav-locks])]
1176    )
1177  fi
1178
1179  AC_DEFINE([HAVE_LIBUUID], [1], [libuuid])
1180  AC_DEFINE([HAVE_UUID_UUID_H], [1], [uuid/uuid.h is available])
1181  AC_SUBST([UUID_LIBS])
1182fi
1183
1184dnl xxhash
1185AC_MSG_NOTICE([----------------------------------------])
1186AC_MSG_CHECKING([for xxhash support])
1187AC_ARG_WITH([xxhash],
1188  [AC_HELP_STRING([--with-xxhash],
1189    [Enable system-provided xxhash]
1190  )],
1191  [WITH_XXHASH=$withval],
1192  [WITH_XXHASH=no]
1193)
1194AC_MSG_RESULT([$WITH_XXHASH])
1195
1196if test "$WITH_XXHASH" != no; then
1197  if test "$WITH_XXHASH" != yes; then
1198    XXHASH_LIBS="-L$WITH_XXHASH -lxxhash"
1199    CPPFLAGS="$CPPFLAGS -I$WITH_XXHASH"
1200  else
1201    PKG_CHECK_MODULES([XXHASH], [libxxhash], [], [
1202      AC_MSG_ERROR([xxhash not found, install it or build without --with-xxhash])
1203    ])
1204  fi
1205
1206  AC_DEFINE([HAVE_XXHASH_H], [1], [xxhash.h])
1207  AC_DEFINE([HAVE_XXHASH], [1], [xxhash])
1208  AC_SUBST([XXHASH_CFLAGS])
1209  AC_SUBST([XXHASH_LIBS])
1210fi
1211
1212dnl Check for gdbm
1213AC_MSG_NOTICE([----------------------------------------])
1214AC_MSG_CHECKING([for gdbm])
1215AC_ARG_WITH([gdbm],
1216  [AC_HELP_STRING([--with-gdbm], [gdbm storage for mod_trigger_b4_dl])],
1217  [WITH_GDBM=$withval],
1218  [WITH_GDBM=no]
1219)
1220AC_MSG_RESULT([$WITH_GDBM])
1221
1222if test "$WITH_GDBM" != no; then
1223  if test "$WITH_GDBM" != yes; then
1224    GDBM_LIB="-L$WITH_GDBM -lgdbm"
1225    CPPFLAGS="$CPPFLAGS -I$WITH_GDBM"
1226  else
1227    AC_CHECK_LIB([gdbm], [gdbm_open],
1228      [GDBM_LIB=-lgdbm],
1229      [AC_MSG_ERROR([gdbm lib not found, install it or build without --with-gdbm])]
1230    )
1231    AC_CHECK_HEADERS([gdbm.h], [],
1232      [AC_MSG_ERROR([gdbm headers not found, install them or build without --with-gdbm])]
1233    )
1234  fi
1235
1236  AC_DEFINE([HAVE_GDBM], [1], [libgdbm])
1237  AC_DEFINE([HAVE_GDBM_H], [1])
1238  AC_SUBST([GDBM_LIB])
1239fi
1240AM_CONDITIONAL([BUILD_WITH_GDBM], [test "$WITH_GDBM" != no])
1241
1242dnl Check for GeoIP
1243AC_MSG_NOTICE([----------------------------------------])
1244AC_MSG_CHECKING([for GeoIP])
1245AC_ARG_WITH([geoip],
1246  [AC_HELP_STRING([--with-geoip], [IP-based geolocation lookup])],
1247  [WITH_GEOIP=$withval],
1248  [WITH_GEOIP=no]
1249)
1250AC_MSG_RESULT([$WITH_GEOIP])
1251
1252if test "$WITH_GEOIP" != no; then
1253  if test "$WITH_GEOIP" != yes; then
1254    GEOIP_LIB="-L$WITH_GEOIP -lGeoIP"
1255    CPPFLAGS="$CPPFLAGS -I$WITH_GEOIP"
1256  else
1257    AC_CHECK_LIB([GeoIP], [GeoIP_country_name_by_addr],
1258      [GEOIP_LIB=-lGeoIP],
1259      [AC_MSG_ERROR([GeoIP lib not found, install it or build without --with-geoip])]
1260    )
1261    AC_CHECK_HEADERS([GeoIP.h], [],
1262      [AC_MSG_ERROR([GeoIP headers not found, install them or build without --with-geoip])]
1263    )
1264  fi
1265
1266  AC_DEFINE([HAVE_GEOIP], [1], [libGeoIP])
1267  AC_DEFINE([HAVE_GEOIP_H], [1])
1268  AC_SUBST([GEOIP_LIB])
1269fi
1270AM_CONDITIONAL([BUILD_WITH_GEOIP], [test "$WITH_GEOIP" != no])
1271
1272dnl Check for maxminddb
1273AC_MSG_NOTICE([----------------------------------------])
1274AC_MSG_CHECKING([for maxminddb])
1275AC_ARG_WITH([maxminddb],
1276  [AC_HELP_STRING([--with-maxminddb], [IP-based geolocation lookup])],
1277  [WITH_MAXMINDDB=$withval],
1278  [WITH_MAXMINDDB=no]
1279)
1280AC_MSG_RESULT([$WITH_MAXMINDDB])
1281
1282if test "$WITH_MAXMINDDB" != no; then
1283  if test "$WITH_MAXMINDDB" != yes; then
1284    MAXMINDDB_LIB="-L$WITH_MAXMINDDB -lmaxminddb"
1285    CPPFLAGS="$CPPFLAGS -I$WITH_MAXMINDDB"
1286  else
1287    AC_CHECK_LIB([maxminddb], [MMDB_open],
1288      [MAXMINDDB_LIB=-lmaxminddb],
1289      [AC_MSG_ERROR([maxminddb lib not found, install it or build without --with-maxminddb])]
1290    )
1291    AC_CHECK_HEADERS([maxminddb.h], [],
1292      [AC_MSG_ERROR([maxminddb headers not found, install them or build without --with-maxminddb])]
1293    )
1294  fi
1295
1296  AC_DEFINE([HAVE_MAXMINDDB], [1], [libmaxminddb])
1297  AC_DEFINE([HAVE_MAXMINDDB_H], [1])
1298  AC_SUBST([MAXMINDDB_LIB])
1299fi
1300AM_CONDITIONAL([BUILD_WITH_MAXMINDDB], [test "$WITH_MAXMINDDB" != no])
1301
1302dnl Check for memcached
1303AC_MSG_NOTICE([----------------------------------------])
1304AC_MSG_CHECKING([for memcached])
1305AC_ARG_WITH([memcached],
1306  [AC_HELP_STRING([--with-memcached],
1307    [memcached storage for mod_trigger_b4_dl/mod_cml]
1308  )],
1309  [WITH_MEMCACHED=$withval],
1310  [WITH_MEMCACHED=no]
1311)
1312AC_MSG_RESULT([$WITH_MEMCACHED])
1313
1314if test "$WITH_MEMCACHED" != no; then
1315  if test "$WITH_MEMCACHED" != yes; then
1316    MEMCACHED_LIB="-L$WITH_MEMCACHED -lMEMCACHED"
1317    CPPFLAGS="$CPPFLAGS -I$WITH_MEMCACHED"
1318  else
1319    AC_CHECK_LIB([memcached], [memcached],
1320      [ MEMCACHED_LIB=-lmemcached ],
1321      [AC_MSG_ERROR([memcached lib not found, install it or build without --with-memcached])]
1322    )
1323    AC_CHECK_HEADERS([libmemcached/memcached.h], [],
1324      [AC_MSG_ERROR([memcached headers not found, install them or build without --with-memcached])]
1325    )
1326  fi
1327
1328  AC_DEFINE([USE_MEMCACHED], [1], [libmemcached])
1329  AC_SUBST([MEMCACHED_LIB])
1330fi
1331AM_CONDITIONAL([BUILD_WITH_MEMCACHED], [test "$WITH_MEMCACHED" != no])
1332
1333BUILD_MOD_TRIGGER_B4_DL=no
1334if test "$WITH_MEMCACHED" != no || test "$WITH_GDBM" != no ; then
1335  BUILD_MOD_TRIGGER_B4_DL=yes
1336fi
1337
1338AM_CONDITIONAL([BUILD_MOD_TRIGGER_B4_DL], [test "$BUILD_MOD_TRIGGER_B4_DL" != no])
1339
1340dnl Check for lua
1341AC_MSG_NOTICE([----------------------------------------])
1342AC_MSG_CHECKING([if lua-support is requested])
1343AC_ARG_WITH([lua],
1344  [AC_HELP_STRING([--with-lua], [lua engine for mod_magnet/mod_cml])],
1345  [WITH_LUA=$withval],
1346  [WITH_LUA=no]
1347)
1348AC_MSG_RESULT([$WITH_LUA])
1349
1350if test "$WITH_LUA" != no; then
1351  found_lua=0
1352  if test "$WITH_LUA" != yes; then
1353    PKG_CHECK_MODULES([LUA], [$WITH_LUA >= 5.1],
1354      [found_lua=1],
1355      [AC_MSG_NOTICE([Couldn\'t find requested lua pkg-config module $WITH_LUA])]
1356    )
1357    if test "$found_lua" = "0"; then
1358      LUA_LIBS="-L$WITH_LUA -llua"
1359      LUA_CFLAGS="-I$WITH_LUA"
1360    fi
1361  else
1362    for luaname in lua5.3 lua-5.3 lua5.2 lua-5.2 lua5.1 lua-5.1 lua; do
1363      if test "$found_lua" = "0"; then
1364        PKG_CHECK_MODULES([LUA], [$luaname >= 5.1],
1365          [found_lua=1],
1366          [AC_MSG_NOTICE([Couldn\'t find $luaname])]
1367        )
1368      fi
1369    done
1370    if test "$found_lua" = "0"; then
1371      AC_MSG_ERROR([Couldn\'t find any lua pkg-config module])
1372    fi
1373  fi
1374
1375  AC_DEFINE([HAVE_LUA], [1], [liblua])
1376  AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
1377  AC_SUBST([LUA_LIBS])
1378  AC_SUBST([LUA_CFLAGS])
1379fi
1380AM_CONDITIONAL([BUILD_WITH_LUA], [test "$WITH_LUA" != no])
1381
1382dnl "--with-FEATURE" blocks end
1383AC_MSG_NOTICE([----------------------------------------])
1384
1385dnl search for crypt_r and (fallback) for crypt
1386save_LIBS=$LIBS
1387LIBS=
1388found_crypt=no
1389AC_SEARCH_LIBS([crypt_r], [crypt],
1390  [
1391    AC_DEFINE([HAVE_CRYPT_R], [1], [crypt_r])
1392    AC_CHECK_HEADERS([crypt.h])
1393    CRYPT_LIB=$LIBS
1394    found_crypt=crypt_r
1395  ],
1396  [AC_SEARCH_LIBS([crypt], [crypt], [
1397    AC_DEFINE([HAVE_CRYPT], [1], [crypt])
1398    AC_CHECK_HEADERS([crypt.h])
1399    CRYPT_LIB=$LIBS
1400    found_crypt=crypt
1401  ])]
1402)
1403LIBS=$save_LIBS
1404AC_SUBST([CRYPT_LIB])
1405
1406AC_MSG_CHECKING([crypt_r/crypt support])
1407AC_MSG_RESULT([$found_crypt])
1408
1409dnl check whether sendfilev needs -lsendfile
1410AC_MSG_NOTICE([----------------------------------------])
1411save_LIBS=$LIBS
1412LIBS=
1413have_sendfilev=no
1414AC_SEARCH_LIBS([sendfilev], [sendfile], [
1415  if test -z "$LIBS"; then
1416    have_sendfilev=yes
1417  else
1418    have_sendfilev=$LIBS
1419  fi
1420  SENDFILE_LIB=$LIBS
1421  AC_DEFINE([HAVE_SENDFILEV], [1], [solaris sendfilev])
1422])
1423LIBS=$save_LIBS
1424AC_SUBST([SENDFILE_LIB])
1425
1426AC_MSG_CHECKING([solaris sendfilev present])
1427AC_MSG_RESULT([$have_sendfilev])
1428
1429AC_MSG_NOTICE([----------------------------------------])
1430
1431case "$host_os" in
1432*mingw* ) LIBS="$LIBS -lwsock32" ;;
1433* ) ;;
1434esac
1435
1436AC_CHECK_FUNCS([\
1437  arc4random_buf \
1438  chroot \
1439  clock_gettime \
1440  copy_file_range \
1441  epoll_ctl \
1442  explicit_bzero \
1443  explicit_memset \
1444  fork \
1445  getloadavg \
1446  getrlimit \
1447  getuid \
1448  gmtime_r \
1449  inet_pton \
1450  issetugid \
1451  jrand48 \
1452  kqueue \
1453  localtime_r \
1454  lstat \
1455  madvise \
1456  memset \
1457  memset_s \
1458  mmap \
1459  pathconf \
1460  pipe2 \
1461  poll \
1462  port_create \
1463  select \
1464  send_file \
1465  sendfile \
1466  sendfile64 \
1467  sigaction \
1468  signal \
1469  srandom \
1470  writev \
1471])
1472AC_CHECK_HEADERS([sys/random.h], [AC_CHECK_FUNCS([getentropy])])
1473AC_CHECK_HEADERS([linux/random.h], [AC_CHECK_FUNCS([getrandom])])
1474
1475AC_MSG_NOTICE([----------------------------------------])
1476AC_MSG_CHECKING([if weak symbols are supported])
1477AC_LINK_IFELSE(
1478  [AC_LANG_PROGRAM([[
1479    __attribute__((weak)) void __dummy(void *x) { }
1480    void f(void *x) { __dummy(x); }
1481  ]])],
1482  [
1483    AC_MSG_RESULT([yes])
1484    AC_DEFINE([HAVE_WEAK_SYMBOLS], [1], [weak symbols are supported])
1485  ],
1486  [AC_MSG_RESULT([no])]
1487)
1488
1489AC_MSG_NOTICE([----------------------------------------])
1490AC_MSG_CHECKING([for Large File System support])
1491AC_ARG_ENABLE([lfs],
1492  [AC_HELP_STRING([--enable-lfs],
1493    [Turn on Large File System (default)]
1494  )],
1495  [
1496    case "${enableval}" in
1497    yes) ENABLE_LFS=yes ;;
1498    no) ENABLE_LFS=no ;;
1499    *) AC_MSG_ERROR([bad value ${enableval} for --enable-lfs]) ;;
1500    esac
1501  ],
1502  [ ENABLE_LFS=yes ]
1503)
1504AC_MSG_RESULT([$ENABLE_LFS])
1505if test "$ENABLE_LFS" = yes; then
1506  CPPFLAGS="${CPPFLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGE_FILES"
1507fi
1508
1509dnl check if sendfile works
1510if test "$ac_cv_func_sendfile" = yes; then
1511  AC_MSG_NOTICE([----------------------------------------])
1512  AC_MSG_CHECKING([if sendfile works])
1513  if test "$cross_compiling" = no; then
1514    AC_TRY_RUN(
1515      [
1516        #ifdef HAVE_SYS_SENDFILE_H
1517        #include <sys/sendfile.h>
1518        #endif /* HAVE_SYS_SENDFILE_H */
1519        #include <errno.h>
1520        int main() {
1521          int o = 0;
1522          if (-1 == sendfile(-1, 0, &o, 0) && errno == ENOSYS) return -1;
1523          return 0;
1524        }
1525      ],
1526      [AC_MSG_RESULT([yes])],
1527      [
1528        AC_MSG_RESULT([no])
1529        AC_DEFINE([HAVE_SENDFILE_BROKEN], [1], [broken sendfile])
1530      ]
1531    )
1532  fi
1533fi
1534
1535dnl Check for IPv6 support
1536AC_MSG_NOTICE([----------------------------------------])
1537AC_ARG_ENABLE([ipv6],
1538  [AC_HELP_STRING([--disable-ipv6], [disable IPv6 support])],
1539  [
1540    case "${enableval}" in
1541    yes) ipv6=true ;;
1542    no) ipv6=false ;;
1543    *) AC_MSG_ERROR([bad value ${enableval} for --enable-ipv6]) ;;
1544    esac
1545  ],
1546  [ipv6=true]
1547)
1548
1549if test "$ipv6" = true; then
1550  AC_CACHE_CHECK([for IPv6 support], [ac_cv_ipv6_support], [
1551    AC_TRY_LINK(
1552      [
1553        #include <sys/types.h>
1554        #include <sys/socket.h>
1555        #include <netinet/in.h>
1556      ],
1557      [
1558        struct sockaddr_in6 s; struct in6_addr t=in6addr_any; int i=AF_INET6; s; t.s6_addr[0] = 0;
1559      ],
1560      [ac_cv_ipv6_support=yes],
1561      [ac_cv_ipv6_support=no]
1562    )
1563  ])
1564
1565  if test "$ac_cv_ipv6_support" = yes; then
1566    AC_DEFINE([HAVE_IPV6], [1], [Whether to enable IPv6 support])
1567  else
1568    AC_MSG_ERROR([IPv6 seems broken.  Fix it or build with --disable-ipv6])
1569  fi
1570fi
1571
1572# disable mmap by default
1573# lighttpd may always use mmap with files it owns (created tmp files)
1574AC_MSG_NOTICE([----------------------------------------])
1575AC_MSG_CHECKING([use mmap if available])
1576AC_ARG_ENABLE([mmap],
1577  [AC_HELP_STRING([--enable-mmap],
1578    [use mmap if available]
1579  )],
1580  [
1581    case "${enableval}" in
1582    yes) mmap=true ;;
1583    no) mmap=false ;;
1584    *) AC_MSG_ERROR([bad value ${enableval} for --enable-mmap]) ;;
1585    esac
1586  ],
1587  [mmap=false]
1588)
1589AC_MSG_RESULT([$mmap])
1590
1591if test "$mmap" = true; then
1592  AC_DEFINE([ENABLE_MMAP], [1], [Use mmap if available])
1593fi
1594
1595dnl check for fastcgi lib, for the tests only
1596AC_MSG_NOTICE([----------------------------------------])
1597fastcgi_found=no
1598AC_CHECK_LIB([fcgi], [FCGI_Accept], [
1599  AC_CHECK_HEADERS([fastcgi.h fastcgi/fastcgi.h], [
1600    fastcgi_found=yes
1601  ])
1602])
1603
1604AM_CONDITIONAL([CHECK_WITH_FASTCGI], [test "$fastcgi_found" = yes])
1605
1606
1607AC_MSG_NOTICE([----------------------------------------])
1608dnl check for extra compiler options (warning options)
1609if test "${GCC}" = yes; then
1610  TRY_CFLAGS([-Wall -W -Wshadow -pedantic])
1611fi
1612
1613AC_ARG_ENABLE([extra-warnings],
1614  [AC_HELP_STRING([--enable-extra-warnings],
1615    [enable extra warnings (gcc specific)]
1616  )],
1617  [
1618    case "${enableval}" in
1619    error) extrawarnings=error ;;
1620    yes) extrawarnings=true ;;
1621    no) extrawarnings=false ;;
1622    *) AC_MSG_ERROR([bad value ${enableval} for --enable-extra-warnings]) ;;
1623    esac
1624  ],
1625  [extrawarnings=false]
1626)
1627
1628if test "$extrawarnings" = true || test "$extrawarnings" = error; then
1629  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])
1630  TRY_LDFLAGS([-Wl,--as-needed])
1631  if test "$extrawarnings" = error; then
1632    AS_VAR_APPEND([CFLAGS], [" -Werror"])
1633    AS_VAR_APPEND([LDFLAGS], [" -Wl,--fatal-warnings"])
1634  fi
1635fi
1636
1637dnl build version-id
1638LIGHTTPD_VERSION_ID=m4_format([0x%x%02x%02x], m4_unquote(m4_split(AC_PACKAGE_VERSION, [\.])))
1639AC_DEFINE_UNQUOTED([LIGHTTPD_VERSION_ID], [$LIGHTTPD_VERSION_ID], [lighttpd-version-id])
1640
1641AC_CONFIG_FILES([\
1642  distribute.sh \
1643  doc/config/conf.d/Makefile \
1644  doc/config/Makefile \
1645  doc/config/vhosts.d/Makefile \
1646  doc/Makefile \
1647  doc/outdated/Makefile \
1648  doc/scripts/Makefile \
1649  doc/systemd/Makefile \
1650  Makefile \
1651  src/Makefile \
1652  tests/docroot/123/Makefile \
1653  tests/docroot/Makefile \
1654  tests/docroot/www/expire/Makefile \
1655  tests/docroot/www/go/Makefile \
1656  tests/docroot/www/indexfile/Makefile \
1657  tests/docroot/www/Makefile \
1658  tests/Makefile \
1659])
1660AC_OUTPUT
1661
1662do_build="\
1663  mod_access \
1664  mod_accesslog \
1665  mod_alias \
1666  mod_auth \
1667  mod_authn_file \
1668  mod_cgi \
1669  mod_deflate \
1670  mod_dirlisting \
1671  mod_evhost \
1672  mod_expire \
1673  mod_extforward \
1674  mod_fastcgi \
1675  mod_flv_streaming \
1676  mod_indexfile \
1677  mod_proxy \
1678  mod_redirect \
1679  mod_rewrite \
1680  mod_rrdtool \
1681  mod_scgi \
1682  mod_secdownload \
1683  mod_setenv \
1684  mod_simple_vhost \
1685  mod_sockproxy \
1686  mod_ssi \
1687  mod_staticfile \
1688  mod_status \
1689  mod_userdir \
1690  mod_usertrack \
1691  mod_vhostdb \
1692  mod_webdav \
1693  mod_wstunnel \
1694"
1695
1696lighty_track_feature() {
1697  if eval "$3"; then
1698    enable_feature="$enable_feature $1"
1699    do_build="$do_build $2"
1700  else
1701    disable_feature="$disable_feature $1"
1702    no_build="$no_build $2"
1703  fi
1704}
1705
1706lighty_track_feature "regex-conditionals" "" \
1707  'test "$WITH_PCRE" != no'
1708
1709lighty_track_feature "storage-gdbm" "" \
1710  'test "$WITH_GDBM" != no'
1711
1712lighty_track_feature "storage-memcached" "" \
1713  'test "$WITH_MEMCACHED" != no'
1714
1715lighty_track_feature "" "mod_trigger_b4_dl" \
1716  'test "$BUILD_MOD_TRIGGER_B4_DL" != no'
1717
1718lighty_track_feature "mysql" "mod_authn_mysql mod_mysql_vhost mod_vhostdb_mysql" \
1719  'test "$WITH_MYSQL" != no'
1720
1721lighty_track_feature "postgresql" "mod_vhostdb_pgsql" \
1722  'test "$WITH_PGSQL" != no'
1723
1724lighty_track_feature "dbi" "mod_authn_dbi mod_vhostdb_dbi" \
1725  'test "$WITH_DBI" != no'
1726
1727lighty_track_feature "lua" "mod_cml mod_magnet" \
1728  'test "$WITH_LUA" != no'
1729
1730lighty_track_feature "geoip" "mod_geoip" \
1731  'test "$WITH_GEOIP" != no'
1732
1733lighty_track_feature "maxminddb" "mod_maxminddb" \
1734  'test "$WITH_MAXMINDDB" != no'
1735
1736lighty_track_feature "compress-gzip compress-deflate" "" \
1737  'test "$WITH_ZLIB" != no'
1738
1739lighty_track_feature "compress-bzip2" "" \
1740  'test "$WITH_BZIP2" != no'
1741
1742lighty_track_feature "compress-brotli" "" \
1743  'test "$WITH_BROTLI" != no'
1744
1745lighty_track_feature "kerberos" "mod_authn_gssapi" \
1746  'test "$WITH_KRB5" != no'
1747
1748lighty_track_feature "ldap" "mod_authn_ldap mod_vhostdb_ldap" \
1749  'test "$WITH_LDAP" != no'
1750
1751lighty_track_feature "pam" "mod_authn_pam" \
1752  'test "$WITH_PAM" != no'
1753
1754lighty_track_feature "network-openssl" "mod_openssl" \
1755  'test "$WITH_OPENSSL" != no'
1756
1757lighty_track_feature "network-mbedtls" "mod_mbedtls" \
1758  'test "$WITH_MBEDTLS" != no'
1759
1760lighty_track_feature "network-gnutls" "mod_gnutls" \
1761  'test "$WITH_GNUTLS" != no'
1762
1763lighty_track_feature "network-nss" "mod_nss" \
1764  'test "$WITH_NSS" != no'
1765
1766lighty_track_feature "network-wolfssl" "mod_wolfssl" \
1767  'test "$WITH_WOLFSSL" != no'
1768
1769lighty_track_feature "auth-crypt" "" \
1770  'test "$found_crypt" != no'
1771
1772lighty_track_feature "network-ipv6" "" \
1773  'test "$ac_cv_ipv6_support" != no'
1774
1775lighty_track_feature "large-files" "" \
1776  'test "$ENABLE_LFS" = yes'
1777
1778lighty_track_feature "stat-cache-fam" "" \
1779  'test "$WITH_FAM" != no'
1780
1781lighty_track_feature "webdav-properties" "" \
1782  'test "$WITH_WEBDAV_PROPS" != no'
1783
1784lighty_track_feature "webdav-locks" "" \
1785  'test "$WITH_WEBDAV_LOCKS" != no'
1786
1787dnl output
1788
1789$ECHO
1790$ECHO "Plugins:"
1791$ECHO
1792
1793$ECHO "enabled: "
1794for p in $do_build; do
1795  $ECHO "  $p"
1796done | sort
1797
1798$ECHO "disabled: "
1799for p in $no_build; do
1800  $ECHO "  $p"
1801done | sort
1802
1803$ECHO
1804$ECHO "Features:"
1805$ECHO
1806
1807$ECHO "enabled: "
1808for p in $enable_feature; do
1809  $ECHO "  $p"
1810done | sort
1811
1812$ECHO "disabled: "
1813for p in $disable_feature; do
1814  $ECHO "  $p"
1815done | sort
1816
1817$ECHO
1818