configure: Remove obsolete RPM_BASE check
[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(external-filters,
977 [  --enable-external-filters       Allow to filter content with scripts and programs. Experimental.],
978 [if test $enableval = yes; then
979   AC_DEFINE(FEATURE_EXTERNAL_FILTERS,1,[Define to 1 to allow to filter content with scripts and programs.])
980 fi])
981
982 AC_ARG_ENABLE(accept-filter,
983 [  --enable-accept-filter          Try to use accf_http(9) if supported.],
984 [if test $enableval = yes; then
985   AC_DEFINE(FEATURE_ACCEPT_FILTER)
986 fi])
987
988 AC_ARG_ENABLE(strptime-sanity-checks,
989 [  --enable-strptime-sanity-checks Only trust strptime() results if an additional strftime()/strptime()
990                                   conversion doesn't change the result. Can be useful if strptime() is
991                                   known or suspected to be broken.],
992 [if test $enableval = yes; then
993   AC_DEFINE(FEATURE_STRPTIME_SANITY_CHECKS)
994 fi])
995
996 AC_ARG_ENABLE(client-tags,
997 [  --disable-client-tags           Disable support for client-specific tags],
998 [ if test $enableval = "no"; then have_client_tags=no; fi ])
999 if test "${have_client_tags}" = "no"; then
1000   echo "Disabling support for client-specific tags."
1001   FEATURE_CLIENT_TAGS_ONLY="#"
1002 else
1003   echo "Enabling support for client-specific tags."
1004   AC_DEFINE(FEATURE_CLIENT_TAGS,1,[Define to enable support for client-specific tags.])
1005   FEATURE_CLIENT_TAGS_ONLY=""
1006 fi
1007 AC_SUBST(FEATURE_CLIENT_TAGS_ONLY)
1008
1009 FUZZ_ONLY="#"
1010 AC_ARG_ENABLE(fuzz,
1011 [  --enable-fuzz                   Enable code that makes fuzzing more convenient],
1012 [if test $enableval = yes; then
1013   FUZZ_ONLY=""
1014   AC_DEFINE(FUZZ,1,[Define to make fuzzing more convenient.])
1015 fi])
1016 AC_SUBST(FUZZ_ONLY)
1017
1018 dnl pcre/pcrs is needed for CGI anyway, so
1019 dnl the choice is only between static and
1020 dnl dynamic:
1021
1022 AC_ARG_ENABLE(dynamic-pcre,
1023 [  --disable-dynamic-pcre          Use the built-in, static pcre, even if libpcre is available],
1024 [ if test $enableval = "no"; then have_pcre=no; fi ])
1025
1026 dnl =================================================
1027 dnl libpcrs is temporarily disabled,
1028 dnl see comment above for the reason.
1029 dnl =================================================
1030 dnl AC_ARG_ENABLE(dynamic-pcrs,
1031 dnl [  --disable-dynamic-pcrs          Use the built-in, static pcrs, even if libpcrs is available],
1032 dnl [ if test $enableval = "no"; then have_pcrs=no; fi ])
1033
1034
1035 dnl ====================================================
1036 dnl This check is incomplete. For mingw32 zlib is found
1037 dnl by configure, but not necessarily by the compiler.
1038 dnl ====================================================
1039 AC_ARG_ENABLE(zlib,
1040 [  --disable-zlib                  Don't use zlib to decompress data before filtering.],
1041 [enableval2=$enableval],
1042 [enableval2=yes])
1043 if test $enableval2 = yes; then
1044   AC_CHECK_LIB(z, zlibVersion, [have_zlib="yes"], [have_zlib="no"])
1045   if test $have_zlib = "yes"; then
1046     LIBS="$LIBS -lz"
1047     AC_DEFINE(FEATURE_ZLIB,1,[Define to 1 to use zlib to decompress data before filtering.])
1048   else
1049    AC_MSG_WARN([No zlib found.
1050    Privoxy will not be able to filter compressed content.
1051    This may become a fatal error in the future.])
1052   fi
1053 fi
1054
1055 AC_ARG_ENABLE(compression,
1056 [  --enable-compression            Allow Privoxy to compress buffered content if the client supports it. Requires zlib support.],
1057 [enableval2=$enableval],
1058 [enableval2=no])
1059 if test $enableval2 = yes; then
1060   if test $have_zlib = "yes"; then
1061     echo Enabling compression support.
1062     AC_DEFINE(FEATURE_COMPRESSION,1,[Define to 1 to use compression through the zlib library.])
1063   else
1064    AC_MSG_WARN([No zlib found. Privoxy will not be able to (re-)compressed buffered content.])
1065   fi
1066 fi
1067
1068
1069 # If we have libpcre and either we also have pcreposix or
1070 # we don't need pcreposix, then link pcre dynamically; else
1071 # build it and link statically
1072 #
1073 if test $have_pcre = "yes"; then
1074   echo "using libpcre"
1075   STATIC_PCRE_ONLY=#
1076   LIBS="$LIBS -lpcre -lpcreposix"
1077   if test "$use_static_pcre" = "yes"; then
1078     pcre_dyn=no
1079     AC_DEFINE(PCRE_STATIC,1,[Define to statically link to pcre library on Windows.])
1080 #     see /usr/i686-w64-mingw32/sys-root/mingw/include/pcre.h line 54
1081 #       #if defined(_WIN32) && !defined(PCRE_STATIC)
1082 #       #  ifndef PCRE_EXP_DECL
1083 #       #    define PCRE_EXP_DECL  extern __declspec(dllimport)
1084 #       #  endif
1085 #     If you want to statically link a program against a PCRE library in the form of
1086 #     a non-dll .a file, you must define PCRE_STATIC before including pcre.h or
1087 #     pcrecpp.h, otherwise the pcre_malloc() and pcre_free() exported functions will
1088 #     be declared __declspec(dllimport), with unwanted results.
1089   else
1090     pcre_dyn=yes
1091     AC_DEFINE(FEATURE_DYNAMIC_PCRE,1,[Define to dynamically link to pcre.])
1092   fi
1093 else
1094   AC_MSG_ERROR(pcre library not detected.)
1095 fi
1096
1097 AC_DEFINE(FEATURE_CONNECTION_KEEP_ALIVE)
1098
1099 if test $have_pthread = "yes" -o $target_type = "mingw"; then
1100   echo Enabling connection-sharing support.
1101   AC_DEFINE(FEATURE_CONNECTION_SHARING)
1102 fi
1103
1104 dnl =================================================
1105 dnl libpcrs is temporarily disabled,
1106 dnl see comment above for the reason.
1107 dnl =================================================
1108 dnl # If we have libpcrs and pcre is linked dynamically
1109 dnl # then also link pcrs dynamically, else build and link
1110 dnl # pcrs statically
1111 dnl
1112 dnl if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
1113 dnl  echo "using libpcrs"
1114 dnl  STATIC_PCRS_ONLY=#
1115 dnl  LIBS="$LIBS -lpcrs"
1116 dnl else
1117 dnl  echo "using built-in static pcrs"
1118   AC_DEFINE(STATIC_PCRS)
1119   STATIC_PCRS_ONLY=
1120 dnl fi
1121
1122 AC_SUBST(STATIC_PCRE_ONLY)
1123 AC_SUBST(STATIC_PCRS_ONLY)
1124
1125 FEATURE_HTTPS_INSPECTION_ONLY=#
1126 dnl ========================================================
1127 dnl check for mbedTLS which can be used for https inspection
1128 dnl ========================================================
1129 FEATURE_HTTPS_INSPECTION_ONLY_MBEDTLS=#
1130 OPT_MBEDTLS=no
1131 AC_ARG_WITH(mbedtls,dnl
1132 AC_HELP_STRING([--with-mbedtls], [Enable mbedTLS detection for https inspection.])
1133 AC_HELP_STRING([--without-mbedtls], [Disable mbedTLS detection]),
1134   OPT_MBEDTLS=$withval)
1135
1136 if test X"$OPT_MBEDTLS" != Xno; then
1137
1138   AC_CHECK_LIB(mbedtls, mbedtls_ssl_init,
1139    [
1140      AC_DEFINE(FEATURE_HTTPS_INSPECTION, 1, [if SSL/TLS is enabled])
1141      AC_DEFINE(FEATURE_HTTPS_INSPECTION_MBEDTLS, 1, [if mbedTLS is enabled])
1142      AC_SUBST(FEATURE_HTTPS_INSPECTION_MBEDTLS, [1])
1143      FEATURE_HTTPS_INSPECTION_MBEDTLS="yes"
1144    ], [], -lmbedx509 -lmbedcrypto)
1145
1146   if test "x$FEATURE_HTTPS_INSPECTION_MBEDTLS" = "xyes"; then
1147     AC_MSG_NOTICE([Detected mbedTLS. Enabling https inspection.])
1148
1149     LIBS="-lmbedtls -lmbedx509 -lmbedcrypto $LIBS"
1150     old_CFLAGS_nospecial="-Imbedtls/include $old_CFLAGS_nospecial"
1151
1152     FEATURE_HTTPS_INSPECTION_ONLY=
1153     FEATURE_HTTPS_INSPECTION_ONLY_MBEDTLS=
1154   fi
1155 fi
1156 AC_SUBST(FEATURE_HTTPS_INSPECTION_ONLY_MBEDTLS)
1157
1158 dnl =================================================================
1159 dnl check for OpenSSL/LibreSSL which can be used for https inspection
1160 dnl =================================================================
1161 FEATURE_HTTPS_INSPECTION_ONLY_OPENSSL=#
1162 OPT_OPENSSL=no
1163 AC_ARG_WITH(openssl,dnl
1164 AC_HELP_STRING([--with-openssl], [Enable OpenSSL/LibreSSL detection for https inspection.])
1165 AC_HELP_STRING([--without-openssl], [Disable OpenSSL/LibreSSL detection]),
1166   OPT_OPENSSL=$withval)
1167
1168 if test X"$OPT_OPENSSL" != Xno; then
1169    if test X"$OPT_MBEDTLS" != Xno; then
1170       AC_MSG_ERROR([OpenSSL and mbedTLS support can't be enabled at the same time])
1171    fi
1172
1173   if test "$PORTNAME" != "win32"; then
1174      AC_CHECK_LIB(crypto, CRYPTO_new_ex_data, [], [AC_MSG_ERROR([library 'crypto' is required for OpenSSL])])
1175      FOUND_SSL_LIB="no"
1176      AC_CHECK_LIB(ssl, OPENSSL_init_ssl, [FOUND_SSL_LIB="yes"])
1177      AC_CHECK_LIB(ssl, SSL_library_init, [FOUND_SSL_LIB="yes"])
1178      AS_IF([test "x$FOUND_SSL_LIB" = xno], [AC_MSG_ERROR([library 'ssl' is required for OpenSSL])])
1179   else
1180      AC_SEARCH_LIBS(CRYPTO_new_ex_data, eay32 crypto, [], [AC_MSG_ERROR([library 'eay32' or 'crypto' is required for OpenSSL])])
1181      FOUND_SSL_LIB="no"
1182      AC_SEARCH_LIBS(OPENSSL_init_ssl, ssleay32 ssl, [FOUND_SSL_LIB="yes"])
1183      AC_SEARCH_LIBS(SSL_library_init, ssleay32 ssl, [FOUND_SSL_LIB="yes"])
1184      AS_IF([test "x$FOUND_SSL_LIB" = xno], [AC_MSG_ERROR([library 'ssleay32' or 'ssl' is required for OpenSSL])])
1185   fi
1186
1187   if test "x$FOUND_SSL_LIB" = xyes; then
1188      AC_DEFINE(FEATURE_HTTPS_INSPECTION, 1, [if SSL/TLS is enabled])
1189      AC_DEFINE(FEATURE_HTTPS_INSPECTION_OPENSSL, 1, [if OpenSSL is enabled])
1190      AC_SUBST(FEATURE_HTTPS_INSPECTION_OPENSSL, [1])
1191      FEATURE_HTTPS_INSPECTION="yes"
1192      FEATURE_HTTPS_INSPECTION_OPENSSL="yes"
1193   fi
1194
1195   if test "x$FEATURE_HTTPS_INSPECTION_OPENSSL" = "xyes"; then
1196     AC_MSG_NOTICE([Detected OpenSSL. Enabling https inspection.])
1197     AC_MSG_WARN([If you intend to redistribute Privoxy, please make sure the "special exception" from section 3 of the GPLv2 applies.])
1198
1199     LIBS="$LIBS -lssl -lcrypto"
1200     old_CFLAGS_nospecial="$old_CFLAGS_nospecial"
1201
1202     FEATURE_HTTPS_INSPECTION_ONLY=
1203     FEATURE_HTTPS_INSPECTION_ONLY_OPENSSL=
1204   fi
1205 fi
1206 AC_SUBST(FEATURE_HTTPS_INSPECTION_ONLY_OPENSSL)
1207
1208 AC_SUBST(FEATURE_HTTPS_INSPECTION_ONLY)
1209
1210 dnl ========================================================
1211 dnl Check for Brotli which can be used for decompression
1212 dnl ========================================================
1213 WITH_BROTLI=no
1214 AC_ARG_WITH(brotli,
1215 AC_HELP_STRING([--with-brotli], [Enable Brotli detection])
1216 AC_HELP_STRING([--without-brotli], [Disable Brotli detection]),
1217   WITH_BROTLI=$withval)
1218
1219 if test X"$WITH_BROTLI" != Xno; then
1220
1221   LIBS="$LIBS -lbrotlidec"
1222   if test $target_type = mingw; then
1223     # XXX: why does just the mingw build need this???
1224     LIBS="$LIBS -lbrotlicommon -lbrotlienc"
1225   fi
1226
1227   AC_CHECK_LIB(brotlidec, BrotliDecoderDecompress)
1228
1229   AC_CHECK_HEADERS(brotli/decode.h,
1230     FEATURE_BROTLI=1
1231     AC_DEFINE(FEATURE_BROTLI, 1, [If Brotli is used for decompression])
1232     AC_SUBST(FEATURE_BROTLI, [1])
1233   )
1234 fi
1235
1236
1237 dnl =================================================================
1238 dnl Final cleanup and output
1239 dnl =================================================================
1240
1241 dnl Remove the SPECIAL_CFLAGS stuff from CFLAGS, and add it separately
1242 dnl in the Makefile
1243 CFLAGS=$old_CFLAGS_nospecial
1244 AC_SUBST(SPECIAL_CFLAGS)
1245
1246 AC_SUBST(PTHREAD_LIB)
1247
1248 AC_OUTPUT(GNUmakefile doc/source/ldp.dsl)