1 dnl Process this file with autoconf to produce a configure script.
3 dnl $Id: configure.in,v 1.71 2002/06/04 14:51:49 jongfoster Exp $
5 dnl Written by and Copyright (C) 2001, 2002 the SourceForge
6 dnl Privoxy team. http://www.privoxy.org/
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
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.
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.
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.
30 dnl $Log: configure.in,v $
31 dnl Revision 1.71 2002/06/04 14:51:49 jongfoster
32 dnl Updating for new paths:
33 dnl - Source files in src/
34 dnl - Object files in obj/
36 dnl Revision 1.70 2002/05/27 23:26:34 mal0rd
37 dnl Made doc-generation configuration automatic.
38 dnl References to DB2HTML were removed, not used.
39 dnl --with-docbook now only needed if in odd path.
41 dnl Revision 1.69 2002/05/25 18:11:49 jongfoster
42 dnl Wahay!!! 3.0.x has branched!
43 dnl New development version is 3.1.1 alpha
45 dnl Revision 1.68 2002/05/25 16:54:54 jongfoster
46 dnl Detect if the compiler supports -pthread.
47 dnl Hopefully this will fix bug 560442. (I don't have a HP PA-RISC
48 dnl machine to test this!)
50 dnl Revision 1.67 2002/05/03 14:33:59 oes
51 dnl Generate doc/soucre/ldp.dsl
53 dnl Revision 1.66 2002/05/03 00:41:56 oes
54 dnl Set version to 2.9.15 to comply with new versioning scheme
56 dnl Revision 1.65 2002/04/25 19:13:57 morcego
57 dnl Removed RPM release number declaration on configure.in
58 dnl Changed makefile to use given value for RPM_PACKAGEV when on uploading
59 dnl targets (will produce an error, explaining who to do it, if no value
62 dnl Revision 1.64 2002/04/22 16:32:31 morcego
63 dnl configure.in, *.spec: Bumping release to 2 (2.9.14-2)
64 dnl -rh.spec: uid and gid are now macros
65 dnl -suse.spec: Changing the header Copyright to License (Copyright is
68 dnl Revision 1.63 2002/04/11 11:00:21 oes
69 dnl Applied Moritz' fix for socklen_t on Solaris
71 dnl Revision 1.62 2002/04/11 10:09:20 oes
74 dnl Revision 1.61 2002/04/10 18:14:45 morcego
75 dnl - (privoxy-rh.spec only) Relisting template files on the %%files section
76 dnl - (configure.in, privoxy-rh.spec) Bumped package release to 5
78 dnl Revision 1.60 2002/04/09 16:38:49 oes
79 dnl Added detection of missing config.h.in
81 dnl Revision 1.59 2002/04/06 20:23:55 jongfoster
82 dnl Removing unnessacery tests (C++, ranlib)
84 dnl Revision 1.58 2002/04/04 20:49:20 swa
85 dnl attempt to consolidate the
86 dnl different dokbook versions.
88 dnl Revision 1.57 2002/04/04 00:36:36 gliptak
89 dnl always use pcre for matching
91 dnl Revision 1.56 2002/04/03 22:28:03 gliptak
92 dnl Removed references to gnu_regex
94 dnl Revision 1.55 2002/04/03 03:54:38 gliptak
95 dnl Checking pcre version
97 dnl Revision 1.54 2002/04/01 00:54:24 gliptak
98 dnl More changes needed around regex support.
100 dnl Revision 1.53 2002/03/29 20:09:01 swa
103 dnl Revision 1.52 2002/03/29 19:51:40 gliptak
104 dnl Correcting compile problem with Debian
106 dnl Revision 1.51 2002/03/28 20:43:00 swa
107 dnl set make correctly
109 dnl Revision 1.50 2002/03/27 03:03:45 hal9
110 dnl Add test for man2html
112 dnl Revision 1.49 2002/03/27 02:19:52 david__schmidt
113 dnl More Mac OSX support:
114 dnl - Get rid of extraneous, noisy -pthread warnings
115 dnl - Define unix so we get oes' unix-tagged changes
117 dnl Revision 1.48 2002/03/26 22:29:54 swa
118 dnl we have a new homepage!
120 dnl Revision 1.47 2002/03/26 16:41:00 hal9
121 dnl Upped RPM Release to 3 (need to build new RH packages)
123 dnl Revision 1.46 2002/03/24 18:55:06 jongfoster
124 dnl Making Docbook work under Windows
126 dnl Revision 1.45 2002/03/24 14:19:55 swa
127 dnl set rpm package release in configure.in. nowhere else.
129 dnl Revision 1.44 2002/03/24 13:25:43 swa
130 dnl name change related issues
132 dnl Revision 1.43 2002/03/24 12:56:21 swa
133 dnl name change related issues.
135 dnl Revision 1.42 2002/03/22 18:11:37 jongfoster
136 dnl Bumping version number to 2.9.12
138 dnl Revision 1.41 2002/03/19 19:30:04 morcego
139 dnl - Fixing stylesheet checking on configure. If it is found, no further checks
142 dnl - configure will now check for db2html or docbook2html (should work now
143 dnl on SuSe without the docbktls package)
145 dnl Revision 1.40 2002/03/09 14:33:30 oes
146 dnl Fixing the (harmless) AC_CHECK_FILE warnings
148 dnl Revision 1.39 2002/03/08 16:46:13 oes
149 dnl Added --enable-no-gifs
151 dnl Revision 1.38 2002/03/08 14:13:50 morcego
152 dnl Fixing configure, to remove a command not found error.
154 dnl Revision 1.37 2002/03/08 12:58:21 oes
155 dnl Tiny bugfix in AC_ARG_WITH(debug)
157 dnl Revision 1.36 2002/03/06 23:50:36 morcego
158 dnl Will not test for a text browser if we are not using docbook.
160 dnl Revision 1.35 2002/03/06 21:55:52 morcego
161 dnl New configure option: --with-docbook=(yes|no|directory)
162 dnl Preliminary new platform detection code included. Will work with the
163 dnl old one for now. No use just trowing it away
165 dnl Revision 1.34 2002/03/06 20:57:00 morcego
166 dnl Fixing detection of stylesheets on SuSe.
168 dnl Revision 1.33 2002/03/05 17:31:11 morcego
169 dnl Search for docbook.dsl. Should solve portability problems for SuSe.
171 dnl Revision 1.32 2002/03/05 14:07:43 morcego
172 dnl configure now detects rpm topdir, and change GNUmakefile acordingly
173 dnl (based on sugestion by Sarantis Paskalis)
175 dnl Revision 1.31 2002/03/05 13:43:28 morcego
176 dnl Checking for text browser, so redhat-dok can work.
178 dnl Revision 1.30 2002/03/04 17:58:01 oes
179 dnl Deleted _DEBUG and PID_FILE_PATH
181 dnl Revision 1.29 2002/02/28 14:20:53 oes
182 dnl Fixed detection of gethost*_r functions on Solaris
184 dnl Revision 1.28 2002/02/27 15:02:38 oes
185 dnl Incremented version number
187 dnl Revision 1.27 2002/01/10 12:35:18 oes
188 dnl Added cross-compile defaults to the AC_CHECK_SIZEOF macros
189 dnl to silence autoconf warnings. Numbers are for Intel/Linux.
190 dnl Is there a better way?
192 dnl Revision 1.26 2002/01/09 14:29:49 oes
193 dnl - Added AC_CHECK_FUNC tests for the availability of
194 dnl gethostbyname_r, gethostbyaddr_r, gmtime_r and
195 dnl localtime_r, as well as AC_TRY_COMPILE tests to
196 dnl determine their signatures.
198 dnl - Fixed a bug with the init of CFLAGS that was
199 dnl reported by barsnick
201 dnl Revision 1.25 2002/01/04 15:27:18 oes
202 dnl Changed quoting of CODE_STATUS for use in make
204 dnl Revision 1.24 2001/12/30 14:07:31 steudten
205 dnl - Add signal handling (unix)
206 dnl - Add SIGHUP handler (unix)
207 dnl - Add creation of pidfile (unix)
208 dnl - Add action 'top' in rc file (RH)
209 dnl - Add entry 'SIGNALS' to manpage
210 dnl - Add exit message to logfile (unix)
212 dnl Revision 1.23 2001/12/09 20:24:42 david__schmidt
213 dnl Change from "alpha" to "beta" in configure.in
215 dnl Revision 1.22 2001/12/01 11:24:01 jongfoster
216 dnl Renaming Makefile.in to GNUmakefile.in so that non-GNU versions of
217 dnl make break in a more obvious way.
219 dnl Revision 1.21 2001/11/30 21:35:54 jongfoster
220 dnl Bumping version number to 2.9.10
222 dnl Revision 1.20 2001/10/23 21:24:09 jongfoster
223 dnl Support for FEATURE_CGI_EDIT_ACTIONS
225 dnl Revision 1.19 2001/10/07 15:33:14 oes
226 dnl Removed FEATURE_DENY_GZIP
227 dnl Bumped up version number
229 dnl Revision 1.18 2001/09/13 13:10:24 steudten
231 dnl PreWork for Debug Interface.
232 dnl Add new option "--with-debug" to enable debugging (flags aso.)
234 dnl Revision 1.17 2001/09/12 23:44:55 david__schmidt
235 dnl Mac OSX (Darwin) support added.
237 dnl Revision 1.16 2001/09/12 22:55:45 joergs
238 dnl AmigaOS support added.
240 dnl Revision 1.15 2001/09/12 17:28:59 david__schmidt
242 dnl OS/2 port: update autoconf'd support for the platform.
244 dnl Revision 1.14 2001/07/30 22:12:11 jongfoster
245 dnl Fixing Solaris build (I hope) and tidying up #defines:
246 dnl - All feature #defines are now of the form FEATURE_xxx
247 dnl - Permanently turned off WIN_GUI_EDIT
248 dnl - Permanently turned on WEBDAV and SPLIT_PROXY_ARGS
250 dnl Revision 1.13 2001/07/29 17:09:17 jongfoster
251 dnl Major changes to build system in order to fix these bugs:
252 dnl - pthreads under Linux was broken - changed -lpthread to -pthread
253 dnl - Compiling in MinGW32 mode under CygWin now correctly detects
254 dnl which shared libraries are available
255 dnl - Solaris support (?) (Not tested under Solaris yet)
257 dnl Revision 1.12 2001/07/25 19:16:27 oes
258 dnl Bumping version number to 2.9.8
260 dnl Revision 1.11 2001/07/21 18:00:07 jongfoster
261 dnl Bumping version number to 2.9.7
263 dnl Revision 1.10 2001/07/18 17:25:04 oes
266 dnl Revision 1.9 2001/07/15 19:45:13 jongfoster
267 dnl Added support for linking with POSIX threads library
269 dnl Revision 1.8 2001/07/15 17:54:29 jongfoster
270 dnl Renaming #define STATIC to STATIC_PCRE
271 dnl Adding new #define FEATURE_PTHREAD that will be used to enable
272 dnl POSIX threads support.
274 dnl Revision 1.7 2001/07/13 13:58:05 oes
275 dnl Completely reorganized the selection scheme for
276 dnl pcre, pcreposix, pcrs and gnu_regex:
278 dnl The presence of shared pcre, pcreposix or pcrs
279 dnl libraried is now autodetected. Additionally, the
280 dnl user can enforce using the built-in static variants
281 dnl by specifying --disable-dynamic-(pcre|pcrs).
282 dnl Care is taken to avoid that pcre is dyn, while pcreposix
283 dnl is static, if both are used and that pcrs is static if
286 dnl The choice between pcre, gnu or no regex for actionsfile
287 dnl URL matching is now via
288 dnl --(enable|disable)-regex-matching[=(gnu|pcre|no)] with the
289 dnl default being pcre.
291 dnl Revision 1.6 2001/06/29 21:56:40 oes
294 dnl Revision 1.5 2001/06/29 13:26:27 oes
295 dnl Introduced #define CODE_STATUS
297 dnl Revision 1.4 2001/05/29 09:50:24 jongfoster
298 dnl Unified blocklist/imagelist/permissionslist.
299 dnl File format is still under discussion, but the internal changes
300 dnl are (mostly) done.
302 dnl Also modified interceptor behaviour:
303 dnl - We now intercept all URLs beginning with one of the following
304 dnl prefixes (and *only* these prefixes):
306 dnl * http://ijbswa.sf.net/config/
307 dnl * http://ijbswa.sourceforge.net/config/
308 dnl - New interceptors "home page" - go to http://i.j.b/ to see it.
309 dnl - Internal changes so that intercepted and fast redirect pages
310 dnl are not replaced with an image.
311 dnl - Interceptors now have the option to send a binary page direct
312 dnl to the client. (i.e. ijb-send-banner uses this)
313 dnl - Implemented show-url-info interceptor. (Which is why I needed
314 dnl the above interceptors changes - a typical URL is
315 dnl "http://i.j.b/show-url-info?url=www.somesite.com/banner.gif".
316 dnl The previous mechanism would not have intercepted that, and
317 dnl if it had been intercepted then it then it would have replaced
318 dnl it with an image.)
320 dnl Revision 1.3 2001/05/22 18:46:04 oes
322 dnl - Enabled filtering banners by size rather than URL
323 dnl by adding patterns that replace all standard banner
324 dnl sizes with the "Junkbuster" gif to the re_filterfile
326 dnl - Enabled filtering WebBugs by providing a pattern
327 dnl which kills all 1x1 images
329 dnl - Added support for PCRE_UNGREEDY behaviour to pcrs,
330 dnl which is selected by the (nonstandard and therefore
331 dnl capital) letter 'U' in the option string.
332 dnl It causes the quantifiers to be ungreedy by default.
333 dnl Appending a ? turns back to greedy (!).
335 dnl - Added a new interceptor ijb-send-banner, which
336 dnl sends back the "Junkbuster" gif. Without imagelist or
337 dnl MSIE detection support, or if tinygif = 1, or the
338 dnl URL isn't recognized as an imageurl, a lame HTML
339 dnl explanation is sent instead.
341 dnl - Added new feature, which permits blocking remote
342 dnl script redirects and firing back a local redirect
344 dnl The feature is conditionally compiled, i.e. it
345 dnl can be disabled with --disable-fast-redirects,
346 dnl plus it must be activated by a "fast-redirects"
347 dnl line in the config file, has its own log level
348 dnl and of course wants to be displayed by show-proxy-args
349 dnl Note: Boy, all the #ifdefs in 1001 locations and
350 dnl all the fumbling with configure.in and acconfig.h
351 dnl were *way* more work than the feature itself :-(
353 dnl - Because a generic redirect template was needed for
354 dnl this, tinygif = 3 now uses the same.
356 dnl - Moved GIFs, and other static HTTP response templates
359 dnl - Some minor fixes
361 dnl - Removed some >400 CRs again (Jon, you really worked
364 dnl Revision 1.2 2001/05/20 01:21:20 jongfoster
365 dnl Version 2.9.4 checkin.
366 dnl - Merged popupfile and cookiefile, and added control over PCRS
367 dnl filtering, in new "permissionsfile".
368 dnl - Implemented LOG_LEVEL_FATAL, so that if there is a configuration
369 dnl file error you now get a message box (in the Win32 GUI) rather
370 dnl than the program exiting with no explanation.
371 dnl - Made killpopup use the PCRS MIME-type checking and HTTP-header
373 dnl - Removed tabs from "config"
374 dnl - Moved duplicated url parsing code in "loaders.c" to a new funcition.
375 dnl - Bumped up version number.
377 dnl Revision 1.1.1.1 2001/05/15 13:58:50 oes
378 dnl Initial import of version 2.9.3 source tree
383 dnl =================================================================
384 dnl AutoConf Initialization
385 dnl =================================================================
387 AC_REVISION($Revision: 1.71 $)
390 if test ! -f src/config.h.in; then
391 echo "You need to run autoheader first. "
392 echo -n "Shall I do this for you now? (y/n) "
394 if test $answer != "y"; then
401 AC_CONFIG_HEADER([src/config.h])
405 dnl =================================================================
406 dnl Application version number
407 dnl =================================================================
414 dnl CODE_STATUS can be "alpha", "beta", or "stable", and will be
415 dnl used for CGI output
417 dnl =================================================================
418 dnl Substitute the version numbers
419 dnl =================================================================
421 AC_SUBST(VERSION_MAJOR)
422 AC_SUBST(VERSION_MINOR)
423 AC_SUBST(VERSION_POINT)
424 AC_SUBST(CODE_STATUS)
427 AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR},
428 [Version number - Major (X._._).])
429 AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR},
430 [Version number - Minor (_.X._).])
431 AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT},
432 [Version number - Point (_._.X).])
433 AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}",
434 [Version number, as a string.])
435 AC_DEFINE_UNQUOTED(CODE_STATUS,"${CODE_STATUS}",
436 [Status of the code: "alpha", "beta" or "stable".])
438 dnl =================================================================
439 dnl Checks for programs needed to build.
440 dnl =================================================================
447 AC_CHECK_PROG(GDB,gdb,yes,no)
449 dnl =================================================================
450 dnl debug, gcc and gdb support
451 dnl =================================================================
454 [ --with-debug Enable debug mode],
456 if test "x$withval" != "xno" ; then
457 if test $ac_cv_prog_cc_g = yes; then
458 if test "$GCC" = yes; then
464 CFLAGS="$CFLAGS -Wshadow -Wconversion"
472 if test "X$CFLAGS" = "X"; then # if CFLAGS are unset
473 if test "$GCC" = yes; then
483 [ --with-user=privoxy Set user under which privoxy run],
485 if test "x$withval" != "xyes"; then
488 AC_MSG_ERROR(We need a user if you give me this parameter)
498 [ --with-group=privoxy Set group for privoxy],
500 if test "x$withval" != "xyes"; then
503 AC_MSG_ERROR(We need a group if you give me this parameter)
512 dnl =================================================================
513 dnl additional gcc flags
514 dnl =================================================================
517 CFLAGS="-pipe $CFLAGS"
521 dnl =================================================================
523 dnl =================================================================
525 dnl Must do this first.
527 dnl Reason: This sets CFLAGS in order to switch the Cygwin compiler
528 dnl into Cygwin or MinGW32 modes. Depending on the mode selected,
529 dnl the compiler will use completely different sets of library
530 dnl and include files.
532 dnl =================================================================
537 if test "$MINGW32" = "yes"; then
540 if test "$CYGWIN" = "yes"; then
547 dnl Decide what to do based on target_type
548 dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
549 dnl This is because we don't know yet whether pthread is enabled.
551 AC_ARG_ENABLE(mingw32,
552 [ --enable-mingw32 Use mingw32 for a Windows GUI],
553 [if test $enableval = yes; then
557 if test $target_type = mingw; then
559 SPECIAL_CFLAGS="-mwindows -mno-cygwin"
560 PTHREAD_LIB=-lpthreadGC
561 echo "Using mingw32 (Win32 GUI)"
564 if test $target_type = cygwin; then
565 SPECIAL_CFLAGS="-mno-win32"
567 echo "Using Cygnus (Win32 command line)"
570 PTHREAD_LIB=-lpthread
575 dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
576 old_CFLAGS_nospecial=$CFLAGS
577 CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
579 # Hack to force AutoConf to use the CFLAGS we just set
580 dnl Warning: This may break with a future version of Autoconf
581 dnl Tested with autoconf 2.13
582 ac_cpp='$CPP $CPPFLAGS $SPECIAL_CFLAGS'
583 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
584 ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
587 dnl =================================================================
589 dnl =================================================================
591 AC_CHECK_HEADER(pthread.h, [have_pthread=yes], [have_pthread=no])
593 AC_ARG_ENABLE(pthread,
594 [ --disable-pthread Don't use POSIX threads (pthreads)],
595 [if test $enableval = no; then
600 if test $have_pthread = yes; then
602 AC_DEFINE(FEATURE_PTHREAD,1,
603 [Define to use POSIX threads instead of native threads.])
604 echo Using POSIX threads
605 if test "$GCC" = "yes"; then
606 # Set a GCC specific switch:
607 if test "$target_type" = "unix"; then
608 ac_jgf_save_CFLAGS=$CFLAGS
609 CFLAGS="$CFLAGS -pthread"
610 AC_TRY_LINK([#include <pthread.h>],
611 [void *p = pthread_create;],
613 # This compiler switch makes GCC on Linux thread-safe
614 # However, it's not supported on most other OS.
616 SPECIAL_CFLAGS="-pthread"
618 CFLAGS=$ac_jgf_save_CFLAGS
623 echo Using native threads
626 AC_SUBST(PTHREAD_ONLY)
628 dnl =================================================================
629 dnl Support for thread-safe versions of gethostbyaddr, gethostbyname,
630 dnl gmtime and localtime
631 dnl =================================================================
633 dnl Next line needed to find the gethost*_r functions on Solaris
634 AC_CHECK_LIB(nsl, gethostbyname)
636 AC_CHECK_FUNC(gethostbyaddr_r, [
637 AC_MSG_CHECKING([signature of gethostbyaddr_r])
641 struct hostent *h, *hp;
644 (void) gethostbyaddr_r(a, l, t, h, b, bl, &hp, &e)
646 AC_DEFINE(HAVE_GETHOSTBYADDR_R_8_ARGS,1,
647 [Define if gethostbyaddr_r() exists and takes 8 arguments])
648 AC_MSG_RESULT([8 args])
656 (void) gethostbyaddr_r(a, l, t, h, b, bl, &e)
658 AC_DEFINE(HAVE_GETHOSTBYADDR_R_7_ARGS,1,
659 [Define if gethostbyaddr_r() exists and takes 7 arguments])
660 AC_MSG_RESULT([7 args])
665 struct hostent_data *d;
669 (void) gethostbyaddr_r(a, l, t, h, d)
671 AC_DEFINE(HAVE_GETHOSTBYADDR_R_5_ARGS,1,
672 [Define if gethostbyaddr_r() exists and takes 5 arguments])
673 AC_MSG_RESULT([5 args])
675 AC_MSG_RESULT(unrecognised)
683 AC_CHECK_FUNC(gethostbyname_r, [
684 AC_MSG_CHECKING([signature of gethostbyname_r])
688 struct hostent *h, *r;
691 (void) gethostbyname_r(n, h, b, bl, &r, &e)
693 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARGS,1,
694 [Define if gethostbyname_r() exists and takes 6 arguments])
695 AC_MSG_RESULT([6 args])
703 (void) gethostbyname_r(n, h, b, bl, &e)
705 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARGS,1,
706 [Define if gethostbyname_r() exists and takes 5 arguments])
707 AC_MSG_RESULT([5 args])
712 struct hostent_data *d;
715 (void) gethostbyname_r(n, h, d)
717 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARGS,1,
718 [Define if gethostbyname_r() exists and takes 3 arguments])
719 AC_MSG_RESULT([3 args])
721 AC_MSG_RESULT(unrecognised)
729 AC_CHECK_FUNC(gmtime_r, [
730 AC_MSG_CHECKING([signature of gmtime_r])
736 (void) gmtime_r(t, tm)
739 AC_DEFINE(HAVE_GMTIME_R,1,
740 [Define if gmtime_r(struct time *, struct tm *) exists])
742 AC_MSG_RESULT(unrecognised)
748 AC_CHECK_FUNC(localtime_r, [
749 AC_MSG_CHECKING([signature of localtime_r])
755 (void) localtime_r(t, tm)
758 AC_DEFINE(HAVE_LOCALTIME_R,1,
759 [Define if localtime_r(struct time *, struct tm *) exists])
761 AC_MSG_RESULT(unrecognised)
767 dnl =================================================================
769 dnl FIXME: Not tested on Solaris yet...
770 dnl ISFIXED: Have tested it on Solaris, but there are other ways to
771 dnl make these checks generic, e.g.:
772 dnl AC_CHECK_FUNC(getsockopt, , AC_CHECK_LIB(socket, getsockopt))
773 dnl (Moritz Barsnick <moritz@barsnick.net>)
774 dnl =================================================================
780 *-solaris*) SOCKET_LIB="-lsocket -lnsl"
781 AC_DEFINE(__EXTENSIONS__,1,
782 [Define to 1 on Solaris. Do not define on other platforms.])
783 if test "$GCC" = "yes"; then
784 # Set a GCC specific switch:
785 # This compiler switch makes Solaris thread-safe
787 SPECIAL_CFLAGS="-pthreads"
789 # What do we do without GCC? Guess this:
790 SPECIAL_CFLAGS="-D_REENTRANT"
797 dnl =================================================================
798 dnl Solaris problem, and others perhaps (socklen_t is undefined)
799 dnl =================================================================
801 AC_MSG_CHECKING([for socklen_t])
802 AC_EGREP_HEADER(socklen_t, sys/socket.h, AC_MSG_RESULT([yes]),
804 AC_DEFINE(socklen_t,int,
805 [ Define to 'int' if <sys/socket.h> doesn't have it. ]))
808 dnl =================================================================
810 dnl =================================================================
813 *-os2-emx*) SOCKET_LIB=-lsocket
819 dnl =================================================================
821 dnl =================================================================
824 *-apple-darwin*) SPECIAL_CFLAGS="-Dunix"
828 dnl =================================================================
830 dnl =================================================================
835 *-amigaos) AMIGAOS_ONLY=
839 AC_SUBST(AMIGAOS_ONLY)
841 dnl =================================================================
842 dnl Check for standard compiler stuff
843 dnl =================================================================
854 AC_CHECK_SIZEOF(int, 4)
855 AC_CHECK_SIZEOF(char *, 4)
856 AC_CHECK_SIZEOF(long, 4)
857 AC_CHECK_SIZEOF(long long, 8)
858 AC_CHECK_SIZEOF(size_t, 4)
860 dnl Checks for header files.
861 dnl AC_HEADER_SYS_WAIT
862 dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h)
863 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])
865 dnl Checks for library functions.
867 dnl AC_CHECK_FUNC(strstr)
868 dnl bcopy and memmove are for PCRE
869 AC_CHECK_FUNCS([strerror bcopy memmove])
870 AC_PROG_GCC_TRADITIONAL
871 dnl uncommenting does not work for swa. suse linux
875 dnl uncommenting does not work for swa. suse linux
877 AC_CHECK_FUNCS([atexit getcwd gethostbyaddr gethostbyname inet_ntoa localtime_r memchr memmove memset regcomp select setlocale socket strchr strdup strerror strftime strstr strtoul])
880 dnl =================================================================
881 dnl Checks for libraries.
882 dnl =================================================================
883 dnl Note: Some systems may have the library but not the system header
884 dnl file, so we must check for both.
885 dnl Also check for correct version
886 AC_CHECK_LIB(pcre, pcre_compile, [AC_CHECK_HEADER(pcre.h, [AC_EGREP_HEADER(pcre_fullinfo, pcre.h, [have_pcre=yes], [AC_MSG_WARN([[pcre old version installed]]); have_pcre=no])], [have_pcre=no])], [have_pcre=no])
887 AC_CHECK_LIB(pcreposix, regcomp, [AC_CHECK_HEADER(pcreposix.h, [AC_EGREP_HEADER(pcreposix_regerror, pcreposix.h, [AC_MSG_WARN([[pcreposix old version installed]]); have_pcreposix=no], [have_pcreposix=yes])], [have_pcreposix=no])], [have_pcreposix=no], -lpcre)
888 AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no])
891 dnl =================================================================
893 dnl =================================================================
896 [Always define this, for thread safety on some platforms.])
898 dnl =================================================================
900 dnl =================================================================
902 AC_ARG_ENABLE(toggle,
903 [ --disable-toggle Don't support temporary disable],
904 [enableval2=$enableval],
906 if test $enableval2 = yes; then
907 AC_DEFINE(FEATURE_TOGGLE,1,
908 [ Allow Privoxy to be "disabled" so it is just a normal non-blocking
909 non-anonymizing proxy. This is useful if you're trying to access a
910 blocked or broken site - just change the setting in the config file,
911 or use the handy "Disable" menu option in the Windows GUI. ])
915 [ --disable-force Don't allow single-page disable],
916 [enableval2=$enableval],
918 if test $enableval2 = yes; then
919 AC_DEFINE(FEATURE_FORCE_LOAD,1,
920 [ Bypass filtering for 1 page only. ])
923 AC_ARG_ENABLE(fast-redirects,
924 [ --disable-fast-redirects Don't support fast redirects],
925 [enableval2=$enableval],
927 if test $enableval2 = yes; then
928 AC_DEFINE(FEATURE_FAST_REDIRECTS,1,
929 [ Locally redirect remote script-redirect URLs. ])
932 AC_ARG_ENABLE(killpopup,
933 [ --disable-killpopup Never block popups],
934 [enableval2=$enableval],
936 if test $enableval2 = yes; then
937 AC_DEFINE(FEATURE_KILL_POPUPS,1,
938 [ Kills JavaScript popups - window.open, onunload, etc. ])
942 [ --disable-stats Don't keep statistics],
943 [enableval2=$enableval],
945 if test $enableval2 = yes; then
946 AC_DEFINE(FEATURE_STATISTICS,1,
947 [ Enables statistics function. ])
950 AC_ARG_ENABLE(ie-images,
951 [ --enable-ie-images Don't auto-detect whether a request from MS Internet
952 Explorer is for an image or HTML.],
953 [enableval2=$enableval],
955 if test $enableval2 = yes; then
956 AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE,1,
957 [ Detect image requests automatically for MSIE. Will fall back to
958 other image-detection methods (i.e. "+image" action) for other
961 You must also define FEATURE_IMAGE_BLOCKING to use this feature.
963 It detects the following header pair as an image request:
964 "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)",
967 And the following as a HTML request:
968 "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)",
969 "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, * / *".
971 And no, I haven't got that backwards - IE is being wierd.
974 1) If you press shift-reload on a blocked HTML page, you get
975 the image "blocked" page, not the HTML "blocked" page.
976 2) Once an image "blocked" page has been sent, viewing it
977 in it's own browser window *should* bring up the HTML
978 "blocked" page, but it doesn't. You need to clear the
979 browser cache to get the HTML version again.
981 These limitations are due to IE making inconsistent choices
982 about which "Accept:" header to send. ])
985 AC_ARG_ENABLE(image-blocking,
986 [ --disable-image-blocking Don't try to figure out whether a request is
987 for an image or HTML - assume HTML.],
988 [enableval2=$enableval],
990 if test $enableval2 = yes; then
991 AC_DEFINE(FEATURE_IMAGE_BLOCKING,1,
992 [ Allow blocking using images as well as HTML.
993 If you do not define this then everything is blocked as HTML.
994 Note that this is required if you want to use FEATURE_IMAGE_DETECT_MSIE. ])
997 AC_ARG_ENABLE(acl-files,
998 [ --disable-acl-files Prevents the use of ACL files to control access to
999 the proxy by IP address.],
1000 [enableval2=$enableval],
1002 if test $enableval2 = yes; then
1003 AC_DEFINE(FEATURE_ACL,1,
1004 [ Define to 1 to allow the use of an ACL to control access to the proxy by IP address. ])
1007 AC_ARG_ENABLE(trust-files,
1008 [ --disable-trust-files Prevents the use of trust files.],
1009 [enableval2=$enableval],
1011 if test $enableval2 = yes; then
1012 AC_DEFINE(FEATURE_TRUST,1,
1013 [ Define to 1 to allow the use of trust files. ])
1016 AC_ARG_ENABLE(jar-files,
1017 [ --disable-jar-files Prevents the use of jar files to capture cookies.],
1018 [enableval2=$enableval],
1020 if test $enableval2 = yes; then
1021 AC_DEFINE(FEATURE_COOKIE_JAR,1,
1022 [ Define to 1 to allow the user to capture cookies. ])
1025 AC_ARG_ENABLE(editor,
1026 [ --disable-editor Prevents the use of the web-based actions file
1027 editor and web-based temporary disable setting.],
1028 [enableval2=$enableval],
1030 if test $enableval2 = yes; then
1031 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS,1,
1032 [ Define to 1 to enable the web-based configuration (actions file) editor.
1033 If you have a shared proxy, you might want to turn this off. ])
1036 AC_ARG_ENABLE(no-gifs,
1037 [ --enable-no-gifs Use politically correct PNG format instead of GIF
1038 for built-in images. May not work with all browsers.],
1039 [enableval2=$enableval],
1041 if test $enableval2 = yes; then
1042 AC_DEFINE(FEATURE_NO_GIFS,1,
1043 [ Deine to 1 to use PNG instead of GIF for built-in images. ])
1047 dnl pcre/pcrs is needed for CGI anyway, so
1048 dnl the choice is only between static and
1051 AC_ARG_ENABLE(dynamic-pcre,
1052 [ --disable-dynamic-pcre Use the built-in, static pcre, even if
1053 libpcre is available],
1054 [ if test $enableval = "no"; then have_pcre=no; fi ])
1056 AC_ARG_ENABLE(dynamic-pcrs,
1057 [ --disable-dynamic-pcrs Use the built-in, static pcrs, even if
1058 libpcrs is available],
1059 [ if test $enableval = "no"; then have_pcrs=no; fi ])
1062 # If we have libpcre and either we also have pcreposix or
1063 # we don't need pcreposix, then link pcre dynamically; else
1064 # build it and link statically
1066 if test $have_pcre = "yes"; then
1067 echo "using libpcre"
1070 LIBS="$LIBS -lpcre -lpcreposix"
1072 echo "using built-in static pcre"
1074 AC_DEFINE(STATIC_PCRE,1,
1075 [Define to 1 if PCRE should be statically built in instead of linking
1077 (This is determined by configure depending on the availiability of
1078 libpcre and user preferences). The name is ugly, but pcre needs it.
1079 Don't try to change this here! Use configure instead.])
1083 # If we have libpcrs and pcre is linked dynamically
1084 # then also link pcrs dynamically, else build and link
1087 if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
1088 echo "using libpcrs"
1092 echo "using built-in static pcrs"
1093 AC_DEFINE(STATIC_PCRS,1,
1094 [Define to 1 if PCRS should be statically built in instead of linking
1096 (This is determined by configure depending on the availiability of
1097 libpcrs and user preferences).
1098 Don't try to change this here! Use configure instead.])
1102 AC_SUBST(STATIC_PCRE_ONLY)
1103 AC_SUBST(STATIC_PCRS_ONLY)
1105 dnl =================================================================
1106 dnl config.h Header/footer
1107 dnl =================================================================
1110 [#ifndef CONFIG_H_INCLUDED
1111 #define CONFIG_H_INCLUDED
1113 /*********************************************************************
1117 * Purpose : This file should be the first thing included in every
1118 * .c file. (Before even system headers). It contains
1119 * #define statements for various features. It was
1120 * introduced because the compile command line started
1121 * getting ludicrously long with feature defines.
1123 * Copyright : Written by and Copyright (C) 2001 the SourceForge
1124 * Privoxy team. http://www.privoxy.org/
1126 * This program is free software; you can redistribute it
1127 * and/or modify it under the terms of the GNU General
1128 * Public License as published by the Free Software
1129 * Foundation; either version 2 of the License, or (at
1130 * your option) any later version.
1132 * This program is distributed in the hope that it will
1133 * be useful, but WITHOUT ANY WARRANTY; without even the
1134 * implied warranty of MERCHANTABILITY or FITNESS FOR A
1135 * PARTICULAR PURPOSE. See the GNU General Public
1136 * License for more details.
1138 * The GNU General Public License should be included with
1139 * this file. If not, you can view it at
1140 * http://www.gnu.org/copyleft/gpl.html
1141 * or write to the Free Software Foundation, Inc., 59
1142 * Temple Place - Suite 330, Boston, MA 02111-1307, USA.
1144 *********************************************************************/
1148 * It's too easy to accidentally use a Cygwin or MinGW32 version of config.h
1149 * under VC++, and it usually gives many wierd error messages. Let's make
1150 * the error messages understandable, by bailing out now.
1153 #error For MS VC++, please use vc_config_winthreads.h or vc_config_pthreads.h. You can usually do this by selecting the "Build", "Clean" menu option.
1154 #endif /* def _MSC_VER */
1163 * FIXME: Don't know what it does or why we need it.
1164 * (presumably something to do with ANSI Standard C?)
1168 #endif /* ndef __STDC__ */
1171 * Need to set up this define only for the Pthreads library for
1172 * Win32, available from http://sources.redhat.com/pthreads-win32/
1174 #if defined(FEATURE_PTHREAD) && defined(_WIN32)
1176 #endif /* defined(FEATURE_PTHREAD) && defined(_WIN32) */
1179 * BEOS does not currently support POSIX threads.
1180 * This *should* be detected by ./configure, but let's be sure.
1182 #if defined(FEATURE_PTHREAD) && defined(__BEOS__)
1183 #error BEOS does not support pthread - please run ./configure again with "--disable-pthread"
1185 #endif /* defined(FEATURE_PTHREAD) && defined(__BEOS__) */
1188 #endif /* CONFIG_H_INCLUDED */
1191 dnl =================================================================
1193 dnl =================================================================
1195 AC_ARG_WITH(docbook, dnl
1196 --with-docbook=<directory>
1197 Set the location of the dsssl stylesheet
1198 (default = search),[dnl
1202 dnl Check for jade, so we can build the documentation
1203 dnl Openjade is preferred according to docs, but jade
1204 dnl is *much* faster.
1205 AC_CHECK_PROGS(JADEBIN,jade openjade,false)
1208 dnl Checking for the docbook.dsl stylesheet file
1209 dnl It is still not portable (directory slash)
1210 dnl ^ Why not? All systems use / don't they?
1211 dnl Windows certainly can. Is this a Mac or
1212 dnl Amiga issue? -- Jon
1213 DKPREFIXCOPY=$DKPREFIX
1215 for i in $DKPREFIXCOPY /usr/share/sgml/docbook/stylesheet/dsssl/modular \
1216 /usr/share/sgml/docbook/dsssl-stylesheets /usr/share/sgml/docbkdsl \
1217 /usr/share/sgml/docbook-dsssl; do
1218 echo -n "checking for $i/html/docbook.dsl..."
1219 if test -f $i/html/docbook.dsl; then
1230 dnl where are the catalogs?
1231 for i in /usr/share/sgml/CATALOG.docbk30 \
1232 /usr/share/sgml/CATALOG.docbk31; do
1233 echo -n "checking for $i..."
1236 JADECAT="$JADECAT -c $i"
1245 dnl AC_ARG_WITH(db2html, dnl
1246 dnl --with-db2html=<path/executable>
1247 dnl Set the location of the docbook to html converter
1248 dnl (default = search),[dnl
1249 dnl DB2HTML=$withval
1251 dnl if ! test -x $DB2HTML; then
1255 dnl Check for a docbook -> HTML converter
1256 dnl AC_CHECK_PROGS(DB2HTML,db2html docbook2html,false)
1257 dnl AC_SUBST(DB2HTML)
1259 dnl Check for a text browser that supports -dump
1260 AC_CHECK_PROGS(WDUMP,w3m lynx links,false)
1263 dnl Check for man2html for docs.
1264 AC_CHECK_PROGS(MAN2HTML,man2html,false)
1268 dnl =================================================================
1270 dnl =================================================================
1272 dnl If we use rpm, we need to check where %_topdir is
1273 AC_CHECK_PROGS(RPMBIN,rpm,false)
1274 if test $RPMBIN != false; then
1275 RPM_BASE=`rpm --eval "%{_topdir}"`
1276 if test "$RPM_BASE" = ""; then
1277 RPM_BASE=/usr/src/redhat
1283 dnl =================================================================
1284 dnl Final cleanup and output
1285 dnl =================================================================
1287 dnl Remove the SPECIAL_CFLAGS stuff from CFLAGS, and add it seperately
1289 CFLAGS=$old_CFLAGS_nospecial
1290 AC_SUBST(SPECIAL_CFLAGS)
1292 AC_SUBST(PTHREAD_LIB)
1294 AC_OUTPUT(GNUmakefile doc/source/ldp.dsl)