1 dnl Process this file with autoconf to produce a configure script.
3 dnl $Id: configure.in,v 1.88 2003/03/23 02:15:51 hal9 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.88 2003/03/23 02:15:51 hal9
32 dnl Apply Docbook/FreeBSD patch from a.go at tiscali.nl. Thanks!
34 dnl Revision 1.87 2002/12/28 04:10:22 david__schmidt
35 dnl Initial drop of dashboard instrumentation - enabled with
36 dnl --enable-activity-console
38 dnl Revision 1.86 2002/12/13 23:47:10 hal9
39 dnl Add openbsd special flags per gunner at styx2002.no-ip.org
41 dnl Revision 1.85 2002/11/27 12:40:54 oes
42 dnl Fixed broken handling of pre-set CFLAGS
44 dnl Revision 1.84 2002/10/24 22:24:57 hal9
45 dnl Make install: Minor clean up for variable handling.
47 dnl Revision 1.83 2002/10/24 16:32:41 hal9
48 dnl echo -n does not work with true /bin/sh. Use AC_MSG_CHECKING for docbook stuff.
50 dnl Revision 1.82 2002/09/27 04:24:07 hal9
51 dnl Minor change of "! test" to "test -ne" for Solaris.
53 dnl Revision 1.81 2002/09/27 00:38:44 hal9
54 dnl Some general cleanup of the user/group stuff. Including remove up to ':' to
55 dnl make Linux (?) compatible with other *nix. Better AC output stuff.
57 dnl Revision 1.80 2002/09/26 18:47:46 hal9
58 dnl This is most of Al's patch for --with-user and --with-group which tests that
59 dnl these are valid values, if specified. If not specified, they are left empty.
61 dnl Revision 1.79 2002/09/07 02:11:06 hal9
62 dnl Remove some testing stuff inadvertantly left in.
64 dnl Revision 1.78 2002/09/06 23:18:08 hal9
65 dnl Migrate PCRE_H_IN_SUBDIR from 3.0 branch for pcre/pcre.h on RH, etc.
67 dnl Revision 1.77 2002/09/06 13:23:03 oes
68 dnl Removed non-functional test for gcc support for -pthread
70 dnl Revision 1.76 2002/09/05 14:52:17 oes
71 dnl Synced in some changes fromm the stable branch:
72 dnl Fixed detection/inclusion of pcre.h, which is in a pcre subdir on RH
74 dnl Revision 1.75 2002/09/04 12:19:33 oes
75 dnl Resurrected acconfig.h and removed double quotes from AC_DEFINE params to enable build on older systems
77 dnl Revision 1.74 2002/09/03 17:31:33 oes
78 dnl Added workaround for very strange behaviour of AC_PROG_CC, which sets CFLAGS to -g -O2 if empty
80 dnl Revision 1.73 2002/06/05 00:26:21 hal9
81 dnl Move all doc build stuff to doc/source/GNUmakefile, leaving a 'make dok'
82 dnl target only in toplevel. Add DOC_STATUS variable so docs can be built without
83 dnl touching sgml source.
85 dnl Revision 1.72 2002/06/04 15:52:25 jongfoster
86 dnl Removing need for acconfig.h (apparently using acconfig.h is an
87 dnl obsolete coding style).
88 dnl Moving the DocBook stuff together
90 dnl Revision 1.71 2002/06/04 14:51:49 jongfoster
91 dnl Updating for new paths:
92 dnl - Source files in src/
93 dnl - Object files in obj/
95 dnl Revision 1.70 2002/05/27 23:26:34 mal0rd
96 dnl Made doc-generation configuration automatic.
97 dnl References to DB2HTML were removed, not used.
98 dnl --with-docbook now only needed if in odd path.
100 dnl Revision 1.69 2002/05/25 18:11:49 jongfoster
101 dnl Wahay!!! 3.0.x has branched!
102 dnl New development version is 3.1.1 alpha
104 dnl Revision 1.68 2002/05/25 16:54:54 jongfoster
105 dnl Detect if the compiler supports -pthread.
106 dnl Hopefully this will fix bug 560442. (I don't have a HP PA-RISC
107 dnl machine to test this!)
109 dnl Revision 1.67 2002/05/03 14:33:59 oes
110 dnl Generate doc/soucre/ldp.dsl
112 dnl Revision 1.66 2002/05/03 00:41:56 oes
113 dnl Set version to 2.9.15 to comply with new versioning scheme
115 dnl Revision 1.65 2002/04/25 19:13:57 morcego
116 dnl Removed RPM release number declaration on configure.in
117 dnl Changed makefile to use given value for RPM_PACKAGEV when on uploading
118 dnl targets (will produce an error, explaining who to do it, if no value
121 dnl Revision 1.64 2002/04/22 16:32:31 morcego
122 dnl configure.in, *.spec: Bumping release to 2 (2.9.14-2)
123 dnl -rh.spec: uid and gid are now macros
124 dnl -suse.spec: Changing the header Copyright to License (Copyright is
127 dnl Revision 1.63 2002/04/11 11:00:21 oes
128 dnl Applied Moritz' fix for socklen_t on Solaris
130 dnl Revision 1.62 2002/04/11 10:09:20 oes
133 dnl Revision 1.61 2002/04/10 18:14:45 morcego
134 dnl - (privoxy-rh.spec only) Relisting template files on the %%files section
135 dnl - (configure.in, privoxy-rh.spec) Bumped package release to 5
137 dnl Revision 1.60 2002/04/09 16:38:49 oes
138 dnl Added detection of missing config.h.in
140 dnl Revision 1.59 2002/04/06 20:23:55 jongfoster
141 dnl Removing unnessacery tests (C++, ranlib)
143 dnl Revision 1.58 2002/04/04 20:49:20 swa
144 dnl attempt to consolidate the
145 dnl different dokbook versions.
147 dnl Revision 1.57 2002/04/04 00:36:36 gliptak
148 dnl always use pcre for matching
150 dnl Revision 1.56 2002/04/03 22:28:03 gliptak
151 dnl Removed references to gnu_regex
153 dnl Revision 1.55 2002/04/03 03:54:38 gliptak
154 dnl Checking pcre version
156 dnl Revision 1.54 2002/04/01 00:54:24 gliptak
157 dnl More changes needed around regex support.
159 dnl Revision 1.53 2002/03/29 20:09:01 swa
162 dnl Revision 1.52 2002/03/29 19:51:40 gliptak
163 dnl Correcting compile problem with Debian
165 dnl Revision 1.51 2002/03/28 20:43:00 swa
166 dnl set make correctly
168 dnl Revision 1.50 2002/03/27 03:03:45 hal9
169 dnl Add test for man2html
171 dnl Revision 1.49 2002/03/27 02:19:52 david__schmidt
172 dnl More Mac OSX support:
173 dnl - Get rid of extraneous, noisy -pthread warnings
174 dnl - Define unix so we get oes' unix-tagged changes
176 dnl Revision 1.48 2002/03/26 22:29:54 swa
177 dnl we have a new homepage!
179 dnl Revision 1.47 2002/03/26 16:41:00 hal9
180 dnl Upped RPM Release to 3 (need to build new RH packages)
182 dnl Revision 1.46 2002/03/24 18:55:06 jongfoster
183 dnl Making Docbook work under Windows
185 dnl Revision 1.45 2002/03/24 14:19:55 swa
186 dnl set rpm package release in configure.in. nowhere else.
188 dnl Revision 1.44 2002/03/24 13:25:43 swa
189 dnl name change related issues
191 dnl Revision 1.43 2002/03/24 12:56:21 swa
192 dnl name change related issues.
194 dnl Revision 1.42 2002/03/22 18:11:37 jongfoster
195 dnl Bumping version number to 2.9.12
197 dnl Revision 1.41 2002/03/19 19:30:04 morcego
198 dnl - Fixing stylesheet checking on configure. If it is found, no further checks
201 dnl - configure will now check for db2html or docbook2html (should work now
202 dnl on SuSe without the docbktls package)
204 dnl Revision 1.40 2002/03/09 14:33:30 oes
205 dnl Fixing the (harmless) AC_CHECK_FILE warnings
207 dnl Revision 1.39 2002/03/08 16:46:13 oes
208 dnl Added --enable-no-gifs
210 dnl Revision 1.38 2002/03/08 14:13:50 morcego
211 dnl Fixing configure, to remove a command not found error.
213 dnl Revision 1.37 2002/03/08 12:58:21 oes
214 dnl Tiny bugfix in AC_ARG_WITH(debug)
216 dnl Revision 1.36 2002/03/06 23:50:36 morcego
217 dnl Will not test for a text browser if we are not using docbook.
219 dnl Revision 1.35 2002/03/06 21:55:52 morcego
220 dnl New configure option: --with-docbook=(yes|no|directory)
221 dnl Preliminary new platform detection code included. Will work with the
222 dnl old one for now. No use just trowing it away
224 dnl Revision 1.34 2002/03/06 20:57:00 morcego
225 dnl Fixing detection of stylesheets on SuSe.
227 dnl Revision 1.33 2002/03/05 17:31:11 morcego
228 dnl Search for docbook.dsl. Should solve portability problems for SuSe.
230 dnl Revision 1.32 2002/03/05 14:07:43 morcego
231 dnl configure now detects rpm topdir, and change GNUmakefile acordingly
232 dnl (based on sugestion by Sarantis Paskalis)
234 dnl Revision 1.31 2002/03/05 13:43:28 morcego
235 dnl Checking for text browser, so redhat-dok can work.
237 dnl Revision 1.30 2002/03/04 17:58:01 oes
238 dnl Deleted _DEBUG and PID_FILE_PATH
240 dnl Revision 1.29 2002/02/28 14:20:53 oes
241 dnl Fixed detection of gethost*_r functions on Solaris
243 dnl Revision 1.28 2002/02/27 15:02:38 oes
244 dnl Incremented version number
246 dnl Revision 1.27 2002/01/10 12:35:18 oes
247 dnl Added cross-compile defaults to the AC_CHECK_SIZEOF macros
248 dnl to silence autoconf warnings. Numbers are for Intel/Linux.
249 dnl Is there a better way?
251 dnl Revision 1.26 2002/01/09 14:29:49 oes
252 dnl - Added AC_CHECK_FUNC tests for the availability of
253 dnl gethostbyname_r, gethostbyaddr_r, gmtime_r and
254 dnl localtime_r, as well as AC_TRY_COMPILE tests to
255 dnl determine their signatures.
257 dnl - Fixed a bug with the init of CFLAGS that was
258 dnl reported by barsnick
260 dnl Revision 1.25 2002/01/04 15:27:18 oes
261 dnl Changed quoting of CODE_STATUS for use in make
263 dnl Revision 1.24 2001/12/30 14:07:31 steudten
264 dnl - Add signal handling (unix)
265 dnl - Add SIGHUP handler (unix)
266 dnl - Add creation of pidfile (unix)
267 dnl - Add action 'top' in rc file (RH)
268 dnl - Add entry 'SIGNALS' to manpage
269 dnl - Add exit message to logfile (unix)
271 dnl Revision 1.23 2001/12/09 20:24:42 david__schmidt
272 dnl Change from "alpha" to "beta" in configure.in
274 dnl Revision 1.22 2001/12/01 11:24:01 jongfoster
275 dnl Renaming Makefile.in to GNUmakefile.in so that non-GNU versions of
276 dnl make break in a more obvious way.
278 dnl Revision 1.21 2001/11/30 21:35:54 jongfoster
279 dnl Bumping version number to 2.9.10
281 dnl Revision 1.20 2001/10/23 21:24:09 jongfoster
282 dnl Support for FEATURE_CGI_EDIT_ACTIONS
284 dnl Revision 1.19 2001/10/07 15:33:14 oes
285 dnl Removed FEATURE_DENY_GZIP
286 dnl Bumped up version number
288 dnl Revision 1.18 2001/09/13 13:10:24 steudten
290 dnl PreWork for Debug Interface.
291 dnl Add new option "--with-debug" to enable debugging (flags aso.)
293 dnl Revision 1.17 2001/09/12 23:44:55 david__schmidt
294 dnl Mac OSX (Darwin) support added.
296 dnl Revision 1.16 2001/09/12 22:55:45 joergs
297 dnl AmigaOS support added.
299 dnl Revision 1.15 2001/09/12 17:28:59 david__schmidt
301 dnl OS/2 port: update autoconf'd support for the platform.
303 dnl Revision 1.14 2001/07/30 22:12:11 jongfoster
304 dnl Fixing Solaris build (I hope) and tidying up #defines:
305 dnl - All feature #defines are now of the form FEATURE_xxx
306 dnl - Permanently turned off WIN_GUI_EDIT
307 dnl - Permanently turned on WEBDAV and SPLIT_PROXY_ARGS
309 dnl Revision 1.13 2001/07/29 17:09:17 jongfoster
310 dnl Major changes to build system in order to fix these bugs:
311 dnl - pthreads under Linux was broken - changed -lpthread to -pthread
312 dnl - Compiling in MinGW32 mode under CygWin now correctly detects
313 dnl which shared libraries are available
314 dnl - Solaris support (?) (Not tested under Solaris yet)
316 dnl Revision 1.12 2001/07/25 19:16:27 oes
317 dnl Bumping version number to 2.9.8
319 dnl Revision 1.11 2001/07/21 18:00:07 jongfoster
320 dnl Bumping version number to 2.9.7
322 dnl Revision 1.10 2001/07/18 17:25:04 oes
325 dnl Revision 1.9 2001/07/15 19:45:13 jongfoster
326 dnl Added support for linking with POSIX threads library
328 dnl Revision 1.8 2001/07/15 17:54:29 jongfoster
329 dnl Renaming #define STATIC to STATIC_PCRE
330 dnl Adding new #define FEATURE_PTHREAD that will be used to enable
331 dnl POSIX threads support.
333 dnl Revision 1.7 2001/07/13 13:58:05 oes
334 dnl Completely reorganized the selection scheme for
335 dnl pcre, pcreposix, pcrs and gnu_regex:
337 dnl The presence of shared pcre, pcreposix or pcrs
338 dnl libraried is now autodetected. Additionally, the
339 dnl user can enforce using the built-in static variants
340 dnl by specifying --disable-dynamic-(pcre|pcrs).
341 dnl Care is taken to avoid that pcre is dyn, while pcreposix
342 dnl is static, if both are used and that pcrs is static if
345 dnl The choice between pcre, gnu or no regex for actionsfile
346 dnl URL matching is now via
347 dnl --(enable|disable)-regex-matching[=(gnu|pcre|no)] with the
348 dnl default being pcre.
350 dnl Revision 1.6 2001/06/29 21:56:40 oes
353 dnl Revision 1.5 2001/06/29 13:26:27 oes
354 dnl Introduced #define CODE_STATUS
356 dnl Revision 1.4 2001/05/29 09:50:24 jongfoster
357 dnl Unified blocklist/imagelist/permissionslist.
358 dnl File format is still under discussion, but the internal changes
359 dnl are (mostly) done.
361 dnl Also modified interceptor behaviour:
362 dnl - We now intercept all URLs beginning with one of the following
363 dnl prefixes (and *only* these prefixes):
365 dnl * http://ijbswa.sf.net/config/
366 dnl * http://ijbswa.sourceforge.net/config/
367 dnl - New interceptors "home page" - go to http://i.j.b/ to see it.
368 dnl - Internal changes so that intercepted and fast redirect pages
369 dnl are not replaced with an image.
370 dnl - Interceptors now have the option to send a binary page direct
371 dnl to the client. (i.e. ijb-send-banner uses this)
372 dnl - Implemented show-url-info interceptor. (Which is why I needed
373 dnl the above interceptors changes - a typical URL is
374 dnl "http://i.j.b/show-url-info?url=www.somesite.com/banner.gif".
375 dnl The previous mechanism would not have intercepted that, and
376 dnl if it had been intercepted then it then it would have replaced
377 dnl it with an image.)
379 dnl Revision 1.3 2001/05/22 18:46:04 oes
381 dnl - Enabled filtering banners by size rather than URL
382 dnl by adding patterns that replace all standard banner
383 dnl sizes with the "Junkbuster" gif to the re_filterfile
385 dnl - Enabled filtering WebBugs by providing a pattern
386 dnl which kills all 1x1 images
388 dnl - Added support for PCRE_UNGREEDY behaviour to pcrs,
389 dnl which is selected by the (nonstandard and therefore
390 dnl capital) letter 'U' in the option string.
391 dnl It causes the quantifiers to be ungreedy by default.
392 dnl Appending a ? turns back to greedy (!).
394 dnl - Added a new interceptor ijb-send-banner, which
395 dnl sends back the "Junkbuster" gif. Without imagelist or
396 dnl MSIE detection support, or if tinygif = 1, or the
397 dnl URL isn't recognized as an imageurl, a lame HTML
398 dnl explanation is sent instead.
400 dnl - Added new feature, which permits blocking remote
401 dnl script redirects and firing back a local redirect
403 dnl The feature is conditionally compiled, i.e. it
404 dnl can be disabled with --disable-fast-redirects,
405 dnl plus it must be activated by a "fast-redirects"
406 dnl line in the config file, has its own log level
407 dnl and of course wants to be displayed by show-proxy-args
408 dnl Note: Boy, all the #ifdefs in 1001 locations and
409 dnl all the fumbling with configure.in and acconfig.h
410 dnl were *way* more work than the feature itself :-(
412 dnl - Because a generic redirect template was needed for
413 dnl this, tinygif = 3 now uses the same.
415 dnl - Moved GIFs, and other static HTTP response templates
418 dnl - Some minor fixes
420 dnl - Removed some >400 CRs again (Jon, you really worked
423 dnl Revision 1.2 2001/05/20 01:21:20 jongfoster
424 dnl Version 2.9.4 checkin.
425 dnl - Merged popupfile and cookiefile, and added control over PCRS
426 dnl filtering, in new "permissionsfile".
427 dnl - Implemented LOG_LEVEL_FATAL, so that if there is a configuration
428 dnl file error you now get a message box (in the Win32 GUI) rather
429 dnl than the program exiting with no explanation.
430 dnl - Made killpopup use the PCRS MIME-type checking and HTTP-header
432 dnl - Removed tabs from "config"
433 dnl - Moved duplicated url parsing code in "loaders.c" to a new funcition.
434 dnl - Bumped up version number.
436 dnl Revision 1.1.1.1 2001/05/15 13:58:50 oes
437 dnl Initial import of version 2.9.3 source tree
442 dnl =================================================================
443 dnl AutoConf Initialization
444 dnl =================================================================
446 AC_REVISION($Revision: 1.88 $)
448 if test ! -f src/config.h.in; then
449 echo "You need to run autoheader first. "
450 echo -n "Shall I do this for you now? (y/n) "
452 if test "$answer" != "y"; then
459 AC_CONFIG_HEADER([src/config.h])
463 dnl =================================================================
464 dnl Application version number
465 dnl =================================================================
472 dnl CODE_STATUS can be "alpha", "beta", or "stable", and will be
473 dnl used for CGI output
475 dnl =================================================================
476 dnl Substitute the version numbers
477 dnl =================================================================
479 AC_SUBST(VERSION_MAJOR)
480 AC_SUBST(VERSION_MINOR)
481 AC_SUBST(VERSION_POINT)
482 AC_SUBST(CODE_STATUS)
486 AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR},
487 [Version number - Major (X._._).])
488 AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR},
489 [Version number - Minor (_.X._).])
490 AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT},
491 [Version number - Point (_._.X).])
492 AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}",
493 [Version number, as a string.])
494 AC_DEFINE_UNQUOTED(CODE_STATUS,"${CODE_STATUS}",
495 [Status of the code: "alpha", "beta" or "stable".])
497 dnl =================================================================
498 dnl Checks for programs needed to build.
499 dnl =================================================================
501 dnl Keep AC_PROG_CC from setting its own defaults:
502 if test "X$CFLAGS" = "X"; then
513 AC_CHECK_PROG(GDB,gdb,yes,no)
514 AC_PATH_PROG(BGROUPS,groups,no,/bin:/usr/bin:/usr/local/bin)
515 AC_PATH_PROG(ID,id,no,/bin:/usr/bin:/usr/local/bin)
519 dnl =================================================================
520 dnl debug, gcc and gdb support
521 dnl =================================================================
524 [ --with-debug Enable debug mode],
526 if test "x$withval" != "xno" ; then
527 if test $ac_cv_prog_cc_g = yes; then
528 if test "$GCC" = yes; then
530 CFLAGS="$CFLAGS -ggdb"
534 CFLAGS="$CFLAGS -Wshadow -Wconversion"
542 if test "X$CFLAGS" = "X "; then # if CFLAGS were unset (see above)
543 if test "$GCC" = yes; then
550 dnl =================================================================
551 dnl Check for user and group validity
552 dnl =================================================================
554 $ID privoxy >/dev/null 2>/dev/null
555 if test $? -ne 0 ; then
556 AC_MSG_WARN(There is no user 'privoxy' on this system)
558 AC_MSG_CHECKING([for user])
560 [ --with-user=privoxy Set user under which privoxy will run],
562 if test "x$withval" != "xyes"; then
563 if test $ID = no ; then
564 AC_MSG_WARN(There is no 'id' program on this system)
566 AC_MSG_RESULT($with_user)
567 $ID $with_user 2>/dev/null >/dev/null
568 if test $? -eq 0 ; then
571 AC_MSG_ERROR(There is no user '$with_user' on this system)
575 AC_MSG_ERROR(We need a user if you give me this parameter)
579 if test $ID = no ; then
580 AC_MSG_WARN(There is no 'id' program on this system)
582 AC_MSG_RESULT(none specified)
589 AC_MSG_CHECKING([for group])
591 [ --with-group=privoxy Set group for privoxy],
593 if test "x$withval" != "xyes"; then
594 if test $BGROUPS = no ; then
595 AC_MSG_ERROR(There is no 'groups' program on this system)
597 AC_MSG_RESULT($with_group)
598 $BGROUPS $USER >/dev/null
599 if test $? -eq 0 ; then
600 # FIXME: this fails if valid group, but not first group
602 if test "$with_group" != "`$BGROUPS $USER | sed 's/.*: //' 2>/dev/null |$AWK '{print $1}'`" ; then
603 AC_MSG_ERROR(The given value '$withval' does not match group entry)
608 AC_MSG_ERROR(There is no group entry for user '$USER')
612 AC_MSG_ERROR(We need a group if you give me this parameter)
616 if test $BGROUPS = no ; then
617 AC_MSG_WARN(There is no 'groups' program on this system)
619 AC_MSG_RESULT(none specified)
626 dnl =================================================================
627 dnl additional gcc flags
628 dnl =================================================================
631 CFLAGS="-pipe $CFLAGS"
635 dnl =================================================================
637 dnl =================================================================
639 dnl Must do this first.
641 dnl Reason: This sets CFLAGS in order to switch the Cygwin compiler
642 dnl into Cygwin or MinGW32 modes. Depending on the mode selected,
643 dnl the compiler will use completely different sets of library
644 dnl and include files.
646 dnl =================================================================
651 if test "$MINGW32" = "yes"; then
654 if test "$CYGWIN" = "yes"; then
661 dnl Decide what to do based on target_type
662 dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
663 dnl This is because we don't know yet whether pthread is enabled.
665 AC_ARG_ENABLE(mingw32,
666 [ --enable-mingw32 Use mingw32 for a Windows GUI],
667 [if test $enableval = yes; then
671 if test $target_type = mingw; then
673 SPECIAL_CFLAGS="-mwindows -mno-cygwin"
674 PTHREAD_LIB=-lpthreadGC
675 echo "Using mingw32 (Win32 GUI)"
678 if test $target_type = cygwin; then
679 SPECIAL_CFLAGS="-mno-win32"
681 echo "Using Cygnus (Win32 command line)"
684 PTHREAD_LIB=-lpthread
689 dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
690 old_CFLAGS_nospecial=$CFLAGS
691 CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
693 # Hack to force AutoConf to use the CFLAGS we just set
694 dnl Warning: This may break with a future version of Autoconf
695 dnl Tested with autoconf 2.13
696 ac_cpp='$CPP $CPPFLAGS $SPECIAL_CFLAGS'
697 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
698 ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
701 dnl =================================================================
703 dnl =================================================================
705 AC_CHECK_HEADER(pthread.h, [have_pthread=yes], [have_pthread=no])
707 AC_ARG_ENABLE(pthread,
708 [ --disable-pthread Don't use POSIX threads (pthreads)],
709 [if test $enableval = no; then
714 if test $have_pthread = yes; then
716 AC_DEFINE(FEATURE_PTHREAD,1,
717 [Define to use POSIX threads instead of native threads.])
718 echo Using POSIX threads
719 if test "$GCC" = "yes"; then
720 # Set a GCC specific switch:
721 if test "$target_type" = "unix"; then
722 # This compiler switch makes GCC on Linux thread-safe
723 # However, it's not supported on most other OS.
725 SPECIAL_CFLAGS="-pthread"
730 echo Using native threads
733 AC_SUBST(PTHREAD_ONLY)
735 dnl =================================================================
736 dnl Support for thread-safe versions of gethostbyaddr, gethostbyname,
737 dnl gmtime and localtime
738 dnl =================================================================
740 dnl Next line needed to find the gethost*_r functions on Solaris
741 AC_CHECK_LIB(nsl, gethostbyname)
743 AC_CHECK_FUNC(gethostbyaddr_r, [
744 AC_MSG_CHECKING([signature of gethostbyaddr_r])
748 struct hostent *h, *hp;
751 (void) gethostbyaddr_r(a, l, t, h, b, bl, &hp, &e)
753 AC_DEFINE(HAVE_GETHOSTBYADDR_R_8_ARGS,1,
754 [Define if gethostbyaddr_r() exists and takes 8 arguments])
755 AC_MSG_RESULT([8 args])
763 (void) gethostbyaddr_r(a, l, t, h, b, bl, &e)
765 AC_DEFINE(HAVE_GETHOSTBYADDR_R_7_ARGS,1,
766 [Define if gethostbyaddr_r() exists and takes 7 arguments])
767 AC_MSG_RESULT([7 args])
772 struct hostent_data *d;
776 (void) gethostbyaddr_r(a, l, t, h, d)
778 AC_DEFINE(HAVE_GETHOSTBYADDR_R_5_ARGS,1,
779 [Define if gethostbyaddr_r() exists and takes 5 arguments])
780 AC_MSG_RESULT([5 args])
782 AC_MSG_RESULT(unrecognised)
790 AC_CHECK_FUNC(gethostbyname_r, [
791 AC_MSG_CHECKING([signature of gethostbyname_r])
795 struct hostent *h, *r;
798 (void) gethostbyname_r(n, h, b, bl, &r, &e)
800 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARGS,1,
801 [Define if gethostbyname_r() exists and takes 6 arguments])
802 AC_MSG_RESULT([6 args])
810 (void) gethostbyname_r(n, h, b, bl, &e)
812 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARGS,1,
813 [Define if gethostbyname_r() exists and takes 5 arguments])
814 AC_MSG_RESULT([5 args])
819 struct hostent_data *d;
822 (void) gethostbyname_r(n, h, d)
824 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARGS,1,
825 [Define if gethostbyname_r() exists and takes 3 arguments])
826 AC_MSG_RESULT([3 args])
828 AC_MSG_RESULT(unrecognised)
836 AC_CHECK_FUNC(gmtime_r, [
837 AC_MSG_CHECKING([signature of gmtime_r])
843 (void) gmtime_r(t, tm)
846 AC_DEFINE(HAVE_GMTIME_R,1,
847 [Define if gmtime_r(struct time *, struct tm *) exists])
849 AC_MSG_RESULT(unrecognised)
855 AC_CHECK_FUNC(localtime_r, [
856 AC_MSG_CHECKING([signature of localtime_r])
862 (void) localtime_r(t, tm)
865 AC_DEFINE(HAVE_LOCALTIME_R,1,
866 [Define if localtime_r(struct time *, struct tm *) exists])
868 AC_MSG_RESULT(unrecognised)
874 dnl =================================================================
876 dnl FIXME: Not tested on Solaris yet...
877 dnl ISFIXED: Have tested it on Solaris, but there are other ways to
878 dnl make these checks generic, e.g.:
879 dnl AC_CHECK_FUNC(getsockopt, , AC_CHECK_LIB(socket, getsockopt))
880 dnl (Moritz Barsnick <moritz@barsnick.net>)
881 dnl =================================================================
887 *-solaris*) SOCKET_LIB="-lsocket -lnsl"
888 AC_DEFINE(__EXTENSIONS__,1,
889 [Define to 1 on Solaris. Do not define on other platforms.])
890 if test "$GCC" = "yes"; then
891 # Set a GCC specific switch:
892 # This compiler switch makes Solaris thread-safe
894 SPECIAL_CFLAGS="-pthreads"
896 # What do we do without GCC? Guess this:
897 SPECIAL_CFLAGS="-D_REENTRANT"
904 dnl =================================================================
905 dnl Solaris problem, and others perhaps (socklen_t is undefined)
906 dnl =================================================================
908 AC_MSG_CHECKING([for socklen_t])
909 AC_EGREP_HEADER(socklen_t, sys/socket.h, AC_MSG_RESULT([yes]),
911 AC_DEFINE(socklen_t,int,
912 [ Define to 'int' if <sys/socket.h> doesn't have it. ]))
915 dnl =================================================================
917 dnl =================================================================
920 *-os2-emx*) SOCKET_LIB=-lsocket
926 dnl =================================================================
928 dnl =================================================================
931 *-apple-darwin*) SPECIAL_CFLAGS="-Dunix -DOSX_DARWIN"
935 dnl =================================================================
937 dnl =================================================================
940 *-openbsd*) SPECIAL_CFLAGS="$SPECIAL_CFLAGS -Dunix"
944 dnl =================================================================
946 dnl =================================================================
951 *-amigaos) AMIGAOS_ONLY=
955 AC_SUBST(AMIGAOS_ONLY)
957 dnl =================================================================
958 dnl Check for standard compiler stuff
959 dnl =================================================================
970 AC_CHECK_SIZEOF(int, 4)
971 AC_CHECK_SIZEOF(char *, 4)
972 AC_CHECK_SIZEOF(long, 4)
973 AC_CHECK_SIZEOF(long long, 8)
974 AC_CHECK_SIZEOF(size_t, 4)
976 dnl Checks for header files.
977 dnl AC_HEADER_SYS_WAIT
978 dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h)
979 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])
981 dnl Checks for library functions.
983 dnl AC_CHECK_FUNC(strstr)
984 dnl bcopy and memmove are for PCRE
985 AC_CHECK_FUNCS([strerror bcopy memmove])
986 AC_PROG_GCC_TRADITIONAL
987 dnl uncommenting does not work for swa. suse linux
991 dnl uncommenting does not work for swa. suse linux
993 AC_CHECK_FUNCS([atexit getcwd gethostbyaddr gethostbyname inet_ntoa localtime_r memchr memmove memset regcomp select setlocale socket strchr strdup strerror strftime strstr strtoul])
996 dnl =================================================================
997 dnl Checks for libraries.
998 dnl =================================================================
999 dnl Note: Some systems may have the library but not the system header
1000 dnl file, so we must check for both.
1001 dnl Also check for correct version
1002 AC_CHECK_LIB(pcre, pcre_compile, [
1003 AC_CHECK_HEADER(pcre.h, [
1004 AC_EGREP_HEADER(pcre_fullinfo, pcre.h, [have_pcre=yes], [AC_MSG_WARN([[pcre old version installed]]); have_pcre=no])
1006 AC_CHECK_HEADER(pcre/pcre.h, [
1007 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])
1012 AC_CHECK_LIB(pcreposix, regcomp, [
1013 AC_CHECK_HEADER(pcreposix.h, [
1014 AC_EGREP_HEADER(pcreposix_regerror, pcreposix.h, [AC_MSG_WARN([[pcreposix old version installed]]); have_pcreposix=no], [have_pcreposix=yes])
1016 AC_CHECK_HEADER(pcre/pcreposix.h, [
1017 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)])
1018 ], [have_pcreposix=no])
1020 ], [have_pcreposix=no], -lpcre)
1022 AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no], -lpcre)
1024 dnl =================================================================
1026 dnl =================================================================
1029 [Always define this, for thread safety on some platforms.])
1031 dnl =================================================================
1033 dnl =================================================================
1035 AC_ARG_ENABLE(toggle,
1036 [ --disable-toggle Don't support temporary disable],
1037 [enableval2=$enableval],
1039 if test $enableval2 = yes; then
1040 AC_DEFINE(FEATURE_TOGGLE,1,
1041 [ Allow Privoxy to be "disabled" so it is just a normal non-blocking
1042 non-anonymizing proxy. This is useful if you're trying to access a
1043 blocked or broken site - just change the setting in the config file,
1044 or use the handy "Disable" menu option in the Windows GUI. ])
1047 AC_ARG_ENABLE(force,
1048 [ --disable-force Don't allow single-page disable],
1049 [enableval2=$enableval],
1051 if test $enableval2 = yes; then
1052 AC_DEFINE(FEATURE_FORCE_LOAD,1,
1053 [ Bypass filtering for 1 page only. ])
1056 AC_ARG_ENABLE(fast-redirects,
1057 [ --disable-fast-redirects Don't support fast redirects],
1058 [enableval2=$enableval],
1060 if test $enableval2 = yes; then
1061 AC_DEFINE(FEATURE_FAST_REDIRECTS,1,
1062 [ Locally redirect remote script-redirect URLs. ])
1065 AC_ARG_ENABLE(killpopup,
1066 [ --disable-killpopup Never block popups],
1067 [enableval2=$enableval],
1069 if test $enableval2 = yes; then
1070 AC_DEFINE(FEATURE_KILL_POPUPS,1,
1071 [ Kills JavaScript popups - window.open, onunload, etc. ])
1074 AC_ARG_ENABLE(stats,
1075 [ --disable-stats Don't keep statistics],
1076 [enableval2=$enableval],
1078 if test $enableval2 = yes; then
1079 AC_DEFINE(FEATURE_STATISTICS,1,
1080 [ Enables statistics function. ])
1083 AC_ARG_ENABLE(activity-console,
1084 [ --enable-activity-console Gather and send extended statistics to the activity console],
1085 [enableval2=$enableval],
1087 if test $enableval2 = yes; then
1089 AC_DEFINE(FEATURE_ACTIVITY_CONSOLE,1,
1090 [ Enables sending statistics to the activity console. This is currently
1091 experimental, and will require some porting work for a few more platforms. ])
1095 AC_SUBST(ACTIVITY_ONLY)
1097 AC_ARG_ENABLE(ie-images,
1098 [ --enable-ie-images Don't auto-detect whether a request from MS Internet
1099 Explorer is for an image or HTML.],
1100 [enableval2=$enableval],
1102 if test $enableval2 = yes; then
1103 AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE,1,
1104 [ Detect image requests automatically for MSIE. Will fall back to
1105 other image-detection methods (i.e. ´´+image´´ action) for other
1108 You must also define FEATURE_IMAGE_BLOCKING to use this feature.
1110 It detects the following header pair as an image request:
1111 ´´User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)´´,
1114 And the following as a HTML request:
1115 User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0),
1116 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, * / *.
1118 And no, I haven't got that backwards - IE is being wierd.
1121 1) If you press shift-reload on a blocked HTML page, you get
1122 the image blocked page, not the HTML ´´blocked´´ page.
1123 2) Once an image ´´blocked´´ page has been sent, viewing it
1124 in it's own browser window *should* bring up the HTML
1125 ´´blocked´´ page, but it doesn't. You need to clear the
1126 browser cache to get the HTML version again.
1128 These limitations are due to IE making inconsistent choices
1129 about which ´´Accept:´´ header to send. ])
1132 AC_ARG_ENABLE(image-blocking,
1133 [ --disable-image-blocking Don't try to figure out whether a request is
1134 for an image or HTML - assume HTML.],
1135 [enableval2=$enableval],
1137 if test $enableval2 = yes; then
1138 AC_DEFINE(FEATURE_IMAGE_BLOCKING,1,
1139 [ Allow blocking using images as well as HTML.
1140 If you do not define this then everything is blocked as HTML.
1141 Note that this is required if you want to use FEATURE_IMAGE_DETECT_MSIE. ])
1144 AC_ARG_ENABLE(acl-files,
1145 [ --disable-acl-files Prevents the use of ACL files to control access to
1146 the proxy by IP address.],
1147 [enableval2=$enableval],
1149 if test $enableval2 = yes; then
1150 AC_DEFINE(FEATURE_ACL,1,
1151 [ Define to 1 to allow the use of an ACL to control access to the proxy by IP address. ])
1154 AC_ARG_ENABLE(trust-files,
1155 [ --disable-trust-files Prevents the use of trust files.],
1156 [enableval2=$enableval],
1158 if test $enableval2 = yes; then
1159 AC_DEFINE(FEATURE_TRUST,1,
1160 [ Define to 1 to allow the use of trust files. ])
1163 AC_ARG_ENABLE(jar-files,
1164 [ --disable-jar-files Prevents the use of jar files to capture cookies.],
1165 [enableval2=$enableval],
1167 if test $enableval2 = yes; then
1168 AC_DEFINE(FEATURE_COOKIE_JAR,1,
1169 [ Define to 1 to allow the user to capture cookies. ])
1172 AC_ARG_ENABLE(editor,
1173 [ --disable-editor Prevents the use of the web-based actions file
1174 editor and web-based temporary disable setting.],
1175 [enableval2=$enableval],
1177 if test $enableval2 = yes; then
1178 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS,1,
1179 [ Define to 1 to enable the web-based configuration (actions file) editor.
1180 If you have a shared proxy, you might want to turn this off. ])
1183 AC_ARG_ENABLE(no-gifs,
1184 [ --enable-no-gifs Use politically correct PNG format instead of GIF
1185 for built-in images. May not work with all browsers.],
1186 [enableval2=$enableval],
1188 if test $enableval2 = yes; then
1189 AC_DEFINE(FEATURE_NO_GIFS,1,
1190 [ Define to 1 to use PNG instead of GIF for built-in images. ])
1193 dnl pcre/pcrs is needed for CGI anyway, so
1194 dnl the choice is only between static and
1197 AC_ARG_ENABLE(dynamic-pcre,
1198 [ --disable-dynamic-pcre Use the built-in, static pcre, even if
1199 libpcre is available],
1200 [ if test $enableval = "no"; then have_pcre=no; fi ])
1202 AC_ARG_ENABLE(dynamic-pcrs,
1203 [ --disable-dynamic-pcrs Use the built-in, static pcrs, even if
1204 libpcrs is available],
1205 [ if test $enableval = "no"; then have_pcrs=no; fi ])
1208 # If we have libpcre and either we also have pcreposix or
1209 # we don't need pcreposix, then link pcre dynamically; else
1210 # build it and link statically
1212 if test $have_pcre = "yes"; then
1213 echo "using libpcre"
1216 LIBS="$LIBS -lpcre -lpcreposix"
1218 echo "using built-in static pcre"
1220 AC_DEFINE(STATIC_PCRE,1,
1221 [Define to 1 if PCRE should be statically built in instead of linking
1223 (This is determined by configure depending on the availiability of
1224 libpcre and user preferences). The name is ugly, but pcre needs it.
1225 Don't try to change this here! Use configure instead.])
1229 # If we have libpcrs and pcre is linked dynamically
1230 # then also link pcrs dynamically, else build and link
1233 if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
1234 echo "using libpcrs"
1238 echo "using built-in static pcrs"
1239 AC_DEFINE(STATIC_PCRS,1,
1240 [Define to 1 if PCRS should be statically built in instead of linking
1242 (This is determined by configure depending on the availiability of
1243 libpcrs and user preferences).
1244 Don't try to change this here! Use configure instead.])
1248 AC_SUBST(STATIC_PCRE_ONLY)
1249 AC_SUBST(STATIC_PCRS_ONLY)
1251 dnl =================================================================
1253 dnl =================================================================
1255 AC_ARG_WITH(docbook, dnl
1256 --with-docbook=<directory>
1257 Set the location of the dsssl stylesheet
1258 (default = search),[dnl
1262 dnl Check for jade, so we can build the documentation
1263 dnl Openjade is preferred according to docs, but jade
1264 dnl is *much* faster.
1265 AC_CHECK_PROGS(JADEBIN,jade openjade,false)
1268 dnl Checking for the docbook.dsl stylesheet file
1269 dnl It is still not portable (directory slash)
1270 dnl ^ Why not? All systems use / don't they?
1271 dnl Windows certainly can. Is this a Mac or
1272 dnl Amiga issue? -- Jon /dsssl/docbook/html/docbook.dsl
1273 DKPREFIXCOPY=$DKPREFIX
1275 for i in $DKPREFIXCOPY /usr/share/sgml/docbook/stylesheet/dsssl/modular \
1276 /usr/share/sgml/docbook/dsssl-stylesheets /usr/share/sgml/docbkdsl \
1277 /usr/share/sgml/docbook-dsssl /usr/local/share/sgml/docbook/dsssl/modular; do
1278 dnl echo -n does not fly with /bin/sh.
1279 dnl echo -n "checking for $i/html/docbook.dsl..."
1280 AC_MSG_CHECKING([for $i])
1281 if test -f $i/html/docbook.dsl; then
1292 dnl where are the catalogs?
1293 for i in /usr/share/sgml/CATALOG.docbk30 \
1294 /usr/share/sgml/CATALOG.docbk31 \
1295 /usr/local/share/sgml/docbook/3.0/docbook.cat \
1296 /usr/local/share/sgml/docbook/3.1/docbook.cat \
1298 dnl echo -n "checking for $i..."
1299 AC_MSG_CHECKING([for $i])
1302 JADECAT="$JADECAT -c $i"
1311 dnl AC_ARG_WITH(db2html, dnl
1312 dnl --with-db2html=<path/executable>
1313 dnl Set the location of the docbook to html converter
1314 dnl (default = search),[dnl
1315 dnl DB2HTML=$withval
1317 dnl if ! test -x $DB2HTML; then
1321 dnl Check for a docbook -> HTML converter
1322 dnl AC_CHECK_PROGS(DB2HTML,db2html docbook2html,false)
1323 dnl AC_SUBST(DB2HTML)
1325 dnl Check for a text browser that supports -dump
1326 AC_CHECK_PROGS(WDUMP,w3m lynx links,false)
1329 dnl Check for man2html for docs.
1330 AC_CHECK_PROGS(MAN2HTML,man2html,false)
1333 dnl Set doc status, used for conditional content inclusions
1335 if test $CODE_STATUS = alpha; then
1336 DOC_STATUS="-ip-alpha -ip-not-stable"
1338 if test $CODE_STATUS = beta; then
1339 DOC_STATUS="-ip-beta -ip-not-stable"
1341 if test $CODE_STATUS = stable; then
1342 DOC_STATUS="-ip-stable"
1344 echo "checking for doc status flags... $DOC_STATUS"
1345 AC_SUBST(DOC_STATUS)
1347 dnl =================================================================
1349 dnl =================================================================
1351 dnl If we use rpm, we need to check where %_topdir is
1352 AC_CHECK_PROGS(RPMBIN,rpm,false)
1353 if test $RPMBIN != false; then
1354 RPM_BASE=`rpm --eval "%{_topdir}"`
1355 if test "$RPM_BASE" = ""; then
1356 RPM_BASE=/usr/src/redhat
1362 dnl =================================================================
1363 dnl Final cleanup and output
1364 dnl =================================================================
1366 dnl Remove the SPECIAL_CFLAGS stuff from CFLAGS, and add it seperately
1368 CFLAGS=$old_CFLAGS_nospecial
1369 AC_SUBST(SPECIAL_CFLAGS)
1371 AC_SUBST(PTHREAD_LIB)
1373 AC_OUTPUT(GNUmakefile doc/source/ldp.dsl doc/source/GNUmakefile)