1 dnl Process this file with autoconf to produce a configure script.
3 dnl $Id: configure.in,v 1.87 2002/12/28 04:10:22 david__schmidt 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.87 2002/12/28 04:10:22 david__schmidt
32 dnl Initial drop of dashboard instrumentation - enabled with
33 dnl --enable-activity-console
35 dnl Revision 1.86 2002/12/13 23:47:10 hal9
36 dnl Add openbsd special flags per gunner at styx2002.no-ip.org
38 dnl Revision 1.85 2002/11/27 12:40:54 oes
39 dnl Fixed broken handling of pre-set CFLAGS
41 dnl Revision 1.84 2002/10/24 22:24:57 hal9
42 dnl Make install: Minor clean up for variable handling.
44 dnl Revision 1.83 2002/10/24 16:32:41 hal9
45 dnl echo -n does not work with true /bin/sh. Use AC_MSG_CHECKING for docbook stuff.
47 dnl Revision 1.82 2002/09/27 04:24:07 hal9
48 dnl Minor change of "! test" to "test -ne" for Solaris.
50 dnl Revision 1.81 2002/09/27 00:38:44 hal9
51 dnl Some general cleanup of the user/group stuff. Including remove up to ':' to
52 dnl make Linux (?) compatible with other *nix. Better AC output stuff.
54 dnl Revision 1.80 2002/09/26 18:47:46 hal9
55 dnl This is most of Al's patch for --with-user and --with-group which tests that
56 dnl these are valid values, if specified. If not specified, they are left empty.
58 dnl Revision 1.79 2002/09/07 02:11:06 hal9
59 dnl Remove some testing stuff inadvertantly left in.
61 dnl Revision 1.78 2002/09/06 23:18:08 hal9
62 dnl Migrate PCRE_H_IN_SUBDIR from 3.0 branch for pcre/pcre.h on RH, etc.
64 dnl Revision 1.77 2002/09/06 13:23:03 oes
65 dnl Removed non-functional test for gcc support for -pthread
67 dnl Revision 1.76 2002/09/05 14:52:17 oes
68 dnl Synced in some changes fromm the stable branch:
69 dnl Fixed detection/inclusion of pcre.h, which is in a pcre subdir on RH
71 dnl Revision 1.75 2002/09/04 12:19:33 oes
72 dnl Resurrected acconfig.h and removed double quotes from AC_DEFINE params to enable build on older systems
74 dnl Revision 1.74 2002/09/03 17:31:33 oes
75 dnl Added workaround for very strange behaviour of AC_PROG_CC, which sets CFLAGS to -g -O2 if empty
77 dnl Revision 1.73 2002/06/05 00:26:21 hal9
78 dnl Move all doc build stuff to doc/source/GNUmakefile, leaving a 'make dok'
79 dnl target only in toplevel. Add DOC_STATUS variable so docs can be built without
80 dnl touching sgml source.
82 dnl Revision 1.72 2002/06/04 15:52:25 jongfoster
83 dnl Removing need for acconfig.h (apparently using acconfig.h is an
84 dnl obsolete coding style).
85 dnl Moving the DocBook stuff together
87 dnl Revision 1.71 2002/06/04 14:51:49 jongfoster
88 dnl Updating for new paths:
89 dnl - Source files in src/
90 dnl - Object files in obj/
92 dnl Revision 1.70 2002/05/27 23:26:34 mal0rd
93 dnl Made doc-generation configuration automatic.
94 dnl References to DB2HTML were removed, not used.
95 dnl --with-docbook now only needed if in odd path.
97 dnl Revision 1.69 2002/05/25 18:11:49 jongfoster
98 dnl Wahay!!! 3.0.x has branched!
99 dnl New development version is 3.1.1 alpha
101 dnl Revision 1.68 2002/05/25 16:54:54 jongfoster
102 dnl Detect if the compiler supports -pthread.
103 dnl Hopefully this will fix bug 560442. (I don't have a HP PA-RISC
104 dnl machine to test this!)
106 dnl Revision 1.67 2002/05/03 14:33:59 oes
107 dnl Generate doc/soucre/ldp.dsl
109 dnl Revision 1.66 2002/05/03 00:41:56 oes
110 dnl Set version to 2.9.15 to comply with new versioning scheme
112 dnl Revision 1.65 2002/04/25 19:13:57 morcego
113 dnl Removed RPM release number declaration on configure.in
114 dnl Changed makefile to use given value for RPM_PACKAGEV when on uploading
115 dnl targets (will produce an error, explaining who to do it, if no value
118 dnl Revision 1.64 2002/04/22 16:32:31 morcego
119 dnl configure.in, *.spec: Bumping release to 2 (2.9.14-2)
120 dnl -rh.spec: uid and gid are now macros
121 dnl -suse.spec: Changing the header Copyright to License (Copyright is
124 dnl Revision 1.63 2002/04/11 11:00:21 oes
125 dnl Applied Moritz' fix for socklen_t on Solaris
127 dnl Revision 1.62 2002/04/11 10:09:20 oes
130 dnl Revision 1.61 2002/04/10 18:14:45 morcego
131 dnl - (privoxy-rh.spec only) Relisting template files on the %%files section
132 dnl - (configure.in, privoxy-rh.spec) Bumped package release to 5
134 dnl Revision 1.60 2002/04/09 16:38:49 oes
135 dnl Added detection of missing config.h.in
137 dnl Revision 1.59 2002/04/06 20:23:55 jongfoster
138 dnl Removing unnessacery tests (C++, ranlib)
140 dnl Revision 1.58 2002/04/04 20:49:20 swa
141 dnl attempt to consolidate the
142 dnl different dokbook versions.
144 dnl Revision 1.57 2002/04/04 00:36:36 gliptak
145 dnl always use pcre for matching
147 dnl Revision 1.56 2002/04/03 22:28:03 gliptak
148 dnl Removed references to gnu_regex
150 dnl Revision 1.55 2002/04/03 03:54:38 gliptak
151 dnl Checking pcre version
153 dnl Revision 1.54 2002/04/01 00:54:24 gliptak
154 dnl More changes needed around regex support.
156 dnl Revision 1.53 2002/03/29 20:09:01 swa
159 dnl Revision 1.52 2002/03/29 19:51:40 gliptak
160 dnl Correcting compile problem with Debian
162 dnl Revision 1.51 2002/03/28 20:43:00 swa
163 dnl set make correctly
165 dnl Revision 1.50 2002/03/27 03:03:45 hal9
166 dnl Add test for man2html
168 dnl Revision 1.49 2002/03/27 02:19:52 david__schmidt
169 dnl More Mac OSX support:
170 dnl - Get rid of extraneous, noisy -pthread warnings
171 dnl - Define unix so we get oes' unix-tagged changes
173 dnl Revision 1.48 2002/03/26 22:29:54 swa
174 dnl we have a new homepage!
176 dnl Revision 1.47 2002/03/26 16:41:00 hal9
177 dnl Upped RPM Release to 3 (need to build new RH packages)
179 dnl Revision 1.46 2002/03/24 18:55:06 jongfoster
180 dnl Making Docbook work under Windows
182 dnl Revision 1.45 2002/03/24 14:19:55 swa
183 dnl set rpm package release in configure.in. nowhere else.
185 dnl Revision 1.44 2002/03/24 13:25:43 swa
186 dnl name change related issues
188 dnl Revision 1.43 2002/03/24 12:56:21 swa
189 dnl name change related issues.
191 dnl Revision 1.42 2002/03/22 18:11:37 jongfoster
192 dnl Bumping version number to 2.9.12
194 dnl Revision 1.41 2002/03/19 19:30:04 morcego
195 dnl - Fixing stylesheet checking on configure. If it is found, no further checks
198 dnl - configure will now check for db2html or docbook2html (should work now
199 dnl on SuSe without the docbktls package)
201 dnl Revision 1.40 2002/03/09 14:33:30 oes
202 dnl Fixing the (harmless) AC_CHECK_FILE warnings
204 dnl Revision 1.39 2002/03/08 16:46:13 oes
205 dnl Added --enable-no-gifs
207 dnl Revision 1.38 2002/03/08 14:13:50 morcego
208 dnl Fixing configure, to remove a command not found error.
210 dnl Revision 1.37 2002/03/08 12:58:21 oes
211 dnl Tiny bugfix in AC_ARG_WITH(debug)
213 dnl Revision 1.36 2002/03/06 23:50:36 morcego
214 dnl Will not test for a text browser if we are not using docbook.
216 dnl Revision 1.35 2002/03/06 21:55:52 morcego
217 dnl New configure option: --with-docbook=(yes|no|directory)
218 dnl Preliminary new platform detection code included. Will work with the
219 dnl old one for now. No use just trowing it away
221 dnl Revision 1.34 2002/03/06 20:57:00 morcego
222 dnl Fixing detection of stylesheets on SuSe.
224 dnl Revision 1.33 2002/03/05 17:31:11 morcego
225 dnl Search for docbook.dsl. Should solve portability problems for SuSe.
227 dnl Revision 1.32 2002/03/05 14:07:43 morcego
228 dnl configure now detects rpm topdir, and change GNUmakefile acordingly
229 dnl (based on sugestion by Sarantis Paskalis)
231 dnl Revision 1.31 2002/03/05 13:43:28 morcego
232 dnl Checking for text browser, so redhat-dok can work.
234 dnl Revision 1.30 2002/03/04 17:58:01 oes
235 dnl Deleted _DEBUG and PID_FILE_PATH
237 dnl Revision 1.29 2002/02/28 14:20:53 oes
238 dnl Fixed detection of gethost*_r functions on Solaris
240 dnl Revision 1.28 2002/02/27 15:02:38 oes
241 dnl Incremented version number
243 dnl Revision 1.27 2002/01/10 12:35:18 oes
244 dnl Added cross-compile defaults to the AC_CHECK_SIZEOF macros
245 dnl to silence autoconf warnings. Numbers are for Intel/Linux.
246 dnl Is there a better way?
248 dnl Revision 1.26 2002/01/09 14:29:49 oes
249 dnl - Added AC_CHECK_FUNC tests for the availability of
250 dnl gethostbyname_r, gethostbyaddr_r, gmtime_r and
251 dnl localtime_r, as well as AC_TRY_COMPILE tests to
252 dnl determine their signatures.
254 dnl - Fixed a bug with the init of CFLAGS that was
255 dnl reported by barsnick
257 dnl Revision 1.25 2002/01/04 15:27:18 oes
258 dnl Changed quoting of CODE_STATUS for use in make
260 dnl Revision 1.24 2001/12/30 14:07:31 steudten
261 dnl - Add signal handling (unix)
262 dnl - Add SIGHUP handler (unix)
263 dnl - Add creation of pidfile (unix)
264 dnl - Add action 'top' in rc file (RH)
265 dnl - Add entry 'SIGNALS' to manpage
266 dnl - Add exit message to logfile (unix)
268 dnl Revision 1.23 2001/12/09 20:24:42 david__schmidt
269 dnl Change from "alpha" to "beta" in configure.in
271 dnl Revision 1.22 2001/12/01 11:24:01 jongfoster
272 dnl Renaming Makefile.in to GNUmakefile.in so that non-GNU versions of
273 dnl make break in a more obvious way.
275 dnl Revision 1.21 2001/11/30 21:35:54 jongfoster
276 dnl Bumping version number to 2.9.10
278 dnl Revision 1.20 2001/10/23 21:24:09 jongfoster
279 dnl Support for FEATURE_CGI_EDIT_ACTIONS
281 dnl Revision 1.19 2001/10/07 15:33:14 oes
282 dnl Removed FEATURE_DENY_GZIP
283 dnl Bumped up version number
285 dnl Revision 1.18 2001/09/13 13:10:24 steudten
287 dnl PreWork for Debug Interface.
288 dnl Add new option "--with-debug" to enable debugging (flags aso.)
290 dnl Revision 1.17 2001/09/12 23:44:55 david__schmidt
291 dnl Mac OSX (Darwin) support added.
293 dnl Revision 1.16 2001/09/12 22:55:45 joergs
294 dnl AmigaOS support added.
296 dnl Revision 1.15 2001/09/12 17:28:59 david__schmidt
298 dnl OS/2 port: update autoconf'd support for the platform.
300 dnl Revision 1.14 2001/07/30 22:12:11 jongfoster
301 dnl Fixing Solaris build (I hope) and tidying up #defines:
302 dnl - All feature #defines are now of the form FEATURE_xxx
303 dnl - Permanently turned off WIN_GUI_EDIT
304 dnl - Permanently turned on WEBDAV and SPLIT_PROXY_ARGS
306 dnl Revision 1.13 2001/07/29 17:09:17 jongfoster
307 dnl Major changes to build system in order to fix these bugs:
308 dnl - pthreads under Linux was broken - changed -lpthread to -pthread
309 dnl - Compiling in MinGW32 mode under CygWin now correctly detects
310 dnl which shared libraries are available
311 dnl - Solaris support (?) (Not tested under Solaris yet)
313 dnl Revision 1.12 2001/07/25 19:16:27 oes
314 dnl Bumping version number to 2.9.8
316 dnl Revision 1.11 2001/07/21 18:00:07 jongfoster
317 dnl Bumping version number to 2.9.7
319 dnl Revision 1.10 2001/07/18 17:25:04 oes
322 dnl Revision 1.9 2001/07/15 19:45:13 jongfoster
323 dnl Added support for linking with POSIX threads library
325 dnl Revision 1.8 2001/07/15 17:54:29 jongfoster
326 dnl Renaming #define STATIC to STATIC_PCRE
327 dnl Adding new #define FEATURE_PTHREAD that will be used to enable
328 dnl POSIX threads support.
330 dnl Revision 1.7 2001/07/13 13:58:05 oes
331 dnl Completely reorganized the selection scheme for
332 dnl pcre, pcreposix, pcrs and gnu_regex:
334 dnl The presence of shared pcre, pcreposix or pcrs
335 dnl libraried is now autodetected. Additionally, the
336 dnl user can enforce using the built-in static variants
337 dnl by specifying --disable-dynamic-(pcre|pcrs).
338 dnl Care is taken to avoid that pcre is dyn, while pcreposix
339 dnl is static, if both are used and that pcrs is static if
342 dnl The choice between pcre, gnu or no regex for actionsfile
343 dnl URL matching is now via
344 dnl --(enable|disable)-regex-matching[=(gnu|pcre|no)] with the
345 dnl default being pcre.
347 dnl Revision 1.6 2001/06/29 21:56:40 oes
350 dnl Revision 1.5 2001/06/29 13:26:27 oes
351 dnl Introduced #define CODE_STATUS
353 dnl Revision 1.4 2001/05/29 09:50:24 jongfoster
354 dnl Unified blocklist/imagelist/permissionslist.
355 dnl File format is still under discussion, but the internal changes
356 dnl are (mostly) done.
358 dnl Also modified interceptor behaviour:
359 dnl - We now intercept all URLs beginning with one of the following
360 dnl prefixes (and *only* these prefixes):
362 dnl * http://ijbswa.sf.net/config/
363 dnl * http://ijbswa.sourceforge.net/config/
364 dnl - New interceptors "home page" - go to http://i.j.b/ to see it.
365 dnl - Internal changes so that intercepted and fast redirect pages
366 dnl are not replaced with an image.
367 dnl - Interceptors now have the option to send a binary page direct
368 dnl to the client. (i.e. ijb-send-banner uses this)
369 dnl - Implemented show-url-info interceptor. (Which is why I needed
370 dnl the above interceptors changes - a typical URL is
371 dnl "http://i.j.b/show-url-info?url=www.somesite.com/banner.gif".
372 dnl The previous mechanism would not have intercepted that, and
373 dnl if it had been intercepted then it then it would have replaced
374 dnl it with an image.)
376 dnl Revision 1.3 2001/05/22 18:46:04 oes
378 dnl - Enabled filtering banners by size rather than URL
379 dnl by adding patterns that replace all standard banner
380 dnl sizes with the "Junkbuster" gif to the re_filterfile
382 dnl - Enabled filtering WebBugs by providing a pattern
383 dnl which kills all 1x1 images
385 dnl - Added support for PCRE_UNGREEDY behaviour to pcrs,
386 dnl which is selected by the (nonstandard and therefore
387 dnl capital) letter 'U' in the option string.
388 dnl It causes the quantifiers to be ungreedy by default.
389 dnl Appending a ? turns back to greedy (!).
391 dnl - Added a new interceptor ijb-send-banner, which
392 dnl sends back the "Junkbuster" gif. Without imagelist or
393 dnl MSIE detection support, or if tinygif = 1, or the
394 dnl URL isn't recognized as an imageurl, a lame HTML
395 dnl explanation is sent instead.
397 dnl - Added new feature, which permits blocking remote
398 dnl script redirects and firing back a local redirect
400 dnl The feature is conditionally compiled, i.e. it
401 dnl can be disabled with --disable-fast-redirects,
402 dnl plus it must be activated by a "fast-redirects"
403 dnl line in the config file, has its own log level
404 dnl and of course wants to be displayed by show-proxy-args
405 dnl Note: Boy, all the #ifdefs in 1001 locations and
406 dnl all the fumbling with configure.in and acconfig.h
407 dnl were *way* more work than the feature itself :-(
409 dnl - Because a generic redirect template was needed for
410 dnl this, tinygif = 3 now uses the same.
412 dnl - Moved GIFs, and other static HTTP response templates
415 dnl - Some minor fixes
417 dnl - Removed some >400 CRs again (Jon, you really worked
420 dnl Revision 1.2 2001/05/20 01:21:20 jongfoster
421 dnl Version 2.9.4 checkin.
422 dnl - Merged popupfile and cookiefile, and added control over PCRS
423 dnl filtering, in new "permissionsfile".
424 dnl - Implemented LOG_LEVEL_FATAL, so that if there is a configuration
425 dnl file error you now get a message box (in the Win32 GUI) rather
426 dnl than the program exiting with no explanation.
427 dnl - Made killpopup use the PCRS MIME-type checking and HTTP-header
429 dnl - Removed tabs from "config"
430 dnl - Moved duplicated url parsing code in "loaders.c" to a new funcition.
431 dnl - Bumped up version number.
433 dnl Revision 1.1.1.1 2001/05/15 13:58:50 oes
434 dnl Initial import of version 2.9.3 source tree
439 dnl =================================================================
440 dnl AutoConf Initialization
441 dnl =================================================================
443 AC_REVISION($Revision: 1.87 $)
445 if test ! -f src/config.h.in; then
446 echo "You need to run autoheader first. "
447 echo -n "Shall I do this for you now? (y/n) "
449 if test "$answer" != "y"; then
456 AC_CONFIG_HEADER([src/config.h])
460 dnl =================================================================
461 dnl Application version number
462 dnl =================================================================
469 dnl CODE_STATUS can be "alpha", "beta", or "stable", and will be
470 dnl used for CGI output
472 dnl =================================================================
473 dnl Substitute the version numbers
474 dnl =================================================================
476 AC_SUBST(VERSION_MAJOR)
477 AC_SUBST(VERSION_MINOR)
478 AC_SUBST(VERSION_POINT)
479 AC_SUBST(CODE_STATUS)
483 AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR},
484 [Version number - Major (X._._).])
485 AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR},
486 [Version number - Minor (_.X._).])
487 AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT},
488 [Version number - Point (_._.X).])
489 AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}",
490 [Version number, as a string.])
491 AC_DEFINE_UNQUOTED(CODE_STATUS,"${CODE_STATUS}",
492 [Status of the code: "alpha", "beta" or "stable".])
494 dnl =================================================================
495 dnl Checks for programs needed to build.
496 dnl =================================================================
498 dnl Keep AC_PROG_CC from setting its own defaults:
499 if test "X$CFLAGS" = "X"; then
510 AC_CHECK_PROG(GDB,gdb,yes,no)
511 AC_PATH_PROG(BGROUPS,groups,no,/bin:/usr/bin:/usr/local/bin)
512 AC_PATH_PROG(ID,id,no,/bin:/usr/bin:/usr/local/bin)
516 dnl =================================================================
517 dnl debug, gcc and gdb support
518 dnl =================================================================
521 [ --with-debug Enable debug mode],
523 if test "x$withval" != "xno" ; then
524 if test $ac_cv_prog_cc_g = yes; then
525 if test "$GCC" = yes; then
527 CFLAGS="$CFLAGS -ggdb"
531 CFLAGS="$CFLAGS -Wshadow -Wconversion"
539 if test "X$CFLAGS" = "X "; then # if CFLAGS were unset (see above)
540 if test "$GCC" = yes; then
547 dnl =================================================================
548 dnl Check for user and group validity
549 dnl =================================================================
551 $ID privoxy >/dev/null 2>/dev/null
552 if test $? -ne 0 ; then
553 AC_MSG_WARN(There is no user 'privoxy' on this system)
555 AC_MSG_CHECKING([for user])
557 [ --with-user=privoxy Set user under which privoxy will run],
559 if test "x$withval" != "xyes"; then
560 if test $ID = no ; then
561 AC_MSG_WARN(There is no 'id' program on this system)
563 AC_MSG_RESULT($with_user)
564 $ID $with_user 2>/dev/null >/dev/null
565 if test $? -eq 0 ; then
568 AC_MSG_ERROR(There is no user '$with_user' on this system)
572 AC_MSG_ERROR(We need a user if you give me this parameter)
576 if test $ID = no ; then
577 AC_MSG_WARN(There is no 'id' program on this system)
579 AC_MSG_RESULT(none specified)
586 AC_MSG_CHECKING([for group])
588 [ --with-group=privoxy Set group for privoxy],
590 if test "x$withval" != "xyes"; then
591 if test $BGROUPS = no ; then
592 AC_MSG_ERROR(There is no 'groups' program on this system)
594 AC_MSG_RESULT($with_group)
595 $BGROUPS $USER >/dev/null
596 if test $? -eq 0 ; then
597 # FIXME: this fails if valid group, but not first group
599 if test "$with_group" != "`$BGROUPS $USER | sed 's/.*: //' 2>/dev/null |$AWK '{print $1}'`" ; then
600 AC_MSG_ERROR(The given value '$withval' does not match group entry)
605 AC_MSG_ERROR(There is no group entry for user '$USER')
609 AC_MSG_ERROR(We need a group if you give me this parameter)
613 if test $BGROUPS = no ; then
614 AC_MSG_WARN(There is no 'groups' program on this system)
616 AC_MSG_RESULT(none specified)
623 dnl =================================================================
624 dnl additional gcc flags
625 dnl =================================================================
628 CFLAGS="-pipe $CFLAGS"
632 dnl =================================================================
634 dnl =================================================================
636 dnl Must do this first.
638 dnl Reason: This sets CFLAGS in order to switch the Cygwin compiler
639 dnl into Cygwin or MinGW32 modes. Depending on the mode selected,
640 dnl the compiler will use completely different sets of library
641 dnl and include files.
643 dnl =================================================================
648 if test "$MINGW32" = "yes"; then
651 if test "$CYGWIN" = "yes"; then
658 dnl Decide what to do based on target_type
659 dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
660 dnl This is because we don't know yet whether pthread is enabled.
662 AC_ARG_ENABLE(mingw32,
663 [ --enable-mingw32 Use mingw32 for a Windows GUI],
664 [if test $enableval = yes; then
668 if test $target_type = mingw; then
670 SPECIAL_CFLAGS="-mwindows -mno-cygwin"
671 PTHREAD_LIB=-lpthreadGC
672 echo "Using mingw32 (Win32 GUI)"
675 if test $target_type = cygwin; then
676 SPECIAL_CFLAGS="-mno-win32"
678 echo "Using Cygnus (Win32 command line)"
681 PTHREAD_LIB=-lpthread
686 dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
687 old_CFLAGS_nospecial=$CFLAGS
688 CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
690 # Hack to force AutoConf to use the CFLAGS we just set
691 dnl Warning: This may break with a future version of Autoconf
692 dnl Tested with autoconf 2.13
693 ac_cpp='$CPP $CPPFLAGS $SPECIAL_CFLAGS'
694 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
695 ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
698 dnl =================================================================
700 dnl =================================================================
702 AC_CHECK_HEADER(pthread.h, [have_pthread=yes], [have_pthread=no])
704 AC_ARG_ENABLE(pthread,
705 [ --disable-pthread Don't use POSIX threads (pthreads)],
706 [if test $enableval = no; then
711 if test $have_pthread = yes; then
713 AC_DEFINE(FEATURE_PTHREAD,1,
714 [Define to use POSIX threads instead of native threads.])
715 echo Using POSIX threads
716 if test "$GCC" = "yes"; then
717 # Set a GCC specific switch:
718 if test "$target_type" = "unix"; then
719 # This compiler switch makes GCC on Linux thread-safe
720 # However, it's not supported on most other OS.
722 SPECIAL_CFLAGS="-pthread"
727 echo Using native threads
730 AC_SUBST(PTHREAD_ONLY)
732 dnl =================================================================
733 dnl Support for thread-safe versions of gethostbyaddr, gethostbyname,
734 dnl gmtime and localtime
735 dnl =================================================================
737 dnl Next line needed to find the gethost*_r functions on Solaris
738 AC_CHECK_LIB(nsl, gethostbyname)
740 AC_CHECK_FUNC(gethostbyaddr_r, [
741 AC_MSG_CHECKING([signature of gethostbyaddr_r])
745 struct hostent *h, *hp;
748 (void) gethostbyaddr_r(a, l, t, h, b, bl, &hp, &e)
750 AC_DEFINE(HAVE_GETHOSTBYADDR_R_8_ARGS,1,
751 [Define if gethostbyaddr_r() exists and takes 8 arguments])
752 AC_MSG_RESULT([8 args])
760 (void) gethostbyaddr_r(a, l, t, h, b, bl, &e)
762 AC_DEFINE(HAVE_GETHOSTBYADDR_R_7_ARGS,1,
763 [Define if gethostbyaddr_r() exists and takes 7 arguments])
764 AC_MSG_RESULT([7 args])
769 struct hostent_data *d;
773 (void) gethostbyaddr_r(a, l, t, h, d)
775 AC_DEFINE(HAVE_GETHOSTBYADDR_R_5_ARGS,1,
776 [Define if gethostbyaddr_r() exists and takes 5 arguments])
777 AC_MSG_RESULT([5 args])
779 AC_MSG_RESULT(unrecognised)
787 AC_CHECK_FUNC(gethostbyname_r, [
788 AC_MSG_CHECKING([signature of gethostbyname_r])
792 struct hostent *h, *r;
795 (void) gethostbyname_r(n, h, b, bl, &r, &e)
797 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARGS,1,
798 [Define if gethostbyname_r() exists and takes 6 arguments])
799 AC_MSG_RESULT([6 args])
807 (void) gethostbyname_r(n, h, b, bl, &e)
809 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARGS,1,
810 [Define if gethostbyname_r() exists and takes 5 arguments])
811 AC_MSG_RESULT([5 args])
816 struct hostent_data *d;
819 (void) gethostbyname_r(n, h, d)
821 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARGS,1,
822 [Define if gethostbyname_r() exists and takes 3 arguments])
823 AC_MSG_RESULT([3 args])
825 AC_MSG_RESULT(unrecognised)
833 AC_CHECK_FUNC(gmtime_r, [
834 AC_MSG_CHECKING([signature of gmtime_r])
840 (void) gmtime_r(t, tm)
843 AC_DEFINE(HAVE_GMTIME_R,1,
844 [Define if gmtime_r(struct time *, struct tm *) exists])
846 AC_MSG_RESULT(unrecognised)
852 AC_CHECK_FUNC(localtime_r, [
853 AC_MSG_CHECKING([signature of localtime_r])
859 (void) localtime_r(t, tm)
862 AC_DEFINE(HAVE_LOCALTIME_R,1,
863 [Define if localtime_r(struct time *, struct tm *) exists])
865 AC_MSG_RESULT(unrecognised)
871 dnl =================================================================
873 dnl FIXME: Not tested on Solaris yet...
874 dnl ISFIXED: Have tested it on Solaris, but there are other ways to
875 dnl make these checks generic, e.g.:
876 dnl AC_CHECK_FUNC(getsockopt, , AC_CHECK_LIB(socket, getsockopt))
877 dnl (Moritz Barsnick <moritz@barsnick.net>)
878 dnl =================================================================
884 *-solaris*) SOCKET_LIB="-lsocket -lnsl"
885 AC_DEFINE(__EXTENSIONS__,1,
886 [Define to 1 on Solaris. Do not define on other platforms.])
887 if test "$GCC" = "yes"; then
888 # Set a GCC specific switch:
889 # This compiler switch makes Solaris thread-safe
891 SPECIAL_CFLAGS="-pthreads"
893 # What do we do without GCC? Guess this:
894 SPECIAL_CFLAGS="-D_REENTRANT"
901 dnl =================================================================
902 dnl Solaris problem, and others perhaps (socklen_t is undefined)
903 dnl =================================================================
905 AC_MSG_CHECKING([for socklen_t])
906 AC_EGREP_HEADER(socklen_t, sys/socket.h, AC_MSG_RESULT([yes]),
908 AC_DEFINE(socklen_t,int,
909 [ Define to 'int' if <sys/socket.h> doesn't have it. ]))
912 dnl =================================================================
914 dnl =================================================================
917 *-os2-emx*) SOCKET_LIB=-lsocket
923 dnl =================================================================
925 dnl =================================================================
928 *-apple-darwin*) SPECIAL_CFLAGS="-Dunix"
932 dnl =================================================================
934 dnl =================================================================
937 *-apple-darwin*) SPECIAL_CFLAGS="-Dunix"
941 dnl =================================================================
943 dnl =================================================================
946 *-openbsd*) SPECIAL_CFLAGS="$SPECIAL_CFLAGS -Dunix"
950 dnl =================================================================
952 dnl =================================================================
957 *-amigaos) AMIGAOS_ONLY=
961 AC_SUBST(AMIGAOS_ONLY)
963 dnl =================================================================
964 dnl Check for standard compiler stuff
965 dnl =================================================================
976 AC_CHECK_SIZEOF(int, 4)
977 AC_CHECK_SIZEOF(char *, 4)
978 AC_CHECK_SIZEOF(long, 4)
979 AC_CHECK_SIZEOF(long long, 8)
980 AC_CHECK_SIZEOF(size_t, 4)
982 dnl Checks for header files.
983 dnl AC_HEADER_SYS_WAIT
984 dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h)
985 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])
987 dnl Checks for library functions.
989 dnl AC_CHECK_FUNC(strstr)
990 dnl bcopy and memmove are for PCRE
991 AC_CHECK_FUNCS([strerror bcopy memmove])
992 AC_PROG_GCC_TRADITIONAL
993 dnl uncommenting does not work for swa. suse linux
997 dnl uncommenting does not work for swa. suse linux
999 AC_CHECK_FUNCS([atexit getcwd gethostbyaddr gethostbyname inet_ntoa localtime_r memchr memmove memset regcomp select setlocale socket strchr strdup strerror strftime strstr strtoul])
1002 dnl =================================================================
1003 dnl Checks for libraries.
1004 dnl =================================================================
1005 dnl Note: Some systems may have the library but not the system header
1006 dnl file, so we must check for both.
1007 dnl Also check for correct version
1008 AC_CHECK_LIB(pcre, pcre_compile, [
1009 AC_CHECK_HEADER(pcre.h, [
1010 AC_EGREP_HEADER(pcre_fullinfo, pcre.h, [have_pcre=yes], [AC_MSG_WARN([[pcre old version installed]]); have_pcre=no])
1012 AC_CHECK_HEADER(pcre/pcre.h, [
1013 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])
1018 AC_CHECK_LIB(pcreposix, regcomp, [
1019 AC_CHECK_HEADER(pcreposix.h, [
1020 AC_EGREP_HEADER(pcreposix_regerror, pcreposix.h, [AC_MSG_WARN([[pcreposix old version installed]]); have_pcreposix=no], [have_pcreposix=yes])
1022 AC_CHECK_HEADER(pcre/pcreposix.h, [
1023 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)])
1024 ], [have_pcreposix=no])
1026 ], [have_pcreposix=no], -lpcre)
1028 AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no], -lpcre)
1030 dnl =================================================================
1032 dnl =================================================================
1035 [Always define this, for thread safety on some platforms.])
1037 dnl =================================================================
1039 dnl =================================================================
1041 AC_ARG_ENABLE(toggle,
1042 [ --disable-toggle Don't support temporary disable],
1043 [enableval2=$enableval],
1045 if test $enableval2 = yes; then
1046 AC_DEFINE(FEATURE_TOGGLE,1,
1047 [ Allow Privoxy to be "disabled" so it is just a normal non-blocking
1048 non-anonymizing proxy. This is useful if you're trying to access a
1049 blocked or broken site - just change the setting in the config file,
1050 or use the handy "Disable" menu option in the Windows GUI. ])
1053 AC_ARG_ENABLE(force,
1054 [ --disable-force Don't allow single-page disable],
1055 [enableval2=$enableval],
1057 if test $enableval2 = yes; then
1058 AC_DEFINE(FEATURE_FORCE_LOAD,1,
1059 [ Bypass filtering for 1 page only. ])
1062 AC_ARG_ENABLE(fast-redirects,
1063 [ --disable-fast-redirects Don't support fast redirects],
1064 [enableval2=$enableval],
1066 if test $enableval2 = yes; then
1067 AC_DEFINE(FEATURE_FAST_REDIRECTS,1,
1068 [ Locally redirect remote script-redirect URLs. ])
1071 AC_ARG_ENABLE(killpopup,
1072 [ --disable-killpopup Never block popups],
1073 [enableval2=$enableval],
1075 if test $enableval2 = yes; then
1076 AC_DEFINE(FEATURE_KILL_POPUPS,1,
1077 [ Kills JavaScript popups - window.open, onunload, etc. ])
1080 AC_ARG_ENABLE(stats,
1081 [ --disable-stats Don't keep statistics],
1082 [enableval2=$enableval],
1084 if test $enableval2 = yes; then
1085 AC_DEFINE(FEATURE_STATISTICS,1,
1086 [ Enables statistics function. ])
1089 AC_ARG_ENABLE(activity-console,
1090 [ --enable-activity-console Gather and send extended statistics to the activity console],
1091 [enableval2=$enableval],
1093 if test $enableval2 = yes; then
1095 AC_DEFINE(FEATURE_ACTIVITY_CONSOLE,1,
1096 [ Enables sending statistics to the activity console. This is currently
1097 experimental, and will require some porting work for a few more platforms. ])
1101 AC_SUBST(ACTIVITY_ONLY)
1103 AC_ARG_ENABLE(ie-images,
1104 [ --enable-ie-images Don't auto-detect whether a request from MS Internet
1105 Explorer is for an image or HTML.],
1106 [enableval2=$enableval],
1108 if test $enableval2 = yes; then
1109 AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE,1,
1110 [ Detect image requests automatically for MSIE. Will fall back to
1111 other image-detection methods (i.e. ´´+image´´ action) for other
1114 You must also define FEATURE_IMAGE_BLOCKING to use this feature.
1116 It detects the following header pair as an image request:
1117 ´´User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)´´,
1118 ´´Accept: * / *´´.
1120 And the following as a HTML request:
1121 User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0),
1122 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, * / *.
1124 And no, I haven't got that backwards - IE is being wierd.
1127 1) If you press shift-reload on a blocked HTML page, you get
1128 the image blocked page, not the HTML ´´blocked´´ page.
1129 2) Once an image ´´blocked´´ page has been sent, viewing it
1130 in it's own browser window *should* bring up the HTML
1131 ´´blocked´´ page, but it doesn't. You need to clear the
1132 browser cache to get the HTML version again.
1134 These limitations are due to IE making inconsistent choices
1135 about which ´´Accept:´´ header to send. ])
1138 AC_ARG_ENABLE(image-blocking,
1139 [ --disable-image-blocking Don't try to figure out whether a request is
1140 for an image or HTML - assume HTML.],
1141 [enableval2=$enableval],
1143 if test $enableval2 = yes; then
1144 AC_DEFINE(FEATURE_IMAGE_BLOCKING,1,
1145 [ Allow blocking using images as well as HTML.
1146 If you do not define this then everything is blocked as HTML.
1147 Note that this is required if you want to use FEATURE_IMAGE_DETECT_MSIE. ])
1150 AC_ARG_ENABLE(acl-files,
1151 [ --disable-acl-files Prevents the use of ACL files to control access to
1152 the proxy by IP address.],
1153 [enableval2=$enableval],
1155 if test $enableval2 = yes; then
1156 AC_DEFINE(FEATURE_ACL,1,
1157 [ Define to 1 to allow the use of an ACL to control access to the proxy by IP address. ])
1160 AC_ARG_ENABLE(trust-files,
1161 [ --disable-trust-files Prevents the use of trust files.],
1162 [enableval2=$enableval],
1164 if test $enableval2 = yes; then
1165 AC_DEFINE(FEATURE_TRUST,1,
1166 [ Define to 1 to allow the use of trust files. ])
1169 AC_ARG_ENABLE(jar-files,
1170 [ --disable-jar-files Prevents the use of jar files to capture cookies.],
1171 [enableval2=$enableval],
1173 if test $enableval2 = yes; then
1174 AC_DEFINE(FEATURE_COOKIE_JAR,1,
1175 [ Define to 1 to allow the user to capture cookies. ])
1178 AC_ARG_ENABLE(editor,
1179 [ --disable-editor Prevents the use of the web-based actions file
1180 editor and web-based temporary disable setting.],
1181 [enableval2=$enableval],
1183 if test $enableval2 = yes; then
1184 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS,1,
1185 [ Define to 1 to enable the web-based configuration (actions file) editor.
1186 If you have a shared proxy, you might want to turn this off. ])
1189 AC_ARG_ENABLE(no-gifs,
1190 [ --enable-no-gifs Use politically correct PNG format instead of GIF
1191 for built-in images. May not work with all browsers.],
1192 [enableval2=$enableval],
1194 if test $enableval2 = yes; then
1195 AC_DEFINE(FEATURE_NO_GIFS,1,
1196 [ Define to 1 to use PNG instead of GIF for built-in images. ])
1199 dnl pcre/pcrs is needed for CGI anyway, so
1200 dnl the choice is only between static and
1203 AC_ARG_ENABLE(dynamic-pcre,
1204 [ --disable-dynamic-pcre Use the built-in, static pcre, even if
1205 libpcre is available],
1206 [ if test $enableval = "no"; then have_pcre=no; fi ])
1208 AC_ARG_ENABLE(dynamic-pcrs,
1209 [ --disable-dynamic-pcrs Use the built-in, static pcrs, even if
1210 libpcrs is available],
1211 [ if test $enableval = "no"; then have_pcrs=no; fi ])
1214 # If we have libpcre and either we also have pcreposix or
1215 # we don't need pcreposix, then link pcre dynamically; else
1216 # build it and link statically
1218 if test $have_pcre = "yes"; then
1219 echo "using libpcre"
1222 LIBS="$LIBS -lpcre -lpcreposix"
1224 echo "using built-in static pcre"
1226 AC_DEFINE(STATIC_PCRE,1,
1227 [Define to 1 if PCRE should be statically built in instead of linking
1229 (This is determined by configure depending on the availiability of
1230 libpcre and user preferences). The name is ugly, but pcre needs it.
1231 Don't try to change this here! Use configure instead.])
1235 # If we have libpcrs and pcre is linked dynamically
1236 # then also link pcrs dynamically, else build and link
1239 if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
1240 echo "using libpcrs"
1244 echo "using built-in static pcrs"
1245 AC_DEFINE(STATIC_PCRS,1,
1246 [Define to 1 if PCRS should be statically built in instead of linking
1248 (This is determined by configure depending on the availiability of
1249 libpcrs and user preferences).
1250 Don't try to change this here! Use configure instead.])
1254 AC_SUBST(STATIC_PCRE_ONLY)
1255 AC_SUBST(STATIC_PCRS_ONLY)
1257 dnl =================================================================
1259 dnl =================================================================
1261 AC_ARG_WITH(docbook, dnl
1262 --with-docbook=<directory>
1263 Set the location of the dsssl stylesheet
1264 (default = search),[dnl
1268 dnl Check for jade, so we can build the documentation
1269 dnl Openjade is preferred according to docs, but jade
1270 dnl is *much* faster.
1271 AC_CHECK_PROGS(JADEBIN,jade openjade,false)
1274 dnl Checking for the docbook.dsl stylesheet file
1275 dnl It is still not portable (directory slash)
1276 dnl ^ Why not? All systems use / don't they?
1277 dnl Windows certainly can. Is this a Mac or
1278 dnl Amiga issue? -- Jon /dsssl/docbook/html/docbook.dsl
1279 DKPREFIXCOPY=$DKPREFIX
1281 for i in $DKPREFIXCOPY /usr/share/sgml/docbook/stylesheet/dsssl/modular \
1282 /usr/share/sgml/docbook/dsssl-stylesheets /usr/share/sgml/docbkdsl \
1283 /usr/share/sgml/docbook-dsssl /usr/local/share/sgml/docbook/dsssl/modular; do
1284 dnl echo -n does not fly with /bin/sh.
1285 dnl echo -n "checking for $i/html/docbook.dsl..."
1286 AC_MSG_CHECKING([for $i])
1287 if test -f $i/html/docbook.dsl; then
1298 dnl where are the catalogs?
1299 for i in /usr/share/sgml/CATALOG.docbk30 \
1300 /usr/share/sgml/CATALOG.docbk31 \
1301 /usr/local/share/sgml/docbook/3.0/docbook.cat \
1302 /usr/local/share/sgml/docbook/3.1/docbook.cat \
1304 dnl echo -n "checking for $i..."
1305 AC_MSG_CHECKING([for $i])
1308 JADECAT="$JADECAT -c $i"
1317 dnl AC_ARG_WITH(db2html, dnl
1318 dnl --with-db2html=<path/executable>
1319 dnl Set the location of the docbook to html converter
1320 dnl (default = search),[dnl
1321 dnl DB2HTML=$withval
1323 dnl if ! test -x $DB2HTML; then
1327 dnl Check for a docbook -> HTML converter
1328 dnl AC_CHECK_PROGS(DB2HTML,db2html docbook2html,false)
1329 dnl AC_SUBST(DB2HTML)
1331 dnl Check for a text browser that supports -dump
1332 AC_CHECK_PROGS(WDUMP,w3m lynx links,false)
1335 dnl Check for man2html for docs.
1336 AC_CHECK_PROGS(MAN2HTML,man2html,false)
1339 dnl Set doc status, used for conditional content inclusions
1341 if test $CODE_STATUS = alpha; then
1342 DOC_STATUS="-ip-alpha -ip-not-stable"
1344 if test $CODE_STATUS = beta; then
1345 DOC_STATUS="-ip-beta -ip-not-stable"
1347 if test $CODE_STATUS = stable; then
1348 DOC_STATUS="-ip-stable"
1350 echo "checking for doc status flags... $DOC_STATUS"
1351 AC_SUBST(DOC_STATUS)
1353 dnl =================================================================
1355 dnl =================================================================
1357 dnl If we use rpm, we need to check where %_topdir is
1358 AC_CHECK_PROGS(RPMBIN,rpm,false)
1359 if test $RPMBIN != false; then
1360 RPM_BASE=`rpm --eval "%{_topdir}"`
1361 if test "$RPM_BASE" = ""; then
1362 RPM_BASE=/usr/src/redhat
1368 dnl =================================================================
1369 dnl Final cleanup and output
1370 dnl =================================================================
1372 dnl Remove the SPECIAL_CFLAGS stuff from CFLAGS, and add it seperately
1374 CFLAGS=$old_CFLAGS_nospecial
1375 AC_SUBST(SPECIAL_CFLAGS)
1377 AC_SUBST(PTHREAD_LIB)
1379 AC_OUTPUT(GNUmakefile doc/source/ldp.dsl doc/source/GNUmakefile)