it helps if the new constants are included with the patch
[privoxy.git] / configure.in
1 dnl Process this file with autoconf to produce a configure script.
2 dnl 
3 dnl $Id: configure.in,v 1.143 2010/03/07 12:05:46 fabiankeil Exp $
4 dnl 
5 dnl Written by and Copyright (C) 2001-2010 the
6 dnl Privoxy team. http://www.privoxy.org/
7 dnl
8 dnl Based on the Internet Junkbuster originally written
9 dnl by and Copyright (C) 1997 Anonymous Coders and 
10 dnl Junkbusters Corporation.  http://www.junkbusters.com
11 dnl
12 dnl This program is free software; you can redistribute it 
13 dnl and/or modify it under the terms of the GNU General
14 dnl Public License as published by the Free Software
15 dnl Foundation; either version 2 of the License, or (at
16 dnl your option) any later version.
17 dnl 
18 dnl This program is distributed in the hope that it will
19 dnl be useful, but WITHOUT ANY WARRANTY; without even the
20 dnl implied warranty of MERCHANTABILITY or FITNESS FOR A
21 dnl PARTICULAR PURPOSE.  See the GNU General Public
22 dnl License for more details.
23 dnl 
24 dnl The GNU General Public License should be included with
25 dnl this file.  If not, you can view it at
26 dnl http://www.gnu.org/copyleft/gpl.html
27 dnl or write to the Free Software Foundation, Inc., 59
28 dnl Temple Place - Suite 330, Boston, MA  02111-1307, USA.
29 dnl 
30
31 dnl =================================================================
32 dnl AutoConf Initialization
33 dnl =================================================================
34
35 AC_REVISION($Revision: 1.143 $)
36 AC_INIT(jcc.c)
37
38 if test ! -f config.h.in; then
39    echo "You need to run autoheader first. "
40    echo -n "Shall I do this for you now? (y/n) "
41    read answer
42    if test "$answer" != "y"; then
43       exit 1
44    else
45       autoheader
46   fi
47 fi  
48
49 AC_CONFIG_HEADER([config.h])
50 AC_CANONICAL_HOST
51
52 dodk=auto
53 DKPREFIX=none
54 AC_ARG_WITH(docbook, dnl
55   --with-docbook=[[yes|no|directory]]   
56                            Enable docbook documentation creation 
57                            (default = yes, for gnu and linux),[dnl
58 case "$with_docbook" in
59 yes) dodk=yes;;
60 no) dodk=no;;
61 *) 
62         dodk=yes
63         DKPREFIX=$withval
64         ;;
65 esac
66 ])
67 DB2HTML=false
68 AC_ARG_WITH(db2html, dnl
69   --with-db2html=<path/executable>
70                           Set the location of the docbook to html converter
71                           (default = search),[dnl
72 DB2HTML=$withval
73 ])
74
75 dnl =================================================================
76 dnl Application version number
77 dnl =================================================================
78
79 VERSION_MAJOR=3
80 VERSION_MINOR=0
81 VERSION_POINT=17
82 CODE_STATUS="UNRELEASED"
83
84 dnl CODE_STATUS can be "alpha", "beta", or "stable", and will be
85 dnl used for CGI output. Set version to 0.0.0 and status to "UNRELEASED"
86 dnl whenever CVS in a stable branch differs from the last release.
87
88 dnl =================================================================
89 dnl Substitute the version numbers
90 dnl =================================================================
91
92 AC_SUBST(VERSION_MAJOR)
93 AC_SUBST(VERSION_MINOR)
94 AC_SUBST(VERSION_POINT)
95 AC_SUBST(CODE_STATUS)
96
97 dnl
98 AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR})
99 AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR})
100 AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT})
101 AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}")
102 AC_DEFINE_UNQUOTED(CODE_STATUS,"${CODE_STATUS}")
103
104 dnl =================================================================
105 dnl Checks for programs needed to build.
106 dnl =================================================================
107
108 dnl Keep AC_PROG_CC from setting its own defaults:
109 if test "X$CFLAGS" = "X"; then
110    CFLAGS=" "
111 fi
112
113 AC_PROG_CC
114 AC_PROG_CPP
115 AC_PROG_INSTALL
116 AC_PROG_LN_S
117 AC_PROG_MAKE_SET
118 AC_PROG_AWK
119
120 AC_CHECK_PROG(GDB,gdb,yes,no)
121 AC_PATH_PROG(BGROUPS,groups,no,$PATH:/bin:/usr/bin:/usr/local/bin)
122 AC_PATH_PROG(ID,id,no,$PATH:/bin:/usr/bin:/usr/local/bin)
123 AC_SUBST(ID)
124 AC_SUBST(BGROUPS)
125
126 dnl =================================================================
127 dnl debug, gcc and gdb support 
128 dnl =================================================================
129
130 AC_ARG_WITH(debug,
131         [  --with-debug            Enable debug mode],
132         [
133                 if test "x$withval" != "xno" ; then
134                     if test $ac_cv_prog_cc_g = yes; then
135                       if test "$GCC" = yes; then
136                         if test "$GDB"; then
137                           CFLAGS="$CFLAGS -ggdb"
138                         else
139                           CFLAGS="$CFLAGS -g"
140                         fi
141                         CFLAGS="$CFLAGS -Wshadow  -Wconversion"
142                       else
143                         CFLAGS="$CFLAGS -g"
144                       fi
145                    fi
146                 fi
147         ],
148         [
149             if test "X$CFLAGS" = "X "; then # if CFLAGS were unset (see above)
150               if test "$GCC" = yes; then
151                 CFLAGS="-O2"
152               fi
153             fi
154         ]
155 )
156
157 dnl =================================================================
158 dnl Check for user and group validity
159 dnl =================================================================
160
161
162 if test "$EMXOS2" = yes; then
163   echo "Skipping user and group validity stuff.";
164
165 else
166
167   $ID privoxy >/dev/null 2>/dev/null
168   if test $? -ne 0 ; then
169    AC_MSG_WARN(There is no user 'privoxy' on this system)
170   fi
171   AC_MSG_CHECKING([for user])
172   AC_ARG_WITH(user,
173         [  --with-user=privoxy          Set user under which privoxy will run],
174         [
175                 if test "x$withval" != "xyes"; then
176                   if test $ID = no ; then
177                     AC_MSG_ERROR(There is no 'id' program on this system)
178                   else
179                     AC_MSG_RESULT($with_user)
180                     $ID $with_user 2>/dev/null >/dev/null
181                     if test $? -eq 0 ; then
182                       USER=$with_user;
183                     else
184                       AC_MSG_ERROR(There is no user '$with_user' on this system)
185                     fi
186                   fi
187                   else
188                    AC_MSG_ERROR(We need a user if you give me this parameter)
189                 fi
190         ],
191         [
192           if test $ID = no ; then
193             AC_MSG_ERROR(There is no 'id' programm on this system)
194           else
195             AC_MSG_RESULT(none specified)
196             USER=$with_user
197           fi
198         ]
199   )
200   AC_SUBST(USER)
201
202   AC_MSG_CHECKING([for group])
203   AC_ARG_WITH(group,
204         [  --with-group=privoxy         Set group for privoxy],
205         [ 
206                 if test "x$withval" != "xyes"; then
207                   if test $BGROUPS = no ; then
208                     AC_MSG_ERROR(There is no 'groups' program on this system)
209                   else
210                     AC_MSG_RESULT($with_group)
211                     $BGROUPS $USER >/dev/null
212                     if test $? -eq 0 ; then
213                     # FIXME: this fails if valid group, but not first group
214                     # listed.
215                       if test "$with_group" != "`$BGROUPS $USER | sed 's/.*: //' 2>/dev/null |$AWK '{print $1}'`" ; then
216                         AC_MSG_ERROR(The given value '$withval' does not match group entry)
217                       else
218                         GROUP=$with_group;
219                       fi
220                     else
221                       AC_MSG_ERROR(There is no group entry for user '$USER')
222                     fi
223                   fi
224                 else
225                    AC_MSG_ERROR(We need a group if you give me this parameter)
226                 fi
227         ],
228         [
229           if test $BGROUPS = no ; then
230             AC_MSG_ERROR(There is no 'groups' programm on this system)
231           else
232             AC_MSG_RESULT(none specified)
233             GROUP=$with_group;
234           fi
235         ]
236   )
237   AC_SUBST(GROUP)
238
239 fi
240
241 dnl =================================================================
242 dnl additional gcc flags
243 dnl =================================================================
244 dnl 
245 if test "$GCC"; then
246   if test "$host" != "powerpc-unknown-amigaos"; then
247     CFLAGS="-pipe $CFLAGS"
248   fi
249 fi
250
251
252 dnl =================================================================
253 dnl Build type
254 dnl =================================================================
255 dnl
256 dnl Must do this first.
257 dnl
258 dnl Reason: This sets CFLAGS in order to switch the Cygwin compiler
259 dnl into Cygwin or MinGW32 modes.  Depending on the mode selected,
260 dnl the compiler will use completely different sets of library
261 dnl and include files.
262 dnl 
263 dnl =================================================================
264
265 AC_MINGW32
266 AC_CYGWIN
267
268 if test "$MINGW32" = "yes"; then
269   target_type=mingw
270 else
271   if test "$CYGWIN" = "yes"; then
272     target_type=cygwin
273   else
274     target_type=unix
275   fi
276 fi
277
278 if test $dodk = auto; then
279         dodk=no
280         if test $target_type = unix; then
281                 case "$host_os" in
282                 linux* | gnu*)
283                         dodk=yes
284                 ;;
285                 esac
286         fi
287 fi
288
289 dnl Decide what to do based on target_type
290 dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
291 dnl This is because we don't know yet whether pthread is enabled.
292
293 AC_ARG_ENABLE(mingw32,
294 [  --enable-mingw32                Use mingw32 for a Windows GUI],
295 [if test $enableval = yes; then
296   target_type=mingw
297 fi])
298
299 if test $target_type = mingw; then
300   WIN_ONLY=
301   SPECIAL_CFLAGS="-mwindows -mno-cygwin"
302   PTHREAD_LIB=-lpthreadGC
303   echo "Using mingw32 (Win32 GUI)"
304 else
305   WIN_ONLY=#
306   if test $target_type = cygwin; then
307     SPECIAL_CFLAGS="-mno-win32"
308     PTHREAD_LIB=
309     echo "Using Cygnus (Win32 command line)"
310   else
311     SPECIAL_CFLAGS=
312     PTHREAD_LIB=-lpthread
313   fi
314 fi
315 AC_SUBST(WIN_ONLY)
316
317 dnl Checking which text html browser we have avaliable
318 if test $dodk != no; then
319         AC_CHECK_PROGS(WDUMP,w3m lynx links,false)
320         if test "$WDUMP" = false; then
321                 AC_MSG_WARN(You need some kind of text browser to build documentation \(w3m, lynx and links are supported\))
322         fi
323         if test $DB2HTML = false; then
324                 dnl We need to clean the variable, otherwise AC_CHECK_PROGS
325                 dnl will fail   
326                 DB2HTML=""
327                 AC_CHECK_PROGS(DB2HTML,db2html docbook2html,false)
328         fi
329 fi
330 AC_SUBST(WDUMP)
331 AC_SUBST(DB2HTML)
332
333 dnl If we use rpm, we need to check where %_topdir is
334 AC_CHECK_PROGS(RPMBIN,rpm,false)
335 if test $RPMBIN != false; then
336                 RPM_BASE=`rpm --eval "%{_topdir}"`
337                 if test "$RPM_BASE" = ""; then
338                         RPM_BASE=/usr/src/redhat
339                 fi
340 fi
341 AC_SUBST(RPM_BASE)
342
343 dnl Check for jade, so we can build the documentation
344 AC_CHECK_PROGS(JADEBIN,jade openjade,false)
345 AC_SUBST(JADEBIN)
346
347 dnl Check for man2html for docs.
348 AC_CHECK_PROGS(MAN2HTML,man2html,false)
349 AC_SUBST(MAN2HTML)
350
351 dnl Set doc status flag for conditional content inclusions
352 DOC_STATUS=p-not-stable
353 if  test $CODE_STATUS = stable; then
354      DOC_STATUS="p-stable"
355 fi
356 AC_SUBST(DOC_STATUS)
357
358 dnl Checking for the docbook.dsl stylesheet file
359 dnl It is still not portable (directory slash)
360 JADECAT=""
361 if test $dodk = yes; then
362   if test $DKPREFIX = none; then
363     for i in /usr/share/sgml/docbook/dsssl-stylesheets \
364              /usr/share/sgml/docbkdsl /usr/share/sgml/docbook-dsssl \
365              /usr/local/share/sgml/docbook/dsssl/modular \
366              /usr/share/sgml/docbook/stylesheet/dsssl/modular/ \
367              ; do
368 dnl  echo -n does not fly with /bin/sh.
369 dnl      echo -n "checking for $i/html/docbook.dsl..."
370       AC_MSG_CHECKING([for $i])
371       if test -f $i/html/docbook.dsl; then
372         echo "yes"
373         DKPREFIX=$i
374         break
375       else
376         echo "no"
377       fi
378     done
379 # where are the catalogs?
380     for i in /usr/share/sgml/CATALOG.docbk30 \
381              /usr/share/sgml/CATALOG.docbk31 \
382              /usr/share/sgml/CATALOG.docbk31 \
383              /usr/local/share/sgml/docbook/3.0/docbook.cat \
384              /usr/local/share/sgml/docbook/3.1/docbook.cat \
385              /usr/share/sgml/docbook/dtd/3.1/docbook.cat \
386              ; do
387 dnl     echo -n "checking for $i..."
388       AC_MSG_CHECKING([for $i])
389       if test -f $i; then
390         echo "yes"
391         JADECAT="$JADECAT -c $i"
392       else
393         echo "no"
394       fi
395     done
396   fi
397 fi
398 AC_SUBST(JADECAT)
399 AC_SUBST(DKPREFIX)
400
401 AC_ARG_ENABLE(large-file-support,
402 [  --enable-large-file-support     Define _LARGE_FILES and friends.
403                                   Required by some systems to support files larger then 2GB.],
404 [if test $enableval = yes; then
405     CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_LARGEFILE_SOURCE=1"
406 fi])
407
408 dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
409 old_CFLAGS_nospecial=$CFLAGS
410 CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
411
412 # Hack to force AutoConf to use the CFLAGS we just set
413 dnl Warning: This may break with a future version of Autoconf
414 dnl          Tested with autoconf 2.13
415 ac_cpp='$CPP $CPPFLAGS $SPECIAL_CFLAGS'
416 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
417 ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
418
419
420 dnl =================================================================
421 dnl Thread support
422 dnl =================================================================
423
424 AC_CHECK_HEADER(pthread.h, [have_pthread=yes], [have_pthread=no])
425
426 AC_ARG_ENABLE(pthread,
427 [  --disable-pthread               Don't use POSIX threads (pthreads)],
428 [if test $enableval = no; then
429   # Disable pthreads
430   if test $have_pthread = yes; then
431      AC_MSG_WARN([pthreads seem to be available but you are using --disable-pthread.]) 
432      AC_MSG_WARN([This is almost always a mistake and can render Privoxy unacceptable slow.])
433   fi
434   have_pthread=no
435 fi])
436
437 if test $have_pthread = yes; then
438   PTHREAD_ONLY=
439   AC_DEFINE(FEATURE_PTHREAD)
440   echo Using POSIX threads
441   if test "$GCC" = "yes"; then
442     # Set a GCC specific switch:
443     if test "$target_type" = "unix"; then
444       ac_jgf_save_CFLAGS=$CFLAGS
445       CFLAGS="$CFLAGS -pthread"
446       AC_TRY_LINK([#include <pthread.h>],
447         [void *p = pthread_create;],
448         [
449           # This compiler switch makes GCC on Linux thread-safe
450           # However, it's not supported on most other OS.
451           PTHREAD_LIB=
452           SPECIAL_CFLAGS="-pthread"
453         ])
454       CFLAGS=$ac_jgf_save_CFLAGS
455     fi
456   fi
457 else
458   PTHREAD_ONLY=#
459   echo Using native threads
460 fi
461
462 AC_SUBST(PTHREAD_ONLY)
463
464 dnl =================================================================
465 dnl Support for thread-safe versions of gethostbyaddr, gethostbyname,
466 dnl gmtime and localtime
467 dnl =================================================================
468
469 dnl Next line needed to find the gethost*_r functions on Solaris
470 AC_CHECK_LIB(nsl, gethostbyname)
471
472 AC_CHECK_FUNC(gethostbyaddr_r, [
473   AC_MSG_CHECKING([signature of gethostbyaddr_r])
474   AC_TRY_COMPILE([
475 #   include <netdb.h>
476   ], [
477     struct hostent *h, *hp;
478     char *a, *b;
479     int l, bl, t, e;
480     (void) gethostbyaddr_r(a, l, t, h, b, bl, &hp, &e)
481   ], [
482     AC_DEFINE(HAVE_GETHOSTBYADDR_R_8_ARGS)
483     AC_MSG_RESULT([8 args])
484   ], [
485     AC_TRY_COMPILE([
486 #     include <netdb.h>
487     ], [
488       struct hostent *h;
489       char *a, *b;
490       int l, bl, t, e;
491       (void) gethostbyaddr_r(a, l, t, h, b, bl, &e)
492     ], [
493       AC_DEFINE(HAVE_GETHOSTBYADDR_R_7_ARGS)
494       AC_MSG_RESULT([7 args])
495     ], [
496       AC_TRY_COMPILE([
497 #       include <netdb.h>
498       ], [
499         struct hostent_data *d;
500         struct hostent *h;
501         char a,
502         int l, t;
503         (void) gethostbyaddr_r(a, l, t, h, d)
504       ], [
505         AC_DEFINE(HAVE_GETHOSTBYADDR_R_5_ARGS)
506         AC_MSG_RESULT([5 args])
507       ], [
508         AC_MSG_RESULT(unrecognised)
509       ])
510     ])
511   ])
512 ], [
513   AC_MSG_RESULT(no)
514 ])
515
516 AC_CHECK_FUNC(gethostbyname_r, [
517   AC_MSG_CHECKING([signature of gethostbyname_r])
518   AC_TRY_COMPILE([
519 #   include <netdb.h>
520   ], [
521     struct hostent *h, *r;
522     char *n, *b;
523     int bl, e;
524     (void) gethostbyname_r(n, h, b, bl, &r, &e)
525   ], [
526     AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARGS)
527     AC_MSG_RESULT([6 args])
528   ], [
529     AC_TRY_COMPILE([
530 #     include <netdb.h>
531     ], [
532       struct hostent *h;
533       char *n, *b;
534       int bl, e;
535       (void) gethostbyname_r(n, h, b, bl, &e)
536     ], [
537       AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARGS)
538       AC_MSG_RESULT([5 args])
539     ], [
540       AC_TRY_COMPILE([
541 #       include <netdb.h>
542       ], [
543         struct hostent_data *d;
544         struct hostent *h;
545         char *n,
546         (void) gethostbyname_r(n, h, d)
547       ], [
548         AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARGS)
549         AC_MSG_RESULT([3 args])
550       ], [
551         AC_MSG_RESULT(unrecognised)
552       ])
553     ])
554   ])
555 ], [
556   AC_MSG_RESULT(no)
557 ])
558
559 AC_CHECK_FUNC(gmtime_r, [
560   AC_MSG_CHECKING([signature of gmtime_r])
561   AC_TRY_COMPILE([
562 #   include <time.h>
563   ], [
564     struct time *t;
565     struct tm *tm;
566     (void) gmtime_r(t, tm)
567   ], [
568     AC_MSG_RESULT(ok)
569     AC_DEFINE(HAVE_GMTIME_R)
570   ], [
571     AC_MSG_RESULT(unrecognised)
572   ])
573 ], [
574   AC_MSG_RESULT(no)
575 ])
576
577 AC_CHECK_FUNC(localtime_r, [
578   AC_MSG_CHECKING([signature of localtime_r])
579   AC_TRY_COMPILE([
580 #   include <time.h>
581   ], [
582     struct time *t;
583     struct tm *tm;
584     (void) localtime_r(t, tm)
585   ], [
586     AC_MSG_RESULT(ok)
587     AC_DEFINE(HAVE_LOCALTIME_R)
588   ], [
589     AC_MSG_RESULT(unrecognised)
590   ])
591 ], [
592   AC_MSG_RESULT(no)
593 ])
594
595 dnl =================================================================
596 dnl Solaris specific
597 dnl FIXME: Not tested on Solaris yet...
598 dnl ISFIXED: Have tested it on Solaris, but there are other ways to
599 dnl     make these checks generic, e.g.:
600 dnl AC_CHECK_FUNC(getsockopt, , AC_CHECK_LIB(socket, getsockopt))
601 dnl     (Moritz Barsnick <moritz@barsnick.net>)
602 dnl =================================================================
603
604
605 SOCKET_LIB=
606
607 case "$host" in
608 *-solaris*) SOCKET_LIB="-lsocket -lnsl"
609             AC_DEFINE(__EXTENSIONS__)
610             if test "$GCC" = "yes"; then
611               # Set a GCC specific switch:
612               # This compiler switch makes Solaris thread-safe
613               PTHREAD_LIB=
614               SPECIAL_CFLAGS="-pthreads"
615             else
616               # What do we do without GCC? Guess this:
617               SPECIAL_CFLAGS="-D_REENTRANT"
618             fi
619 ;;
620 esac
621
622 AC_SUBST(SOCKET_LIB)
623
624 dnl =================================================================
625 dnl Solaris problem, and others perhaps (socklen_t is undefined)
626 dnl =================================================================
627
628 AC_MSG_CHECKING([for socklen_t])
629 AC_EGREP_HEADER(socklen_t, sys/socket.h, AC_MSG_RESULT([yes]),
630         AC_MSG_RESULT([no])
631         AC_DEFINE(socklen_t,int,
632                 [ Define to 'int' if <sys/socket.h> doesn't have it. ]))
633
634
635 dnl =================================================================
636 dnl OS/2 specific
637 dnl =================================================================
638
639 case "$host" in
640 *-os2-emx*) SOCKET_LIB=-lsocket
641 ;;
642 esac
643
644 AC_SUBST(SOCKET_LIB)
645
646 dnl =================================================================
647 dnl Mac OSX specific
648 dnl =================================================================
649     
650 case "$host" in
651 *-apple-darwin*) SPECIAL_CFLAGS="-Dunix"
652 ;;  
653 esac
654
655 dnl =================================================================
656 dnl OpenBSD specific
657 dnl =================================================================
658
659 case "$host" in
660 *-openbsd*) SPECIAL_CFLAGS="$SPECIAL_CFLAGS -Dunix"
661 ;;
662 esac
663
664 dnl =================================================================
665 dnl AmigaOS specific
666 dnl =================================================================
667
668 AMIGAOS_ONLY=#
669
670 case "$host" in
671 *-amigaos) AMIGAOS_ONLY=
672 ;;
673 esac
674
675 AC_SUBST(AMIGAOS_ONLY)
676
677 dnl =================================================================
678 dnl Check for standard compiler stuff
679 dnl =================================================================
680
681 AC_EXEEXT
682 AC_OBJEXT
683 AC_HEADER_STDC
684 AC_HEADER_DIRENT
685 AC_C_CONST
686 AC_TYPE_SIZE_T
687 AC_TYPE_PID_T
688 AC_HEADER_TIME
689 AC_STRUCT_TM
690 AC_CHECK_SIZEOF(int, 4)
691 AC_CHECK_SIZEOF(char *, 4)
692 AC_CHECK_SIZEOF(long, 4)
693 AC_CHECK_SIZEOF(long long, 8)
694 AC_CHECK_SIZEOF(size_t, 4)
695
696 dnl Checks for header files.
697 dnl AC_HEADER_SYS_WAIT
698 dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h)
699 AC_CHECK_HEADERS([OS.h arpa/inet.h errno.h fcntl.h limits.h locale.h netdb.h netinet/in.h stddef.h stdlib.h string.h sys/ioctl.h sys/socket.h sys/time.h sys/timeb.h sys/wait.h unistd.h])
700
701 dnl Checks for library functions.
702 dnl AC_TYPE_SIGNAL
703 dnl AC_CHECK_FUNC(strstr)
704 dnl bcopy and memmove are for PCRE
705 AC_CHECK_FUNCS([strerror bcopy memmove])
706 AC_PROG_GCC_TRADITIONAL
707 dnl uncommenting does not work for swa. suse linux
708 dnl AC_FUNC_MALLOC
709 AC_FUNC_SETPGRP
710 AC_TYPE_SIGNAL
711 dnl uncommenting does not work for swa. suse linux
712 dnl AC_FUNC_STAT
713 AC_CHECK_FUNCS([access atexit getcwd gethostbyaddr gethostbyaddr_r gethostbyname gethostbyname_r gettimeofday inet_ntoa localtime_r memchr memmove memset poll putenv random regcomp select setlocale snprintf socket strchr strdup strerror strftime strlcat strlcpy strptime strstr strtoul timegm tzset])
714
715 dnl Checks for RFC 2553 resolver and socket functions
716 AC_CHECK_FUNC([getaddrinfo],
717    [AC_CHECK_FUNC([getnameinfo],
718       [AC_DEFINE([HAVE_RFC2553], [1],
719          [Define if RFC 2553 resolver functions like getaddrinfo(3) and
720           getnameinfo(3) present])
721       ])
722 ])
723
724 dnl =================================================================
725 dnl Checks for libraries.
726 dnl =================================================================
727 dnl Note: Some systems may have the library but not the system header
728 dnl       file, so we must check for both.
729 dnl       Also check for correct version
730 AC_CHECK_LIB(pcre, pcre_compile, [
731    AC_CHECK_HEADER(pcre.h, [
732       AC_EGREP_HEADER(pcre_fullinfo, pcre.h, [have_pcre=yes], [AC_MSG_WARN([[pcre old version installed]]); have_pcre=no])
733    ], [
734       AC_CHECK_HEADER(pcre/pcre.h, [
735          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])
736       ], [have_pcre=no])
737    ])
738 ], [have_pcre=no])
739  
740 AC_CHECK_LIB(pcreposix, regcomp, [
741    AC_CHECK_HEADER(pcreposix.h, [
742       AC_EGREP_HEADER(pcreposix_regerror, pcreposix.h, [AC_MSG_WARN([[pcreposix old version installed]]); have_pcreposix=no], [have_pcreposix=yes])
743    ], [
744       AC_CHECK_HEADER(pcre/pcreposix.h, [
745          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)])
746       ], [have_pcreposix=no])
747    ])
748 ], [have_pcreposix=no], -lpcre) 
749
750 dnl ================================================================
751 dnl libpcrs is temporarily disabled.
752 dnl
753 dnl Privoxy's own pcrs version fixes some problems that
754 dnl are present in libpcrs 0.3, the last pcrs release we
755 dnl know of, and as libpcrs seems to be currently unmaintained
756 dnl we can't send these fixes upstream.
757 dnl ================================================================
758 dnl
759 dnl AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no], -lpcre)
760
761 dnl =================================================================
762 dnl Always defined
763 dnl =================================================================
764
765 AC_DEFINE(__MT__)
766
767 dnl =================================================================
768 dnl Features
769 dnl =================================================================
770
771 AC_ARG_ENABLE(toggle,
772 [  --disable-toggle                Don't support temporary disable],
773 [if test $enableval = yes; then
774   AC_DEFINE(FEATURE_TOGGLE)
775 fi],AC_DEFINE(FEATURE_TOGGLE))
776
777 AC_ARG_ENABLE(force,
778 [  --disable-force                 Don't allow single-page disable],
779 [if test $enableval = yes; then
780   AC_DEFINE(FEATURE_FORCE_LOAD)
781 fi],AC_DEFINE(FEATURE_FORCE_LOAD))
782
783 AC_ARG_ENABLE(fast-redirects,
784 [  --disable-fast-redirects        Don't support fast redirects],
785 [if test $enableval = yes; then
786   AC_DEFINE(FEATURE_FAST_REDIRECTS)
787 fi], AC_DEFINE(FEATURE_FAST_REDIRECTS))
788
789 AC_ARG_ENABLE(stats,
790 [  --disable-stats                 Don't keep statistics],
791 [if test $enableval = yes; then
792   AC_DEFINE(FEATURE_STATISTICS)
793 fi],AC_DEFINE(FEATURE_STATISTICS))
794
795 AC_ARG_ENABLE(ie-images,
796 [  --enable-ie-images              Enable a quick but not always reliable auto-detect whether requests from
797                                   MS Internet Explorer are for an image or not.],
798 [if test $enableval = yes; then
799   AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE)
800 fi],)
801
802 AC_ARG_ENABLE(image-blocking,
803 [  --disable-image-blocking        Don't try to figure out whether a request is 
804                                   for an image or HTML - assume HTML.],
805 [if test $enableval = yes; then
806   AC_DEFINE(FEATURE_IMAGE_BLOCKING)
807 fi],
808 AC_DEFINE(FEATURE_IMAGE_BLOCKING))
809
810 AC_ARG_ENABLE(acl-files,
811 [  --disable-acl-files             Prevents the use of ACL files to control access to
812                                   Privoxy by IP address.],
813 [if test $enableval = yes; then
814   AC_DEFINE(FEATURE_ACL)
815 fi],
816 AC_DEFINE(FEATURE_ACL))
817
818 AC_ARG_ENABLE(trust-files,
819 [  --disable-trust-files           Prevents the use of trust files.],
820 [if test $enableval = yes; then
821   AC_DEFINE(FEATURE_TRUST)
822 fi],
823 AC_DEFINE(FEATURE_TRUST))
824
825 AC_ARG_ENABLE(editor,
826 [  --disable-editor                Prevents the use of the web-based actions file
827                                   editor and web-based temporary disable setting.],
828 [if test $enableval = yes; then
829   AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS)
830 fi],
831 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS))
832
833 AC_ARG_ENABLE(no-gifs,
834 [  --enable-no-gifs                Use politically correct PNG format instead of GIF
835                                   for built-in images. May not work with all browsers.],
836 [if test $enableval = yes; then
837   AC_DEFINE(FEATURE_NO_GIFS)
838 fi])
839
840 AC_ARG_ENABLE(graceful-termination,
841 [  --enable-graceful-termination   Allow to shutdown Privoxy through the webinterface.],
842 [if test $enableval = yes; then
843   AC_DEFINE(FEATURE_GRACEFUL_TERMINATION)
844 fi])
845
846 AC_ARG_ENABLE(extended-host-patterns,
847 [  --enable-extended-host-patterns Enable and require PCRE syntax in host patterns. This feature hasn't
848                                   been announced yet and it's not clear if it's a good idea. It's expected
849                                   to work, but undocumented. You should only enable it if you know what
850                                   PCRE is and are sure that you need it for your host patterns. You can
851                                   use tools/url-pattern-translator.pl to convert existing action files to
852                                   use PCRE host patterns. Please don't enable this option when creating
853                                   packages for others that may not be expecting it.],
854 [if test $enableval = yes; then
855   AC_DEFINE(FEATURE_EXTENDED_HOST_PATTERNS)
856 fi])
857
858 AC_ARG_ENABLE(accept-filter,
859 [  --enable-accept-filter          Try to use accf_http(9) if supported.],
860 [if test $enableval = yes; then
861   AC_DEFINE(FEATURE_ACCEPT_FILTER)
862 fi])
863
864 dnl pcre/pcrs is needed for CGI anyway, so
865 dnl the choice is only between static and
866 dnl dynamic:
867
868 AC_ARG_ENABLE(dynamic-pcre,
869 [  --disable-dynamic-pcre          Use the built-in, static pcre, even if libpcre is available],
870 [ if test $enableval = "no"; then have_pcre=no; fi ])
871
872 dnl =================================================
873 dnl libpcrs is temporarily disabled,
874 dnl see comment above for the reason.
875 dnl =================================================
876 dnl AC_ARG_ENABLE(dynamic-pcrs,
877 dnl [  --disable-dynamic-pcrs          Use the built-in, static pcrs, even if libpcrs is available],
878 dnl [ if test $enableval = "no"; then have_pcrs=no; fi ])
879
880
881 dnl ====================================================
882 dnl This check is incomplete. For mingw32 zlib is found
883 dnl by configure, but not necessarily by the compiler.
884 dnl ====================================================
885 AC_ARG_ENABLE(zlib,
886 [  --disable-zlib                  Don't use zlib to decompress data before filtering.],
887 [enableval2=$enableval],
888 [enableval2=yes])
889 if test $enableval2 = yes; then
890   AC_CHECK_LIB(z, zlibVersion, [have_zlib="yes"], [have_zlib="no"])
891   if test $have_zlib = "yes"; then
892     LIBS="$LIBS -lz"
893     AC_DEFINE(FEATURE_ZLIB,1,[Define to 1 to use compression through the zlib library.])
894   else
895    AC_MSG_WARN([No zlib found.
896    Privoxy will not be able to filter compressed content.
897    This may become a fatal error in the future.])
898   fi  
899 fi
900
901
902 # If we have libpcre and either we also have pcreposix or
903 # we don't need pcreposix, then link pcre dynamically; else
904 # build it and link statically
905 #
906 if test $have_pcre = "yes"; then
907   echo "using libpcre"
908   pcre_dyn=yes
909   STATIC_PCRE_ONLY=#
910   LIBS="$LIBS -lpcre -lpcreposix"
911 else
912   AC_MSG_WARN([You are using the static PCRE code which is scheduled for removal, for details see: 
913     https://sourceforge.net/mailarchive/message.php?msg_id=20080511195555.2dc6cfdc%40fabiankeil.de])
914   pcre_dyn=no
915   AC_DEFINE(STATIC_PCRE)
916   STATIC_PCRE_ONLY=
917 fi
918
919 AC_DEFINE(FEATURE_CONNECTION_KEEP_ALIVE)
920
921 if test $have_pthread = "yes" -o $target_type = "mingw"; then
922   echo Enabling connection-sharing support.
923   AC_DEFINE(FEATURE_CONNECTION_SHARING)
924 fi
925
926 dnl =================================================
927 dnl libpcrs is temporarily disabled,
928 dnl see comment above for the reason.
929 dnl =================================================
930 dnl # If we have libpcrs and pcre is linked dynamically
931 dnl # then also link pcrs dynamically, else build and link
932 dnl # pcrs statically
933 dnl
934 dnl if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
935 dnl  echo "using libpcrs"
936 dnl  STATIC_PCRS_ONLY=#
937 dnl  LIBS="$LIBS -lpcrs"
938 dnl else
939 dnl  echo "using built-in static pcrs"
940   AC_DEFINE(STATIC_PCRS)
941   STATIC_PCRS_ONLY=
942 dnl fi
943
944 AC_SUBST(STATIC_PCRE_ONLY)
945 AC_SUBST(STATIC_PCRS_ONLY)
946
947 dnl =================================================================
948 dnl Final cleanup and output
949 dnl =================================================================
950
951 dnl Remove the SPECIAL_CFLAGS stuff from CFLAGS, and add it seperately
952 dnl in the Makefile
953 CFLAGS=$old_CFLAGS_nospecial
954 AC_SUBST(SPECIAL_CFLAGS)
955
956 AC_SUBST(PTHREAD_LIB)
957
958 AC_OUTPUT(GNUmakefile doc/source/ldp.dsl)