xref: /lighttpd1.4/configure.ac (revision add03ac2)
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.70],[https://redmine.lighttpd.net/projects/lighttpd/boards/2],[lighttpd],[https://www.lighttpd.net/])
18AC_CONFIG_SRCDIR([src/server.c])
19AC_CONFIG_HEADERS([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_C99
65AX_PROG_CC_FOR_BUILD
66LT_PATH_LD
67AC_PROG_INSTALL
68AC_PROG_CPP
69AC_PROG_MAKE_SET
70
71AC_USE_SYSTEM_EXTENSIONS
72AM_PROG_AR
73AC_C_INLINE
74AC_C_RESTRICT
75
76dnl AC_CANONICAL_HOST
77case "$host_os" in
78*darwin*|*cygwin*|*aix*|*mingw*|*midipix* ) NO_RDYNAMIC=yes ;;
79* ) NO_RDYNAMIC=no ;;
80esac
81AM_CONDITIONAL([NO_RDYNAMIC], [test "$NO_RDYNAMIC" = yes])
82
83AM_CONDITIONAL([LIGHTTPD_STATIC], [test "$LIGHTTPD_STATIC" = yes])
84
85AC_EXEEXT
86
87dnl libtool
88LT_INIT([dlopen disable-static shared])
89
90dnl for solaris
91CPPFLAGS="${CPPFLAGS} -D_REENTRANT"
92
93dnl Checks for header files.
94
95dnl checks for sys/wait.h => HAVE_SYS_WAIT_H
96AC_HEADER_SYS_WAIT
97AC_CHECK_HEADERS([\
98  getopt.h \
99  inttypes.h \
100  poll.h \
101  pwd.h \
102  stdlib.h \
103  stdint.h \
104  strings.h \
105  sys/inotify.h \
106  sys/loadavg.h \
107  sys/poll.h \
108  sys/prctl.h \
109  sys/procctl.h \
110  sys/sendfile.h \
111  sys/time.h \
112  sys/uio.h \
113  sys/un.h \
114  syslog.h \
115  uuid/uuid.h \
116])
117
118dnl Checks for typedefs, structures, and compiler characteristics.
119AC_C_CONST
120AC_C_INLINE
121AC_TYPE_OFF_T
122AC_TYPE_PID_T
123AC_TYPE_SIZE_T
124
125AC_CHECK_MEMBER([struct tm.tm_gmtoff],
126  [AC_DEFINE([HAVE_STRUCT_TM_GMTOFF], [1], [gmtoff in struct tm])],
127  [],
128  [#include <time.h>]
129)
130AC_CHECK_TYPES([socklen_t],
131  [], dnl defines HAVE_SOCKLEN_T
132  [],
133  [
134    #include <sys/types.h>
135    #include <sys/socket.h>
136  ]
137)
138
139dnl solaris needs -lsocket -lnsl
140dnl Haiku needs -lnetwork
141AC_SEARCH_LIBS([socket], [socket network])
142AC_SEARCH_LIBS([gethostbyname], [nsl socket network])
143
144dnl clock_gettime() needs -lrt with glibc < 2.17, and possibly other platforms
145AC_SEARCH_LIBS([clock_gettime], [rt])
146
147dnl FreeBSD elftc_copyfile()
148save_LIBS=$LIBS
149LIBS=
150AC_SEARCH_LIBS([elftc_copyfile], [elftc], [
151  AC_CHECK_HEADERS([libelftc.h], [
152    ELFTC_LIB=$LIBS
153    AC_DEFINE([HAVE_LIBELFTC], [1], [libelftc])
154    AC_DEFINE([HAVE_ELFTC_COPYFILE], [1], [elftc_copyfile])
155  ])
156])
157LIBS=$save_LIBS
158AC_SUBST([ELFTC_LIB])
159
160dnl need dlopen/-ldl to load plugins (when not on windows)
161save_LIBS=$LIBS
162LIBS=
163AC_SEARCH_LIBS([dlopen], [dl], [
164  AC_CHECK_HEADERS([dlfcn.h], [
165    DL_LIB=$LIBS
166    AC_DEFINE([HAVE_LIBDL], [1], [libdl])
167    AC_DEFINE([HAVE_DLFCN_H], [1])
168  ])
169])
170LIBS=$save_LIBS
171AC_SUBST([DL_LIB])
172
173dnl prepare pkg-config usage below
174PKG_PROG_PKG_CONFIG
175
176dnl checking for libev
177AC_MSG_NOTICE([----------------------------------------])
178AC_MSG_CHECKING([for libev support])
179AC_ARG_WITH([libev],
180  [AS_HELP_STRING([--with-libev@<:@=PATH@:>@],
181    [Include libev support for fdevent handlers in PATH/include and PATH/lib]
182  )],
183  [WITH_LIBEV=$withval],
184  [WITH_LIBEV=no]
185)
186AC_MSG_RESULT([$WITH_LIBEV])
187dnl ignore WITH_LIBEV
188
189dnl Checks for mysql
190AC_MSG_NOTICE([----------------------------------------])
191AC_MSG_CHECKING([for MySQL support])
192AC_ARG_WITH([mysql],
193  [AS_HELP_STRING([--with-mysql@<:@=PATH@:>@],
194    [Include MySQL support. PATH is the path to 'mysql_config']
195  )],
196  [WITH_MYSQL=$withval],
197  [WITH_MYSQL=no]
198)
199AC_MSG_RESULT([$WITH_MYSQL])
200
201MYSQL_CFLAGS=
202MYSQL_LIBS=
203
204if test "$WITH_MYSQL" != no; then
205  if test "$WITH_MYSQL" = yes; then
206    PKG_CHECK_MODULES([MYSQL],[mariadb],[
207      MYSQL_CONFIG=$PKG_CONFIG
208    ],[
209      PKG_CHECK_MODULES([MYSQL],[mysqlclient],[
210        MYSQL_CONFIG=$PKG_CONFIG
211      ],[
212        AC_PATH_PROG([MYSQL_CONFIG], [mysql_config])
213      ])
214    ])
215  else
216    MYSQL_CONFIG=$WITH_MYSQL
217  fi
218
219  if test "$MYSQL_CONFIG" != "$PKG_CONFIG"; then
220    if test -z "$MYSQL_CONFIG"; then
221      AC_MSG_ERROR([mysql_config is not found])
222    fi
223    if test ! -x "$MYSQL_CONFIG"; then
224      AC_MSG_ERROR([mysql_config not exists or not executable, use --with-mysql=path-to-mysql_config])
225    fi
226
227    if "$MYSQL_CONFIG" | grep -- '--include' > /dev/null ; then
228      MYSQL_CFLAGS=`"$MYSQL_CONFIG" --include | sed s/\'//g`
229    else
230      MYSQL_CFLAGS=`"$MYSQL_CONFIG" --cflags | sed s/\'//g`
231    fi
232    MYSQL_LIBS=`"$MYSQL_CONFIG" --libs | sed s/\'//g`
233  fi
234
235  AC_MSG_CHECKING([for MySQL includes at])
236  AC_MSG_RESULT([$MYSQL_CFLAGS])
237
238  AC_MSG_CHECKING([for MySQL libraries at])
239  AC_MSG_RESULT([$MYSQL_LIBS])
240
241  AC_DEFINE([HAVE_MYSQL], [1], [mysql support])
242fi
243AM_CONDITIONAL([BUILD_WITH_MYSQL], [test "$WITH_MYSQL" != no])
244
245AC_SUBST([MYSQL_LIBS])
246AC_SUBST([MYSQL_CFLAGS])
247
248dnl Checks for pgsql
249AC_MSG_NOTICE([----------------------------------------])
250AC_MSG_CHECKING([for PgSQL support])
251AC_ARG_WITH([pgsql],
252  [AS_HELP_STRING([--with-pgsql@<:@=PATH@:>@],
253    [Include PgSQL support. PATH is the path to 'pg_config']
254  )],
255  [WITH_PGSQL=$withval],
256  [WITH_PGSQL=no]
257)
258AC_MSG_RESULT([$WITH_PGSQL])
259
260PGSQL_CFLAGS=
261PGSQL_LIBS=
262
263if test "$WITH_PGSQL" != no; then
264  if test "$WITH_PGSQL" = yes; then
265    PKG_CHECK_MODULES([PGSQL],[libpq],[
266      PGSQL_CONFIG=$PKG_CONFIG
267    ],[
268      AC_PATH_PROG([PGSQL_CONFIG], [pg_config])
269    ])
270  else
271    PGSQL_CONFIG=$WITH_PGSQL
272  fi
273
274  if test "$PGSQL_CONFIG" != "$PKG_CONFIG"; then
275    if test -z "$PGSQL_CONFIG"; then
276      AC_MSG_ERROR([pg_config is not found])
277    fi
278    if test ! -x "$PGSQL_CONFIG"; then
279      AC_MSG_ERROR([pg_config not exists or not executable, use --with-pgsql=path-to-pg_config])
280    fi
281
282    PGSQL_CFLAGS="-I`"$PGSQL_CONFIG" --includedir`"
283    PGSQL_LIBS="-L`"$PGSQL_CONFIG" --libdir` -lpq"
284  fi
285
286  AC_MSG_CHECKING([for PgSQL includes at])
287  AC_MSG_RESULT([$PGSQL_CFLAGS])
288
289  AC_MSG_CHECKING([for PgSQL libraries at])
290  AC_MSG_RESULT([$PGSQL_LIBS])
291
292  AC_DEFINE([HAVE_PGSQL], [1], [pgsql support])
293fi
294AM_CONDITIONAL([BUILD_WITH_PGSQL], [test "$WITH_PGSQL" != no])
295
296AC_SUBST([PGSQL_LIBS])
297AC_SUBST([PGSQL_CFLAGS])
298
299dnl Checks for libdbi library
300AC_MSG_NOTICE([----------------------------------------])
301AC_MSG_CHECKING([for LibDBI support])
302AC_ARG_WITH([dbi],
303  [AS_HELP_STRING([--with-dbi@<:@=PATH@:>@],
304    [Include DBI support in PATH/include/dbi.h and PATH/lib]
305  )],
306  [WITH_DBI=$withval],
307  [WITH_DBI=no]
308)
309AC_MSG_RESULT([$WITH_DBI])
310
311DBI_INCLUDE=
312DBI_LIBS=
313
314if test "$WITH_DBI" != no; then
315  if test "$WITH_DBI" != yes; then
316    DBI_CFLAGS="-I$WITH_DBI/include"
317    DBI_LIBS="-L$WITH_DBI/lib -ldbi"
318  else
319    AC_CHECK_HEADERS([dbi/dbi.h],
320      [AC_CHECK_LIB([dbi], [dbi_version],
321        [
322          DBI_CFLAGS=
323          DBI_LIBS="-ldbi"
324        ],
325        [AC_MSG_ERROR([LibDBI not found])]
326      )],
327      [AC_MSG_ERROR([LibDBI header not found])]
328    )
329  fi
330
331  AC_DEFINE([HAVE_DBI], [1], [LibDBI support])
332fi
333AM_CONDITIONAL([BUILD_WITH_DBI], [test "$WITH_DBI" != no])
334
335AC_SUBST([DBI_LIBS])
336AC_SUBST([DBI_CFLAGS])
337
338dnl Checks for libsasl2 library
339AC_MSG_NOTICE([----------------------------------------])
340AC_MSG_CHECKING([for LibSASL support])
341AC_ARG_WITH([sasl],
342  [AS_HELP_STRING([--with-sasl@<:@=PATH@:>@],
343    [Include SASL support in PATH/include/sasl/sasl.h and PATH/lib]
344  )],
345  [WITH_SASL=$withval],
346  [WITH_SASL=no]
347)
348AC_MSG_RESULT([$WITH_SASL])
349
350SASL_INCLUDE=
351SASL_LIBS=
352
353if test "$WITH_SASL" != no; then
354  if test "$WITH_SASL" != yes; then
355    SASL_CFLAGS="-I$WITH_SASL/include"
356    SASL_LIBS="-L$WITH_SASL/lib -lsasl2"
357  else
358    AC_CHECK_HEADERS([sasl/sasl.h],
359      [AC_CHECK_LIB([sasl2], [sasl_server_init],
360        [
361          SASL_CFLAGS=
362          SASL_LIBS="-lsasl2"
363        ],
364        [AC_MSG_ERROR([libsasl2 not found])]
365      )],
366      [AC_MSG_ERROR([SASL header not found])]
367    )
368  fi
369
370  AC_DEFINE([HAVE_SASL], [1], [LibSASL support])
371fi
372AM_CONDITIONAL([BUILD_WITH_SASL], [test "$WITH_SASL" != no])
373
374AC_SUBST([SASL_LIBS])
375AC_SUBST([SASL_CFLAGS])
376
377
378dnl Check for LDAP
379AC_MSG_NOTICE([----------------------------------------])
380AC_MSG_CHECKING([for LDAP support])
381AC_ARG_WITH([ldap],
382  [AS_HELP_STRING([--with-ldap], [enable LDAP support])],
383  [WITH_LDAP=$withval],
384  [WITH_LDAP=no]
385)
386AC_MSG_RESULT([$WITH_LDAP])
387
388if test "$WITH_LDAP" != no; then
389  AC_CHECK_LIB([ldap], [ldap_sasl_bind_s],
390    [AC_CHECK_HEADERS([ldap.h],
391      [
392        LDAP_LIB=-lldap
393        AC_DEFINE([HAVE_LIBLDAP], [1], [libldap])
394        AC_DEFINE([HAVE_LDAP_H], [1])
395      ],
396      [AC_MSG_ERROR([ldap headers not found, install them or build without --with-ldap])]
397    )],
398    [AC_MSG_ERROR([ldap library not found, install it or build without --with-ldap])]
399  )
400  AC_SUBST([LDAP_LIB])
401  AC_CHECK_LIB([lber], [ber_printf],
402    [AC_CHECK_HEADERS([lber.h],
403      [
404        LBER_LIB=-llber
405        AC_DEFINE([HAVE_LIBLBER], [1], [liblber])
406        AC_DEFINE([HAVE_LBER_H], [1])
407      ],
408      [AC_MSG_ERROR([lber headers not found, install them or build without --with-ldap])]
409    )],
410    [AC_MSG_ERROR([lber library not found, install it or build without --with-ldap])]
411  )
412  AC_SUBST([LBER_LIB])
413fi
414AM_CONDITIONAL([BUILD_WITH_LDAP], [test "$WITH_LDAP" != no])
415
416dnl Check for PAM
417AC_MSG_NOTICE([----------------------------------------])
418AC_MSG_CHECKING(for PAM support)
419AC_ARG_WITH([pam],
420  [AS_HELP_STRING([--with-pam],[enable PAM support])],
421  [WITH_PAM=$withval],
422  [WITH_PAM=no]
423)
424AC_MSG_RESULT([$withval])
425
426if test "$WITH_PAM" != "no"; then
427  AC_CHECK_LIB([pam], [pam_start],
428    [AC_CHECK_HEADERS([security/pam_appl.h],[
429      PAM_LIB=-lpam
430      AC_DEFINE([HAVE_PAM], [1], [libpam])
431      AC_DEFINE([HAVE_SECURITY_PAM_APPL_H], [1])
432      ],
433      [AC_MSG_ERROR([pam headers not found, install them or build without --with-pam])]
434    )],
435    [AC_MSG_ERROR([pam library not found, install it or build without --with-pam])]
436  )
437  AC_SUBST(PAM_LIB)
438fi
439AM_CONDITIONAL([BUILD_WITH_PAM], [test "$WITH_PAM" != no])
440
441dnl Check for xattr
442AC_MSG_NOTICE([----------------------------------------])
443AC_MSG_CHECKING([for extended attributes support])
444AC_ARG_WITH([attr],
445  [AS_HELP_STRING([--with-attr], [enable extended attribute support])],
446  [WITH_ATTR=$withval],
447  [WITH_ATTR=no]
448)
449AC_MSG_RESULT([$WITH_ATTR])
450
451if test "$WITH_ATTR" != no; then
452  have_xattr=no
453
454  # Linux getxattr
455  AC_CHECK_FUNC([getxattr], [
456    AC_CHECK_HEADERS([sys/xattr.h], [
457      AC_DEFINE([HAVE_XATTR], [1], [Linux extended attributes])
458      AC_DEFINE([HAVE_SYS_XATTR_H], [1])
459      have_xattr=yes
460    ])
461  ])
462
463  # (Free)BSD extattr
464  AC_CHECK_FUNC([extattr_get_file], [
465    AC_CHECK_HEADERS([sys/extattr.h], [
466      AC_DEFINE([HAVE_EXTATTR], [1], [BSD extended attributes])
467      AC_DEFINE([HAVE_SYS_EXTATTR_H], [1])
468      have_xattr=yes
469    ])
470  ])
471
472  # libattr (linux only?)
473  if test "$have_xattr" = no; then
474    AC_CHECK_LIB([attr], [attr_get], [
475      AC_CHECK_HEADERS([attr/attributes.h], [
476        ATTR_LIB=-lattr
477        AC_DEFINE([HAVE_XATTR], [1], [libattr])
478        AC_DEFINE([HAVE_ATTR_ATTRIBUTES_H], [1])
479        have_xattr=yes
480      ])
481    ])
482  fi
483  AC_SUBST([ATTR_LIB])
484
485  if test "$have_xattr" = no; then
486    AC_MSG_ERROR([no backend found implementing extended attributes])
487  fi
488fi
489
490dnl Check for valgrind
491AC_MSG_NOTICE([----------------------------------------])
492AC_MSG_CHECKING([for valgrind])
493AC_ARG_WITH([valgrind],
494  [AS_HELP_STRING([--with-valgrind],
495    [enable internal support for valgrind]
496  )],
497  [WITH_VALGRIND=$withval],
498  [WITH_VALGRIND=no]
499)
500AC_MSG_RESULT([$WITH_VALGRIND])
501
502if test "$WITH_VALGRIND" != no; then
503  AC_CHECK_HEADERS([valgrind/valgrind.h], [], [
504    AC_MSG_ERROR([valgrind headers not found. install them or build without --with-valgrind])
505  ])
506fi
507
508dnl Checking for libunwind
509AC_MSG_NOTICE([----------------------------------------])
510AC_MSG_CHECKING([for libunwind])
511AC_ARG_WITH([libunwind],
512  [AS_HELP_STRING([--with-libunwind],
513    [Include libunwind support for backtraces on assert failures]
514  )],
515  [WITH_LIBUNWIND=$withval],
516  [WITH_LIBUNWIND=no]
517)
518AC_MSG_RESULT([$WITH_LIBUNWIND])
519
520if test "$WITH_LIBUNWIND" != no; then
521  PKG_CHECK_MODULES([LIBUNWIND], [libunwind], [], [
522    AC_MSG_ERROR([libunwind not found. install it or build without --with-libunwind])
523  ])
524  AC_DEFINE([HAVE_LIBUNWIND], [1], [Have libunwind support])
525fi
526
527dnl Checking for kerberos5
528AC_MSG_NOTICE([----------------------------------------])
529AC_MSG_CHECKING([for kerberos5])
530AC_ARG_WITH([krb5],
531  [AS_HELP_STRING([--with-krb5@<:@=DIR@:>@], [Use Kerberos 5])],
532  [WITH_KRB5=$withval],
533  [WITH_KRB5=no]
534)
535AC_MSG_RESULT([$WITH_KRB5])
536
537if test "$WITH_KRB5" != no; then
538  if test "$WITH_KRB5" != yes; then
539    krb5_append_CPPFLAGS=" -I$WITH_KRB5/include"
540    krb5_append_LDFLAGS=" -L$WITH_KRB5/lib"
541  fi
542fi
543
544AC_MSG_CHECKING([custom include directory for kerberos5])
545AC_ARG_WITH([krb5-includes],
546  [AS_HELP_STRING([--with-krb5-includes=DIR], [Kerberos includes])],
547  [
548    if test "$WITH_KRB5" = no; then
549      AC_MSG_ERROR([build --with-krb5 to use --with-krb5-includes])
550    fi
551    krb5_append_CPPFLAGS=" -I$withval"
552    AC_MSG_RESULT([$withval])
553  ],
554  [AC_MSG_RESULT([no])]
555)
556
557AC_MSG_CHECKING([custom lib directory for kerberos5])
558AC_ARG_WITH([krb5-libs],
559  [AS_HELP_STRING([--with-krb5-libs=DIR], [Kerberos libraries])],
560  [
561    if test "$WITH_KRB5" = no; then
562      AC_MSG_ERROR([build --with-krb5 to use --with-krb5-libs])
563    fi
564    krb5_append_LDFLAGS=" -L$withval"
565    AC_MSG_RESULT([$withval])
566  ],
567  [AC_MSG_RESULT([no])]
568)
569
570if test "$WITH_KRB5" != no; then
571  CPPFLAGS="${CPPFLAGS}${krb5_append_CPPFLAGS}"
572  LDFLAGS="${LDFLAGS}${krb5_append_LDFLAGS}"
573
574  AC_CHECK_LIB([gssapi_krb5], [gss_acquire_cred],
575    [AC_CHECK_HEADERS([gssapi/gssapi_krb5.h],
576      [
577        KRB5_LIB="-lkrb5 -lgssapi_krb5"
578        AC_DEFINE([HAVE_KRB5], [1], [libgssapi_krb5])
579      ],
580      [AC_MSG_ERROR([gssapi_krb5 headers were not found, install them or build without --with-krb5])]
581    )],
582    [AC_MSG_ERROR([gssapi_krb5 libs were not found, install them or build without --with-krb5])]
583  )
584  case "$host_os" in
585  *darwin*|*cygwin* ) KRB5_LIB="$KRB5_LIB -lcom_err" ;;
586  * ) ;;
587  esac
588fi
589
590AM_CONDITIONAL([BUILD_WITH_KRB5], [test "$WITH_KRB5" != no])
591AC_SUBST([KRB5_LIB])
592
593dnl Check for openssl
594AC_MSG_NOTICE([----------------------------------------])
595AC_MSG_CHECKING([for OpenSSL])
596AC_ARG_WITH([openssl],
597  [AS_HELP_STRING([--with-openssl@<:@=DIR@:>@],
598    [Include openssl support (default no)]
599  )],
600  [WITH_OPENSSL=$withval],
601  [WITH_OPENSSL=no]
602)
603AC_MSG_RESULT([$WITH_OPENSSL])
604AM_CONDITIONAL([BUILD_WITH_OPENSSL], test ! "$WITH_OPENSSL" = no)
605
606if test "$WITH_OPENSSL" != no; then
607  if test "$WITH_OPENSSL" != yes; then
608    openssl_append_CPPFLAGS=" -I$WITH_OPENSSL/include"
609    openssl_append_LDFLAGS=" -L$WITH_OPENSSL/lib"
610  fi
611fi
612
613AC_MSG_CHECKING([custom include directory for openssl])
614AC_ARG_WITH([openssl-includes],
615  [AS_HELP_STRING([--with-openssl-includes=DIR], [OpenSSL includes])],
616  [
617    if test "$WITH_OPENSSL" = no; then
618      AC_MSG_ERROR([build --with-openssl to use --with-openssl-includes])
619    fi
620    openssl_append_CPPFLAGS=" -I$withval"
621    AC_MSG_RESULT([$withval])
622  ],
623  [AC_MSG_RESULT([no])]
624)
625
626AC_MSG_CHECKING([custom lib directory for openssl])
627AC_ARG_WITH([openssl-libs],
628  [AS_HELP_STRING([--with-openssl-libs=DIR], [OpenSSL libraries])],
629  [
630    if test "$WITH_OPENSSL" = no; then
631      AC_MSG_ERROR([build --with-openssl to use --with-openssl-libs])
632    fi
633    openssl_append_LDFLAGS=" -L$withval"
634    AC_MSG_RESULT([$withval])
635  ],
636  [AC_MSG_RESULT([no])]
637)
638
639if test "$WITH_OPENSSL" != no; then
640  if test "$WITH_KRB5" != no; then
641    AC_DEFINE([USE_OPENSSL_KERBEROS], [1], [with kerberos])
642  fi
643
644  CPPFLAGS="${CPPFLAGS}${openssl_append_CPPFLAGS}"
645  LDFLAGS="${LDFLAGS}${openssl_append_LDFLAGS}"
646
647  AC_CHECK_HEADERS([openssl/ssl.h], [], [
648    AC_MSG_ERROR([openssl headers not found. install them or build without --with-openssl])
649  ])
650  AC_CHECK_LIB([crypto], [RAND_bytes],
651    [CRYPTO_LIB="-lcrypto"],
652    [AC_MSG_ERROR([openssl crypto library not found. install it or build without --with-openssl])]
653  )
654  AC_CHECK_LIB([ssl], [SSL_new],
655    [OPENSSL_LIBS="${openssl_append_LDFLAGS} -lssl -lcrypto"],
656    [AC_MSG_ERROR([openssl ssl library not found. install it or build without --with-openssl])],
657    [ -lcrypto "$DL_LIB" ]
658  )
659
660  AC_DEFINE([HAVE_LIBSSL], [1], [Have libssl])
661  OPENSSL_CFLAGS="${openssl_append_CPPFLAGS}"
662  AC_SUBST([OPENSSL_CFLAGS])
663  AC_SUBST([OPENSSL_LIBS])
664  AC_SUBST([CRYPTO_LIB])
665fi
666
667dnl Check for wolfSSL
668AC_MSG_NOTICE([----------------------------------------])
669AC_MSG_CHECKING([for wolfSSL])
670AC_ARG_WITH([wolfssl],
671  [AS_HELP_STRING([--with-wolfssl@<:@=DIR@:>@],
672    [Include wolfSSL support (default no)]
673  )],
674  [WITH_WOLFSSL=$withval],
675  [WITH_WOLFSSL=no]
676)
677AC_MSG_RESULT([$WITH_WOLFSSL])
678AM_CONDITIONAL([BUILD_WITH_WOLFSSL], test ! "$WITH_WOLFSSL" = no)
679
680if test "$WITH_WOLFSSL" != no; then
681  CPPFLAGS_SAVE="${CPPFLAGS}"
682  LDFLAGS_SAVE="${LDFLAGS}"
683  if test "$WITH_WOLFSSL" != yes; then
684    WOLFSSL_CFLAGS="-I$WITH_WOLFSSL/include -I$WITH_WOLFSSL/include/wolfssl"
685    WOLFSSL_LIBS="-L$WITH_WOLFSSL/lib -lwolfssl"
686    LDFLAGS="${LDFLAGS} -L$WITH_WOLFSSL/lib"
687  else
688    PKG_CHECK_MODULES([WOLFSSL], [wolfssl], [], [
689      AC_MSG_ERROR([wolfssl not found, install it or build without --with-wolfssl])
690    ])
691    if test "$WOLFSSL_LIBS" != "-lwolfssl"; then
692      LDFLAGS="${LDFLAGS} ${WOLFSSL_LIBS% -lwolfssl}"
693    fi
694  fi
695
696  CPPFLAGS="${CPPFLAGS} $WOLFSSL_CFLAGS"
697  AC_CHECK_HEADERS([wolfssl/ssl.h], [], [
698    AC_MSG_ERROR([wolfssl headers not found. install them or build without --with-wolfssl])
699  ])
700  AC_CHECK_LIB([wolfssl], [wolfSSL_Init],
701    [WOLFSSL_CRYPTO_LIB="-lwolfssl"],
702    [AC_MSG_ERROR([wolfssl crypto library not found. install it or build without --with-wolfssl])]
703  )
704  AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
705    #include <wolfssl/options.h>
706    #if !defined(HAVE_LIGHTY) && !defined(OPENSSL_EXTRA)
707    #error HAVE_LIGHTY macro not defined
708    #endif
709  ]])], [], [AC_MSG_ERROR([wolfssl must be built with ./configure --enable-lighty])])
710
711  AC_SUBST([WOLFSSL_CFLAGS])
712  AC_SUBST([WOLFSSL_LIBS])
713  if test "$WITH_OPENSSL" = no; then
714    CRYPTO_LIB="$WOLFSSL_CRYPTO_LIB"
715    AC_SUBST([CRYPTO_LIB])
716  else
717    CPPFLAGS="${CPPFLAGS_SAVE}"
718    LDFLAGS="${LDFLAGS_SAVE}"
719  fi
720fi
721
722dnl Check for mbedTLS
723AC_MSG_NOTICE([----------------------------------------])
724AC_MSG_CHECKING([for mbedTLS])
725AC_ARG_WITH([mbedtls],
726  AS_HELP_STRING([--with-mbedtls@<:@=DIR@:>@],[Include mbedTLS support. DIR points to the installation root. (default no)]),
727  [WITH_MBEDTLS=$withval],
728  [WITH_MBEDTLS=no]
729)
730
731if test "$WITH_MBEDTLS" != "no"; then
732  use_mbedtls=yes
733  if test "$WITH_MBEDTLS" != "yes"; then
734      CPPFLAGS="$CPPFLAGS -I$WITH_MBEDTLS/include"
735      LDFLAGS="$LDFLAGS -L$WITH_MBEDTLS/lib"
736  fi
737else
738  use_mbedtls=no
739fi
740AC_MSG_RESULT([$use_mbedtls])
741AM_CONDITIONAL(BUILD_WITH_MBEDTLS, test ! $WITH_MBEDTLS = no)
742
743if test "x$use_mbedtls" = "xyes"; then
744  AC_CHECK_HEADERS([mbedtls/ssl.h])
745  OLDLIBS="$LIBS"
746  AC_CHECK_LIB(mbedcrypto, mbedtls_base64_encode,
747    [AC_CHECK_LIB(mbedx509, mbedtls_x509_get_name,
748      [AC_CHECK_LIB(mbedtls, mbedtls_ssl_init,
749        [MTLS_LIBS="-lmbedtls -lmbedx509 -lmbedcrypto"
750         CRYPTO_LIB="-lmbedcrypto"
751         AC_DEFINE(HAVE_LIBMBEDTLS, [1], [Have libmbedtls library])
752         AC_DEFINE(HAVE_LIBMBEDX509, [1], [Have libmbedx509 library])
753         AC_DEFINE(HAVE_LIBMBEDCRYPTO, [1], [Have libmbedcrypto library]) ],
754        [],[-lmbedcrypto "$DL_LIB"])
755      ],[],[-lmbedcrypto "$DL_LIB"])
756    ],[],[])
757  LIBS="$OLDLIBS"
758  AC_SUBST(MTLS_LIBS)
759  AC_SUBST(CRYPTO_LIB)
760fi
761
762dnl Check for Nettle (and overwrite CRYPTO_LIB if set by OpenSSL or wolfSSL)
763AC_MSG_NOTICE([----------------------------------------])
764AC_MSG_CHECKING([for Nettle])
765AC_ARG_WITH([nettle],
766  [AS_HELP_STRING([--with-nettle@<:@=DIR@:>@],
767    [Include Nettle support (default no)]
768  )],
769  [WITH_NETTLE=$withval],
770  [WITH_NETTLE=no]
771)
772AC_MSG_RESULT([$WITH_NETTLE])
773
774if test "$WITH_NETTLE" != no; then
775  if test "$WITH_NETTLE" != yes; then
776    CPPFLAGS="${CPPFLAGS} -I$WITH_NETTLE/include"
777    LDFLAGS="${LDFLAGS} -L$WITH_NETTLE/lib"
778  fi
779
780  AC_CHECK_HEADERS([nettle/nettle-types.h], [], [
781    AC_MSG_ERROR([nettle headers not found. install them or build without --with-nettle])
782  ])
783  AC_CHECK_LIB([nettle], [nettle_md5_init],
784    [CRYPTO_LIB="-lnettle"],
785    [AC_MSG_ERROR([nettle crypto library not found. install it or build without --with-nettle])]
786  )
787
788  AC_SUBST([CRYPTO_LIB])
789fi
790
791dnl Check for GnuTLS
792AC_MSG_NOTICE([----------------------------------------])
793AC_MSG_CHECKING([for GnuTLS])
794AC_ARG_WITH([gnutls],
795  AS_HELP_STRING([--with-gnutls@<:@=DIR@:>@],[Include GnuTLS support. DIR points to the installation root. (default no)]),
796  [WITH_GNUTLS=$withval],
797  [WITH_GNUTLS=no]
798)
799
800if test "$WITH_GNUTLS" != "no"; then
801  use_gnutls=yes
802else
803  use_gnutls=no
804fi
805AC_MSG_RESULT([$use_gnutls])
806AM_CONDITIONAL(BUILD_WITH_GNUTLS, test ! $WITH_GNUTLS = no)
807
808GNUTLS_CFLAGS=
809GNUTLS_LIBS=
810
811if test "x$use_gnutls" = "xyes"; then
812  if test "$WITH_GNUTLS" != "yes"; then
813      GNUTLS_CFLAGS="-I$WITH_GNUTLS/include"
814      GNUTLS_LIBS="-L$WITH_GNUTLS/lib -lgnutls"
815  else
816      dnl oldest GnuTLS supported release is 3.3.x at time this is being written
817      PKG_CHECK_MODULES([GNUTLS], [gnutls >= 3.3.0])
818  fi
819  AC_SUBST([GNUTLS_CFLAGS])
820  AC_SUBST([GNUTLS_LIBS])
821  AC_DEFINE([HAVE_GNUTLS_CRYPTO_H], [1], [gnutls/crypto.h])
822  if test "$WITH_OPENSSL" = no && test "$WITH_WOLFSSL" = no && \
823     test "$WITH_MBEDTLS" = no && test "$WITH_NETTLE" = no; then
824      AC_SUBST([CRYPTO_LIB],[$GNUTLS_LIBS])
825  fi
826fi
827
828dnl Check for NSS
829AC_MSG_NOTICE([----------------------------------------])
830AC_MSG_CHECKING([for NSS])
831AC_ARG_WITH([nss],
832  AS_HELP_STRING([--with-nss@<:@=DIR@:>@],[Include NSS support. DIR points to the installation root. (default no)]),
833  [WITH_NSS=$withval],
834  [WITH_NSS=no]
835)
836
837if test "$WITH_NSS" != "no"; then
838  use_nss=yes
839else
840  use_nss=no
841fi
842AC_MSG_RESULT([$use_nss])
843AM_CONDITIONAL(BUILD_WITH_NSS, test ! $WITH_NSS = no)
844
845NSS_CFLAGS=
846NSS_LIBS=
847
848if test "x$use_nss" = "xyes"; then
849  if test "$WITH_NSS" != "yes"; then
850      NSS_CFLAGS="-I$WITH_NSS/include"
851      NSS_LIBS="-L$WITH_NSS/lib -lnss3"
852  else
853      PKG_CHECK_MODULES([NSS],[nss])
854      if test "x$CRYPTO_LIB" = "x"; then
855        PKG_CHECK_MODULES([NSPR],[nspr])
856        CPPFLAGS="$CPPFLAGS $NSPR_CFLAGS"
857      fi
858  fi
859  AC_DEFINE([HAVE_NSS_NSS_H], [1], [nss/nss.h])
860  AC_DEFINE([HAVE_NSS3_NSS_H], [1], [nss3/nss.h])
861  AC_SUBST([NSS_CFLAGS])
862  AC_SUBST([NSS_LIBS])
863  if test "x$CRYPTO_LIB" = "x"; then
864    CRYPTO_LIB="-lnss3"
865    AC_SUBST([CRYPTO_LIB])
866  fi
867fi
868
869
870dnl pcre support
871AC_MSG_NOTICE([----------------------------------------])
872AC_MSG_CHECKING([for perl regular expressions support])
873AC_ARG_WITH([pcre],
874  [AS_HELP_STRING([--with-pcre], [Enable pcre support (default no)])],
875  [WITH_PCRE=$withval],
876  [WITH_PCRE=no]
877)
878AC_MSG_RESULT([$WITH_PCRE])
879
880dnl pcre2 support
881AC_MSG_NOTICE([----------------------------------------])
882AC_MSG_CHECKING([for perl regular expressions support])
883AC_ARG_WITH([pcre2],
884  [AS_HELP_STRING([--with-pcre2], [Enable pcre2 support (default yes)])],
885  [WITH_PCRE2=$withval],
886  [WITH_PCRE2=yes]
887)
888AC_MSG_RESULT([$WITH_PCRE2])
889
890if test "$WITH_PCRE2" != no && test "$WITH_PCRE" = "no"; then
891  if test "$WITH_PCRE2" != yes; then
892    PCRE_LIB="-L$WITH_PCRE2/lib -lpcre2-8"
893    CPPFLAGS="$CPPFLAGS -I$WITH_PCRE2/include"
894  else
895    PKG_CHECK_MODULES([PCRE2],[libpcre2-8],[
896      PCRE_LIB="$PCRE2_LIBS"
897      CPPFLAGS="$CPPFLAGS $PCRE2_CFLAGS"
898    ],[
899      AC_PATH_PROG([PCRE2CONFIG], [pcre2-config])
900      if test -n "$PCRE2CONFIG"; then
901        PCRE_LIB=`"$PCRE2CONFIG" --libs8`
902        CPPFLAGS="$CPPFLAGS `"$PCRE2CONFIG" --cflags`"
903      fi
904    ])
905  fi
906
907  if test -z "$PCRE_LIB"; then
908    AC_MSG_ERROR([pcre2-config not found, install the pcre2-devel package or build with --without-pcre2])
909  fi
910
911  AC_DEFINE([HAVE_PCRE], [1], [libpcre2-8])
912  AC_DEFINE([HAVE_PCRE2_H], [1], [pcre.h])
913  AC_SUBST([PCRE_LIB])
914fi
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_PCRE], [1], [libpcre])
933  AC_DEFINE([HAVE_PCRE_H], [1], [pcre.h])
934  AC_SUBST([PCRE_LIB])
935fi
936
937
938dnl zlib
939AC_MSG_NOTICE([----------------------------------------])
940AC_MSG_CHECKING([for zlib support])
941AC_ARG_WITH([zlib],
942  [AS_HELP_STRING([--with-zlib],
943    [Enable zlib support for mod_deflate]
944  )],
945  [WITH_ZLIB=$withval],
946  [WITH_ZLIB=yes]
947)
948AC_MSG_RESULT([$WITH_ZLIB])
949
950if test "$WITH_ZLIB" != no; then
951  if test "$WITH_ZLIB" != yes; then
952    Z_LIB="-L$WITH_ZLIB -lz"
953    CPPFLAGS="$CPPFLAGS -I$WITH_ZLIB"
954  else
955    AC_CHECK_HEADERS([zlib.h], [],
956      [AC_MSG_ERROR([zlib headers not found, install them or build without --with-zlib])]
957    )
958    AC_CHECK_LIB([z], [deflate],
959      [Z_LIB=-lz],
960      [AC_MSG_ERROR([zlib library not found, install it or build without --with-zlib])]
961    )
962  fi
963
964  AC_DEFINE([HAVE_LIBZ], [1], [libz])
965  AC_DEFINE([HAVE_ZLIB_H], [1])
966  AC_SUBST([Z_LIB])
967fi
968
969dnl zstd
970AC_MSG_NOTICE([----------------------------------------])
971AC_MSG_CHECKING([for zstd support])
972AC_ARG_WITH([zstd],
973  [AS_HELP_STRING([--with-zstd],
974    [Enable zstd support for mod_deflate]
975  )],
976  [WITH_ZSTD=$withval],
977  [WITH_ZSTD=no]
978)
979AC_MSG_RESULT([$WITH_ZSTD])
980
981if test "$WITH_ZSTD" != no; then
982  if test "$WITH_ZSTD" != yes; then
983    ZSTD_LIB="-L$WITH_ZSTD -lzstd"
984    CPPFLAGS="$CPPFLAGS -I$WITH_ZSTD"
985  else
986    AC_CHECK_HEADERS([zstd.h], [],
987      [AC_MSG_ERROR([zstd headers not found, install them or build without --with-zstd])]
988    )
989    AC_CHECK_LIB([zstd], [ZSTD_versionNumber],
990      [ZSTD_LIB=-lzstd],
991      [AC_MSG_ERROR([zstd library not found, install it or build without --with-zstd])]
992    )
993  fi
994
995  AC_DEFINE([HAVE_ZSTD], [1], [libzstd])
996  AC_DEFINE([HAVE_ZSTD_H], [1])
997  AC_SUBST([ZSTD_LIB])
998fi
999
1000dnl bzip2
1001AC_MSG_NOTICE([----------------------------------------])
1002AC_MSG_CHECKING([for bzip2 support])
1003AC_ARG_WITH([bzip2],
1004  [AS_HELP_STRING([--with-bzip2],
1005    [Enable bzip2 support for mod_deflate]
1006  )],
1007  [WITH_BZIP2=$withval],
1008  [WITH_BZIP2=no]
1009)
1010AC_MSG_RESULT([$WITH_BZIP2])
1011
1012if test "$WITH_BZIP2" != no; then
1013  if test "$WITH_BZIP2" != yes; then
1014    BZ_LIB="-L$WITH_BZIP2 -lbz2"
1015    CPPFLAGS="$CPPFLAGS -I$WITH_BZIP2"
1016  else
1017    AC_CHECK_HEADERS([bzlib.h], [], [
1018      AC_MSG_ERROR([bzip2 headers not found, install them or build without --with-bzip2])
1019    ])
1020    AC_CHECK_LIB([bz2], [BZ2_bzCompress],
1021      [BZ_LIB=-lbz2],
1022      [AC_MSG_ERROR([bzip2 library not found, install it or build without --with-bzip2])]
1023    )
1024  fi
1025
1026  AC_DEFINE([HAVE_LIBBZ2], [1], [libbz2])
1027  AC_DEFINE([HAVE_BZLIB_H], [1])
1028  AC_SUBST([BZ_LIB])
1029fi
1030
1031dnl brotli
1032AC_MSG_NOTICE([----------------------------------------])
1033AC_MSG_CHECKING([for brotli support])
1034AC_ARG_WITH([brotli],
1035  [AS_HELP_STRING([--with-brotli],
1036    [Enable brotli support for mod_deflate]
1037  )],
1038  [WITH_BROTLI=$withval],
1039  [WITH_BROTLI=no]
1040)
1041AC_MSG_RESULT([$WITH_BROTLI])
1042
1043if test "$WITH_BROTLI" != no; then
1044  if test "$WITH_BROTLI" != yes; then
1045    BROTLI_LIBS="-L$WITH_BROTLI -lbrotlienc"
1046    CPPFLAGS="$CPPFLAGS -I$WITH_BROTLI"
1047  else
1048    PKG_CHECK_MODULES([BROTLI], [libbrotlienc], [], [
1049      AC_MSG_ERROR([brotli not found, install it or build without --with-brotli])
1050    ])
1051  fi
1052
1053  AC_DEFINE([HAVE_BROTLI_ENCODE_H], [1], [brotli/encode.h])
1054  AC_DEFINE([HAVE_BROTLI], [1], [libbrotlienc])
1055  AC_SUBST([BROTLI_CFLAGS])
1056  AC_SUBST([BROTLI_LIBS])
1057fi
1058
1059dnl libdeflate
1060AC_MSG_NOTICE([----------------------------------------])
1061AC_MSG_CHECKING([for libdeflate support])
1062AC_ARG_WITH([libdeflate],
1063  [AS_HELP_STRING([--with-libdeflate],
1064    [Enable libdeflate support for mod_deflate]
1065  )],
1066  [WITH_LIBDEFLATE=$withval],
1067  [WITH_LIBDEFLATE=no]
1068)
1069AC_MSG_RESULT([$WITH_LIBDEFLATE])
1070
1071if test "$WITH_LIBDEFLATE" != no; then
1072  if test "$WITH_LIBDEFLATE" != yes; then
1073    DEFLATE_LIBS="-L$WITH_LIBDEFLATE -ldeflate"
1074    CPPFLAGS="$CPPFLAGS -I$WITH_LIBDEFLATE"
1075  else
1076    AC_CHECK_HEADERS([libdeflate.h], [],
1077      [AC_MSG_ERROR([libdeflate header not found, install them or build without --with-libdeflate])]
1078    )
1079    AC_CHECK_LIB([deflate], [libdeflate_alloc_compressor],
1080      [DEFLATE_LIBS=-ldeflate],
1081      [AC_MSG_ERROR([libdeflate library not found, install it or build without --with-libdeflate])]
1082    )
1083  fi
1084
1085  AC_DEFINE([HAVE_LIBDEFLATE], [1], [libdeflate])
1086  AC_SUBST([DEFLATE_LIBS])
1087fi
1088
1089dnl Check for fam/gamin
1090AC_MSG_NOTICE([----------------------------------------])
1091AC_MSG_CHECKING([for FAM])
1092AC_ARG_WITH([fam],
1093  [AS_HELP_STRING([--with-fam],
1094    [fam/gamin for reducing number of stat() calls]
1095  )],
1096  [WITH_FAM=$withval],
1097  [WITH_FAM=no]
1098)
1099AC_MSG_RESULT([$WITH_FAM])
1100
1101dnl "$ac_cv_func_kqueue" is set further below
1102case "$host_os" in
1103*bsd*|*darwin* ) WITH_FAM=no ;;
1104* ) ;;
1105esac
1106
1107if test "$ac_cv_header_sys_inotify_h" != no; then
1108  WITH_FAM=no
1109fi
1110
1111if test "$WITH_FAM" != no; then
1112  if test "$WITH_FAM" != yes; then
1113    FAM_LIBS="-L$WITH_FAM -lfam"
1114    CPPFLAGS="$CPPFLAGS -I$WITH_FAM"
1115  else
1116    AC_CHECK_LIB([fam], [FAMOpen2], [
1117      AC_CHECK_HEADERS([fam.h], [FAM_LIBS=-lfam])
1118    ])
1119    dnl fam has no pkg-config so far, so just search for gamin as fallback
1120    if test -z "$FAM_LIBS"; then
1121      PKG_CHECK_MODULES([FAM], [gamin >= 0.1.0])
1122    fi
1123  fi
1124
1125  if test -z "$FAM_LIBS"; then
1126    AC_MSG_ERROR([fam/gamin headers and/or libs were not found, install them or build without --with-fam])
1127  fi
1128
1129  OLD_LIBS=$LIBS
1130  LIBS=$FAM_LIBS
1131  AC_CHECK_FUNCS([FAMNoExists])
1132  LIBS=$OLD_LIBS
1133
1134  AC_DEFINE([HAVE_LIBFAM], [1], [libfam])
1135  AC_DEFINE([HAVE_FAM_H], [1], [fam.h])
1136  AC_SUBST([FAM_LIBS])
1137fi
1138
1139
1140dnl webdav props (xml2 and sqlite3)
1141AC_MSG_NOTICE([----------------------------------------])
1142AC_MSG_CHECKING([for properties in mod_webdav])
1143AC_ARG_WITH([webdav-props],
1144  [AS_HELP_STRING([--with-webdav-props], [properties in mod_webdav])],
1145  [WITH_WEBDAV_PROPS=$withval],
1146  [WITH_WEBDAV_PROPS=no]
1147)
1148AC_MSG_RESULT([$WITH_WEBDAV_PROPS])
1149
1150if test "$WITH_WEBDAV_PROPS" != no; then
1151  AC_MSG_CHECKING([for libxml2])
1152  AC_ARG_WITH([libxml],
1153    [AS_HELP_STRING([--with-libxml],
1154      [libxml2 for properties in mod_webdav]
1155    )],
1156    [WITH_LIBXML=$withval],
1157    [WITH_LIBXML=yes]
1158  )
1159  AC_MSG_RESULT([$WITH_LIBXML])
1160
1161  if test "$WITH_LIBXML" = no; then
1162    AC_MSG_ERROR([--with-webdav-props requires libxml])
1163  fi
1164
1165  if test "$WITH_LIBXML" != yes; then
1166    XML_LIBS="-L$WITH_LIBXML/.libs -lxml2"
1167    XML_CFLAGS="-I$WITH_LIBXML/include"
1168  else
1169    PKG_CHECK_MODULES([XML], [libxml-2.0], [], [
1170      AC_MSG_ERROR([libxml2 not found, install it or build without --with-webdav-props])
1171    ])
1172  fi
1173
1174  AC_DEFINE([HAVE_LIBXML2], [1], [libxml2])
1175  AC_DEFINE([HAVE_LIBXML_H], [1], [libxml.h])
1176  AC_SUBST([XML_LIBS])
1177  AC_SUBST([XML_CFLAGS])
1178
1179  AC_MSG_CHECKING([for sqlite])
1180  AC_ARG_WITH([sqlite],
1181    [AS_HELP_STRING([--with-sqlite],
1182      [sqlite for properties in mod_webdav]
1183    )],
1184    [WITH_SQLITE=$withval],
1185    [WITH_SQLITE=yes]
1186  )
1187  AC_MSG_RESULT([$WITH_SQLITE])
1188
1189  if test "$WITH_SQLITE" = no; then
1190    AC_MSG_ERROR([--with-webdav-props requires sqlite])
1191  fi
1192
1193  if test "$WITH_SQLITE" != yes; then
1194    SQLITE_LIBS="-L$WITH_SQLITE/.libs -lsqlite3"
1195    SQLITE_CFLAGS="-I$WITH_SQLITE"
1196  else
1197    PKG_CHECK_MODULES([SQLITE], [sqlite3], [], [
1198      AC_MSG_ERROR([sqlite3 not found, install it or build without --with-webdav-props])
1199    ])
1200  fi
1201
1202  AC_DEFINE([HAVE_SQLITE3], [1], [libsqlite3])
1203  AC_DEFINE([HAVE_SQLITE3_H], [1], [sqlite3.h])
1204  AC_SUBST([SQLITE_LIBS])
1205  AC_SUBST([SQLITE_CFLAGS])
1206fi
1207
1208
1209dnl webdav locks (uuid)
1210AC_MSG_NOTICE([----------------------------------------])
1211AC_MSG_CHECKING([for locks in mod_webdav])
1212AC_ARG_WITH([webdav-locks],
1213  [AS_HELP_STRING([--with-webdav-locks],
1214    [locks in mod_webdav (requires webdav properties)]
1215  )],
1216  [WITH_WEBDAV_LOCKS=$withval],
1217  [WITH_WEBDAV_LOCKS=no]
1218)
1219AC_MSG_RESULT([$WITH_WEBDAV_LOCKS])
1220
1221if test "$WITH_WEBDAV_LOCKS" != no; then
1222  if test "$WITH_WEBDAV_PROPS" = no; then
1223    AC_MSG_ERROR([--with-webdav-locks requires --with-webdav-props])
1224  fi
1225
1226  AC_MSG_CHECKING([for libuuid])
1227  AC_ARG_WITH([uuid],
1228    [AS_HELP_STRING([--with-uuid], [uuid for locks in mod_webdav])],
1229    [WITH_UUID=$withval],
1230    [WITH_UUID=yes]
1231  )
1232  AC_MSG_RESULT([$WITH_UUID])
1233
1234  if test "$WITH_UUID" = no; then
1235    AC_MSG_ERROR([--with-webdav-locks requires uuid])
1236  fi
1237
1238  if test "$WITH_UUID" != yes; then
1239    UUID_LIBS="-L$WITH_UUID -luuid"
1240    CPPFLAGS="$CPPFLAGS -I$WITH_UUID"
1241  else
1242    AC_CHECK_LIB([uuid], [uuid_unparse],
1243      [UUID_LIBS=-luuid],
1244      [AC_MSG_ERROR([uuid lib not found, install it or build without --with-webdav-locks])]
1245    )
1246    AC_CHECK_HEADERS([uuid/uuid.h], [],
1247      [AC_MSG_ERROR([uuid headers not found, install them or build without --with-webdav-locks])]
1248    )
1249  fi
1250
1251  AC_DEFINE([HAVE_LIBUUID], [1], [libuuid])
1252  AC_DEFINE([HAVE_UUID_UUID_H], [1], [uuid/uuid.h is available])
1253  AC_SUBST([UUID_LIBS])
1254fi
1255
1256dnl xxhash
1257AC_MSG_NOTICE([----------------------------------------])
1258AC_MSG_CHECKING([for xxhash support])
1259AC_ARG_WITH([xxhash],
1260  [AS_HELP_STRING([--with-xxhash],
1261    [Enable system-provided xxhash]
1262  )],
1263  [WITH_XXHASH=$withval],
1264  [WITH_XXHASH=no]
1265)
1266AC_MSG_RESULT([$WITH_XXHASH])
1267
1268if test "$WITH_XXHASH" != no; then
1269  if test "$WITH_XXHASH" != yes; then
1270    XXHASH_LIBS="-L$WITH_XXHASH -lxxhash"
1271    CPPFLAGS="$CPPFLAGS -I$WITH_XXHASH"
1272  else
1273    PKG_CHECK_MODULES([XXHASH], [libxxhash], [], [
1274      AC_CHECK_LIB([xxhash], [XXH_versionNumber],
1275        [XXHASH_LIBS=-lxxhash],
1276        [AC_MSG_ERROR([xxhash not found, install it or build without --with-xxhash])]
1277      )
1278      AC_CHECK_HEADERS([xxhash.h], [],
1279        [AC_MSG_ERROR([xxhash not found, install it or build without --with-xxhash])]
1280      )
1281    ])
1282  fi
1283
1284  AC_DEFINE([HAVE_XXHASH_H], [1], [xxhash.h])
1285  AC_DEFINE([HAVE_XXHASH], [1], [xxhash])
1286  AC_SUBST([XXHASH_CFLAGS])
1287  AC_SUBST([XXHASH_LIBS])
1288fi
1289
1290dnl Check for maxminddb
1291AC_MSG_NOTICE([----------------------------------------])
1292AC_MSG_CHECKING([for maxminddb])
1293AC_ARG_WITH([maxminddb],
1294  [AS_HELP_STRING([--with-maxminddb], [IP-based geolocation lookup])],
1295  [WITH_MAXMINDDB=$withval],
1296  [WITH_MAXMINDDB=no]
1297)
1298AC_MSG_RESULT([$WITH_MAXMINDDB])
1299
1300if test "$WITH_MAXMINDDB" != no; then
1301  if test "$WITH_MAXMINDDB" != yes; then
1302    MAXMINDDB_LIB="-L$WITH_MAXMINDDB -lmaxminddb"
1303    CPPFLAGS="$CPPFLAGS -I$WITH_MAXMINDDB"
1304  else
1305    AC_CHECK_LIB([maxminddb], [MMDB_open],
1306      [MAXMINDDB_LIB=-lmaxminddb],
1307      [AC_MSG_ERROR([maxminddb lib not found, install it or build without --with-maxminddb])]
1308    )
1309    AC_CHECK_HEADERS([maxminddb.h], [],
1310      [AC_MSG_ERROR([maxminddb headers not found, install them or build without --with-maxminddb])]
1311    )
1312  fi
1313
1314  AC_DEFINE([HAVE_MAXMINDDB], [1], [libmaxminddb])
1315  AC_DEFINE([HAVE_MAXMINDDB_H], [1])
1316  AC_SUBST([MAXMINDDB_LIB])
1317fi
1318AM_CONDITIONAL([BUILD_WITH_MAXMINDDB], [test "$WITH_MAXMINDDB" != no])
1319
1320dnl Check for lua
1321AC_MSG_NOTICE([----------------------------------------])
1322AC_MSG_CHECKING([if lua-support is requested])
1323AC_ARG_WITH([lua],
1324  [AS_HELP_STRING([--with-lua], [lua engine for mod_magnet])],
1325  [WITH_LUA=$withval],
1326  [WITH_LUA=no]
1327)
1328AC_MSG_RESULT([$WITH_LUA])
1329
1330if test "$WITH_LUA" != no; then
1331  found_lua=0
1332  if test "$WITH_LUA" != yes; then
1333    PKG_CHECK_MODULES([LUA], [$WITH_LUA >= 5.1],
1334      [found_lua=1],
1335      [AC_MSG_NOTICE([Couldn\'t find requested lua pkg-config module $WITH_LUA])]
1336    )
1337    if test "$found_lua" = "0"; then
1338      LUA_LIBS="-L$WITH_LUA -llua"
1339      LUA_CFLAGS="-I$WITH_LUA"
1340    fi
1341  else
1342    for luaname in lua5.4 lua-5.4 lua5.3 lua-5.3 lua5.2 lua-5.2 lua5.1 lua-5.1 lua; do
1343      if test "$found_lua" = "0"; then
1344        PKG_CHECK_MODULES([LUA], [$luaname >= 5.1],
1345          [found_lua=1],
1346          [AC_MSG_NOTICE([Couldn\'t find $luaname])]
1347        )
1348      fi
1349    done
1350    if test "$found_lua" = "0"; then
1351      AC_MSG_ERROR([Couldn\'t find any lua pkg-config module])
1352    fi
1353  fi
1354
1355  AC_DEFINE([HAVE_LUA_H], [1], [lua.h])
1356  AC_SUBST([LUA_LIBS])
1357  AC_SUBST([LUA_CFLAGS])
1358fi
1359AM_CONDITIONAL([BUILD_WITH_LUA], [test "$WITH_LUA" != no])
1360
1361dnl "--with-FEATURE" blocks end
1362AC_MSG_NOTICE([----------------------------------------])
1363
1364dnl search for crypt_r and (fallback) for crypt
1365save_LIBS=$LIBS
1366LIBS=
1367found_crypt=no
1368AC_SEARCH_LIBS([crypt_r], [crypt],
1369  [
1370    AC_DEFINE([HAVE_CRYPT_R], [1], [crypt_r])
1371    AC_CHECK_HEADERS([crypt.h])
1372    CRYPT_LIB=$LIBS
1373    found_crypt=crypt_r
1374  ],
1375  [AC_SEARCH_LIBS([crypt], [crypt], [
1376    AC_DEFINE([HAVE_CRYPT], [1], [crypt])
1377    AC_CHECK_HEADERS([crypt.h])
1378    CRYPT_LIB=$LIBS
1379    found_crypt=crypt
1380  ])]
1381)
1382LIBS=$save_LIBS
1383AC_SUBST([CRYPT_LIB])
1384
1385AC_MSG_CHECKING([crypt_r/crypt support])
1386AC_MSG_RESULT([$found_crypt])
1387
1388dnl check whether sendfilev needs -lsendfile
1389case "$host_os" in
1390*sunos*|*solaris* )
1391AC_MSG_NOTICE([----------------------------------------])
1392save_LIBS=$LIBS
1393LIBS=
1394have_sendfilev=no
1395AC_SEARCH_LIBS([sendfilev], [sendfile], [
1396  if test -z "$LIBS"; then
1397    have_sendfilev=yes
1398  else
1399    have_sendfilev=$LIBS
1400  fi
1401  SENDFILE_LIB=$LIBS
1402  AC_DEFINE([HAVE_SENDFILEV], [1], [solaris sendfilev])
1403])
1404LIBS=$save_LIBS
1405AC_SUBST([SENDFILE_LIB])
1406
1407AC_MSG_CHECKING([solaris sendfilev present])
1408AC_MSG_RESULT([$have_sendfilev])
1409  ;;
1410* ) ;;
1411esac
1412
1413AC_MSG_NOTICE([----------------------------------------])
1414
1415case "$host_os" in
1416*mingw* ) LIBS="$LIBS -lwsock32" ;;
1417* ) ;;
1418esac
1419
1420AC_CHECK_FUNCS([\
1421  arc4random_buf \
1422  chroot \
1423  clock_gettime \
1424  copy_file_range \
1425  explicit_bzero \
1426  explicit_memset \
1427  fork \
1428  getloadavg \
1429  getuid \
1430  gmtime_r \
1431  inet_aton \
1432  inet_pton \
1433  issetugid \
1434  jrand48 \
1435  localtime_r \
1436  lstat \
1437  madvise \
1438  mempcpy \
1439  memset_s \
1440  mkostemp \
1441  pipe2 \
1442  poll \
1443  pread \
1444  pwrite \
1445  sendfile \
1446  sendfile64 \
1447  splice \
1448  srandom \
1449  strerror_r \
1450  timegm \
1451])
1452AC_CHECK_HEADERS([linux/random.h],   [AC_CHECK_FUNCS([getrandom])])
1453AC_CHECK_HEADERS([malloc.h],         [AC_CHECK_FUNCS([malloc_trim mallopt])])
1454AC_CHECK_HEADERS([signal.h],         [AC_CHECK_FUNCS([signal sigaction])])
1455AC_CHECK_HEADERS([sys/epoll.h],      [AC_CHECK_FUNCS([epoll_ctl])])
1456AC_CHECK_HEADERS([sys/event.h],      [AC_CHECK_FUNCS([kqueue])])
1457AC_CHECK_HEADERS([sys/mman.h],       [AC_CHECK_FUNCS([mmap])])
1458AC_CHECK_HEADERS([sys/random.h],     [AC_CHECK_FUNCS([getentropy])])
1459AC_CHECK_HEADERS([sys/resource.h],   [AC_CHECK_FUNCS([getrlimit])])
1460AC_CHECK_HEADERS([sys/uio.h],        [AC_CHECK_FUNCS([preadv pwritev writev])])
1461if test "$ac_cv_func_poll" = no; then
1462  AC_CHECK_HEADERS([sys/select.h])
1463  AC_CHECK_FUNCS([select])
1464fi
1465
1466case "$host_os" in
1467*sunos*|*solaris* )
1468  AC_CHECK_HEADERS([priv.h], [AC_CHECK_FUNCS([setpflags])])
1469  AC_CHECK_HEADERS([port.h], [AC_CHECK_FUNCS([port_create])])
1470  AC_CHECK_HEADERS([\
1471    sys/devpoll.h \
1472    sys/filio.h \
1473  ])
1474  ;;
1475* ) ;;
1476esac
1477
1478AC_MSG_NOTICE([----------------------------------------])
1479AC_MSG_CHECKING([if weak symbols are supported])
1480AC_LINK_IFELSE(
1481  [AC_LANG_PROGRAM([[
1482    __attribute__((weak)) void __dummy(void *x) { }
1483    void f(void *x) { __dummy(x); }
1484  ]])],
1485  [
1486    AC_MSG_RESULT([yes])
1487    AC_DEFINE([HAVE_WEAK_SYMBOLS], [1], [weak symbols are supported])
1488  ],
1489  [AC_MSG_RESULT([no])]
1490)
1491
1492AC_MSG_NOTICE([----------------------------------------])
1493AC_MSG_CHECKING([for Large File System support])
1494AC_ARG_ENABLE([lfs],
1495  [AS_HELP_STRING([--enable-lfs],
1496    [Turn on Large File System (default)]
1497  )],
1498  [
1499    case "${enableval}" in
1500    yes) ENABLE_LFS=yes ;;
1501    no) ENABLE_LFS=yes
1502        AC_MSG_NOTICE([large file support forced; --disable-lfs ignored]) ;;
1503    *) AC_MSG_ERROR([bad value ${enableval} for --enable-lfs]) ;;
1504    esac
1505  ],
1506  [ ENABLE_LFS=yes ]
1507)
1508AC_MSG_RESULT([$ENABLE_LFS])
1509if test "$ENABLE_LFS" = yes; then
1510  CPPFLAGS="${CPPFLAGS} -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGE_FILES -D_DEFAULT_SOURCE"
1511  AC_SYS_LARGEFILE
1512fi
1513
1514dnl check if sendfile works
1515if test "$ac_cv_func_sendfile" = yes; then
1516  AC_MSG_NOTICE([----------------------------------------])
1517  AC_MSG_CHECKING([if sendfile works])
1518  if test "$cross_compiling" = no; then
1519    AC_RUN_IFELSE([AC_LANG_SOURCE(
1520      [[
1521        #ifdef HAVE_SYS_SENDFILE_H
1522        #include <sys/sendfile.h>
1523        #endif /* HAVE_SYS_SENDFILE_H */
1524        #include <errno.h>
1525        #include <sys/types.h>
1526        #include <sys/socket.h>
1527        #include <sys/uio.h>
1528        int main(void) {
1529          int o = 0;
1530          if (-1 == sendfile(-1, 0, &o, 0) && errno == ENOSYS) return -1;
1531          return 0;
1532        }
1533      ]])],
1534      [AC_MSG_RESULT([yes])],
1535      [
1536        AC_MSG_RESULT([no])
1537        AC_DEFINE([HAVE_SENDFILE_BROKEN], [1], [broken sendfile])
1538      ],[]
1539    )
1540  fi
1541fi
1542
1543dnl Check for IPv6 support
1544AC_MSG_NOTICE([----------------------------------------])
1545AC_ARG_ENABLE([ipv6],
1546  [AS_HELP_STRING([--disable-ipv6], [disable IPv6 support])],
1547  [
1548    case "${enableval}" in
1549    yes) ipv6=true ;;
1550    no) ipv6=false ;;
1551    *) AC_MSG_ERROR([bad value ${enableval} for --enable-ipv6]) ;;
1552    esac
1553  ],
1554  [ipv6=true]
1555)
1556
1557if test "$ipv6" = true; then
1558  AC_CACHE_CHECK([for IPv6 support], [ac_cv_ipv6_support], [
1559    AC_LINK_IFELSE([AC_LANG_PROGRAM(
1560      [[
1561        #include <sys/types.h>
1562        #include <sys/socket.h>
1563        #include <netinet/in.h>
1564      ]],
1565      [[
1566        struct sockaddr_in6 s; struct in6_addr t=in6addr_any; int i=AF_INET6; s; t.s6_addr[0] = 0;
1567      ]])],
1568      [ac_cv_ipv6_support=yes],
1569      [ac_cv_ipv6_support=no]
1570    )
1571  ])
1572
1573  if test "$ac_cv_ipv6_support" = yes; then
1574    AC_DEFINE([HAVE_IPV6], [1], [Whether to enable IPv6 support])
1575  else
1576    AC_MSG_ERROR([IPv6 seems broken.  Fix it or build with --disable-ipv6])
1577  fi
1578fi
1579
1580# disable mmap by default
1581# lighttpd may always use mmap with files it owns (created tmp files)
1582AC_MSG_NOTICE([----------------------------------------])
1583AC_MSG_CHECKING([use mmap if available])
1584AC_ARG_ENABLE([mmap],
1585  [AS_HELP_STRING([--enable-mmap],
1586    [use mmap if available]
1587  )],
1588  [
1589    case "${enableval}" in
1590    yes) mmap=true ;;
1591    no) mmap=false ;;
1592    *) AC_MSG_ERROR([bad value ${enableval} for --enable-mmap]) ;;
1593    esac
1594  ],
1595  [mmap=false]
1596)
1597AC_MSG_RESULT([$mmap])
1598
1599if test "$mmap" = true; then
1600  AC_DEFINE([ENABLE_MMAP], [1], [Use mmap if available])
1601fi
1602
1603
1604AC_MSG_NOTICE([----------------------------------------])
1605dnl check for extra compiler options (warning options)
1606if test "${GCC}" = yes; then
1607  TRY_CFLAGS([-pipe -Wall -W -Wshadow -pedantic])
1608fi
1609
1610AC_ARG_ENABLE([extra-warnings],
1611  [AS_HELP_STRING([--enable-extra-warnings],
1612    [enable extra warnings (gcc specific)]
1613  )],
1614  [
1615    case "${enableval}" in
1616    error) extrawarnings=error ;;
1617    yes) extrawarnings=true ;;
1618    no) extrawarnings=false ;;
1619    *) AC_MSG_ERROR([bad value ${enableval} for --enable-extra-warnings]) ;;
1620    esac
1621  ],
1622  [extrawarnings=false]
1623)
1624
1625if test "$extrawarnings" = true || test "$extrawarnings" = error; then
1626  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])
1627  TRY_CFLAGS([-fstack-protector-strong])
1628  case "$host_os" in
1629    *darwin* ) ;;
1630    * ) TRY_LDFLAGS([-Wl,--as-needed]) ;;
1631  esac
1632  if test "$extrawarnings" = error; then
1633    AS_VAR_APPEND([CFLAGS], [" -Werror"])
1634    case "$host_os" in
1635      *darwin* ) ;;
1636      * ) AS_VAR_APPEND([LDFLAGS], [" -Wl,--fatal-warnings"]) ;;
1637    esac
1638  fi
1639fi
1640
1641dnl build version-id
1642LIGHTTPD_VERSION_ID=m4_format([0x%x%02x%02x], m4_unquote(m4_split(AC_PACKAGE_VERSION, [\.])))
1643AC_DEFINE_UNQUOTED([LIGHTTPD_VERSION_ID], [$LIGHTTPD_VERSION_ID], [lighttpd-version-id])
1644
1645AC_CONFIG_FILES([\
1646  distribute.sh \
1647  doc/config/conf.d/Makefile \
1648  doc/config/Makefile \
1649  doc/config/vhosts.d/Makefile \
1650  doc/Makefile \
1651  doc/outdated/Makefile \
1652  doc/scripts/Makefile \
1653  doc/systemd/Makefile \
1654  Makefile \
1655  src/Makefile \
1656  tests/docroot/Makefile \
1657  tests/Makefile \
1658])
1659AC_OUTPUT
1660
1661do_build="\
1662  mod_access \
1663  mod_accesslog \
1664  mod_ajp13 \
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_indexfile \
1676  mod_proxy \
1677  mod_redirect \
1678  mod_rewrite \
1679  mod_rrdtool \
1680  mod_scgi \
1681  mod_setenv \
1682  mod_simple_vhost \
1683  mod_sockproxy \
1684  mod_ssi \
1685  mod_staticfile \
1686  mod_status \
1687  mod_userdir \
1688  mod_vhostdb \
1689  mod_webdav \
1690  mod_wstunnel \
1691"
1692
1693lighty_track_feature() {
1694  if eval "$3"; then
1695    enable_feature="$enable_feature $1"
1696    do_build="$do_build $2"
1697  else
1698    disable_feature="$disable_feature $1"
1699    no_build="$no_build $2"
1700  fi
1701}
1702
1703lighty_track_feature "regex-conditionals" "" \
1704  'test "$WITH_PCRE" != no || test "$WITH_PCRE2" != no'
1705
1706lighty_track_feature "mysql" "mod_vhostdb_mysql" \
1707  'test "$WITH_MYSQL" != no'
1708
1709lighty_track_feature "postgresql" "mod_vhostdb_pgsql" \
1710  'test "$WITH_PGSQL" != no'
1711
1712lighty_track_feature "dbi" "mod_authn_dbi mod_vhostdb_dbi" \
1713  'test "$WITH_DBI" != no'
1714
1715lighty_track_feature "lua" "mod_magnet" \
1716  'test "$WITH_LUA" != no'
1717
1718lighty_track_feature "maxminddb" "mod_maxminddb" \
1719  'test "$WITH_MAXMINDDB" != no'
1720
1721lighty_track_feature "compress-gzip compress-deflate" "" \
1722  'test "$WITH_ZLIB" != no'
1723
1724lighty_track_feature "compress-bzip2" "" \
1725  'test "$WITH_BZIP2" != no'
1726
1727lighty_track_feature "compress-brotli" "" \
1728  'test "$WITH_BROTLI" != no'
1729
1730lighty_track_feature "compress-zstd" "" \
1731  'test "$WITH_ZSTD" != no'
1732
1733lighty_track_feature "kerberos" "mod_authn_gssapi" \
1734  'test "$WITH_KRB5" != no'
1735
1736lighty_track_feature "ldap" "mod_authn_ldap mod_vhostdb_ldap" \
1737  'test "$WITH_LDAP" != no'
1738
1739lighty_track_feature "pam" "mod_authn_pam" \
1740  'test "$WITH_PAM" != no'
1741
1742lighty_track_feature "network-openssl" "mod_openssl" \
1743  'test "$WITH_OPENSSL" != no'
1744
1745lighty_track_feature "network-mbedtls" "mod_mbedtls" \
1746  'test "$WITH_MBEDTLS" != no'
1747
1748lighty_track_feature "network-gnutls" "mod_gnutls" \
1749  'test "$WITH_GNUTLS" != no'
1750
1751lighty_track_feature "network-nss" "mod_nss" \
1752  'test "$WITH_NSS" != no'
1753
1754lighty_track_feature "network-wolfssl" "mod_wolfssl" \
1755  'test "$WITH_WOLFSSL" != no'
1756
1757lighty_track_feature "auth-crypt" "" \
1758  'test "$found_crypt" != no'
1759
1760lighty_track_feature "network-ipv6" "" \
1761  'test "$ac_cv_ipv6_support" != no'
1762
1763lighty_track_feature "large-files" "" \
1764  'test "$ENABLE_LFS" = yes'
1765
1766case "$host_os" in
1767*linux* )
1768lighty_track_feature "stat-cache-inotify" "" \
1769  'test "$ac_cv_header_sys_inotify_h" != no'
1770    ;;
1771* ) ;;
1772esac
1773
1774case "$host_os" in
1775*bsd*|*darwin* )
1776lighty_track_feature "stat-cache-kqueue" "" \
1777  'test "$ac_cv_func_kqueue" != no'
1778    ;;
1779* ) ;;
1780esac
1781
1782case "$host_os" in
1783*bsd*|*darwin*|*linux* )
1784    ;;
1785* )
1786lighty_track_feature "stat-cache-fam" "" \
1787  'test "$WITH_FAM" != no'
1788    ;;
1789esac
1790
1791lighty_track_feature "webdav-properties" "" \
1792  'test "$WITH_WEBDAV_PROPS" != no'
1793
1794lighty_track_feature "webdav-locks" "" \
1795  'test "$WITH_WEBDAV_LOCKS" != no'
1796
1797dnl output
1798
1799$ECHO
1800$ECHO "Plugins:"
1801$ECHO
1802
1803$ECHO "enabled: "
1804for p in $do_build; do
1805  $ECHO "  $p"
1806done | sort
1807
1808$ECHO "disabled: "
1809for p in $no_build; do
1810  $ECHO "  $p"
1811done | sort
1812
1813$ECHO
1814$ECHO "Features:"
1815$ECHO
1816
1817$ECHO "enabled: "
1818for p in $enable_feature; do
1819  $ECHO "  $p"
1820done | sort
1821
1822$ECHO "disabled: "
1823for p in $disable_feature; do
1824  $ECHO "  $p"
1825done | sort
1826
1827$ECHO
1828