1 dnl Process this file with autoconf to produce a configure script.
3 dnl $Id: configure.in,v 1.79 2002/09/07 02:11:06 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.79 2002/09/07 02:11:06 hal9
32 dnl Remove some testing stuff inadvertantly left in.
34 dnl Revision 1.78 2002/09/06 23:18:08 hal9
35 dnl Migrate PCRE_H_IN_SUBDIR from 3.0 branch for pcre/pcre.h on RH, etc.
37 dnl Revision 1.77 2002/09/06 13:23:03 oes
38 dnl Removed non-functional test for gcc support for -pthread
40 dnl Revision 1.76 2002/09/05 14:52:17 oes
41 dnl Synced in some changes fromm the stable branch:
42 dnl Fixed detection/inclusion of pcre.h, which is in a pcre subdir on RH
44 dnl Revision 1.75 2002/09/04 12:19:33 oes
45 dnl Resurrected acconfig.h and removed double quotes from AC_DEFINE params to enable build on older systems
47 dnl Revision 1.74 2002/09/03 17:31:33 oes
48 dnl Added workaround for very strange behaviour of AC_PROG_CC, which sets CFLAGS to -g -O2 if empty
50 dnl Revision 1.73 2002/06/05 00:26:21 hal9
51 dnl Move all doc build stuff to doc/source/GNUmakefile, leaving a 'make dok'
52 dnl target only in toplevel. Add DOC_STATUS variable so docs can be built without
53 dnl touching sgml source.
55 dnl Revision 1.72 2002/06/04 15:52:25 jongfoster
56 dnl Removing need for acconfig.h (apparently using acconfig.h is an
57 dnl obsolete coding style).
58 dnl Moving the DocBook stuff together
60 dnl Revision 1.71 2002/06/04 14:51:49 jongfoster
61 dnl Updating for new paths:
62 dnl - Source files in src/
63 dnl - Object files in obj/
65 dnl Revision 1.70 2002/05/27 23:26:34 mal0rd
66 dnl Made doc-generation configuration automatic.
67 dnl References to DB2HTML were removed, not used.
68 dnl --with-docbook now only needed if in odd path.
70 dnl Revision 1.69 2002/05/25 18:11:49 jongfoster
71 dnl Wahay!!! 3.0.x has branched!
72 dnl New development version is 3.1.1 alpha
74 dnl Revision 1.68 2002/05/25 16:54:54 jongfoster
75 dnl Detect if the compiler supports -pthread.
76 dnl Hopefully this will fix bug 560442. (I don't have a HP PA-RISC
77 dnl machine to test this!)
79 dnl Revision 1.67 2002/05/03 14:33:59 oes
80 dnl Generate doc/soucre/ldp.dsl
82 dnl Revision 1.66 2002/05/03 00:41:56 oes
83 dnl Set version to 2.9.15 to comply with new versioning scheme
85 dnl Revision 1.65 2002/04/25 19:13:57 morcego
86 dnl Removed RPM release number declaration on configure.in
87 dnl Changed makefile to use given value for RPM_PACKAGEV when on uploading
88 dnl targets (will produce an error, explaining who to do it, if no value
91 dnl Revision 1.64 2002/04/22 16:32:31 morcego
92 dnl configure.in, *.spec: Bumping release to 2 (2.9.14-2)
93 dnl -rh.spec: uid and gid are now macros
94 dnl -suse.spec: Changing the header Copyright to License (Copyright is
97 dnl Revision 1.63 2002/04/11 11:00:21 oes
98 dnl Applied Moritz' fix for socklen_t on Solaris
100 dnl Revision 1.62 2002/04/11 10:09:20 oes
103 dnl Revision 1.61 2002/04/10 18:14:45 morcego
104 dnl - (privoxy-rh.spec only) Relisting template files on the %%files section
105 dnl - (configure.in, privoxy-rh.spec) Bumped package release to 5
107 dnl Revision 1.60 2002/04/09 16:38:49 oes
108 dnl Added detection of missing config.h.in
110 dnl Revision 1.59 2002/04/06 20:23:55 jongfoster
111 dnl Removing unnessacery tests (C++, ranlib)
113 dnl Revision 1.58 2002/04/04 20:49:20 swa
114 dnl attempt to consolidate the
115 dnl different dokbook versions.
117 dnl Revision 1.57 2002/04/04 00:36:36 gliptak
118 dnl always use pcre for matching
120 dnl Revision 1.56 2002/04/03 22:28:03 gliptak
121 dnl Removed references to gnu_regex
123 dnl Revision 1.55 2002/04/03 03:54:38 gliptak
124 dnl Checking pcre version
126 dnl Revision 1.54 2002/04/01 00:54:24 gliptak
127 dnl More changes needed around regex support.
129 dnl Revision 1.53 2002/03/29 20:09:01 swa
132 dnl Revision 1.52 2002/03/29 19:51:40 gliptak
133 dnl Correcting compile problem with Debian
135 dnl Revision 1.51 2002/03/28 20:43:00 swa
136 dnl set make correctly
138 dnl Revision 1.50 2002/03/27 03:03:45 hal9
139 dnl Add test for man2html
141 dnl Revision 1.49 2002/03/27 02:19:52 david__schmidt
142 dnl More Mac OSX support:
143 dnl - Get rid of extraneous, noisy -pthread warnings
144 dnl - Define unix so we get oes' unix-tagged changes
146 dnl Revision 1.48 2002/03/26 22:29:54 swa
147 dnl we have a new homepage!
149 dnl Revision 1.47 2002/03/26 16:41:00 hal9
150 dnl Upped RPM Release to 3 (need to build new RH packages)
152 dnl Revision 1.46 2002/03/24 18:55:06 jongfoster
153 dnl Making Docbook work under Windows
155 dnl Revision 1.45 2002/03/24 14:19:55 swa
156 dnl set rpm package release in configure.in. nowhere else.
158 dnl Revision 1.44 2002/03/24 13:25:43 swa
159 dnl name change related issues
161 dnl Revision 1.43 2002/03/24 12:56:21 swa
162 dnl name change related issues.
164 dnl Revision 1.42 2002/03/22 18:11:37 jongfoster
165 dnl Bumping version number to 2.9.12
167 dnl Revision 1.41 2002/03/19 19:30:04 morcego
168 dnl - Fixing stylesheet checking on configure. If it is found, no further checks
171 dnl - configure will now check for db2html or docbook2html (should work now
172 dnl on SuSe without the docbktls package)
174 dnl Revision 1.40 2002/03/09 14:33:30 oes
175 dnl Fixing the (harmless) AC_CHECK_FILE warnings
177 dnl Revision 1.39 2002/03/08 16:46:13 oes
178 dnl Added --enable-no-gifs
180 dnl Revision 1.38 2002/03/08 14:13:50 morcego
181 dnl Fixing configure, to remove a command not found error.
183 dnl Revision 1.37 2002/03/08 12:58:21 oes
184 dnl Tiny bugfix in AC_ARG_WITH(debug)
186 dnl Revision 1.36 2002/03/06 23:50:36 morcego
187 dnl Will not test for a text browser if we are not using docbook.
189 dnl Revision 1.35 2002/03/06 21:55:52 morcego
190 dnl New configure option: --with-docbook=(yes|no|directory)
191 dnl Preliminary new platform detection code included. Will work with the
192 dnl old one for now. No use just trowing it away
194 dnl Revision 1.34 2002/03/06 20:57:00 morcego
195 dnl Fixing detection of stylesheets on SuSe.
197 dnl Revision 1.33 2002/03/05 17:31:11 morcego
198 dnl Search for docbook.dsl. Should solve portability problems for SuSe.
200 dnl Revision 1.32 2002/03/05 14:07:43 morcego
201 dnl configure now detects rpm topdir, and change GNUmakefile acordingly
202 dnl (based on sugestion by Sarantis Paskalis)
204 dnl Revision 1.31 2002/03/05 13:43:28 morcego
205 dnl Checking for text browser, so redhat-dok can work.
207 dnl Revision 1.30 2002/03/04 17:58:01 oes
208 dnl Deleted _DEBUG and PID_FILE_PATH
210 dnl Revision 1.29 2002/02/28 14:20:53 oes
211 dnl Fixed detection of gethost*_r functions on Solaris
213 dnl Revision 1.28 2002/02/27 15:02:38 oes
214 dnl Incremented version number
216 dnl Revision 1.27 2002/01/10 12:35:18 oes
217 dnl Added cross-compile defaults to the AC_CHECK_SIZEOF macros
218 dnl to silence autoconf warnings. Numbers are for Intel/Linux.
219 dnl Is there a better way?
221 dnl Revision 1.26 2002/01/09 14:29:49 oes
222 dnl - Added AC_CHECK_FUNC tests for the availability of
223 dnl gethostbyname_r, gethostbyaddr_r, gmtime_r and
224 dnl localtime_r, as well as AC_TRY_COMPILE tests to
225 dnl determine their signatures.
227 dnl - Fixed a bug with the init of CFLAGS that was
228 dnl reported by barsnick
230 dnl Revision 1.25 2002/01/04 15:27:18 oes
231 dnl Changed quoting of CODE_STATUS for use in make
233 dnl Revision 1.24 2001/12/30 14:07:31 steudten
234 dnl - Add signal handling (unix)
235 dnl - Add SIGHUP handler (unix)
236 dnl - Add creation of pidfile (unix)
237 dnl - Add action 'top' in rc file (RH)
238 dnl - Add entry 'SIGNALS' to manpage
239 dnl - Add exit message to logfile (unix)
241 dnl Revision 1.23 2001/12/09 20:24:42 david__schmidt
242 dnl Change from "alpha" to "beta" in configure.in
244 dnl Revision 1.22 2001/12/01 11:24:01 jongfoster
245 dnl Renaming Makefile.in to GNUmakefile.in so that non-GNU versions of
246 dnl make break in a more obvious way.
248 dnl Revision 1.21 2001/11/30 21:35:54 jongfoster
249 dnl Bumping version number to 2.9.10
251 dnl Revision 1.20 2001/10/23 21:24:09 jongfoster
252 dnl Support for FEATURE_CGI_EDIT_ACTIONS
254 dnl Revision 1.19 2001/10/07 15:33:14 oes
255 dnl Removed FEATURE_DENY_GZIP
256 dnl Bumped up version number
258 dnl Revision 1.18 2001/09/13 13:10:24 steudten
260 dnl PreWork for Debug Interface.
261 dnl Add new option "--with-debug" to enable debugging (flags aso.)
263 dnl Revision 1.17 2001/09/12 23:44:55 david__schmidt
264 dnl Mac OSX (Darwin) support added.
266 dnl Revision 1.16 2001/09/12 22:55:45 joergs
267 dnl AmigaOS support added.
269 dnl Revision 1.15 2001/09/12 17:28:59 david__schmidt
271 dnl OS/2 port: update autoconf'd support for the platform.
273 dnl Revision 1.14 2001/07/30 22:12:11 jongfoster
274 dnl Fixing Solaris build (I hope) and tidying up #defines:
275 dnl - All feature #defines are now of the form FEATURE_xxx
276 dnl - Permanently turned off WIN_GUI_EDIT
277 dnl - Permanently turned on WEBDAV and SPLIT_PROXY_ARGS
279 dnl Revision 1.13 2001/07/29 17:09:17 jongfoster
280 dnl Major changes to build system in order to fix these bugs:
281 dnl - pthreads under Linux was broken - changed -lpthread to -pthread
282 dnl - Compiling in MinGW32 mode under CygWin now correctly detects
283 dnl which shared libraries are available
284 dnl - Solaris support (?) (Not tested under Solaris yet)
286 dnl Revision 1.12 2001/07/25 19:16:27 oes
287 dnl Bumping version number to 2.9.8
289 dnl Revision 1.11 2001/07/21 18:00:07 jongfoster
290 dnl Bumping version number to 2.9.7
292 dnl Revision 1.10 2001/07/18 17:25:04 oes
295 dnl Revision 1.9 2001/07/15 19:45:13 jongfoster
296 dnl Added support for linking with POSIX threads library
298 dnl Revision 1.8 2001/07/15 17:54:29 jongfoster
299 dnl Renaming #define STATIC to STATIC_PCRE
300 dnl Adding new #define FEATURE_PTHREAD that will be used to enable
301 dnl POSIX threads support.
303 dnl Revision 1.7 2001/07/13 13:58:05 oes
304 dnl Completely reorganized the selection scheme for
305 dnl pcre, pcreposix, pcrs and gnu_regex:
307 dnl The presence of shared pcre, pcreposix or pcrs
308 dnl libraried is now autodetected. Additionally, the
309 dnl user can enforce using the built-in static variants
310 dnl by specifying --disable-dynamic-(pcre|pcrs).
311 dnl Care is taken to avoid that pcre is dyn, while pcreposix
312 dnl is static, if both are used and that pcrs is static if
315 dnl The choice between pcre, gnu or no regex for actionsfile
316 dnl URL matching is now via
317 dnl --(enable|disable)-regex-matching[=(gnu|pcre|no)] with the
318 dnl default being pcre.
320 dnl Revision 1.6 2001/06/29 21:56:40 oes
323 dnl Revision 1.5 2001/06/29 13:26:27 oes
324 dnl Introduced #define CODE_STATUS
326 dnl Revision 1.4 2001/05/29 09:50:24 jongfoster
327 dnl Unified blocklist/imagelist/permissionslist.
328 dnl File format is still under discussion, but the internal changes
329 dnl are (mostly) done.
331 dnl Also modified interceptor behaviour:
332 dnl - We now intercept all URLs beginning with one of the following
333 dnl prefixes (and *only* these prefixes):
335 dnl * http://ijbswa.sf.net/config/
336 dnl * http://ijbswa.sourceforge.net/config/
337 dnl - New interceptors "home page" - go to http://i.j.b/ to see it.
338 dnl - Internal changes so that intercepted and fast redirect pages
339 dnl are not replaced with an image.
340 dnl - Interceptors now have the option to send a binary page direct
341 dnl to the client. (i.e. ijb-send-banner uses this)
342 dnl - Implemented show-url-info interceptor. (Which is why I needed
343 dnl the above interceptors changes - a typical URL is
344 dnl "http://i.j.b/show-url-info?url=www.somesite.com/banner.gif".
345 dnl The previous mechanism would not have intercepted that, and
346 dnl if it had been intercepted then it then it would have replaced
347 dnl it with an image.)
349 dnl Revision 1.3 2001/05/22 18:46:04 oes
351 dnl - Enabled filtering banners by size rather than URL
352 dnl by adding patterns that replace all standard banner
353 dnl sizes with the "Junkbuster" gif to the re_filterfile
355 dnl - Enabled filtering WebBugs by providing a pattern
356 dnl which kills all 1x1 images
358 dnl - Added support for PCRE_UNGREEDY behaviour to pcrs,
359 dnl which is selected by the (nonstandard and therefore
360 dnl capital) letter 'U' in the option string.
361 dnl It causes the quantifiers to be ungreedy by default.
362 dnl Appending a ? turns back to greedy (!).
364 dnl - Added a new interceptor ijb-send-banner, which
365 dnl sends back the "Junkbuster" gif. Without imagelist or
366 dnl MSIE detection support, or if tinygif = 1, or the
367 dnl URL isn't recognized as an imageurl, a lame HTML
368 dnl explanation is sent instead.
370 dnl - Added new feature, which permits blocking remote
371 dnl script redirects and firing back a local redirect
373 dnl The feature is conditionally compiled, i.e. it
374 dnl can be disabled with --disable-fast-redirects,
375 dnl plus it must be activated by a "fast-redirects"
376 dnl line in the config file, has its own log level
377 dnl and of course wants to be displayed by show-proxy-args
378 dnl Note: Boy, all the #ifdefs in 1001 locations and
379 dnl all the fumbling with configure.in and acconfig.h
380 dnl were *way* more work than the feature itself :-(
382 dnl - Because a generic redirect template was needed for
383 dnl this, tinygif = 3 now uses the same.
385 dnl - Moved GIFs, and other static HTTP response templates
388 dnl - Some minor fixes
390 dnl - Removed some >400 CRs again (Jon, you really worked
393 dnl Revision 1.2 2001/05/20 01:21:20 jongfoster
394 dnl Version 2.9.4 checkin.
395 dnl - Merged popupfile and cookiefile, and added control over PCRS
396 dnl filtering, in new "permissionsfile".
397 dnl - Implemented LOG_LEVEL_FATAL, so that if there is a configuration
398 dnl file error you now get a message box (in the Win32 GUI) rather
399 dnl than the program exiting with no explanation.
400 dnl - Made killpopup use the PCRS MIME-type checking and HTTP-header
402 dnl - Removed tabs from "config"
403 dnl - Moved duplicated url parsing code in "loaders.c" to a new funcition.
404 dnl - Bumped up version number.
406 dnl Revision 1.1.1.1 2001/05/15 13:58:50 oes
407 dnl Initial import of version 2.9.3 source tree
412 dnl =================================================================
413 dnl AutoConf Initialization
414 dnl =================================================================
416 AC_REVISION($Revision: 1.79 $)
419 if test ! -f src/config.h.in; then
420 echo "You need to run autoheader first. "
421 echo -n "Shall I do this for you now? (y/n) "
423 if test $answer != "y"; then
430 AC_CONFIG_HEADER([src/config.h])
434 dnl =================================================================
435 dnl Application version number
436 dnl =================================================================
443 dnl CODE_STATUS can be "alpha", "beta", or "stable", and will be
444 dnl used for CGI output
446 dnl =================================================================
447 dnl Substitute the version numbers
448 dnl =================================================================
450 AC_SUBST(VERSION_MAJOR)
451 AC_SUBST(VERSION_MINOR)
452 AC_SUBST(VERSION_POINT)
453 AC_SUBST(CODE_STATUS)
457 AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR},
458 [Version number - Major (X._._).])
459 AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR},
460 [Version number - Minor (_.X._).])
461 AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT},
462 [Version number - Point (_._.X).])
463 AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}",
464 [Version number, as a string.])
465 AC_DEFINE_UNQUOTED(CODE_STATUS,"${CODE_STATUS}",
466 [Status of the code: "alpha", "beta" or "stable".])
468 dnl =================================================================
469 dnl Checks for programs needed to build.
470 dnl =================================================================
472 dnl Keep AC_PROG_CC from setting its own defaults:
482 AC_CHECK_PROG(GDB,gdb,yes,no)
483 AC_PATH_PROG(BGROUPS,groups,no,/bin:/usr/bin:/usr/local/bin)
484 AC_PATH_PROG(ID,id,no,/bin:/usr/bin:/usr/local/bin)
488 dnl =================================================================
489 dnl debug, gcc and gdb support
490 dnl =================================================================
493 [ --with-debug Enable debug mode],
495 if test "x$withval" != "xno" ; then
496 if test $ac_cv_prog_cc_g = yes; then
497 if test "$GCC" = yes; then
503 CFLAGS="$CFLAGS -Wshadow -Wconversion"
511 if test "X$CFLAGS" = "X"; then # if CFLAGS are unset
512 if test "$GCC" = yes; then
522 [ --with-user=privoxy Set user under which privoxy will run],
524 if test "x$withval" != "xyes"; then
525 if test $ID = no ; then
526 AC_MSG_ERROR(There is no 'id' program on this system)
528 $ID $with_user 2>/dev/null >/dev/null
529 if test $? -eq 0 ; then
532 AC_MSG_ERROR(There is no user '$with_user' on this system)
536 AC_MSG_ERROR(We need a user if you give me this parameter)
540 if test $ID = no ; then
541 AC_MSG_ERROR(There is no 'id' programm on this system)
543 $ID privoxy >/dev/null
544 if test $? -eq 0 ; then
547 AC_MSG_WARN(There is no user 'privoxy' on this system)
556 [ --with-group=privoxy Set group for privoxy],
558 if test "x$withval" != "xyes"; then
559 if test $BGROUPS = no ; then
560 AC_MSG_ERROR(There is no 'groups' program on this system)
562 $BGROUPS $USER >/dev/null
563 if test $? -eq 0 ; then
564 # FIXME: this fails if valid group, but not first group
566 if test "$with_group" != "`$BGROUPS $USER 2>/dev/null |$AWK '{print $3}'`" ; then
567 AC_MSG_ERROR(The given value '$withval' does not match group entry)
572 AC_MSG_ERROR(There is no group entry for user '$USER')
576 AC_MSG_ERROR(We need a group if you give me this parameter)
580 if test $BGROUPS = no ; then
581 AC_MSG_ERROR(There is no 'groups' programm on this system)
583 $BGROUPS $USER >/dev/null
584 if test $? -eq 0 ; then
585 if test "$with_group" != "`$BGROUPS $USER 2>/dev/null |$AWK '{print $3}'`" -a "$with_group" != "" ; then
586 AC_MSG_ERROR('$USER' isn't a member of '$with_group' group)
591 AC_MSG_ERROR(There is no group entry for user '$USER')
598 dnl =================================================================
599 dnl additional gcc flags
600 dnl =================================================================
603 CFLAGS="-pipe $CFLAGS"
607 dnl =================================================================
609 dnl =================================================================
611 dnl Must do this first.
613 dnl Reason: This sets CFLAGS in order to switch the Cygwin compiler
614 dnl into Cygwin or MinGW32 modes. Depending on the mode selected,
615 dnl the compiler will use completely different sets of library
616 dnl and include files.
618 dnl =================================================================
623 if test "$MINGW32" = "yes"; then
626 if test "$CYGWIN" = "yes"; then
633 dnl Decide what to do based on target_type
634 dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
635 dnl This is because we don't know yet whether pthread is enabled.
637 AC_ARG_ENABLE(mingw32,
638 [ --enable-mingw32 Use mingw32 for a Windows GUI],
639 [if test $enableval = yes; then
643 if test $target_type = mingw; then
645 SPECIAL_CFLAGS="-mwindows -mno-cygwin"
646 PTHREAD_LIB=-lpthreadGC
647 echo "Using mingw32 (Win32 GUI)"
650 if test $target_type = cygwin; then
651 SPECIAL_CFLAGS="-mno-win32"
653 echo "Using Cygnus (Win32 command line)"
656 PTHREAD_LIB=-lpthread
661 dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
662 old_CFLAGS_nospecial=$CFLAGS
663 CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
665 # Hack to force AutoConf to use the CFLAGS we just set
666 dnl Warning: This may break with a future version of Autoconf
667 dnl Tested with autoconf 2.13
668 ac_cpp='$CPP $CPPFLAGS $SPECIAL_CFLAGS'
669 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
670 ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
673 dnl =================================================================
675 dnl =================================================================
677 AC_CHECK_HEADER(pthread.h, [have_pthread=yes], [have_pthread=no])
679 AC_ARG_ENABLE(pthread,
680 [ --disable-pthread Don't use POSIX threads (pthreads)],
681 [if test $enableval = no; then
686 if test $have_pthread = yes; then
688 AC_DEFINE(FEATURE_PTHREAD,1,
689 [Define to use POSIX threads instead of native threads.])
690 echo Using POSIX threads
691 if test "$GCC" = "yes"; then
692 # Set a GCC specific switch:
693 if test "$target_type" = "unix"; then
694 # This compiler switch makes GCC on Linux thread-safe
695 # However, it's not supported on most other OS.
697 SPECIAL_CFLAGS="-pthread"
702 echo Using native threads
705 AC_SUBST(PTHREAD_ONLY)
707 dnl =================================================================
708 dnl Support for thread-safe versions of gethostbyaddr, gethostbyname,
709 dnl gmtime and localtime
710 dnl =================================================================
712 dnl Next line needed to find the gethost*_r functions on Solaris
713 AC_CHECK_LIB(nsl, gethostbyname)
715 AC_CHECK_FUNC(gethostbyaddr_r, [
716 AC_MSG_CHECKING([signature of gethostbyaddr_r])
720 struct hostent *h, *hp;
723 (void) gethostbyaddr_r(a, l, t, h, b, bl, &hp, &e)
725 AC_DEFINE(HAVE_GETHOSTBYADDR_R_8_ARGS,1,
726 [Define if gethostbyaddr_r() exists and takes 8 arguments])
727 AC_MSG_RESULT([8 args])
735 (void) gethostbyaddr_r(a, l, t, h, b, bl, &e)
737 AC_DEFINE(HAVE_GETHOSTBYADDR_R_7_ARGS,1,
738 [Define if gethostbyaddr_r() exists and takes 7 arguments])
739 AC_MSG_RESULT([7 args])
744 struct hostent_data *d;
748 (void) gethostbyaddr_r(a, l, t, h, d)
750 AC_DEFINE(HAVE_GETHOSTBYADDR_R_5_ARGS,1,
751 [Define if gethostbyaddr_r() exists and takes 5 arguments])
752 AC_MSG_RESULT([5 args])
754 AC_MSG_RESULT(unrecognised)
762 AC_CHECK_FUNC(gethostbyname_r, [
763 AC_MSG_CHECKING([signature of gethostbyname_r])
767 struct hostent *h, *r;
770 (void) gethostbyname_r(n, h, b, bl, &r, &e)
772 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARGS,1,
773 [Define if gethostbyname_r() exists and takes 6 arguments])
774 AC_MSG_RESULT([6 args])
782 (void) gethostbyname_r(n, h, b, bl, &e)
784 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARGS,1,
785 [Define if gethostbyname_r() exists and takes 5 arguments])
786 AC_MSG_RESULT([5 args])
791 struct hostent_data *d;
794 (void) gethostbyname_r(n, h, d)
796 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARGS,1,
797 [Define if gethostbyname_r() exists and takes 3 arguments])
798 AC_MSG_RESULT([3 args])
800 AC_MSG_RESULT(unrecognised)
808 AC_CHECK_FUNC(gmtime_r, [
809 AC_MSG_CHECKING([signature of gmtime_r])
815 (void) gmtime_r(t, tm)
818 AC_DEFINE(HAVE_GMTIME_R,1,
819 [Define if gmtime_r(struct time *, struct tm *) exists])
821 AC_MSG_RESULT(unrecognised)
827 AC_CHECK_FUNC(localtime_r, [
828 AC_MSG_CHECKING([signature of localtime_r])
834 (void) localtime_r(t, tm)
837 AC_DEFINE(HAVE_LOCALTIME_R,1,
838 [Define if localtime_r(struct time *, struct tm *) exists])
840 AC_MSG_RESULT(unrecognised)
846 dnl =================================================================
848 dnl FIXME: Not tested on Solaris yet...
849 dnl ISFIXED: Have tested it on Solaris, but there are other ways to
850 dnl make these checks generic, e.g.:
851 dnl AC_CHECK_FUNC(getsockopt, , AC_CHECK_LIB(socket, getsockopt))
852 dnl (Moritz Barsnick <moritz@barsnick.net>)
853 dnl =================================================================
859 *-solaris*) SOCKET_LIB="-lsocket -lnsl"
860 AC_DEFINE(__EXTENSIONS__,1,
861 [Define to 1 on Solaris. Do not define on other platforms.])
862 if test "$GCC" = "yes"; then
863 # Set a GCC specific switch:
864 # This compiler switch makes Solaris thread-safe
866 SPECIAL_CFLAGS="-pthreads"
868 # What do we do without GCC? Guess this:
869 SPECIAL_CFLAGS="-D_REENTRANT"
876 dnl =================================================================
877 dnl Solaris problem, and others perhaps (socklen_t is undefined)
878 dnl =================================================================
880 AC_MSG_CHECKING([for socklen_t])
881 AC_EGREP_HEADER(socklen_t, sys/socket.h, AC_MSG_RESULT([yes]),
883 AC_DEFINE(socklen_t,int,
884 [ Define to 'int' if <sys/socket.h> doesn't have it. ]))
887 dnl =================================================================
889 dnl =================================================================
892 *-os2-emx*) SOCKET_LIB=-lsocket
898 dnl =================================================================
900 dnl =================================================================
903 *-apple-darwin*) SPECIAL_CFLAGS="-Dunix"
907 dnl =================================================================
909 dnl =================================================================
914 *-amigaos) AMIGAOS_ONLY=
918 AC_SUBST(AMIGAOS_ONLY)
920 dnl =================================================================
921 dnl Check for standard compiler stuff
922 dnl =================================================================
933 AC_CHECK_SIZEOF(int, 4)
934 AC_CHECK_SIZEOF(char *, 4)
935 AC_CHECK_SIZEOF(long, 4)
936 AC_CHECK_SIZEOF(long long, 8)
937 AC_CHECK_SIZEOF(size_t, 4)
939 dnl Checks for header files.
940 dnl AC_HEADER_SYS_WAIT
941 dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h)
942 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])
944 dnl Checks for library functions.
946 dnl AC_CHECK_FUNC(strstr)
947 dnl bcopy and memmove are for PCRE
948 AC_CHECK_FUNCS([strerror bcopy memmove])
949 AC_PROG_GCC_TRADITIONAL
950 dnl uncommenting does not work for swa. suse linux
954 dnl uncommenting does not work for swa. suse linux
956 AC_CHECK_FUNCS([atexit getcwd gethostbyaddr gethostbyname inet_ntoa localtime_r memchr memmove memset regcomp select setlocale socket strchr strdup strerror strftime strstr strtoul])
959 dnl =================================================================
960 dnl Checks for libraries.
961 dnl =================================================================
962 dnl Note: Some systems may have the library but not the system header
963 dnl file, so we must check for both.
964 dnl Also check for correct version
965 AC_CHECK_LIB(pcre, pcre_compile, [
966 AC_CHECK_HEADER(pcre.h, [
967 AC_EGREP_HEADER(pcre_fullinfo, pcre.h, [have_pcre=yes], [AC_MSG_WARN([[pcre old version installed]]); have_pcre=no])
969 AC_CHECK_HEADER(pcre/pcre.h, [
970 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])
975 AC_CHECK_LIB(pcreposix, regcomp, [
976 AC_CHECK_HEADER(pcreposix.h, [
977 AC_EGREP_HEADER(pcreposix_regerror, pcreposix.h, [AC_MSG_WARN([[pcreposix old version installed]]); have_pcreposix=no], [have_pcreposix=yes])
979 AC_CHECK_HEADER(pcre/pcreposix.h, [
980 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)])
981 ], [have_pcreposix=no])
983 ], [have_pcreposix=no], -lpcre)
985 AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no], -lpcre)
987 dnl =================================================================
989 dnl =================================================================
992 [Always define this, for thread safety on some platforms.])
994 dnl =================================================================
996 dnl =================================================================
998 AC_ARG_ENABLE(toggle,
999 [ --disable-toggle Don't support temporary disable],
1000 [enableval2=$enableval],
1002 if test $enableval2 = yes; then
1003 AC_DEFINE(FEATURE_TOGGLE,1,
1004 [ Allow Privoxy to be "disabled" so it is just a normal non-blocking
1005 non-anonymizing proxy. This is useful if you're trying to access a
1006 blocked or broken site - just change the setting in the config file,
1007 or use the handy "Disable" menu option in the Windows GUI. ])
1010 AC_ARG_ENABLE(force,
1011 [ --disable-force Don't allow single-page disable],
1012 [enableval2=$enableval],
1014 if test $enableval2 = yes; then
1015 AC_DEFINE(FEATURE_FORCE_LOAD,1,
1016 [ Bypass filtering for 1 page only. ])
1019 AC_ARG_ENABLE(fast-redirects,
1020 [ --disable-fast-redirects Don't support fast redirects],
1021 [enableval2=$enableval],
1023 if test $enableval2 = yes; then
1024 AC_DEFINE(FEATURE_FAST_REDIRECTS,1,
1025 [ Locally redirect remote script-redirect URLs. ])
1028 AC_ARG_ENABLE(killpopup,
1029 [ --disable-killpopup Never block popups],
1030 [enableval2=$enableval],
1032 if test $enableval2 = yes; then
1033 AC_DEFINE(FEATURE_KILL_POPUPS,1,
1034 [ Kills JavaScript popups - window.open, onunload, etc. ])
1037 AC_ARG_ENABLE(stats,
1038 [ --disable-stats Don't keep statistics],
1039 [enableval2=$enableval],
1041 if test $enableval2 = yes; then
1042 AC_DEFINE(FEATURE_STATISTICS,1,
1043 [ Enables statistics function. ])
1046 AC_ARG_ENABLE(ie-images,
1047 [ --enable-ie-images Don't auto-detect whether a request from MS Internet
1048 Explorer is for an image or HTML.],
1049 [enableval2=$enableval],
1051 if test $enableval2 = yes; then
1052 AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE,1,
1053 [ Detect image requests automatically for MSIE. Will fall back to
1054 other image-detection methods (i.e. ´´+image´´ action) for other
1057 You must also define FEATURE_IMAGE_BLOCKING to use this feature.
1059 It detects the following header pair as an image request:
1060 ´´User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)´´,
1063 And the following as a HTML request:
1064 User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0),
1065 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, * / *.
1067 And no, I haven't got that backwards - IE is being wierd.
1070 1) If you press shift-reload on a blocked HTML page, you get
1071 the image blocked page, not the HTML ´´blocked´´ page.
1072 2) Once an image ´´blocked´´ page has been sent, viewing it
1073 in it's own browser window *should* bring up the HTML
1074 ´´blocked´´ page, but it doesn't. You need to clear the
1075 browser cache to get the HTML version again.
1077 These limitations are due to IE making inconsistent choices
1078 about which ´´Accept:´´ header to send. ])
1081 AC_ARG_ENABLE(image-blocking,
1082 [ --disable-image-blocking Don't try to figure out whether a request is
1083 for an image or HTML - assume HTML.],
1084 [enableval2=$enableval],
1086 if test $enableval2 = yes; then
1087 AC_DEFINE(FEATURE_IMAGE_BLOCKING,1,
1088 [ Allow blocking using images as well as HTML.
1089 If you do not define this then everything is blocked as HTML.
1090 Note that this is required if you want to use FEATURE_IMAGE_DETECT_MSIE. ])
1093 AC_ARG_ENABLE(acl-files,
1094 [ --disable-acl-files Prevents the use of ACL files to control access to
1095 the proxy by IP address.],
1096 [enableval2=$enableval],
1098 if test $enableval2 = yes; then
1099 AC_DEFINE(FEATURE_ACL,1,
1100 [ Define to 1 to allow the use of an ACL to control access to the proxy by IP address. ])
1103 AC_ARG_ENABLE(trust-files,
1104 [ --disable-trust-files Prevents the use of trust files.],
1105 [enableval2=$enableval],
1107 if test $enableval2 = yes; then
1108 AC_DEFINE(FEATURE_TRUST,1,
1109 [ Define to 1 to allow the use of trust files. ])
1112 AC_ARG_ENABLE(jar-files,
1113 [ --disable-jar-files Prevents the use of jar files to capture cookies.],
1114 [enableval2=$enableval],
1116 if test $enableval2 = yes; then
1117 AC_DEFINE(FEATURE_COOKIE_JAR,1,
1118 [ Define to 1 to allow the user to capture cookies. ])
1121 AC_ARG_ENABLE(editor,
1122 [ --disable-editor Prevents the use of the web-based actions file
1123 editor and web-based temporary disable setting.],
1124 [enableval2=$enableval],
1126 if test $enableval2 = yes; then
1127 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS,1,
1128 [ Define to 1 to enable the web-based configuration (actions file) editor.
1129 If you have a shared proxy, you might want to turn this off. ])
1132 AC_ARG_ENABLE(no-gifs,
1133 [ --enable-no-gifs Use politically correct PNG format instead of GIF
1134 for built-in images. May not work with all browsers.],
1135 [enableval2=$enableval],
1137 if test $enableval2 = yes; then
1138 AC_DEFINE(FEATURE_NO_GIFS,1,
1139 [ Deine to 1 to use PNG instead of GIF for built-in images. ])
1143 dnl pcre/pcrs is needed for CGI anyway, so
1144 dnl the choice is only between static and
1147 AC_ARG_ENABLE(dynamic-pcre,
1148 [ --disable-dynamic-pcre Use the built-in, static pcre, even if
1149 libpcre is available],
1150 [ if test $enableval = "no"; then have_pcre=no; fi ])
1152 AC_ARG_ENABLE(dynamic-pcrs,
1153 [ --disable-dynamic-pcrs Use the built-in, static pcrs, even if
1154 libpcrs is available],
1155 [ if test $enableval = "no"; then have_pcrs=no; fi ])
1158 # If we have libpcre and either we also have pcreposix or
1159 # we don't need pcreposix, then link pcre dynamically; else
1160 # build it and link statically
1162 if test $have_pcre = "yes"; then
1163 echo "using libpcre"
1166 LIBS="$LIBS -lpcre -lpcreposix"
1168 echo "using built-in static pcre"
1170 AC_DEFINE(STATIC_PCRE,1,
1171 [Define to 1 if PCRE should be statically built in instead of linking
1173 (This is determined by configure depending on the availiability of
1174 libpcre and user preferences). The name is ugly, but pcre needs it.
1175 Don't try to change this here! Use configure instead.])
1179 # If we have libpcrs and pcre is linked dynamically
1180 # then also link pcrs dynamically, else build and link
1183 if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
1184 echo "using libpcrs"
1188 echo "using built-in static pcrs"
1189 AC_DEFINE(STATIC_PCRS,1,
1190 [Define to 1 if PCRS should be statically built in instead of linking
1192 (This is determined by configure depending on the availiability of
1193 libpcrs and user preferences).
1194 Don't try to change this here! Use configure instead.])
1198 AC_SUBST(STATIC_PCRE_ONLY)
1199 AC_SUBST(STATIC_PCRS_ONLY)
1201 dnl =================================================================
1203 dnl =================================================================
1205 AC_ARG_WITH(docbook, dnl
1206 --with-docbook=<directory>
1207 Set the location of the dsssl stylesheet
1208 (default = search),[dnl
1212 dnl Check for jade, so we can build the documentation
1213 dnl Openjade is preferred according to docs, but jade
1214 dnl is *much* faster.
1215 AC_CHECK_PROGS(JADEBIN,jade openjade,false)
1218 dnl Checking for the docbook.dsl stylesheet file
1219 dnl It is still not portable (directory slash)
1220 dnl ^ Why not? All systems use / don't they?
1221 dnl Windows certainly can. Is this a Mac or
1222 dnl Amiga issue? -- Jon /dsssl/docbook/html/docbook.dsl
1223 DKPREFIXCOPY=$DKPREFIX
1225 for i in $DKPREFIXCOPY /usr/share/sgml/docbook/stylesheet/dsssl/modular \
1226 /usr/share/sgml/docbook/dsssl-stylesheets /usr/share/sgml/docbkdsl \
1227 /usr/share/sgml/docbook-dsssl; do
1228 echo -n "checking for $i/html/docbook.dsl..."
1229 if test -f $i/html/docbook.dsl; then
1240 dnl where are the catalogs?
1241 for i in /usr/share/sgml/CATALOG.docbk30 \
1242 /usr/share/sgml/CATALOG.docbk31; do
1243 echo -n "checking for $i..."
1246 JADECAT="$JADECAT -c $i"
1255 dnl AC_ARG_WITH(db2html, dnl
1256 dnl --with-db2html=<path/executable>
1257 dnl Set the location of the docbook to html converter
1258 dnl (default = search),[dnl
1259 dnl DB2HTML=$withval
1261 dnl if ! test -x $DB2HTML; then
1265 dnl Check for a docbook -> HTML converter
1266 dnl AC_CHECK_PROGS(DB2HTML,db2html docbook2html,false)
1267 dnl AC_SUBST(DB2HTML)
1269 dnl Check for a text browser that supports -dump
1270 AC_CHECK_PROGS(WDUMP,w3m lynx links,false)
1273 dnl Check for man2html for docs.
1274 AC_CHECK_PROGS(MAN2HTML,man2html,false)
1277 dnl Set doc status, used for conditional content inclusions
1279 if test $CODE_STATUS = alpha; then
1280 DOC_STATUS="-ip-alpha -ip-not-stable"
1282 if test $CODE_STATUS = beta; then
1283 DOC_STATUS="-ip-beta -ip-not-stable"
1285 if test $CODE_STATUS = stable; then
1286 DOC_STATUS="-ip-stable"
1288 echo "checking for doc status flags... $DOC_STATUS"
1289 AC_SUBST(DOC_STATUS)
1291 dnl =================================================================
1293 dnl =================================================================
1295 dnl If we use rpm, we need to check where %_topdir is
1296 AC_CHECK_PROGS(RPMBIN,rpm,false)
1297 if test $RPMBIN != false; then
1298 RPM_BASE=`rpm --eval "%{_topdir}"`
1299 if test "$RPM_BASE" = ""; then
1300 RPM_BASE=/usr/src/redhat
1306 dnl =================================================================
1307 dnl Final cleanup and output
1308 dnl =================================================================
1310 dnl Remove the SPECIAL_CFLAGS stuff from CFLAGS, and add it seperately
1312 CFLAGS=$old_CFLAGS_nospecial
1313 AC_SUBST(SPECIAL_CFLAGS)
1315 AC_SUBST(PTHREAD_LIB)
1317 AC_OUTPUT(GNUmakefile doc/source/ldp.dsl doc/source/GNUmakefile)