2614cab3a556d20e9e4a2496249c75b3f3fbf4f8
[privoxy.git] / configure.in
1 dnl Process this file with autoconf to produce a configure script.
2 dnl
3 dnl Written by and Copyright (C) 2001-2021 the
4 dnl Privoxy team. https://www.privoxy.org/
5 dnl
6 dnl Based on the Internet Junkbuster originally written
7 dnl by and Copyright (C) 1997 Anonymous Coders and
8 dnl Junkbusters Corporation.  http://www.junkbusters.com
9 dnl
10 dnl This program is free software; you can redistribute it
11 dnl and/or modify it under the terms of the GNU General
12 dnl Public License as published by the Free Software
13 dnl Foundation; either version 2 of the License, or (at
14 dnl your option) any later version.
15 dnl
16 dnl This program is distributed in the hope that it will
17 dnl be useful, but WITHOUT ANY WARRANTY; without even the
18 dnl implied warranty of MERCHANTABILITY or FITNESS FOR A
19 dnl PARTICULAR PURPOSE.  See the GNU General Public
20 dnl License for more details.
21 dnl
22 dnl The GNU General Public License should be included with
23 dnl this file.  If not, you can view it at
24 dnl http://www.gnu.org/copyleft/gpl.html
25 dnl or write to the Free Software Foundation, Inc., 59
26 dnl Temple Place - Suite 330, Boston, MA  02111-1307, USA.
27 dnl
28
29 dnl =================================================================
30 dnl AutoConf Initialization
31 dnl =================================================================
32
33 AC_REVISION($Revision: 1.213 $)
34 AC_INIT(jcc.c)
35
36 if test ! -f config.h.in; then
37    echo "You need to run autoheader first. "
38    echo -n "Shall I do this for you now? (y/n) "
39    read answer
40    if test "$answer" != "y"; then
41       exit 1
42    else
43       autoheader
44   fi
45 fi
46
47 AC_CONFIG_HEADER([config.h])
48 AC_CANONICAL_HOST
49
50 dodk=auto
51 DKPREFIX=none
52 AC_ARG_WITH(docbook, dnl
53   --with-docbook=[[yes|no|directory]]
54                            Enable docbook documentation creation
55                            (default = yes, for gnu and linux),[dnl
56 case "$with_docbook" in
57 yes) dodk=yes;;
58 no) dodk=no;;
59 *)
60         dodk=yes
61         DKPREFIX=$withval
62         ;;
63 esac
64 ])
65 DB2HTML=false
66 AC_ARG_WITH(db2html, dnl
67   --with-db2html=<path/executable>
68                           Set the location of the docbook to html converter
69                           (default = search),[dnl
70 DB2HTML=$withval
71 ])
72
73 dnl =================================================================
74 dnl Application version number
75 dnl =================================================================
76 dnl CODE_STATUS can be "alpha", "beta", "stable" or "UNRELEASED",
77 dnl and will be used for CGI output. Increment version number and
78 dnl set status to "UNRELEASED" whenever git differs from the last
79 dnl release and no new release is near.
80
81 VERSION_MAJOR=3
82 VERSION_MINOR=0
83 VERSION_POINT=33
84 CODE_STATUS="UNRELEASED"
85
86 dnl Timestamp (date +%s) used by the mtree-spec target.
87 dnl Should be updated before releases but forgetting it isn't critical.
88 SOURCE_DATE_EPOCH=1613992573
89
90 dnl =================================================================
91 dnl Substitute the version numbers
92 dnl =================================================================
93
94 AC_SUBST(VERSION_MAJOR)
95 AC_SUBST(VERSION_MINOR)
96 AC_SUBST(VERSION_POINT)
97 AC_SUBST(CODE_STATUS)
98 AC_SUBST(SOURCE_DATE_EPOCH)
99
100 dnl
101 AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR})
102 AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR})
103 AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT})
104 AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}")
105 AC_DEFINE_UNQUOTED(CODE_STATUS,"${CODE_STATUS}")
106
107 dnl =================================================================
108 dnl Checks for programs needed to build.
109 dnl =================================================================
110
111 dnl Keep AC_PROG_CC from setting its own defaults:
112 if test "X$CFLAGS" = "X"; then
113    CFLAGS=" "
114 fi
115
116 AC_PROG_CC
117 AC_PROG_CPP
118 AC_PROG_INSTALL
119 AC_PROG_LN_S
120 AC_PROG_MAKE_SET
121 AC_PROG_AWK
122
123 AC_CHECK_PROG(GDB,gdb,yes,no)
124 AC_PATH_PROG(BGROUPS,groups,no,$PATH:/bin:/usr/bin:/usr/local/bin)
125 AC_PATH_PROG(ID,id,no,$PATH:/bin:/usr/bin:/usr/local/bin)
126 AC_SUBST(ID)
127 AC_SUBST(BGROUPS)
128
129 dnl =================================================================
130 dnl debug, gcc and gdb support
131 dnl =================================================================
132
133 AC_ARG_WITH(debug,
134         [  --with-debug            Enable debug mode],
135         [
136                 if test "x$withval" != "xno" ; then
137                     if test $ac_cv_prog_cc_g = yes; then
138                       if test "$GCC" = yes; then
139                         if test "$GDB"; then
140                           CFLAGS="$CFLAGS -ggdb"
141                         else
142                           CFLAGS="$CFLAGS -g"
143                         fi
144                         CFLAGS="$CFLAGS -Wshadow  -Wconversion"
145                       else
146                         CFLAGS="$CFLAGS -g"
147                       fi
148                    fi
149                 fi
150         ],
151         [
152             if test "X$CFLAGS" = "X "; then # if CFLAGS were unset (see above)
153               if test "$GCC" = yes; then
154                 CFLAGS="-O2"
155               fi
156             fi
157         ]
158 )
159
160 AC_ARG_WITH(assertions, [  --with-assertions       Enable assertions])
161 if test "x$with_assertions" != "xyes"; then
162     CFLAGS="$CFLAGS -DNDEBUG"
163 fi
164
165 dnl =================================================================
166 dnl Check for user and group validity
167 dnl =================================================================
168
169
170 if test "$host_os" = haiku; then
171   echo "Skipping user and group validity stuff.";
172
173 else
174
175   $ID privoxy >/dev/null 2>/dev/null
176   if test $? -ne 0 ; then
177    AC_MSG_WARN(There is no user 'privoxy' on this system)
178   fi
179   AC_MSG_CHECKING([for user])
180   AC_ARG_WITH(user,
181         [  --with-user=privoxy          Set user under which privoxy will run],
182         [
183                 if test "x$withval" != "xyes"; then
184                   if test $ID = no ; then
185                     AC_MSG_ERROR(There is no 'id' program on this system)
186                   else
187                     AC_MSG_RESULT($with_user)
188                     $ID $with_user 2>/dev/null >/dev/null
189                     if test $? -eq 0 ; then
190                       USER=$with_user;
191                     else
192                       AC_MSG_ERROR(There is no user '$with_user' on this system)
193                     fi
194                   fi
195                   else
196                    AC_MSG_ERROR(We need a user if you give me this parameter)
197                 fi
198         ],
199         [
200           if test $ID = no ; then
201             AC_MSG_ERROR(There is no 'id' programm on this system)
202           else
203             AC_MSG_RESULT(none specified)
204             USER=$with_user
205           fi
206         ]
207   )
208   AC_SUBST(USER)
209
210   AC_MSG_CHECKING([for group])
211   AC_ARG_WITH(group,
212         [  --with-group=privoxy         Set group for privoxy],
213         [
214                 if test "x$withval" != "xyes"; then
215                   if test $BGROUPS = no ; then
216                     AC_MSG_ERROR(There is no 'groups' program on this system)
217                   else
218                     AC_MSG_RESULT($with_group)
219                     $BGROUPS $USER >/dev/null
220                     if test $? -eq 0 ; then
221                       for i in `$BGROUPS $USER | sed 's/.*: //' 2>/dev/null`; do
222                         if test "x$i" = "x$with_group" ; then
223                           GROUP=$with_group
224                           break
225                         fi
226                       done
227                       if test "x$GROUP" != "x$with_group" ; then
228                         AC_MSG_ERROR(The given value '$withval' does not match group entry)
229                       fi
230                     else
231                       AC_MSG_ERROR(There is no group entry for user '$USER')
232                     fi
233                   fi
234                 else
235                    AC_MSG_ERROR(We need a group if you give me this parameter)
236                 fi
237         ],
238         [
239           if test $BGROUPS = no ; then
240             AC_MSG_ERROR(There is no 'groups' programm on this system)
241           else
242             AC_MSG_RESULT(none specified)
243             GROUP=$with_group;
244           fi
245         ]
246   )
247   AC_SUBST(GROUP)
248
249 fi
250
251 dnl =================================================================
252 dnl additional gcc flags
253 dnl =================================================================
254 dnl
255 if test "$GCC"; then
256   if test "$host" != "powerpc-unknown-amigaos"; then
257     CFLAGS="-pipe $CFLAGS"
258   fi
259 fi
260
261
262 dnl =================================================================
263 dnl Build type
264 dnl =================================================================
265 dnl
266 dnl Must do this first.
267 dnl
268 dnl Reason: This sets CFLAGS in order to switch the Cygwin compiler
269 dnl into Cygwin or MinGW32 modes.  Depending on the mode selected,
270 dnl the compiler will use completely different sets of library
271 dnl and include files.
272 dnl
273 dnl =================================================================
274
275 AC_MINGW32
276 AC_CYGWIN
277
278 if test "$MINGW32" = "yes"; then
279   target_type=mingw
280 else
281   if test "$CYGWIN" = "yes"; then
282     target_type=cygwin
283   else
284     target_type=unix
285   fi
286 fi
287
288 if test $dodk = auto; then
289         dodk=no
290         if test $target_type = unix; then
291                 case "$host_os" in
292                 linux* | gnu* | *bsd*)
293                         dodk=yes
294                 ;;
295                 esac
296         fi
297 fi
298
299 dnl Decide what to do based on target_type
300 dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
301 dnl This is because we don't know yet whether pthread is enabled.
302
303 AC_ARG_ENABLE(mingw32,
304 [  --enable-mingw32                Use mingw32 for a Windows GUI],
305 [if test $enableval = yes; then
306   target_type=mingw
307 fi])
308
309 if test $target_type = mingw; then
310   WIN_ONLY=
311   CFLAGS="$CFLAGS -DWINVER=0x501"
312   SPECIAL_CFLAGS="-mwindows"
313 dnl from the cygwin FAQ: The regular setup allows you to use the -mwindows option
314 dnl to include a set of the basic libraries user32, gdi32 and comdlg32.
315 dnl (and also make your program a GUI program instead of a console program)
316   PTHREAD_LIB=-lpthread
317   echo "Using mingw32 (Win32 GUI)"
318 else
319   WIN_ONLY=#
320   if test $target_type = cygwin; then
321     SPECIAL_CFLAGS="-mno-win32"
322     PTHREAD_LIB=
323     echo "Using Cygnus (Win32 command line)"
324   else
325     SPECIAL_CFLAGS=
326     PTHREAD_LIB=-lpthread
327   fi
328 fi
329 AC_SUBST(WIN_ONLY)
330
331 if test $dodk != no; then
332         AC_CHECK_PROGS(W3M, w3m, false)
333         if test "$W3M" = false; then
334                 AC_MSG_WARN(You need w3m to build text documentation.)
335         fi
336         if test $DB2HTML = false; then
337                 dnl We need to clean the variable, otherwise AC_CHECK_PROGS
338                 dnl will fail
339                 DB2HTML=""
340                 AC_CHECK_PROGS(DB2HTML,db2html docbook2html,false)
341         fi
342 fi
343 AC_SUBST(W3M)
344 AC_SUBST(DB2HTML)
345
346 dnl prefer openjade to jade
347 dnl Check for jade, so we can build the documentation
348 AC_CHECK_PROGS(JADEBIN,openjade jade,false)
349 AC_SUBST(JADEBIN)
350
351 dnl Prefer OpenSP to SP
352 dnl   ref: https://lists.privoxy.org/pipermail/privoxy-devel/2018-November/000293.html
353 AC_CHECK_PROGS(NSGMLS,onsgmls nsgmls,false)
354 AC_SUBST(NSGMLS)
355
356 dnl Check for man2html for docs.
357 AC_CHECK_PROGS(MAN2HTML,man2html,false)
358 AC_SUBST(MAN2HTML)
359
360 dnl Set doc status flag for conditional content inclusions
361 DOC_STATUS=p-not-stable
362 if  test $CODE_STATUS = stable; then
363      DOC_STATUS="p-stable"
364 fi
365 AC_SUBST(DOC_STATUS)
366
367 dnl Checking for the docbook.dsl stylesheet file
368 dnl It is still not portable (directory slash)
369 JADECAT=""
370 if test $dodk = yes; then
371   if test $DKPREFIX = none; then
372     for i in /usr/share/sgml/docbook/dsssl-stylesheets \
373              /usr/share/sgml/docbkdsl /usr/share/sgml/docbook-dsssl \
374              /usr/local/share/sgml/docbook/dsssl/modular \
375              /usr/share/sgml/docbook/stylesheet/dsssl/modular/ \
376              ; do
377 dnl  echo -n does not fly with /bin/sh.
378 dnl      echo -n "checking for $i/html/docbook.dsl..."
379       AC_MSG_CHECKING([for $i])
380       if test -f $i/html/docbook.dsl; then
381         echo "yes"
382         DKPREFIX=$i
383         break
384       else
385         echo "no"
386       fi
387     done
388 # where are the catalogs?
389     for i in /usr/share/sgml/CATALOG.docbk30 \
390              /usr/share/sgml/CATALOG.docbk31 \
391              /usr/share/sgml/CATALOG.docbk31 \
392              /usr/local/share/sgml/docbook/2.4.1/docbook.cat \
393              /usr/local/share/sgml/docbook/3.0/docbook.cat \
394              /usr/local/share/sgml/docbook/3.1/docbook.cat \
395              /usr/share/sgml/docbook/dtd/3.1/docbook.cat \
396              ; do
397 dnl     echo -n "checking for $i..."
398       AC_MSG_CHECKING([for $i])
399       if test -f $i; then
400         echo "yes"
401         JADECAT="$JADECAT -c $i"
402       else
403         echo "no"
404       fi
405     done
406   fi
407 fi
408 AC_SUBST(JADECAT)
409 AC_SUBST(DKPREFIX)
410
411 AC_ARG_ENABLE(large-file-support,
412 [  --enable-large-file-support     Define _LARGE_FILES and friends.
413                                   Required by some systems to support files larger then 2GB.],
414 [if test $enableval = yes; then
415     CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1"
416 fi])
417
418 AC_ARG_ENABLE(static-linking,
419 [  --enable-static-linking         Use static linking instead of dynamic linking (ie. LDFLAGS=-static)],
420 [ if test $enableval = yes; then LDFLAGS="$LDFLAGS -static"; use_static_pcre="yes"; fi ])
421
422 dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
423 old_CFLAGS_nospecial=$CFLAGS
424 CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
425
426 # Hack to force AutoConf to use the CFLAGS we just set
427 dnl Warning: This may break with a future version of Autoconf
428 dnl          Tested with autoconf 2.13
429 ac_cpp='$CPP $CPPFLAGS $SPECIAL_CFLAGS'
430 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
431 ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
432
433
434 dnl =================================================================
435 dnl Thread support
436 dnl =================================================================
437
438 AC_CHECK_HEADER(pthread.h, [have_pthread=yes], [have_pthread=no])
439
440 AC_ARG_ENABLE(pthread,
441 [  --disable-pthread               Don't use POSIX threads (pthreads)],
442 [if test $enableval = no; then
443   # Disable pthreads
444   if test $have_pthread = yes; then
445      AC_MSG_WARN([pthreads seem to be available but you are using --disable-pthread.])
446      AC_MSG_WARN([This is almost always a mistake and can render Privoxy unacceptable slow.])
447   fi
448   have_pthread=no
449 fi])
450
451 if test $have_pthread = yes; then
452   PTHREAD_ONLY=
453   AC_DEFINE(FEATURE_PTHREAD)
454   echo Using POSIX threads
455   if test "$GCC" = "yes"; then
456     # Set a GCC specific switch:
457     if test "$target_type" = "unix"; then
458       ac_jgf_save_CFLAGS=$CFLAGS
459       CFLAGS="$CFLAGS -pthread"
460       AC_TRY_LINK([#include <pthread.h>],
461         [void *p = pthread_create;],
462         [
463           # This compiler switch makes GCC on Linux thread-safe
464           # However, it's not supported on most other OS.
465           PTHREAD_LIB=
466           SPECIAL_CFLAGS="-pthread"
467         ])
468       CFLAGS=$ac_jgf_save_CFLAGS
469     fi
470   fi
471 else
472   PTHREAD_ONLY=#
473   echo Using native threads
474 fi
475
476 AC_SUBST(PTHREAD_ONLY)
477
478 dnl =================================================================
479 dnl On most platforms select() does not support fd numbers above
480 dnl FD_SETSIZE, as a result Privoxy can't handle more than
481 dnl approximately FD_SETSIZE/2 client connections.
482 dnl On some platforms the value can be changed at compile time,
483 dnl on others it's hardcoded and requires recompilation of the OS.
484 dnl Only relevant if select() is actually being used.
485 dnl =================================================================
486 AC_ARG_WITH(fdsetsize,
487  [  --with-fdsetsize=n  Optimistically redefine FD_SETSIZE with the intend to change the number of connections Privoxy can handle. Dangerous if the platform doesn't support this. Pointless if Privoxy can use poll() instead of select().],
488  [
489    if test "x$withval" != "xyes"; then
490      AC_DEFINE_UNQUOTED(FD_SETSIZE,$with_fdsetsize,[Relevant for select(). Not honoured by all OS.])
491      echo "Redefining FD_SETSIZE to $with_fdsetsize."
492      AC_MSG_WARN(On platforms that don't support FD_SETSIZE redefinition it may cause memory corruption.)
493    else
494      AC_MSG_ERROR(--with-fdsetsize used without value)
495    fi
496    ]
497 )
498
499 dnl =================================================================
500 dnl Support for thread-safe versions of gethostbyaddr, gethostbyname,
501 dnl gmtime and localtime
502 dnl =================================================================
503
504 dnl Next line needed to find the gethost*_r functions on Solaris
505 AC_CHECK_LIB(nsl, gethostbyname)
506
507 AC_CHECK_FUNC(gethostbyaddr_r, [
508   AC_MSG_CHECKING([signature of gethostbyaddr_r])
509   AC_TRY_COMPILE([
510 #   include <netdb.h>
511   ], [
512     struct hostent *h, *hp;
513     char *a, *b;
514     int l, bl, t, e;
515     (void) gethostbyaddr_r(a, l, t, h, b, bl, &hp, &e)
516   ], [
517     AC_DEFINE(HAVE_GETHOSTBYADDR_R_8_ARGS)
518     AC_MSG_RESULT([8 args])
519   ], [
520     AC_TRY_COMPILE([
521 #     include <netdb.h>
522     ], [
523       struct hostent *h;
524       char *a, *b;
525       int l, bl, t, e;
526       (void) gethostbyaddr_r(a, l, t, h, b, bl, &e)
527     ], [
528       AC_DEFINE(HAVE_GETHOSTBYADDR_R_7_ARGS)
529       AC_MSG_RESULT([7 args])
530     ], [
531       AC_TRY_COMPILE([
532 #       include <netdb.h>
533       ], [
534         struct hostent_data *d;
535         struct hostent *h;
536         char a,
537         int l, t;
538         (void) gethostbyaddr_r(a, l, t, h, d)
539       ], [
540         AC_DEFINE(HAVE_GETHOSTBYADDR_R_5_ARGS)
541         AC_MSG_RESULT([5 args])
542       ], [
543         AC_MSG_RESULT(unrecognised)
544       ])
545     ])
546   ])
547 ], [
548   AC_MSG_RESULT(no)
549 ])
550
551 AC_CHECK_FUNC(gethostbyname_r, [
552   AC_MSG_CHECKING([signature of gethostbyname_r])
553   AC_TRY_COMPILE([
554 #   include <netdb.h>
555   ], [
556     struct hostent *h, *r;
557     char *n, *b;
558     int bl, e;
559     (void) gethostbyname_r(n, h, b, bl, &r, &e)
560   ], [
561     AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARGS)
562     AC_MSG_RESULT([6 args])
563   ], [
564     AC_TRY_COMPILE([
565 #     include <netdb.h>
566     ], [
567       struct hostent *h;
568       char *n, *b;
569       int bl, e;
570       (void) gethostbyname_r(n, h, b, bl, &e)
571     ], [
572       AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARGS)
573       AC_MSG_RESULT([5 args])
574     ], [
575       AC_TRY_COMPILE([
576 #       include <netdb.h>
577       ], [
578         struct hostent_data *d;
579         struct hostent *h;
580         char *n,
581         (void) gethostbyname_r(n, h, d)
582       ], [
583         AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARGS)
584         AC_MSG_RESULT([3 args])
585       ], [
586         AC_MSG_RESULT(unrecognised)
587       ])
588     ])
589   ])
590 ], [
591   AC_MSG_RESULT(no)
592 ])
593
594 AC_CHECK_FUNC(gmtime_r, [
595   AC_MSG_CHECKING([signature of gmtime_r])
596   AC_TRY_COMPILE([
597 #   include <time.h>
598   ], [
599     struct time *t;
600     struct tm *tm;
601     (void) gmtime_r(t, tm)
602   ], [
603     AC_MSG_RESULT(ok)
604     AC_DEFINE(HAVE_GMTIME_R)
605   ], [
606     AC_MSG_RESULT(unrecognised)
607   ])
608 ], [
609   AC_MSG_RESULT(no)
610 ])
611
612 AC_CHECK_FUNC(localtime_r, [
613   AC_MSG_CHECKING([signature of localtime_r])
614   AC_TRY_COMPILE([
615 #   include <time.h>
616   ], [
617     struct time *t;
618     struct tm *tm;
619     (void) localtime_r(t, tm)
620   ], [
621     AC_MSG_RESULT(ok)
622     AC_DEFINE(HAVE_LOCALTIME_R)
623   ], [
624     AC_MSG_RESULT(unrecognised)
625   ])
626 ], [
627   AC_MSG_RESULT(no)
628 ])
629
630 dnl =================================================================
631 dnl Solaris specific
632 dnl FIXME: Not tested on Solaris yet...
633 dnl ISFIXED: Have tested it on Solaris, but there are other ways to
634 dnl     make these checks generic, e.g.:
635 dnl AC_CHECK_FUNC(getsockopt, , AC_CHECK_LIB(socket, getsockopt))
636 dnl     (Moritz Barsnick <moritz@barsnick.net>)
637 dnl =================================================================
638
639
640 SOCKET_LIB=
641
642 case "$host" in
643 *-solaris*) SOCKET_LIB="-lsocket -lnsl"
644             AC_DEFINE(__EXTENSIONS__)
645             if test "$GCC" = "yes"; then
646               # Set a GCC specific switch:
647               # This compiler switch makes Solaris thread-safe
648               PTHREAD_LIB=
649               SPECIAL_CFLAGS="-pthreads"
650             else
651               # What do we do without GCC? Guess this:
652               SPECIAL_CFLAGS="-D_REENTRANT"
653             fi
654 ;;
655 esac
656
657 AC_SUBST(SOCKET_LIB)
658
659 dnl =================================================================
660 dnl Solaris problem, and others perhaps (socklen_t is undefined)
661 dnl =================================================================
662
663 if test $target_type != mingw; then
664 # i686-w64-mingw32-gcc gets socklen_t define from ws2tcpip.h
665
666 AC_MSG_CHECKING([for socklen_t])
667 AC_EGREP_HEADER(socklen_t, sys/socket.h, AC_MSG_RESULT([yes]),
668         AC_MSG_RESULT([no])
669         AC_DEFINE(socklen_t,int,
670                 [ Define to 'int' if <sys/socket.h> doesn't have it. ]))
671
672 fi
673
674 dnl =================================================================
675 dnl Mac OSX specific
676 dnl =================================================================
677
678 case "$host" in
679 *-apple-darwin*) SPECIAL_CFLAGS="-Dunix"
680 ;;
681 esac
682
683 dnl =================================================================
684 dnl OpenBSD specific
685 dnl =================================================================
686
687 case "$host" in
688 *-openbsd*) SPECIAL_CFLAGS="$SPECIAL_CFLAGS -Dunix"
689 ;;
690 esac
691
692 dnl =================================================================
693 dnl Haiku specific
694 dnl =================================================================
695
696 if test "$host_os" = haiku; then
697   # Omit the "-pthread" flag to gcc, even when building with gcc 2.95
698   SPECIAL_CFLAGS=
699
700   # Haiku's pthreads implementation exists in its system library,
701   # libroot, not in a separate pthreads library
702   PTHREAD_LIB=
703
704   # Networking code exists in libnetwork
705   SOCKET_LIB=-lnetwork
706
707   # Search Haiku's common-library folder to find its pcre and
708   # pcreposix libraries
709   LIBS="-L/boot/common/lib $LIBS"
710 fi
711
712 dnl =================================================================
713 dnl Check for standard compiler stuff
714 dnl =================================================================
715
716 AC_EXEEXT
717 AC_OBJEXT
718 AC_HEADER_STDC
719 AC_HEADER_DIRENT
720 AC_C_CONST
721 AC_TYPE_SIZE_T
722 AC_TYPE_PID_T
723 AC_HEADER_TIME
724 AC_STRUCT_TM
725 AC_CHECK_SIZEOF(int, 4)
726 AC_CHECK_SIZEOF(char *, 4)
727 AC_CHECK_SIZEOF(long, 4)
728 AC_CHECK_SIZEOF(long long, 8)
729 AC_CHECK_SIZEOF(size_t, 4)
730 AC_CHECK_SIZEOF(time_t, 8)
731
732 dnl Checks for header files.
733 AC_CHECK_HEADERS([ \
734  OS.h \
735  arpa/inet.h \
736  errno.h \
737  fcntl.h \
738  limits.h \
739  locale.h \
740  netdb.h \
741  netinet/in.h \
742  stddef.h \
743  stdlib.h \
744  string.h \
745  sys/ioctl.h \
746  sys/socket.h \
747  sys/time.h \
748  sys/timeb.h \
749  sys/wait.h \
750  unistd.h \
751 ])
752
753 dnl Checks for library functions.
754 AC_PROG_GCC_TRADITIONAL
755 AC_TYPE_SIGNAL
756 AC_CHECK_FUNCS([ \
757  access \
758  arc4random \
759  atexit \
760  calloc \
761  getcwd \
762  gethostbyaddr \
763  gethostbyaddr_r \
764  gethostbyname \
765  gethostbyname_r \
766  gettimeofday \
767  inet_ntoa \
768  memchr \
769  memmove \
770  memset \
771  nanosleep \
772  poll \
773  putenv \
774  random \
775  regcomp \
776  select \
777  setlocale \
778  shutdown \
779  snprintf \
780  socket \
781  strchr \
782  strdup \
783  strerror \
784  strftime \
785  strlcat \
786  strlcpy \
787  strptime \
788  strtoul \
789  timegm \
790  tzset \
791 ])
792
793 dnl Checks for RFC 2553 resolver and socket functions
794 AC_ARG_ENABLE(ipv6-support,
795 [  --disable-ipv6-support          Disable IPv6 support and other RFC-2554-related improvements],
796 [if test $enableval = yes; then
797   enable_ipv6_support=yes
798 fi], enable_ipv6_support=yes)
799
800 if test $enable_ipv6_support != yes; then
801   AC_MSG_WARN([Skipping checks for IPv6 support and other RFC-2554-related improvements.
802     Due to lock contention, this may result in slower DNS resolution for IPv4 setups, too.])
803 elif test $target_type = mingw; then
804   AC_CHECK_LIB(ws2_32, main)
805
806   AC_MSG_CHECKING(getaddrinfo in ws2_32)
807   AC_TRY_LINK(
808     [
809       #include<winsock2.h>
810       #include<windows.h>
811       #include<ws2tcpip.h>
812     ],
813     [getaddrinfo(0,0,0,0)],
814     have_ws2_32_getaddrinfo=yes
815   )
816   AC_MSG_RESULT($have_ws2_32_getaddrinfo)
817
818   AC_MSG_CHECKING(getnameinfo in ws2_32)
819   AC_TRY_LINK(
820     [
821       #include<winsock2.h>
822       #include<windows.h>
823       #include<ws2tcpip.h>
824     ],
825     [getnameinfo(0,0,0,0,0,0,0)],
826     have_ws2_32_getnameinfo=yes
827   )
828   AC_MSG_RESULT($have_ws2_32_getnameinfo)
829
830   if test $have_ws2_32_getaddrinfo ; then
831     if test $have_ws2_32_getnameinfo ; then
832       AC_DEFINE([HAVE_RFC2553], [1],
833         [Define if RFC 2553 resolver functions like getaddrinfo(3) and
834          getnameinfo(3) present])
835     fi
836   fi
837 else
838   AC_CHECK_FUNC([getaddrinfo],
839      [AC_CHECK_FUNC([getnameinfo],
840         [AC_DEFINE([HAVE_RFC2553], [1],
841            [Define if RFC 2553 resolver functions like getaddrinfo(3) and
842             getnameinfo(3) present])
843         ])
844   ])
845 fi
846
847 dnl =================================================================
848 dnl Checks for libraries.
849 dnl =================================================================
850 dnl Note: Some systems may have the library but not the system header
851 dnl       file, so we must check for both.
852 dnl       Also check for correct version
853 AC_CHECK_LIB(pcre, pcre_compile, [
854    AC_CHECK_HEADER(pcre.h, [
855       AC_EGREP_HEADER(pcre_fullinfo, pcre.h, [have_pcre=yes], [AC_MSG_WARN([[pcre old version installed]]); have_pcre=no])
856    ], [
857       AC_CHECK_HEADER(pcre/pcre.h, [
858          AC_EGREP_HEADER(pcre_fullinfo, pcre/pcre.h, [have_pcre=yes]; [AC_DEFINE(PCRE_H_IN_SUBDIR)], [AC_MSG_WARN([[pcre old version installed]]); have_pcre=no])
859       ], [have_pcre=no])
860    ])
861 ], [have_pcre=no])
862
863 AC_CHECK_LIB(pcreposix, regcomp, [
864    AC_CHECK_HEADER(pcreposix.h, [
865       AC_EGREP_HEADER(pcreposix_regerror, pcreposix.h, [AC_MSG_WARN([[pcreposix old version installed]]); have_pcreposix=no], [have_pcreposix=yes])
866    ], [
867       AC_CHECK_HEADER(pcre/pcreposix.h, [
868          AC_EGREP_HEADER(pcreposix_regerror, pcre/pcreposix.h, [AC_MSG_WARN([[pcreposix old version installed]]); have_pcreposix=no], [have_pcreposix=yes]; [AC_DEFINE(PCREPOSIX_H_IN_SUBDIR)])
869       ], [have_pcreposix=no])
870    ])
871 ], [have_pcreposix=no], -lpcre)
872
873 dnl ================================================================
874 dnl libpcrs is temporarily disabled.
875 dnl
876 dnl Privoxy's own pcrs version fixes some problems that
877 dnl are present in libpcrs 0.3, the last pcrs release we
878 dnl know of, and as libpcrs seems to be currently unmaintained
879 dnl we can't send these fixes upstream.
880 dnl ================================================================
881 dnl
882 dnl AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no], -lpcre)
883
884 dnl =================================================================
885 dnl Always defined
886 dnl =================================================================
887
888 AC_DEFINE(__MT__)
889
890 dnl =================================================================
891 dnl Features
892 dnl =================================================================
893
894 AC_ARG_ENABLE(toggle,
895 [  --disable-toggle                Don't support temporary disable],
896 [if test $enableval = yes; then
897   AC_DEFINE(FEATURE_TOGGLE)
898 fi],AC_DEFINE(FEATURE_TOGGLE))
899
900 AC_ARG_ENABLE(force,
901 [  --disable-force                 Don't allow single-page disable],
902 [if test $enableval = yes; then
903   AC_DEFINE(FEATURE_FORCE_LOAD)
904 fi],AC_DEFINE(FEATURE_FORCE_LOAD))
905
906 AC_ARG_ENABLE(fast-redirects,
907 [  --disable-fast-redirects        Don't support fast redirects],
908 [if test $enableval = yes; then
909   AC_DEFINE(FEATURE_FAST_REDIRECTS)
910 fi], AC_DEFINE(FEATURE_FAST_REDIRECTS))
911
912 AC_ARG_ENABLE(stats,
913 [  --disable-stats                 Don't keep statistics],
914 [if test $enableval = yes; then
915   AC_DEFINE(FEATURE_STATISTICS)
916 fi],AC_DEFINE(FEATURE_STATISTICS))
917
918 AC_ARG_ENABLE(extended-statistics,
919 [  --enable-extended-statistics    Gather extended statistics.],
920 [if test $enableval = yes; then
921   AC_DEFINE(FEATURE_EXTENDED_STATISTICS)
922 fi])
923
924 AC_ARG_ENABLE(image-blocking,
925 [  --disable-image-blocking        Don't try to figure out whether a request is
926                                   for an image or HTML - assume HTML.],
927 [if test $enableval = yes; then
928   AC_DEFINE(FEATURE_IMAGE_BLOCKING)
929 fi],
930 AC_DEFINE(FEATURE_IMAGE_BLOCKING))
931
932 AC_ARG_ENABLE(acl-support,
933 [  --disable-acl-support           Prevents the use of ACLs to control access to
934                                   Privoxy by IP address.],
935 [if test $enableval = yes; then
936   AC_DEFINE(FEATURE_ACL)
937 fi],
938 AC_DEFINE(FEATURE_ACL))
939
940 AC_ARG_ENABLE(trust-files,
941 [  --disable-trust-files           Prevents the use of trust files.],
942 [if test $enableval = yes; then
943   AC_DEFINE(FEATURE_TRUST)
944 fi],
945 AC_DEFINE(FEATURE_TRUST))
946
947 AC_ARG_ENABLE(editor,
948 [  --disable-editor                Prevents the use of the web-based actions file
949                                   editor and web-based temporary disable setting.],
950 [if test $enableval = yes; then
951   AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS)
952 fi],
953 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS))
954
955 AC_ARG_ENABLE(no-gifs,
956 [  --enable-no-gifs                Use politically correct PNG format instead of GIF
957                                   for built-in images. May not work with all browsers.],
958 [if test $enableval = yes; then
959   AC_DEFINE(FEATURE_NO_GIFS)
960 fi])
961
962 AC_ARG_ENABLE(graceful-termination,
963 [  --enable-graceful-termination   Allow to shutdown Privoxy through the webinterface.],
964 [if test $enableval = yes; then
965   AC_DEFINE(FEATURE_GRACEFUL_TERMINATION)
966 fi])
967
968 AC_ARG_ENABLE(pcre-host-patterns,
969 [  --enable-pcre-host-patterns     Allow to use PCRE syntax in host patterns by prefixing the pattern with
970                                   "PCRE-HOST-PATTERN:". You can use tools/url-pattern-translator.pl to
971                                   convert existing action files to use PCRE host patterns.],
972 [if test $enableval = yes; then
973   AC_DEFINE(FEATURE_PCRE_HOST_PATTERNS)
974 fi])
975
976 AC_ARG_ENABLE(pcre-jit-compilation,
977 [  --disable-pcre-jit-compilation     Don't let pcrs use pcre JIT compilation even if pcre supports it.],
978 [if test $enableval != yes; then
979   AC_DEFINE(DISABLE_PCRE_JIT_COMPILATION)
980 fi])
981
982 AC_ARG_ENABLE(external-filters,
983 [  --enable-external-filters       Allow to filter content with scripts and programs. Experimental.],
984 [if test $enableval = yes; then
985   AC_DEFINE(FEATURE_EXTERNAL_FILTERS,1,[Define to 1 to allow to filter content with scripts and programs.])
986 fi])
987
988 AC_ARG_ENABLE(accept-filter,
989 [  --enable-accept-filter          Try to use accf_http(9) if supported.],
990 [if test $enableval = yes; then
991   AC_DEFINE(FEATURE_ACCEPT_FILTER)
992 fi])
993
994 AC_ARG_ENABLE(strptime-sanity-checks,
995 [  --enable-strptime-sanity-checks Only trust strptime() results if an additional strftime()/strptime()
996                                   conversion doesn't change the result. Can be useful if strptime() is
997                                   known or suspected to be broken.],
998 [if test $enableval = yes; then
999   AC_DEFINE(FEATURE_STRPTIME_SANITY_CHECKS)
1000 fi])
1001
1002 AC_ARG_ENABLE(client-tags,
1003 [  --disable-client-tags           Disable support for client-specific tags],
1004 [ if test $enableval = "no"; then have_client_tags=no; fi ])
1005 if test "${have_client_tags}" = "no"; then
1006   echo "Disabling support for client-specific tags."
1007   FEATURE_CLIENT_TAGS_ONLY="#"
1008 else
1009   echo "Enabling support for client-specific tags."
1010   AC_DEFINE(FEATURE_CLIENT_TAGS,1,[Define to enable support for client-specific tags.])
1011   FEATURE_CLIENT_TAGS_ONLY=""
1012 fi
1013 AC_SUBST(FEATURE_CLIENT_TAGS_ONLY)
1014
1015 FUZZ_ONLY="#"
1016 AC_ARG_ENABLE(fuzz,
1017 [  --enable-fuzz                   Enable code that makes fuzzing more convenient],
1018 [if test $enableval = yes; then
1019   FUZZ_ONLY=""
1020   AC_DEFINE(FUZZ,1,[Define to make fuzzing more convenient.])
1021 fi])
1022 AC_SUBST(FUZZ_ONLY)
1023
1024 dnl pcre/pcrs is needed for CGI anyway, so
1025 dnl the choice is only between static and
1026 dnl dynamic:
1027
1028 AC_ARG_ENABLE(dynamic-pcre,
1029 [  --disable-dynamic-pcre          Use the built-in, static pcre, even if libpcre is available],
1030 [ if test $enableval = "no"; then have_pcre=no; fi ])
1031
1032 dnl =================================================
1033 dnl libpcrs is temporarily disabled,
1034 dnl see comment above for the reason.
1035 dnl =================================================
1036 dnl AC_ARG_ENABLE(dynamic-pcrs,
1037 dnl [  --disable-dynamic-pcrs          Use the built-in, static pcrs, even if libpcrs is available],
1038 dnl [ if test $enableval = "no"; then have_pcrs=no; fi ])
1039
1040
1041 dnl ====================================================
1042 dnl This check is incomplete. For mingw32 zlib is found
1043 dnl by configure, but not necessarily by the compiler.
1044 dnl ====================================================
1045 AC_ARG_ENABLE(zlib,
1046 [  --disable-zlib                  Don't use zlib to decompress data before filtering.],
1047 [enableval2=$enableval],
1048 [enableval2=yes])
1049 if test $enableval2 = yes; then
1050   AC_CHECK_LIB(z, zlibVersion, [have_zlib="yes"], [have_zlib="no"])
1051   if test $have_zlib = "yes"; then
1052     LIBS="$LIBS -lz"
1053     AC_DEFINE(FEATURE_ZLIB,1,[Define to 1 to use zlib to decompress data before filtering.])
1054   else
1055    AC_MSG_WARN([No zlib found.
1056    Privoxy will not be able to filter compressed content.
1057    This may become a fatal error in the future.])
1058   fi
1059 fi
1060
1061 AC_ARG_ENABLE(compression,
1062 [  --enable-compression            Allow Privoxy to compress buffered content if the client supports it. Requires zlib support.],
1063 [enableval2=$enableval],
1064 [enableval2=no])
1065 if test $enableval2 = yes; then
1066   if test $have_zlib = "yes"; then
1067     echo Enabling compression support.
1068     AC_DEFINE(FEATURE_COMPRESSION,1,[Define to 1 to use compression through the zlib library.])
1069   else
1070    AC_MSG_WARN([No zlib found. Privoxy will not be able to (re-)compressed buffered content.])
1071   fi
1072 fi
1073
1074
1075 # If we have libpcre and either we also have pcreposix or
1076 # we don't need pcreposix, then link pcre dynamically; else
1077 # build it and link statically
1078 #
1079 if test $have_pcre = "yes"; then
1080   echo "using libpcre"
1081   STATIC_PCRE_ONLY=#
1082   LIBS="$LIBS -lpcre -lpcreposix"
1083   if test "$use_static_pcre" = "yes"; then
1084     pcre_dyn=no
1085     AC_DEFINE(PCRE_STATIC,1,[Define to statically link to pcre library on Windows.])
1086 #     see /usr/i686-w64-mingw32/sys-root/mingw/include/pcre.h line 54
1087 #       #if defined(_WIN32) && !defined(PCRE_STATIC)
1088 #       #  ifndef PCRE_EXP_DECL
1089 #       #    define PCRE_EXP_DECL  extern __declspec(dllimport)
1090 #       #  endif
1091 #     If you want to statically link a program against a PCRE library in the form of
1092 #     a non-dll .a file, you must define PCRE_STATIC before including pcre.h or
1093 #     pcrecpp.h, otherwise the pcre_malloc() and pcre_free() exported functions will
1094 #     be declared __declspec(dllimport), with unwanted results.
1095   else
1096     pcre_dyn=yes
1097     AC_DEFINE(FEATURE_DYNAMIC_PCRE,1,[Define to dynamically link to pcre.])
1098   fi
1099 else
1100   AC_MSG_ERROR(pcre library not detected.)
1101 fi
1102
1103 AC_DEFINE(FEATURE_CONNECTION_KEEP_ALIVE)
1104
1105 if test $have_pthread = "yes" -o $target_type = "mingw"; then
1106   echo Enabling connection-sharing support.
1107   AC_DEFINE(FEATURE_CONNECTION_SHARING)
1108 fi
1109
1110 dnl =================================================
1111 dnl libpcrs is temporarily disabled,
1112 dnl see comment above for the reason.
1113 dnl =================================================
1114 dnl # If we have libpcrs and pcre is linked dynamically
1115 dnl # then also link pcrs dynamically, else build and link
1116 dnl # pcrs statically
1117 dnl
1118 dnl if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
1119 dnl  echo "using libpcrs"
1120 dnl  STATIC_PCRS_ONLY=#
1121 dnl  LIBS="$LIBS -lpcrs"
1122 dnl else
1123 dnl  echo "using built-in static pcrs"
1124   AC_DEFINE(STATIC_PCRS)
1125   STATIC_PCRS_ONLY=
1126 dnl fi
1127
1128 AC_SUBST(STATIC_PCRE_ONLY)
1129 AC_SUBST(STATIC_PCRS_ONLY)
1130
1131 FEATURE_HTTPS_INSPECTION_ONLY=#
1132 dnl ========================================================
1133 dnl check for mbedTLS which can be used for https inspection
1134 dnl ========================================================
1135 FEATURE_HTTPS_INSPECTION_ONLY_MBEDTLS=#
1136 OPT_MBEDTLS=no
1137 AC_ARG_WITH(mbedtls,dnl
1138 AC_HELP_STRING([--with-mbedtls], [Enable mbedTLS detection for https inspection.])
1139 AC_HELP_STRING([--without-mbedtls], [Disable mbedTLS detection]),
1140   OPT_MBEDTLS=$withval)
1141
1142 if test X"$OPT_MBEDTLS" != Xno; then
1143
1144   AC_CHECK_LIB(mbedtls, mbedtls_ssl_init,
1145    [
1146      AC_DEFINE(FEATURE_HTTPS_INSPECTION, 1, [if SSL/TLS is enabled])
1147      AC_DEFINE(FEATURE_HTTPS_INSPECTION_MBEDTLS, 1, [if mbedTLS is enabled])
1148      AC_SUBST(FEATURE_HTTPS_INSPECTION_MBEDTLS, [1])
1149      FEATURE_HTTPS_INSPECTION_MBEDTLS="yes"
1150    ], [], -lmbedx509 -lmbedcrypto)
1151
1152   if test "x$FEATURE_HTTPS_INSPECTION_MBEDTLS" = "xyes"; then
1153     AC_MSG_NOTICE([Detected mbedTLS. Enabling https inspection.])
1154
1155     LIBS="-lmbedtls -lmbedx509 -lmbedcrypto $LIBS"
1156     old_CFLAGS_nospecial="-Imbedtls/include $old_CFLAGS_nospecial"
1157
1158     FEATURE_HTTPS_INSPECTION_ONLY=
1159     FEATURE_HTTPS_INSPECTION_ONLY_MBEDTLS=
1160   fi
1161 fi
1162 AC_SUBST(FEATURE_HTTPS_INSPECTION_ONLY_MBEDTLS)
1163
1164 dnl =================================================================
1165 dnl check for OpenSSL/LibreSSL which can be used for https inspection
1166 dnl =================================================================
1167 FEATURE_HTTPS_INSPECTION_ONLY_OPENSSL=#
1168 OPT_OPENSSL=no
1169 AC_ARG_WITH(openssl,dnl
1170 AC_HELP_STRING([--with-openssl], [Enable OpenSSL/LibreSSL detection for https inspection.])
1171 AC_HELP_STRING([--without-openssl], [Disable OpenSSL/LibreSSL detection]),
1172   OPT_OPENSSL=$withval)
1173
1174 if test X"$OPT_OPENSSL" != Xno; then
1175    if test X"$OPT_MBEDTLS" != Xno; then
1176       AC_MSG_ERROR([OpenSSL and mbedTLS support can't be enabled at the same time])
1177    fi
1178
1179   if test "$PORTNAME" != "win32"; then
1180      AC_CHECK_LIB(crypto, CRYPTO_new_ex_data, [], [AC_MSG_ERROR([library 'crypto' is required for OpenSSL])])
1181      FOUND_SSL_LIB="no"
1182      AC_CHECK_LIB(ssl, OPENSSL_init_ssl, [FOUND_SSL_LIB="yes"])
1183      AC_CHECK_LIB(ssl, SSL_library_init, [FOUND_SSL_LIB="yes"])
1184      AS_IF([test "x$FOUND_SSL_LIB" = xno], [AC_MSG_ERROR([library 'ssl' is required for OpenSSL])])
1185   else
1186      AC_SEARCH_LIBS(CRYPTO_new_ex_data, eay32 crypto, [], [AC_MSG_ERROR([library 'eay32' or 'crypto' is required for OpenSSL])])
1187      FOUND_SSL_LIB="no"
1188      AC_SEARCH_LIBS(OPENSSL_init_ssl, ssleay32 ssl, [FOUND_SSL_LIB="yes"])
1189      AC_SEARCH_LIBS(SSL_library_init, ssleay32 ssl, [FOUND_SSL_LIB="yes"])
1190      AS_IF([test "x$FOUND_SSL_LIB" = xno], [AC_MSG_ERROR([library 'ssleay32' or 'ssl' is required for OpenSSL])])
1191   fi
1192
1193   if test "x$FOUND_SSL_LIB" = xyes; then
1194      AC_DEFINE(FEATURE_HTTPS_INSPECTION, 1, [if SSL/TLS is enabled])
1195      AC_DEFINE(FEATURE_HTTPS_INSPECTION_OPENSSL, 1, [if OpenSSL is enabled])
1196      AC_SUBST(FEATURE_HTTPS_INSPECTION_OPENSSL, [1])
1197      FEATURE_HTTPS_INSPECTION="yes"
1198      FEATURE_HTTPS_INSPECTION_OPENSSL="yes"
1199   fi
1200
1201   if test "x$FEATURE_HTTPS_INSPECTION_OPENSSL" = "xyes"; then
1202     AC_MSG_NOTICE([Detected OpenSSL. Enabling https inspection.])
1203     AC_MSG_WARN([If you intend to redistribute Privoxy, please make sure the "special exception" from section 3 of the GPLv2 applies.])
1204
1205     LIBS="$LIBS -lssl -lcrypto"
1206     old_CFLAGS_nospecial="$old_CFLAGS_nospecial"
1207
1208     FEATURE_HTTPS_INSPECTION_ONLY=
1209     FEATURE_HTTPS_INSPECTION_ONLY_OPENSSL=
1210   fi
1211 fi
1212 AC_SUBST(FEATURE_HTTPS_INSPECTION_ONLY_OPENSSL)
1213
1214 AC_SUBST(FEATURE_HTTPS_INSPECTION_ONLY)
1215
1216 dnl ========================================================
1217 dnl Check for Brotli which can be used for decompression
1218 dnl ========================================================
1219 WITH_BROTLI=no
1220 AC_ARG_WITH(brotli,
1221 AC_HELP_STRING([--with-brotli], [Enable Brotli detection])
1222 AC_HELP_STRING([--without-brotli], [Disable Brotli detection]),
1223   WITH_BROTLI=$withval)
1224
1225 if test X"$WITH_BROTLI" != Xno; then
1226
1227   LIBS="$LIBS -lbrotlidec"
1228   if test $target_type = mingw; then
1229     # XXX: why does just the mingw build need this???
1230     LIBS="$LIBS -lbrotlicommon -lbrotlienc"
1231   fi
1232
1233   AC_CHECK_LIB(brotlidec, BrotliDecoderDecompress)
1234
1235   AC_CHECK_HEADERS(brotli/decode.h,
1236     FEATURE_BROTLI=1
1237     AC_DEFINE(FEATURE_BROTLI, 1, [If Brotli is used for decompression])
1238     AC_SUBST(FEATURE_BROTLI, [1])
1239   )
1240 fi
1241
1242
1243 dnl =================================================================
1244 dnl Final cleanup and output
1245 dnl =================================================================
1246
1247 dnl Remove the SPECIAL_CFLAGS stuff from CFLAGS, and add it separately
1248 dnl in the Makefile
1249 CFLAGS=$old_CFLAGS_nospecial
1250 AC_SUBST(SPECIAL_CFLAGS)
1251
1252 AC_SUBST(PTHREAD_LIB)
1253
1254 AC_OUTPUT(GNUmakefile doc/source/ldp.dsl)