Merge branch 'master' of ssh://git.privoxy.org:23/git/privoxy
[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 If we use rpm, we need to check where %_topdir is
347 AC_CHECK_PROGS(RPMBIN,rpm,false)
348 if test $RPMBIN != false; then
349                 RPM_BASE=`rpm --eval "%{_topdir}"`
350                 if test "$RPM_BASE" = ""; then
351                         RPM_BASE=/usr/src/redhat
352                 fi
353 fi
354 AC_SUBST(RPM_BASE)
355
356 dnl prefer openjade to jade
357 dnl Check for jade, so we can build the documentation
358 AC_CHECK_PROGS(JADEBIN,openjade jade,false)
359 AC_SUBST(JADEBIN)
360
361 dnl Prefer OpenSP to SP
362 dnl   ref: https://lists.privoxy.org/pipermail/privoxy-devel/2018-November/000293.html
363 AC_CHECK_PROGS(NSGMLS,onsgmls nsgmls,false)
364 AC_SUBST(NSGMLS)
365
366 dnl Check for man2html for docs.
367 AC_CHECK_PROGS(MAN2HTML,man2html,false)
368 AC_SUBST(MAN2HTML)
369
370 dnl Set doc status flag for conditional content inclusions
371 DOC_STATUS=p-not-stable
372 if  test $CODE_STATUS = stable; then
373      DOC_STATUS="p-stable"
374 fi
375 AC_SUBST(DOC_STATUS)
376
377 dnl Checking for the docbook.dsl stylesheet file
378 dnl It is still not portable (directory slash)
379 JADECAT=""
380 if test $dodk = yes; then
381   if test $DKPREFIX = none; then
382     for i in /usr/share/sgml/docbook/dsssl-stylesheets \
383              /usr/share/sgml/docbkdsl /usr/share/sgml/docbook-dsssl \
384              /usr/local/share/sgml/docbook/dsssl/modular \
385              /usr/share/sgml/docbook/stylesheet/dsssl/modular/ \
386              ; do
387 dnl  echo -n does not fly with /bin/sh.
388 dnl      echo -n "checking for $i/html/docbook.dsl..."
389       AC_MSG_CHECKING([for $i])
390       if test -f $i/html/docbook.dsl; then
391         echo "yes"
392         DKPREFIX=$i
393         break
394       else
395         echo "no"
396       fi
397     done
398 # where are the catalogs?
399     for i in /usr/share/sgml/CATALOG.docbk30 \
400              /usr/share/sgml/CATALOG.docbk31 \
401              /usr/share/sgml/CATALOG.docbk31 \
402              /usr/local/share/sgml/docbook/2.4.1/docbook.cat \
403              /usr/local/share/sgml/docbook/3.0/docbook.cat \
404              /usr/local/share/sgml/docbook/3.1/docbook.cat \
405              /usr/share/sgml/docbook/dtd/3.1/docbook.cat \
406              ; do
407 dnl     echo -n "checking for $i..."
408       AC_MSG_CHECKING([for $i])
409       if test -f $i; then
410         echo "yes"
411         JADECAT="$JADECAT -c $i"
412       else
413         echo "no"
414       fi
415     done
416   fi
417 fi
418 AC_SUBST(JADECAT)
419 AC_SUBST(DKPREFIX)
420
421 AC_ARG_ENABLE(large-file-support,
422 [  --enable-large-file-support     Define _LARGE_FILES and friends.
423                                   Required by some systems to support files larger then 2GB.],
424 [if test $enableval = yes; then
425     CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1"
426 fi])
427
428 AC_ARG_ENABLE(static-linking,
429 [  --enable-static-linking         Use static linking instead of dynamic linking (ie. LDFLAGS=-static)],
430 [ if test $enableval = yes; then LDFLAGS="$LDFLAGS -static"; use_static_pcre="yes"; fi ])
431
432 dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
433 old_CFLAGS_nospecial=$CFLAGS
434 CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
435
436 # Hack to force AutoConf to use the CFLAGS we just set
437 dnl Warning: This may break with a future version of Autoconf
438 dnl          Tested with autoconf 2.13
439 ac_cpp='$CPP $CPPFLAGS $SPECIAL_CFLAGS'
440 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
441 ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
442
443
444 dnl =================================================================
445 dnl Thread support
446 dnl =================================================================
447
448 AC_CHECK_HEADER(pthread.h, [have_pthread=yes], [have_pthread=no])
449
450 AC_ARG_ENABLE(pthread,
451 [  --disable-pthread               Don't use POSIX threads (pthreads)],
452 [if test $enableval = no; then
453   # Disable pthreads
454   if test $have_pthread = yes; then
455      AC_MSG_WARN([pthreads seem to be available but you are using --disable-pthread.])
456      AC_MSG_WARN([This is almost always a mistake and can render Privoxy unacceptable slow.])
457   fi
458   have_pthread=no
459 fi])
460
461 if test $have_pthread = yes; then
462   PTHREAD_ONLY=
463   AC_DEFINE(FEATURE_PTHREAD)
464   echo Using POSIX threads
465   if test "$GCC" = "yes"; then
466     # Set a GCC specific switch:
467     if test "$target_type" = "unix"; then
468       ac_jgf_save_CFLAGS=$CFLAGS
469       CFLAGS="$CFLAGS -pthread"
470       AC_TRY_LINK([#include <pthread.h>],
471         [void *p = pthread_create;],
472         [
473           # This compiler switch makes GCC on Linux thread-safe
474           # However, it's not supported on most other OS.
475           PTHREAD_LIB=
476           SPECIAL_CFLAGS="-pthread"
477         ])
478       CFLAGS=$ac_jgf_save_CFLAGS
479     fi
480   fi
481 else
482   PTHREAD_ONLY=#
483   echo Using native threads
484 fi
485
486 AC_SUBST(PTHREAD_ONLY)
487
488 dnl =================================================================
489 dnl On most platforms select() does not support fd numbers above
490 dnl FD_SETSIZE, as a result Privoxy can't handle more than
491 dnl approximately FD_SETSIZE/2 client connections.
492 dnl On some platforms the value can be changed at compile time,
493 dnl on others it's hardcoded and requires recompilation of the OS.
494 dnl Only relevant if select() is actually being used.
495 dnl =================================================================
496 AC_ARG_WITH(fdsetsize,
497  [  --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().],
498  [
499    if test "x$withval" != "xyes"; then
500      AC_DEFINE_UNQUOTED(FD_SETSIZE,$with_fdsetsize,[Relevant for select(). Not honoured by all OS.])
501      echo "Redefining FD_SETSIZE to $with_fdsetsize."
502      AC_MSG_WARN(On platforms that don't support FD_SETSIZE redefinition it may cause memory corruption.)
503    else
504      AC_MSG_ERROR(--with-fdsetsize used without value)
505    fi
506    ]
507 )
508
509 dnl =================================================================
510 dnl Support for thread-safe versions of gethostbyaddr, gethostbyname,
511 dnl gmtime and localtime
512 dnl =================================================================
513
514 dnl Next line needed to find the gethost*_r functions on Solaris
515 AC_CHECK_LIB(nsl, gethostbyname)
516
517 AC_CHECK_FUNC(gethostbyaddr_r, [
518   AC_MSG_CHECKING([signature of gethostbyaddr_r])
519   AC_TRY_COMPILE([
520 #   include <netdb.h>
521   ], [
522     struct hostent *h, *hp;
523     char *a, *b;
524     int l, bl, t, e;
525     (void) gethostbyaddr_r(a, l, t, h, b, bl, &hp, &e)
526   ], [
527     AC_DEFINE(HAVE_GETHOSTBYADDR_R_8_ARGS)
528     AC_MSG_RESULT([8 args])
529   ], [
530     AC_TRY_COMPILE([
531 #     include <netdb.h>
532     ], [
533       struct hostent *h;
534       char *a, *b;
535       int l, bl, t, e;
536       (void) gethostbyaddr_r(a, l, t, h, b, bl, &e)
537     ], [
538       AC_DEFINE(HAVE_GETHOSTBYADDR_R_7_ARGS)
539       AC_MSG_RESULT([7 args])
540     ], [
541       AC_TRY_COMPILE([
542 #       include <netdb.h>
543       ], [
544         struct hostent_data *d;
545         struct hostent *h;
546         char a,
547         int l, t;
548         (void) gethostbyaddr_r(a, l, t, h, d)
549       ], [
550         AC_DEFINE(HAVE_GETHOSTBYADDR_R_5_ARGS)
551         AC_MSG_RESULT([5 args])
552       ], [
553         AC_MSG_RESULT(unrecognised)
554       ])
555     ])
556   ])
557 ], [
558   AC_MSG_RESULT(no)
559 ])
560
561 AC_CHECK_FUNC(gethostbyname_r, [
562   AC_MSG_CHECKING([signature of gethostbyname_r])
563   AC_TRY_COMPILE([
564 #   include <netdb.h>
565   ], [
566     struct hostent *h, *r;
567     char *n, *b;
568     int bl, e;
569     (void) gethostbyname_r(n, h, b, bl, &r, &e)
570   ], [
571     AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARGS)
572     AC_MSG_RESULT([6 args])
573   ], [
574     AC_TRY_COMPILE([
575 #     include <netdb.h>
576     ], [
577       struct hostent *h;
578       char *n, *b;
579       int bl, e;
580       (void) gethostbyname_r(n, h, b, bl, &e)
581     ], [
582       AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARGS)
583       AC_MSG_RESULT([5 args])
584     ], [
585       AC_TRY_COMPILE([
586 #       include <netdb.h>
587       ], [
588         struct hostent_data *d;
589         struct hostent *h;
590         char *n,
591         (void) gethostbyname_r(n, h, d)
592       ], [
593         AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARGS)
594         AC_MSG_RESULT([3 args])
595       ], [
596         AC_MSG_RESULT(unrecognised)
597       ])
598     ])
599   ])
600 ], [
601   AC_MSG_RESULT(no)
602 ])
603
604 AC_CHECK_FUNC(gmtime_r, [
605   AC_MSG_CHECKING([signature of gmtime_r])
606   AC_TRY_COMPILE([
607 #   include <time.h>
608   ], [
609     struct time *t;
610     struct tm *tm;
611     (void) gmtime_r(t, tm)
612   ], [
613     AC_MSG_RESULT(ok)
614     AC_DEFINE(HAVE_GMTIME_R)
615   ], [
616     AC_MSG_RESULT(unrecognised)
617   ])
618 ], [
619   AC_MSG_RESULT(no)
620 ])
621
622 AC_CHECK_FUNC(localtime_r, [
623   AC_MSG_CHECKING([signature of localtime_r])
624   AC_TRY_COMPILE([
625 #   include <time.h>
626   ], [
627     struct time *t;
628     struct tm *tm;
629     (void) localtime_r(t, tm)
630   ], [
631     AC_MSG_RESULT(ok)
632     AC_DEFINE(HAVE_LOCALTIME_R)
633   ], [
634     AC_MSG_RESULT(unrecognised)
635   ])
636 ], [
637   AC_MSG_RESULT(no)
638 ])
639
640 dnl =================================================================
641 dnl Solaris specific
642 dnl FIXME: Not tested on Solaris yet...
643 dnl ISFIXED: Have tested it on Solaris, but there are other ways to
644 dnl     make these checks generic, e.g.:
645 dnl AC_CHECK_FUNC(getsockopt, , AC_CHECK_LIB(socket, getsockopt))
646 dnl     (Moritz Barsnick <moritz@barsnick.net>)
647 dnl =================================================================
648
649
650 SOCKET_LIB=
651
652 case "$host" in
653 *-solaris*) SOCKET_LIB="-lsocket -lnsl"
654             AC_DEFINE(__EXTENSIONS__)
655             if test "$GCC" = "yes"; then
656               # Set a GCC specific switch:
657               # This compiler switch makes Solaris thread-safe
658               PTHREAD_LIB=
659               SPECIAL_CFLAGS="-pthreads"
660             else
661               # What do we do without GCC? Guess this:
662               SPECIAL_CFLAGS="-D_REENTRANT"
663             fi
664 ;;
665 esac
666
667 AC_SUBST(SOCKET_LIB)
668
669 dnl =================================================================
670 dnl Solaris problem, and others perhaps (socklen_t is undefined)
671 dnl =================================================================
672
673 if test $target_type != mingw; then
674 # i686-w64-mingw32-gcc gets socklen_t define from ws2tcpip.h
675
676 AC_MSG_CHECKING([for socklen_t])
677 AC_EGREP_HEADER(socklen_t, sys/socket.h, AC_MSG_RESULT([yes]),
678         AC_MSG_RESULT([no])
679         AC_DEFINE(socklen_t,int,
680                 [ Define to 'int' if <sys/socket.h> doesn't have it. ]))
681
682 fi
683
684 dnl =================================================================
685 dnl Mac OSX specific
686 dnl =================================================================
687
688 case "$host" in
689 *-apple-darwin*) SPECIAL_CFLAGS="-Dunix"
690 ;;
691 esac
692
693 dnl =================================================================
694 dnl OpenBSD specific
695 dnl =================================================================
696
697 case "$host" in
698 *-openbsd*) SPECIAL_CFLAGS="$SPECIAL_CFLAGS -Dunix"
699 ;;
700 esac
701
702 dnl =================================================================
703 dnl Haiku specific
704 dnl =================================================================
705
706 if test "$host_os" = haiku; then
707   # Omit the "-pthread" flag to gcc, even when building with gcc 2.95
708   SPECIAL_CFLAGS=
709
710   # Haiku's pthreads implementation exists in its system library,
711   # libroot, not in a separate pthreads library
712   PTHREAD_LIB=
713
714   # Networking code exists in libnetwork
715   SOCKET_LIB=-lnetwork
716
717   # Search Haiku's common-library folder to find its pcre and
718   # pcreposix libraries
719   LIBS="-L/boot/common/lib $LIBS"
720 fi
721
722 dnl =================================================================
723 dnl Check for standard compiler stuff
724 dnl =================================================================
725
726 AC_EXEEXT
727 AC_OBJEXT
728 AC_HEADER_STDC
729 AC_HEADER_DIRENT
730 AC_C_CONST
731 AC_TYPE_SIZE_T
732 AC_TYPE_PID_T
733 AC_HEADER_TIME
734 AC_STRUCT_TM
735 AC_CHECK_SIZEOF(int, 4)
736 AC_CHECK_SIZEOF(char *, 4)
737 AC_CHECK_SIZEOF(long, 4)
738 AC_CHECK_SIZEOF(long long, 8)
739 AC_CHECK_SIZEOF(size_t, 4)
740 AC_CHECK_SIZEOF(time_t, 8)
741
742 dnl Checks for header files.
743 AC_CHECK_HEADERS([ \
744  OS.h \
745  arpa/inet.h \
746  errno.h \
747  fcntl.h \
748  limits.h \
749  locale.h \
750  netdb.h \
751  netinet/in.h \
752  stddef.h \
753  stdlib.h \
754  string.h \
755  sys/ioctl.h \
756  sys/socket.h \
757  sys/time.h \
758  sys/timeb.h \
759  sys/wait.h \
760  unistd.h \
761 ])
762
763 dnl Checks for library functions.
764 AC_PROG_GCC_TRADITIONAL
765 AC_TYPE_SIGNAL
766 AC_CHECK_FUNCS([ \
767  access \
768  arc4random \
769  atexit \
770  calloc \
771  getcwd \
772  gethostbyaddr \
773  gethostbyaddr_r \
774  gethostbyname \
775  gethostbyname_r \
776  gettimeofday \
777  inet_ntoa \
778  memchr \
779  memmove \
780  memset \
781  nanosleep \
782  poll \
783  putenv \
784  random \
785  regcomp \
786  select \
787  setlocale \
788  shutdown \
789  snprintf \
790  socket \
791  strchr \
792  strdup \
793  strerror \
794  strftime \
795  strlcat \
796  strlcpy \
797  strptime \
798  strtoul \
799  timegm \
800  tzset \
801 ])
802
803 dnl Checks for RFC 2553 resolver and socket functions
804 AC_ARG_ENABLE(ipv6-support,
805 [  --disable-ipv6-support          Disable IPv6 support and other RFC-2554-related improvements],
806 [if test $enableval = yes; then
807   enable_ipv6_support=yes
808 fi], enable_ipv6_support=yes)
809
810 if test $enable_ipv6_support != yes; then
811   AC_MSG_WARN([Skipping checks for IPv6 support and other RFC-2554-related improvements.
812     Due to lock contention, this may result in slower DNS resolution for IPv4 setups, too.])
813 elif test $target_type = mingw; then
814   AC_CHECK_LIB(ws2_32, main)
815
816   AC_MSG_CHECKING(getaddrinfo in ws2_32)
817   AC_TRY_LINK(
818     [
819       #include<winsock2.h>
820       #include<windows.h>
821       #include<ws2tcpip.h>
822     ],
823     [getaddrinfo(0,0,0,0)],
824     have_ws2_32_getaddrinfo=yes
825   )
826   AC_MSG_RESULT($have_ws2_32_getaddrinfo)
827
828   AC_MSG_CHECKING(getnameinfo in ws2_32)
829   AC_TRY_LINK(
830     [
831       #include<winsock2.h>
832       #include<windows.h>
833       #include<ws2tcpip.h>
834     ],
835     [getnameinfo(0,0,0,0,0,0,0)],
836     have_ws2_32_getnameinfo=yes
837   )
838   AC_MSG_RESULT($have_ws2_32_getnameinfo)
839
840   if test $have_ws2_32_getaddrinfo ; then
841     if test $have_ws2_32_getnameinfo ; then
842       AC_DEFINE([HAVE_RFC2553], [1],
843         [Define if RFC 2553 resolver functions like getaddrinfo(3) and
844          getnameinfo(3) present])
845     fi
846   fi
847 else
848   AC_CHECK_FUNC([getaddrinfo],
849      [AC_CHECK_FUNC([getnameinfo],
850         [AC_DEFINE([HAVE_RFC2553], [1],
851            [Define if RFC 2553 resolver functions like getaddrinfo(3) and
852             getnameinfo(3) present])
853         ])
854   ])
855 fi
856
857 dnl =================================================================
858 dnl Checks for libraries.
859 dnl =================================================================
860 dnl Note: Some systems may have the library but not the system header
861 dnl       file, so we must check for both.
862 dnl       Also check for correct version
863 AC_CHECK_LIB(pcre, pcre_compile, [
864    AC_CHECK_HEADER(pcre.h, [
865       AC_EGREP_HEADER(pcre_fullinfo, pcre.h, [have_pcre=yes], [AC_MSG_WARN([[pcre old version installed]]); have_pcre=no])
866    ], [
867       AC_CHECK_HEADER(pcre/pcre.h, [
868          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])
869       ], [have_pcre=no])
870    ])
871 ], [have_pcre=no])
872
873 AC_CHECK_LIB(pcreposix, regcomp, [
874    AC_CHECK_HEADER(pcreposix.h, [
875       AC_EGREP_HEADER(pcreposix_regerror, pcreposix.h, [AC_MSG_WARN([[pcreposix old version installed]]); have_pcreposix=no], [have_pcreposix=yes])
876    ], [
877       AC_CHECK_HEADER(pcre/pcreposix.h, [
878          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)])
879       ], [have_pcreposix=no])
880    ])
881 ], [have_pcreposix=no], -lpcre)
882
883 dnl ================================================================
884 dnl libpcrs is temporarily disabled.
885 dnl
886 dnl Privoxy's own pcrs version fixes some problems that
887 dnl are present in libpcrs 0.3, the last pcrs release we
888 dnl know of, and as libpcrs seems to be currently unmaintained
889 dnl we can't send these fixes upstream.
890 dnl ================================================================
891 dnl
892 dnl AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no], -lpcre)
893
894 dnl =================================================================
895 dnl Always defined
896 dnl =================================================================
897
898 AC_DEFINE(__MT__)
899
900 dnl =================================================================
901 dnl Features
902 dnl =================================================================
903
904 AC_ARG_ENABLE(toggle,
905 [  --disable-toggle                Don't support temporary disable],
906 [if test $enableval = yes; then
907   AC_DEFINE(FEATURE_TOGGLE)
908 fi],AC_DEFINE(FEATURE_TOGGLE))
909
910 AC_ARG_ENABLE(force,
911 [  --disable-force                 Don't allow single-page disable],
912 [if test $enableval = yes; then
913   AC_DEFINE(FEATURE_FORCE_LOAD)
914 fi],AC_DEFINE(FEATURE_FORCE_LOAD))
915
916 AC_ARG_ENABLE(fast-redirects,
917 [  --disable-fast-redirects        Don't support fast redirects],
918 [if test $enableval = yes; then
919   AC_DEFINE(FEATURE_FAST_REDIRECTS)
920 fi], AC_DEFINE(FEATURE_FAST_REDIRECTS))
921
922 AC_ARG_ENABLE(stats,
923 [  --disable-stats                 Don't keep statistics],
924 [if test $enableval = yes; then
925   AC_DEFINE(FEATURE_STATISTICS)
926 fi],AC_DEFINE(FEATURE_STATISTICS))
927
928 AC_ARG_ENABLE(extended-statistics,
929 [  --enable-extended-statistics    Gather extended statistics.],
930 [if test $enableval = yes; then
931   AC_DEFINE(FEATURE_EXTENDED_STATISTICS)
932 fi])
933
934 AC_ARG_ENABLE(image-blocking,
935 [  --disable-image-blocking        Don't try to figure out whether a request is
936                                   for an image or HTML - assume HTML.],
937 [if test $enableval = yes; then
938   AC_DEFINE(FEATURE_IMAGE_BLOCKING)
939 fi],
940 AC_DEFINE(FEATURE_IMAGE_BLOCKING))
941
942 AC_ARG_ENABLE(acl-support,
943 [  --disable-acl-support           Prevents the use of ACLs to control access to
944                                   Privoxy by IP address.],
945 [if test $enableval = yes; then
946   AC_DEFINE(FEATURE_ACL)
947 fi],
948 AC_DEFINE(FEATURE_ACL))
949
950 AC_ARG_ENABLE(trust-files,
951 [  --disable-trust-files           Prevents the use of trust files.],
952 [if test $enableval = yes; then
953   AC_DEFINE(FEATURE_TRUST)
954 fi],
955 AC_DEFINE(FEATURE_TRUST))
956
957 AC_ARG_ENABLE(editor,
958 [  --disable-editor                Prevents the use of the web-based actions file
959                                   editor and web-based temporary disable setting.],
960 [if test $enableval = yes; then
961   AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS)
962 fi],
963 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS))
964
965 AC_ARG_ENABLE(no-gifs,
966 [  --enable-no-gifs                Use politically correct PNG format instead of GIF
967                                   for built-in images. May not work with all browsers.],
968 [if test $enableval = yes; then
969   AC_DEFINE(FEATURE_NO_GIFS)
970 fi])
971
972 AC_ARG_ENABLE(graceful-termination,
973 [  --enable-graceful-termination   Allow to shutdown Privoxy through the webinterface.],
974 [if test $enableval = yes; then
975   AC_DEFINE(FEATURE_GRACEFUL_TERMINATION)
976 fi])
977
978 AC_ARG_ENABLE(pcre-host-patterns,
979 [  --enable-pcre-host-patterns     Allow to use PCRE syntax in host patterns by prefixing the pattern with
980                                   "PCRE-HOST-PATTERN:". You can use tools/url-pattern-translator.pl to
981                                   convert existing action files to use PCRE host patterns.],
982 [if test $enableval = yes; then
983   AC_DEFINE(FEATURE_PCRE_HOST_PATTERNS)
984 fi])
985
986 AC_ARG_ENABLE(external-filters,
987 [  --enable-external-filters       Allow to filter content with scripts and programs. Experimental.],
988 [if test $enableval = yes; then
989   AC_DEFINE(FEATURE_EXTERNAL_FILTERS,1,[Define to 1 to allow to filter content with scripts and programs.])
990 fi])
991
992 AC_ARG_ENABLE(accept-filter,
993 [  --enable-accept-filter          Try to use accf_http(9) if supported.],
994 [if test $enableval = yes; then
995   AC_DEFINE(FEATURE_ACCEPT_FILTER)
996 fi])
997
998 AC_ARG_ENABLE(strptime-sanity-checks,
999 [  --enable-strptime-sanity-checks Only trust strptime() results if an additional strftime()/strptime()
1000                                   conversion doesn't change the result. Can be useful if strptime() is
1001                                   known or suspected to be broken.],
1002 [if test $enableval = yes; then
1003   AC_DEFINE(FEATURE_STRPTIME_SANITY_CHECKS)
1004 fi])
1005
1006 AC_ARG_ENABLE(client-tags,
1007 [  --disable-client-tags           Disable support for client-specific tags],
1008 [ if test $enableval = "no"; then have_client_tags=no; fi ])
1009 if test "${have_client_tags}" = "no"; then
1010   echo "Disabling support for client-specific tags."
1011   FEATURE_CLIENT_TAGS_ONLY="#"
1012 else
1013   echo "Enabling support for client-specific tags."
1014   AC_DEFINE(FEATURE_CLIENT_TAGS,1,[Define to enable support for client-specific tags.])
1015   FEATURE_CLIENT_TAGS_ONLY=""
1016 fi
1017 AC_SUBST(FEATURE_CLIENT_TAGS_ONLY)
1018
1019 FUZZ_ONLY="#"
1020 AC_ARG_ENABLE(fuzz,
1021 [  --enable-fuzz                   Enable code that makes fuzzing more convenient],
1022 [if test $enableval = yes; then
1023   FUZZ_ONLY=""
1024   AC_DEFINE(FUZZ,1,[Define to make fuzzing more convenient.])
1025 fi])
1026 AC_SUBST(FUZZ_ONLY)
1027
1028 dnl pcre/pcrs is needed for CGI anyway, so
1029 dnl the choice is only between static and
1030 dnl dynamic:
1031
1032 AC_ARG_ENABLE(dynamic-pcre,
1033 [  --disable-dynamic-pcre          Use the built-in, static pcre, even if libpcre is available],
1034 [ if test $enableval = "no"; then have_pcre=no; fi ])
1035
1036 dnl =================================================
1037 dnl libpcrs is temporarily disabled,
1038 dnl see comment above for the reason.
1039 dnl =================================================
1040 dnl AC_ARG_ENABLE(dynamic-pcrs,
1041 dnl [  --disable-dynamic-pcrs          Use the built-in, static pcrs, even if libpcrs is available],
1042 dnl [ if test $enableval = "no"; then have_pcrs=no; fi ])
1043
1044
1045 dnl ====================================================
1046 dnl This check is incomplete. For mingw32 zlib is found
1047 dnl by configure, but not necessarily by the compiler.
1048 dnl ====================================================
1049 AC_ARG_ENABLE(zlib,
1050 [  --disable-zlib                  Don't use zlib to decompress data before filtering.],
1051 [enableval2=$enableval],
1052 [enableval2=yes])
1053 if test $enableval2 = yes; then
1054   AC_CHECK_LIB(z, zlibVersion, [have_zlib="yes"], [have_zlib="no"])
1055   if test $have_zlib = "yes"; then
1056     LIBS="$LIBS -lz"
1057     AC_DEFINE(FEATURE_ZLIB,1,[Define to 1 to use zlib to decompress data before filtering.])
1058   else
1059    AC_MSG_WARN([No zlib found.
1060    Privoxy will not be able to filter compressed content.
1061    This may become a fatal error in the future.])
1062   fi
1063 fi
1064
1065 AC_ARG_ENABLE(compression,
1066 [  --enable-compression            Allow Privoxy to compress buffered content if the client supports it. Requires zlib support.],
1067 [enableval2=$enableval],
1068 [enableval2=no])
1069 if test $enableval2 = yes; then
1070   if test $have_zlib = "yes"; then
1071     echo Enabling compression support.
1072     AC_DEFINE(FEATURE_COMPRESSION,1,[Define to 1 to use compression through the zlib library.])
1073   else
1074    AC_MSG_WARN([No zlib found. Privoxy will not be able to (re-)compressed buffered content.])
1075   fi
1076 fi
1077
1078
1079 # If we have libpcre and either we also have pcreposix or
1080 # we don't need pcreposix, then link pcre dynamically; else
1081 # build it and link statically
1082 #
1083 if test $have_pcre = "yes"; then
1084   echo "using libpcre"
1085   STATIC_PCRE_ONLY=#
1086   LIBS="$LIBS -lpcre -lpcreposix"
1087   if test "$use_static_pcre" = "yes"; then
1088     pcre_dyn=no
1089     AC_DEFINE(PCRE_STATIC,1,[Define to statically link to pcre library on Windows.])
1090 #     see /usr/i686-w64-mingw32/sys-root/mingw/include/pcre.h line 54
1091 #       #if defined(_WIN32) && !defined(PCRE_STATIC)
1092 #       #  ifndef PCRE_EXP_DECL
1093 #       #    define PCRE_EXP_DECL  extern __declspec(dllimport)
1094 #       #  endif
1095 #     If you want to statically link a program against a PCRE library in the form of
1096 #     a non-dll .a file, you must define PCRE_STATIC before including pcre.h or
1097 #     pcrecpp.h, otherwise the pcre_malloc() and pcre_free() exported functions will
1098 #     be declared __declspec(dllimport), with unwanted results.
1099   else
1100     pcre_dyn=yes
1101     AC_DEFINE(FEATURE_DYNAMIC_PCRE,1,[Define to dynamically link to pcre.])
1102   fi
1103 else
1104   AC_MSG_ERROR(pcre library not detected.)
1105 fi
1106
1107 AC_DEFINE(FEATURE_CONNECTION_KEEP_ALIVE)
1108
1109 if test $have_pthread = "yes" -o $target_type = "mingw"; then
1110   echo Enabling connection-sharing support.
1111   AC_DEFINE(FEATURE_CONNECTION_SHARING)
1112 fi
1113
1114 dnl =================================================
1115 dnl libpcrs is temporarily disabled,
1116 dnl see comment above for the reason.
1117 dnl =================================================
1118 dnl # If we have libpcrs and pcre is linked dynamically
1119 dnl # then also link pcrs dynamically, else build and link
1120 dnl # pcrs statically
1121 dnl
1122 dnl if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
1123 dnl  echo "using libpcrs"
1124 dnl  STATIC_PCRS_ONLY=#
1125 dnl  LIBS="$LIBS -lpcrs"
1126 dnl else
1127 dnl  echo "using built-in static pcrs"
1128   AC_DEFINE(STATIC_PCRS)
1129   STATIC_PCRS_ONLY=
1130 dnl fi
1131
1132 AC_SUBST(STATIC_PCRE_ONLY)
1133 AC_SUBST(STATIC_PCRS_ONLY)
1134
1135 FEATURE_HTTPS_INSPECTION_ONLY=#
1136 dnl ========================================================
1137 dnl check for mbedTLS which can be used for https inspection
1138 dnl ========================================================
1139 FEATURE_HTTPS_INSPECTION_ONLY_MBEDTLS=#
1140 OPT_MBEDTLS=no
1141 AC_ARG_WITH(mbedtls,dnl
1142 AC_HELP_STRING([--with-mbedtls], [Enable mbedTLS detection for https inspection.])
1143 AC_HELP_STRING([--without-mbedtls], [Disable mbedTLS detection]),
1144   OPT_MBEDTLS=$withval)
1145
1146 if test X"$OPT_MBEDTLS" != Xno; then
1147
1148   AC_CHECK_LIB(mbedtls, mbedtls_ssl_init,
1149    [
1150      AC_DEFINE(FEATURE_HTTPS_INSPECTION, 1, [if SSL/TLS is enabled])
1151      AC_DEFINE(FEATURE_HTTPS_INSPECTION_MBEDTLS, 1, [if mbedTLS is enabled])
1152      AC_SUBST(FEATURE_HTTPS_INSPECTION_MBEDTLS, [1])
1153      FEATURE_HTTPS_INSPECTION_MBEDTLS="yes"
1154    ], [], -lmbedx509 -lmbedcrypto)
1155
1156   if test "x$FEATURE_HTTPS_INSPECTION_MBEDTLS" = "xyes"; then
1157     AC_MSG_NOTICE([Detected mbedTLS. Enabling https inspection.])
1158
1159     LIBS="-lmbedtls -lmbedx509 -lmbedcrypto $LIBS"
1160     old_CFLAGS_nospecial="-Imbedtls/include $old_CFLAGS_nospecial"
1161
1162     FEATURE_HTTPS_INSPECTION_ONLY=
1163     FEATURE_HTTPS_INSPECTION_ONLY_MBEDTLS=
1164   fi
1165 fi
1166 AC_SUBST(FEATURE_HTTPS_INSPECTION_ONLY_MBEDTLS)
1167
1168 dnl =================================================================
1169 dnl check for OpenSSL/LibreSSL which can be used for https inspection
1170 dnl =================================================================
1171 FEATURE_HTTPS_INSPECTION_ONLY_OPENSSL=#
1172 OPT_OPENSSL=no
1173 AC_ARG_WITH(openssl,dnl
1174 AC_HELP_STRING([--with-openssl], [Enable OpenSSL/LibreSSL detection for https inspection.])
1175 AC_HELP_STRING([--without-openssl], [Disable OpenSSL/LibreSSL detection]),
1176   OPT_OPENSSL=$withval)
1177
1178 if test X"$OPT_OPENSSL" != Xno; then
1179    if test X"$OPT_MBEDTLS" != Xno; then
1180       AC_MSG_ERROR([OpenSSL and mbedTLS support can't be enabled at the same time])
1181    fi
1182
1183   if test "$PORTNAME" != "win32"; then
1184      AC_CHECK_LIB(crypto, CRYPTO_new_ex_data, [], [AC_MSG_ERROR([library 'crypto' is required for OpenSSL])])
1185      FOUND_SSL_LIB="no"
1186      AC_CHECK_LIB(ssl, OPENSSL_init_ssl, [FOUND_SSL_LIB="yes"])
1187      AC_CHECK_LIB(ssl, SSL_library_init, [FOUND_SSL_LIB="yes"])
1188      AS_IF([test "x$FOUND_SSL_LIB" = xno], [AC_MSG_ERROR([library 'ssl' is required for OpenSSL])])
1189   else
1190      AC_SEARCH_LIBS(CRYPTO_new_ex_data, eay32 crypto, [], [AC_MSG_ERROR([library 'eay32' or 'crypto' is required for OpenSSL])])
1191      FOUND_SSL_LIB="no"
1192      AC_SEARCH_LIBS(OPENSSL_init_ssl, ssleay32 ssl, [FOUND_SSL_LIB="yes"])
1193      AC_SEARCH_LIBS(SSL_library_init, ssleay32 ssl, [FOUND_SSL_LIB="yes"])
1194      AS_IF([test "x$FOUND_SSL_LIB" = xno], [AC_MSG_ERROR([library 'ssleay32' or 'ssl' is required for OpenSSL])])
1195   fi
1196
1197   if test "x$FOUND_SSL_LIB" = xyes; then
1198      AC_DEFINE(FEATURE_HTTPS_INSPECTION, 1, [if SSL/TLS is enabled])
1199      AC_DEFINE(FEATURE_HTTPS_INSPECTION_OPENSSL, 1, [if OpenSSL is enabled])
1200      AC_SUBST(FEATURE_HTTPS_INSPECTION_OPENSSL, [1])
1201      FEATURE_HTTPS_INSPECTION="yes"
1202      FEATURE_HTTPS_INSPECTION_OPENSSL="yes"
1203   fi
1204
1205   if test "x$FEATURE_HTTPS_INSPECTION_OPENSSL" = "xyes"; then
1206     AC_MSG_NOTICE([Detected OpenSSL. Enabling https inspection.])
1207     AC_MSG_WARN([If you intend to redistribute Privoxy, please make sure the "special exception" from section 3 of the GPLv2 applies.])
1208
1209     LIBS="$LIBS -lssl -lcrypto"
1210     old_CFLAGS_nospecial="$old_CFLAGS_nospecial"
1211
1212     FEATURE_HTTPS_INSPECTION_ONLY=
1213     FEATURE_HTTPS_INSPECTION_ONLY_OPENSSL=
1214   fi
1215 fi
1216 AC_SUBST(FEATURE_HTTPS_INSPECTION_ONLY_OPENSSL)
1217
1218 AC_SUBST(FEATURE_HTTPS_INSPECTION_ONLY)
1219
1220 dnl ========================================================
1221 dnl Check for Brotli which can be used for decompression
1222 dnl ========================================================
1223 WITH_BROTLI=no
1224 AC_ARG_WITH(brotli,
1225 AC_HELP_STRING([--with-brotli], [Enable Brotli detection])
1226 AC_HELP_STRING([--without-brotli], [Disable Brotli detection]),
1227   WITH_BROTLI=$withval)
1228
1229 if test X"$WITH_BROTLI" != Xno; then
1230
1231   LIBS="$LIBS -lbrotlidec"
1232   if test $target_type = mingw; then
1233     # XXX: why does just the mingw build need this???
1234     LIBS="$LIBS -lbrotlicommon -lbrotlienc"
1235   fi
1236
1237   AC_CHECK_LIB(brotlidec, BrotliDecoderDecompress)
1238
1239   AC_CHECK_HEADERS(brotli/decode.h,
1240     FEATURE_BROTLI=1
1241     AC_DEFINE(FEATURE_BROTLI, 1, [If Brotli is used for decompression])
1242     AC_SUBST(FEATURE_BROTLI, [1])
1243   )
1244 fi
1245
1246
1247 dnl =================================================================
1248 dnl Final cleanup and output
1249 dnl =================================================================
1250
1251 dnl Remove the SPECIAL_CFLAGS stuff from CFLAGS, and add it separately
1252 dnl in the Makefile
1253 CFLAGS=$old_CFLAGS_nospecial
1254 AC_SUBST(SPECIAL_CFLAGS)
1255
1256 AC_SUBST(PTHREAD_LIB)
1257
1258 AC_OUTPUT(GNUmakefile doc/source/ldp.dsl)