configure.in: Add warning that the obsolete pcre code is scheduled to be removed...
[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=32
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=1605695571
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 dnl bcopy is for PCRE
765 AC_CHECK_FUNCS([bcopy])
766 AC_PROG_GCC_TRADITIONAL
767 AC_TYPE_SIGNAL
768 AC_CHECK_FUNCS([ \
769  access \
770  arc4random \
771  atexit \
772  calloc \
773  getcwd \
774  gethostbyaddr \
775  gethostbyaddr_r \
776  gethostbyname \
777  gethostbyname_r \
778  gettimeofday \
779  inet_ntoa \
780  memchr \
781  memmove \
782  memset \
783  nanosleep \
784  poll \
785  putenv \
786  random \
787  regcomp \
788  select \
789  setlocale \
790  shutdown \
791  snprintf \
792  socket \
793  strchr \
794  strdup \
795  strerror \
796  strftime \
797  strlcat \
798  strlcpy \
799  strptime \
800  strtoul \
801  timegm \
802  tzset \
803 ])
804
805 dnl Checks for RFC 2553 resolver and socket functions
806 AC_ARG_ENABLE(ipv6-support,
807 [  --disable-ipv6-support          Disable IPv6 support and other RFC-2554-related improvements],
808 [if test $enableval = yes; then
809   enable_ipv6_support=yes
810 fi], enable_ipv6_support=yes)
811
812 if test $enable_ipv6_support != yes; then
813   AC_MSG_WARN([Skipping checks for IPv6 support and other RFC-2554-related improvements.
814     Due to lock contention, this may result in slower DNS resolution for IPv4 setups, too.])
815 elif test $target_type = mingw; then
816   AC_CHECK_LIB(ws2_32, main)
817
818   AC_MSG_CHECKING(getaddrinfo in ws2_32)
819   AC_TRY_LINK(
820     [
821       #include<winsock2.h>
822       #include<windows.h>
823       #include<ws2tcpip.h>
824     ],
825     [getaddrinfo(0,0,0,0)],
826     have_ws2_32_getaddrinfo=yes
827   )
828   AC_MSG_RESULT($have_ws2_32_getaddrinfo)
829
830   AC_MSG_CHECKING(getnameinfo in ws2_32)
831   AC_TRY_LINK(
832     [
833       #include<winsock2.h>
834       #include<windows.h>
835       #include<ws2tcpip.h>
836     ],
837     [getnameinfo(0,0,0,0,0,0,0)],
838     have_ws2_32_getnameinfo=yes
839   )
840   AC_MSG_RESULT($have_ws2_32_getnameinfo)
841
842   if test $have_ws2_32_getaddrinfo ; then
843     if test $have_ws2_32_getnameinfo ; then
844       AC_DEFINE([HAVE_RFC2553], [1],
845         [Define if RFC 2553 resolver functions like getaddrinfo(3) and
846          getnameinfo(3) present])
847     fi
848   fi
849 else
850   AC_CHECK_FUNC([getaddrinfo],
851      [AC_CHECK_FUNC([getnameinfo],
852         [AC_DEFINE([HAVE_RFC2553], [1],
853            [Define if RFC 2553 resolver functions like getaddrinfo(3) and
854             getnameinfo(3) present])
855         ])
856   ])
857 fi
858
859 dnl =================================================================
860 dnl Checks for libraries.
861 dnl =================================================================
862 dnl Note: Some systems may have the library but not the system header
863 dnl       file, so we must check for both.
864 dnl       Also check for correct version
865 AC_CHECK_LIB(pcre, pcre_compile, [
866    AC_CHECK_HEADER(pcre.h, [
867       AC_EGREP_HEADER(pcre_fullinfo, pcre.h, [have_pcre=yes], [AC_MSG_WARN([[pcre old version installed]]); have_pcre=no])
868    ], [
869       AC_CHECK_HEADER(pcre/pcre.h, [
870          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])
871       ], [have_pcre=no])
872    ])
873 ], [have_pcre=no])
874
875 AC_CHECK_LIB(pcreposix, regcomp, [
876    AC_CHECK_HEADER(pcreposix.h, [
877       AC_EGREP_HEADER(pcreposix_regerror, pcreposix.h, [AC_MSG_WARN([[pcreposix old version installed]]); have_pcreposix=no], [have_pcreposix=yes])
878    ], [
879       AC_CHECK_HEADER(pcre/pcreposix.h, [
880          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)])
881       ], [have_pcreposix=no])
882    ])
883 ], [have_pcreposix=no], -lpcre)
884
885 dnl ================================================================
886 dnl libpcrs is temporarily disabled.
887 dnl
888 dnl Privoxy's own pcrs version fixes some problems that
889 dnl are present in libpcrs 0.3, the last pcrs release we
890 dnl know of, and as libpcrs seems to be currently unmaintained
891 dnl we can't send these fixes upstream.
892 dnl ================================================================
893 dnl
894 dnl AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no], -lpcre)
895
896 dnl =================================================================
897 dnl Always defined
898 dnl =================================================================
899
900 AC_DEFINE(__MT__)
901
902 dnl =================================================================
903 dnl Features
904 dnl =================================================================
905
906 AC_ARG_ENABLE(toggle,
907 [  --disable-toggle                Don't support temporary disable],
908 [if test $enableval = yes; then
909   AC_DEFINE(FEATURE_TOGGLE)
910 fi],AC_DEFINE(FEATURE_TOGGLE))
911
912 AC_ARG_ENABLE(force,
913 [  --disable-force                 Don't allow single-page disable],
914 [if test $enableval = yes; then
915   AC_DEFINE(FEATURE_FORCE_LOAD)
916 fi],AC_DEFINE(FEATURE_FORCE_LOAD))
917
918 AC_ARG_ENABLE(fast-redirects,
919 [  --disable-fast-redirects        Don't support fast redirects],
920 [if test $enableval = yes; then
921   AC_DEFINE(FEATURE_FAST_REDIRECTS)
922 fi], AC_DEFINE(FEATURE_FAST_REDIRECTS))
923
924 AC_ARG_ENABLE(stats,
925 [  --disable-stats                 Don't keep statistics],
926 [if test $enableval = yes; then
927   AC_DEFINE(FEATURE_STATISTICS)
928 fi],AC_DEFINE(FEATURE_STATISTICS))
929
930 AC_ARG_ENABLE(extended-statistics,
931 [  --enable-extended-statistics    Gather extended statistics.],
932 [if test $enableval = yes; then
933   AC_DEFINE(FEATURE_EXTENDED_STATISTICS)
934 fi])
935
936 AC_ARG_ENABLE(image-blocking,
937 [  --disable-image-blocking        Don't try to figure out whether a request is
938                                   for an image or HTML - assume HTML.],
939 [if test $enableval = yes; then
940   AC_DEFINE(FEATURE_IMAGE_BLOCKING)
941 fi],
942 AC_DEFINE(FEATURE_IMAGE_BLOCKING))
943
944 AC_ARG_ENABLE(acl-support,
945 [  --disable-acl-support           Prevents the use of ACLs to control access to
946                                   Privoxy by IP address.],
947 [if test $enableval = yes; then
948   AC_DEFINE(FEATURE_ACL)
949 fi],
950 AC_DEFINE(FEATURE_ACL))
951
952 AC_ARG_ENABLE(trust-files,
953 [  --disable-trust-files           Prevents the use of trust files.],
954 [if test $enableval = yes; then
955   AC_DEFINE(FEATURE_TRUST)
956 fi],
957 AC_DEFINE(FEATURE_TRUST))
958
959 AC_ARG_ENABLE(editor,
960 [  --disable-editor                Prevents the use of the web-based actions file
961                                   editor and web-based temporary disable setting.],
962 [if test $enableval = yes; then
963   AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS)
964 fi],
965 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS))
966
967 AC_ARG_ENABLE(no-gifs,
968 [  --enable-no-gifs                Use politically correct PNG format instead of GIF
969                                   for built-in images. May not work with all browsers.],
970 [if test $enableval = yes; then
971   AC_DEFINE(FEATURE_NO_GIFS)
972 fi])
973
974 AC_ARG_ENABLE(graceful-termination,
975 [  --enable-graceful-termination   Allow to shutdown Privoxy through the webinterface.],
976 [if test $enableval = yes; then
977   AC_DEFINE(FEATURE_GRACEFUL_TERMINATION)
978 fi])
979
980 AC_ARG_ENABLE(pcre-host-patterns,
981 [  --enable-pcre-host-patterns     Allow to use PCRE syntax in host patterns by prefixing the pattern with
982                                   "PCRE-HOST-PATTERN:". You can use tools/url-pattern-translator.pl to
983                                   convert existing action files to use PCRE host patterns.],
984 [if test $enableval = yes; then
985   AC_DEFINE(FEATURE_PCRE_HOST_PATTERNS)
986 fi])
987
988 AC_ARG_ENABLE(external-filters,
989 [  --enable-external-filters       Allow to filter content with scripts and programs. Experimental.],
990 [if test $enableval = yes; then
991   AC_DEFINE(FEATURE_EXTERNAL_FILTERS,1,[Define to 1 to allow to filter content with scripts and programs.])
992 fi])
993
994 AC_ARG_ENABLE(accept-filter,
995 [  --enable-accept-filter          Try to use accf_http(9) if supported.],
996 [if test $enableval = yes; then
997   AC_DEFINE(FEATURE_ACCEPT_FILTER)
998 fi])
999
1000 AC_ARG_ENABLE(strptime-sanity-checks,
1001 [  --enable-strptime-sanity-checks Only trust strptime() results if an additional strftime()/strptime()
1002                                   conversion doesn't change the result. Can be useful if strptime() is
1003                                   known or suspected to be broken.],
1004 [if test $enableval = yes; then
1005   AC_DEFINE(FEATURE_STRPTIME_SANITY_CHECKS)
1006 fi])
1007
1008 AC_ARG_ENABLE(client-tags,
1009 [  --disable-client-tags           Disable support for client-specific tags],
1010 [ if test $enableval = "no"; then have_client_tags=no; fi ])
1011 if test "${have_client_tags}" = "no"; then
1012   echo "Disabling support for client-specific tags."
1013   FEATURE_CLIENT_TAGS_ONLY="#"
1014 else
1015   echo "Enabling support for client-specific tags."
1016   AC_DEFINE(FEATURE_CLIENT_TAGS,1,[Define to enable support for client-specific tags.])
1017   FEATURE_CLIENT_TAGS_ONLY=""
1018 fi
1019 AC_SUBST(FEATURE_CLIENT_TAGS_ONLY)
1020
1021 FUZZ_ONLY="#"
1022 AC_ARG_ENABLE(fuzz,
1023 [  --enable-fuzz                   Enable code that makes fuzzing more convenient],
1024 [if test $enableval = yes; then
1025   FUZZ_ONLY=""
1026   AC_DEFINE(FUZZ,1,[Define to make fuzzing more convenient.])
1027 fi])
1028 AC_SUBST(FUZZ_ONLY)
1029
1030 dnl pcre/pcrs is needed for CGI anyway, so
1031 dnl the choice is only between static and
1032 dnl dynamic:
1033
1034 AC_ARG_ENABLE(dynamic-pcre,
1035 [  --disable-dynamic-pcre          Use the built-in, static pcre, even if libpcre is available],
1036 [ if test $enableval = "no"; then have_pcre=no; fi ])
1037
1038 dnl =================================================
1039 dnl libpcrs is temporarily disabled,
1040 dnl see comment above for the reason.
1041 dnl =================================================
1042 dnl AC_ARG_ENABLE(dynamic-pcrs,
1043 dnl [  --disable-dynamic-pcrs          Use the built-in, static pcrs, even if libpcrs is available],
1044 dnl [ if test $enableval = "no"; then have_pcrs=no; fi ])
1045
1046
1047 dnl ====================================================
1048 dnl This check is incomplete. For mingw32 zlib is found
1049 dnl by configure, but not necessarily by the compiler.
1050 dnl ====================================================
1051 AC_ARG_ENABLE(zlib,
1052 [  --disable-zlib                  Don't use zlib to decompress data before filtering.],
1053 [enableval2=$enableval],
1054 [enableval2=yes])
1055 if test $enableval2 = yes; then
1056   AC_CHECK_LIB(z, zlibVersion, [have_zlib="yes"], [have_zlib="no"])
1057   if test $have_zlib = "yes"; then
1058     LIBS="$LIBS -lz"
1059     AC_DEFINE(FEATURE_ZLIB,1,[Define to 1 to use zlib to decompress data before filtering.])
1060   else
1061    AC_MSG_WARN([No zlib found.
1062    Privoxy will not be able to filter compressed content.
1063    This may become a fatal error in the future.])
1064   fi
1065 fi
1066
1067 AC_ARG_ENABLE(compression,
1068 [  --enable-compression            Allow Privoxy to compress buffered content if the client supports it. Requires zlib support.],
1069 [enableval2=$enableval],
1070 [enableval2=no])
1071 if test $enableval2 = yes; then
1072   if test $have_zlib = "yes"; then
1073     echo Enabling compression support.
1074     AC_DEFINE(FEATURE_COMPRESSION,1,[Define to 1 to use compression through the zlib library.])
1075   else
1076    AC_MSG_WARN([No zlib found. Privoxy will not be able to (re-)compressed buffered content.])
1077   fi
1078 fi
1079
1080
1081 # If we have libpcre and either we also have pcreposix or
1082 # we don't need pcreposix, then link pcre dynamically; else
1083 # build it and link statically
1084 #
1085 if test $have_pcre = "yes"; then
1086   echo "using libpcre"
1087   STATIC_PCRE_ONLY=#
1088   LIBS="$LIBS -lpcre -lpcreposix"
1089   if test "$use_static_pcre" = "yes"; then
1090     pcre_dyn=no
1091     AC_DEFINE(PCRE_STATIC,1,[Define to statically link to pcre library on Windows.])
1092 #     see /usr/i686-w64-mingw32/sys-root/mingw/include/pcre.h line 54
1093 #       #if defined(_WIN32) && !defined(PCRE_STATIC)
1094 #       #  ifndef PCRE_EXP_DECL
1095 #       #    define PCRE_EXP_DECL  extern __declspec(dllimport)
1096 #       #  endif
1097 #     If you want to statically link a program against a PCRE library in the form of
1098 #     a non-dll .a file, you must define PCRE_STATIC before including pcre.h or
1099 #     pcrecpp.h, otherwise the pcre_malloc() and pcre_free() exported functions will
1100 #     be declared __declspec(dllimport), with unwanted results.
1101   else
1102     pcre_dyn=yes
1103     AC_DEFINE(FEATURE_DYNAMIC_PCRE,1,[Define to dynamically link to pcre.])
1104   fi
1105 else
1106   AC_MSG_WARN([You are using the static PCRE code which is out of date and scheduled for removal, for details see:
1107     https://sourceforge.net/p/ijbswa/mailman/ijbswa-developers/thread/20080511195555.2dc6cfdc@fabiankeil.de/])
1108   AC_MSG_WARN([The removal will likely occur before the 3.0.33 release.])
1109   pcre_dyn=no
1110   # STATIC_PCRE is a name pcre needs to statically link on Windows.
1111   # Privoxy itself no longer uses it.
1112   AC_DEFINE(STATIC_PCRE,1,[Define to statically link to internal outdated pcre on Windows.])
1113   STATIC_PCRE_ONLY=
1114 fi
1115
1116 AC_DEFINE(FEATURE_CONNECTION_KEEP_ALIVE)
1117
1118 if test $have_pthread = "yes" -o $target_type = "mingw"; then
1119   echo Enabling connection-sharing support.
1120   AC_DEFINE(FEATURE_CONNECTION_SHARING)
1121 fi
1122
1123 dnl =================================================
1124 dnl libpcrs is temporarily disabled,
1125 dnl see comment above for the reason.
1126 dnl =================================================
1127 dnl # If we have libpcrs and pcre is linked dynamically
1128 dnl # then also link pcrs dynamically, else build and link
1129 dnl # pcrs statically
1130 dnl
1131 dnl if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
1132 dnl  echo "using libpcrs"
1133 dnl  STATIC_PCRS_ONLY=#
1134 dnl  LIBS="$LIBS -lpcrs"
1135 dnl else
1136 dnl  echo "using built-in static pcrs"
1137   AC_DEFINE(STATIC_PCRS)
1138   STATIC_PCRS_ONLY=
1139 dnl fi
1140
1141 AC_SUBST(STATIC_PCRE_ONLY)
1142 AC_SUBST(STATIC_PCRS_ONLY)
1143
1144 FEATURE_HTTPS_INSPECTION_ONLY=#
1145 dnl ========================================================
1146 dnl check for mbedTLS which can be used for https inspection
1147 dnl ========================================================
1148 FEATURE_HTTPS_INSPECTION_ONLY_MBEDTLS=#
1149 OPT_MBEDTLS=no
1150 AC_ARG_WITH(mbedtls,dnl
1151 AC_HELP_STRING([--with-mbedtls], [Enable mbedTLS detection for https inspection.])
1152 AC_HELP_STRING([--without-mbedtls], [Disable mbedTLS detection]),
1153   OPT_MBEDTLS=$withval)
1154
1155 if test X"$OPT_MBEDTLS" != Xno; then
1156
1157   AC_CHECK_LIB(mbedtls, mbedtls_ssl_init,
1158    [
1159      AC_DEFINE(FEATURE_HTTPS_INSPECTION, 1, [if SSL/TLS is enabled])
1160      AC_DEFINE(FEATURE_HTTPS_INSPECTION_MBEDTLS, 1, [if mbedTLS is enabled])
1161      AC_SUBST(FEATURE_HTTPS_INSPECTION_MBEDTLS, [1])
1162      FEATURE_HTTPS_INSPECTION_MBEDTLS="yes"
1163    ], [], -lmbedx509 -lmbedcrypto)
1164
1165   if test "x$FEATURE_HTTPS_INSPECTION_MBEDTLS" = "xyes"; then
1166     AC_MSG_NOTICE([Detected mbedTLS. Enabling https inspection.])
1167
1168     LIBS="-lmbedtls -lmbedx509 -lmbedcrypto $LIBS"
1169     old_CFLAGS_nospecial="-Imbedtls/include $old_CFLAGS_nospecial"
1170
1171     FEATURE_HTTPS_INSPECTION_ONLY=
1172     FEATURE_HTTPS_INSPECTION_ONLY_MBEDTLS=
1173   fi
1174 fi
1175 AC_SUBST(FEATURE_HTTPS_INSPECTION_ONLY_MBEDTLS)
1176
1177 dnl =================================================================
1178 dnl check for OpenSSL/LibreSSL which can be used for https inspection
1179 dnl =================================================================
1180 FEATURE_HTTPS_INSPECTION_ONLY_OPENSSL=#
1181 OPT_OPENSSL=no
1182 AC_ARG_WITH(openssl,dnl
1183 AC_HELP_STRING([--with-openssl], [Enable OpenSSL/LibreSSL detection for https inspection.])
1184 AC_HELP_STRING([--without-openssl], [Disable OpenSSL/LibreSSL detection]),
1185   OPT_OPENSSL=$withval)
1186
1187 if test X"$OPT_OPENSSL" != Xno; then
1188    if test X"$OPT_MBEDTLS" != Xno; then
1189       AC_MSG_ERROR([OpenSSL and mbedTLS support can't be enabled at the same time])
1190    fi
1191
1192   if test "$PORTNAME" != "win32"; then
1193      AC_CHECK_LIB(crypto, CRYPTO_new_ex_data, [], [AC_MSG_ERROR([library 'crypto' is required for OpenSSL])])
1194      FOUND_SSL_LIB="no"
1195      AC_CHECK_LIB(ssl, OPENSSL_init_ssl, [FOUND_SSL_LIB="yes"])
1196      AC_CHECK_LIB(ssl, SSL_library_init, [FOUND_SSL_LIB="yes"])
1197      AS_IF([test "x$FOUND_SSL_LIB" = xno], [AC_MSG_ERROR([library 'ssl' is required for OpenSSL])])
1198   else
1199      AC_SEARCH_LIBS(CRYPTO_new_ex_data, eay32 crypto, [], [AC_MSG_ERROR([library 'eay32' or 'crypto' is required for OpenSSL])])
1200      FOUND_SSL_LIB="no"
1201      AC_SEARCH_LIBS(OPENSSL_init_ssl, ssleay32 ssl, [FOUND_SSL_LIB="yes"])
1202      AC_SEARCH_LIBS(SSL_library_init, ssleay32 ssl, [FOUND_SSL_LIB="yes"])
1203      AS_IF([test "x$FOUND_SSL_LIB" = xno], [AC_MSG_ERROR([library 'ssleay32' or 'ssl' is required for OpenSSL])])
1204   fi
1205
1206   if test "x$FOUND_SSL_LIB" = xyes; then
1207      AC_DEFINE(FEATURE_HTTPS_INSPECTION, 1, [if SSL/TLS is enabled])
1208      AC_DEFINE(FEATURE_HTTPS_INSPECTION_OPENSSL, 1, [if OpenSSL is enabled])
1209      AC_SUBST(FEATURE_HTTPS_INSPECTION_OPENSSL, [1])
1210      FEATURE_HTTPS_INSPECTION="yes"
1211      FEATURE_HTTPS_INSPECTION_OPENSSL="yes"
1212   fi
1213
1214   if test "x$FEATURE_HTTPS_INSPECTION_OPENSSL" = "xyes"; then
1215     AC_MSG_NOTICE([Detected OpenSSL. Enabling https inspection.])
1216     AC_MSG_WARN([If you intend to redistribute Privoxy, please make sure the "special exception" from section 3 of the GPLv2 applies.])
1217
1218     LIBS="$LIBS -lssl -lcrypto"
1219     old_CFLAGS_nospecial="$old_CFLAGS_nospecial"
1220
1221     FEATURE_HTTPS_INSPECTION_ONLY=
1222     FEATURE_HTTPS_INSPECTION_ONLY_OPENSSL=
1223   fi
1224 fi
1225 AC_SUBST(FEATURE_HTTPS_INSPECTION_ONLY_OPENSSL)
1226
1227 AC_SUBST(FEATURE_HTTPS_INSPECTION_ONLY)
1228
1229 dnl ========================================================
1230 dnl Check for Brotli which can be used for decompression
1231 dnl ========================================================
1232 WITH_BROTLI=no
1233 AC_ARG_WITH(brotli,
1234 AC_HELP_STRING([--with-brotli], [Enable Brotli detection])
1235 AC_HELP_STRING([--without-brotli], [Disable Brotli detection]),
1236   WITH_BROTLI=$withval)
1237
1238 if test X"$WITH_BROTLI" != Xno; then
1239
1240   LIBS="$LIBS -lbrotlidec"
1241   if test $target_type = mingw; then
1242     # XXX: why does just the mingw build need this???
1243     LIBS="$LIBS -lbrotlicommon -lbrotlienc"
1244   fi
1245
1246   AC_CHECK_LIB(brotlidec, BrotliDecoderDecompress)
1247
1248   AC_CHECK_HEADERS(brotli/decode.h,
1249     FEATURE_BROTLI=1
1250     AC_DEFINE(FEATURE_BROTLI, 1, [If Brotli is used for decompression])
1251     AC_SUBST(FEATURE_BROTLI, [1])
1252   )
1253 fi
1254
1255
1256 dnl =================================================================
1257 dnl Final cleanup and output
1258 dnl =================================================================
1259
1260 dnl Remove the SPECIAL_CFLAGS stuff from CFLAGS, and add it separately
1261 dnl in the Makefile
1262 CFLAGS=$old_CFLAGS_nospecial
1263 AC_SUBST(SPECIAL_CFLAGS)
1264
1265 AC_SUBST(PTHREAD_LIB)
1266
1267 AC_OUTPUT(GNUmakefile doc/source/ldp.dsl)