1 dnl Process this file with autoconf to produce a configure script.
3 dnl $Id: configure.in,v 1.98 2006/12/17 19:15:26 fabiankeil Exp $
5 dnl Written by and Copyright (C) 2001 - 2004 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.98 2006/12/17 19:15:26 fabiankeil
32 dnl Added ./configure switch for FEATURE_GRACEFUL_TERMINATION.
34 dnl Revision 1.97 2006/11/21 18:32:46 hal9
35 dnl Setting version to 3.0.7 UNRELEASED for lack of a better setting.
37 dnl Revision 1.96 2006/11/18 14:42:51 fabiankeil
40 dnl Revision 1.95 2006/11/14 02:08:59 hal9
41 dnl Setting version string to 3.0.6 UNRELEASED. This needs to be reset to 3.0.6
42 dnl stable just before CVS is tagged for release.
44 dnl Revision 1.94 2006/11/13 19:05:50 fabiankeil
45 dnl Make pthread mutex locking more generic. Instead of
46 dnl checking for OSX and OpenBSD, check for FEATURE_PTHREAD
47 dnl and use mutex locking unless there is an _r function
48 dnl available. Better safe than sorry.
50 dnl Fixes "./configure --disable-pthread" and should result
51 dnl in less threading-related problems on pthread-using platforms,
52 dnl but it still doesn't fix BR#1122404.
54 dnl Revision 1.93 2006/09/22 01:26:20 hal9
55 dnl Set version to 3.0.5 BETA for hopefully release this weekend.
57 dnl Revision 1.92 2006/08/17 17:09:49 fabiankeil
58 dnl Added check for timegm().
60 dnl Revision 1.91 2006/08/13 22:01:51 fabiankeil
61 dnl Added checks for strptime() and random()
63 dnl Revision 1.90 2006/07/18 14:48:45 david__schmidt
64 dnl Reorganizing the repository: swapping out what was HEAD (the old 3.1 branch)
65 dnl with what was really the latest development (the v_3_0_branch branch)
67 dnl Revision 1.68.2.20 2004/01/31 16:31:46 oes
68 dnl Resetting version info to 0.0.0 UNRELEASED
70 dnl Revision 1.68.2.19 2004/01/30 09:26:03 oes
71 dnl Added docbook paths for debian sarge; set status for release
73 dnl Revision 1.68.2.18 2003/12/08 15:10:29 oes
74 dnl Bugfix: --with-docbook now correctly accepts its path parameter. Thanks, Roland!
76 dnl Revision 1.68.2.17 2003/10/18 18:41:26 david__schmidt
77 dnl Update to remain buildable on OS/2 - remove the failures
78 dnl due to missing unixisms
80 dnl Revision 1.68.2.16 2003/03/26 16:05:14 oes
81 dnl Marked as 0.0.0 UNRELEASED
83 dnl Revision 1.68.2.15 2003/03/26 00:25:00 oes
84 dnl Bump version for 3.0.2
86 dnl Revision 1.68.2.14 2003/03/25 13:27:12 hal9
87 dnl Manually apply Docbook/FreeBSD patch #708081 from a.go at tiscali.nl.
89 dnl Revision 1.68.2.13 2003/03/18 19:38:57 oes
90 dnl Set version info for 3.0.1 release
92 dnl Revision 1.68.2.12 2003/03/07 03:41:04 david__schmidt
93 dnl Wrapping all *_r functions (the non-_r versions of them) with mutex semaphores for OSX. Hopefully this will take care of all of those pesky crash reports.
95 dnl Revision 1.68.2.11 2003/03/06 15:22:37 oes
96 dnl Fixed minor shell syntax bug
98 dnl Revision 1.68.2.10 2003/01/08 16:39:41 oes
99 dnl Changing default to exclude FEATURE_IMAGE_DETECT_MSIE because of problem reports with recent IEs
101 dnl Revision 1.68.2.9 2002/12/13 23:47:45 hal9
102 dnl Add openbsd $specialflags per gunner at styx2002.no-ip.org
104 dnl Revision 1.68.2.8 2002/11/27 12:55:26 oes
105 dnl Fixed broken handling of pre-set CFLAGS
107 dnl Revision 1.68.2.7 2002/10/25 02:44:22 hal9
108 dnl Port of make install, etc from main trunk. Needs testing! Add Slackware
109 dnl support, and other related changes. Update related docs.
111 dnl Revision 1.68.2.6 2002/09/25 15:35:15 oes
112 dnl Marking as non-release
114 dnl Revision 1.68.2.5 2002/08/25 23:37:00 hal9
115 dnl Getting ready for 3.0 release.
117 dnl Revision 1.68.2.4 2002/08/10 11:21:57 oes
118 dnl - Set Version to 2.9.20 (beta)
119 dnl - Add two AC_DEFINEs that indicate if the pcre*.h headers
120 dnl are located in a pcre/ subdir to the include path.
122 dnl Revision 1.68.2.3 2002/08/06 11:29:36 oes
123 dnl Fixed detection/inclusion of pcre.h, which is in a pcre subdir on RH
125 dnl Revision 1.68.2.2 2002/07/30 19:36:09 hal9
126 dnl Bump version to 2.9.17.
128 dnl Revision 1.68.2.1 2002/07/26 15:21:12 oes
129 dnl Bumped version number for 2.9.16 freeze
131 dnl Revision 1.68 2002/05/25 16:54:54 jongfoster
132 dnl Detect if the compiler supports -pthread.
133 dnl Hopefully this will fix bug 560442. (I don't have a HP PA-RISC
134 dnl machine to test this!)
136 dnl Revision 1.67 2002/05/03 14:33:59 oes
137 dnl Generate doc/soucre/ldp.dsl
139 dnl Revision 1.66 2002/05/03 00:41:56 oes
140 dnl Set version to 2.9.15 to comply with new versioning scheme
142 dnl Revision 1.65 2002/04/25 19:13:57 morcego
143 dnl Removed RPM release number declaration on configure.in
144 dnl Changed makefile to use given value for RPM_PACKAGEV when on uploading
145 dnl targets (will produce an error, explaining who to do it, if no value
148 dnl Revision 1.64 2002/04/22 16:32:31 morcego
149 dnl configure.in, *.spec: Bumping release to 2 (2.9.14-2)
150 dnl -rh.spec: uid and gid are now macros
151 dnl -suse.spec: Changing the header Copyright to License (Copyright is
154 dnl Revision 1.63 2002/04/11 11:00:21 oes
155 dnl Applied Moritz' fix for socklen_t on Solaris
157 dnl Revision 1.62 2002/04/11 10:09:20 oes
160 dnl Revision 1.61 2002/04/10 18:14:45 morcego
161 dnl - (privoxy-rh.spec only) Relisting template files on the %%files section
162 dnl - (configure.in, privoxy-rh.spec) Bumped package release to 5
164 dnl Revision 1.60 2002/04/09 16:38:49 oes
165 dnl Added detection of missing config.h.in
167 dnl Revision 1.59 2002/04/06 20:23:55 jongfoster
168 dnl Removing unnessacery tests (C++, ranlib)
170 dnl Revision 1.58 2002/04/04 20:49:20 swa
171 dnl attempt to consolidate the
172 dnl different dokbook versions.
174 dnl Revision 1.57 2002/04/04 00:36:36 gliptak
175 dnl always use pcre for matching
177 dnl Revision 1.56 2002/04/03 22:28:03 gliptak
178 dnl Removed references to gnu_regex
180 dnl Revision 1.55 2002/04/03 03:54:38 gliptak
181 dnl Checking pcre version
183 dnl Revision 1.54 2002/04/01 00:54:24 gliptak
184 dnl More changes needed around regex support.
186 dnl Revision 1.53 2002/03/29 20:09:01 swa
189 dnl Revision 1.52 2002/03/29 19:51:40 gliptak
190 dnl Correcting compile problem with Debian
192 dnl Revision 1.51 2002/03/28 20:43:00 swa
193 dnl set make correctly
195 dnl Revision 1.50 2002/03/27 03:03:45 hal9
196 dnl Add test for man2html
198 dnl Revision 1.49 2002/03/27 02:19:52 david__schmidt
199 dnl More Mac OSX support:
200 dnl - Get rid of extraneous, noisy -pthread warnings
201 dnl - Define unix so we get oes' unix-tagged changes
203 dnl Revision 1.48 2002/03/26 22:29:54 swa
204 dnl we have a new homepage!
206 dnl Revision 1.47 2002/03/26 16:41:00 hal9
207 dnl Upped RPM Release to 3 (need to build new RH packages)
209 dnl Revision 1.46 2002/03/24 18:55:06 jongfoster
210 dnl Making Docbook work under Windows
212 dnl Revision 1.45 2002/03/24 14:19:55 swa
213 dnl set rpm package release in configure.in. nowhere else.
215 dnl Revision 1.44 2002/03/24 13:25:43 swa
216 dnl name change related issues
218 dnl Revision 1.43 2002/03/24 12:56:21 swa
219 dnl name change related issues.
221 dnl Revision 1.42 2002/03/22 18:11:37 jongfoster
222 dnl Bumping version number to 2.9.12
224 dnl Revision 1.41 2002/03/19 19:30:04 morcego
225 dnl - Fixing stylesheet checking on configure. If it is found, no further checks
228 dnl - configure will now check for db2html or docbook2html (should work now
229 dnl on SuSe without the docbktls package)
231 dnl Revision 1.40 2002/03/09 14:33:30 oes
232 dnl Fixing the (harmless) AC_CHECK_FILE warnings
234 dnl Revision 1.39 2002/03/08 16:46:13 oes
235 dnl Added --enable-no-gifs
237 dnl Revision 1.38 2002/03/08 14:13:50 morcego
238 dnl Fixing configure, to remove a command not found error.
240 dnl Revision 1.37 2002/03/08 12:58:21 oes
241 dnl Tiny bugfix in AC_ARG_WITH(debug)
243 dnl Revision 1.36 2002/03/06 23:50:36 morcego
244 dnl Will not test for a text browser if we are not using docbook.
246 dnl Revision 1.35 2002/03/06 21:55:52 morcego
247 dnl New configure option: --with-docbook=(yes|no|directory)
248 dnl Preliminary new platform detection code included. Will work with the
249 dnl old one for now. No use just trowing it away
251 dnl Revision 1.34 2002/03/06 20:57:00 morcego
252 dnl Fixing detection of stylesheets on SuSe.
254 dnl Revision 1.33 2002/03/05 17:31:11 morcego
255 dnl Search for docbook.dsl. Should solve portability problems for SuSe.
257 dnl Revision 1.32 2002/03/05 14:07:43 morcego
258 dnl configure now detects rpm topdir, and change GNUmakefile acordingly
259 dnl (based on sugestion by Sarantis Paskalis)
261 dnl Revision 1.31 2002/03/05 13:43:28 morcego
262 dnl Checking for text browser, so redhat-dok can work.
264 dnl Revision 1.30 2002/03/04 17:58:01 oes
265 dnl Deleted _DEBUG and PID_FILE_PATH
267 dnl Revision 1.29 2002/02/28 14:20:53 oes
268 dnl Fixed detection of gethost*_r functions on Solaris
270 dnl Revision 1.28 2002/02/27 15:02:38 oes
271 dnl Incremented version number
273 dnl Revision 1.27 2002/01/10 12:35:18 oes
274 dnl Added cross-compile defaults to the AC_CHECK_SIZEOF macros
275 dnl to silence autoconf warnings. Numbers are for Intel/Linux.
276 dnl Is there a better way?
278 dnl Revision 1.26 2002/01/09 14:29:49 oes
279 dnl - Added AC_CHECK_FUNC tests for the availability of
280 dnl gethostbyname_r, gethostbyaddr_r, gmtime_r and
281 dnl localtime_r, as well as AC_TRY_COMPILE tests to
282 dnl determine their signatures.
284 dnl - Fixed a bug with the init of CFLAGS that was
285 dnl reported by barsnick
287 dnl Revision 1.25 2002/01/04 15:27:18 oes
288 dnl Changed quoting of CODE_STATUS for use in make
290 dnl Revision 1.24 2001/12/30 14:07:31 steudten
291 dnl - Add signal handling (unix)
292 dnl - Add SIGHUP handler (unix)
293 dnl - Add creation of pidfile (unix)
294 dnl - Add action 'top' in rc file (RH)
295 dnl - Add entry 'SIGNALS' to manpage
296 dnl - Add exit message to logfile (unix)
298 dnl Revision 1.23 2001/12/09 20:24:42 david__schmidt
299 dnl Change from "alpha" to "beta" in configure.in
301 dnl Revision 1.22 2001/12/01 11:24:01 jongfoster
302 dnl Renaming Makefile.in to GNUmakefile.in so that non-GNU versions of
303 dnl make break in a more obvious way.
305 dnl Revision 1.21 2001/11/30 21:35:54 jongfoster
306 dnl Bumping version number to 2.9.10
308 dnl Revision 1.20 2001/10/23 21:24:09 jongfoster
309 dnl Support for FEATURE_CGI_EDIT_ACTIONS
311 dnl Revision 1.19 2001/10/07 15:33:14 oes
312 dnl Removed FEATURE_DENY_GZIP
313 dnl Bumped up version number
315 dnl Revision 1.18 2001/09/13 13:10:24 steudten
317 dnl PreWork for Debug Interface.
318 dnl Add new option "--with-debug" to enable debugging (flags aso.)
320 dnl Revision 1.17 2001/09/12 23:44:55 david__schmidt
321 dnl Mac OSX (Darwin) support added.
323 dnl Revision 1.16 2001/09/12 22:55:45 joergs
324 dnl AmigaOS support added.
326 dnl Revision 1.15 2001/09/12 17:28:59 david__schmidt
328 dnl OS/2 port: update autoconf'd support for the platform.
330 dnl Revision 1.14 2001/07/30 22:12:11 jongfoster
331 dnl Fixing Solaris build (I hope) and tidying up #defines:
332 dnl - All feature #defines are now of the form FEATURE_xxx
333 dnl - Permanently turned off WIN_GUI_EDIT
334 dnl - Permanently turned on WEBDAV and SPLIT_PROXY_ARGS
336 dnl Revision 1.13 2001/07/29 17:09:17 jongfoster
337 dnl Major changes to build system in order to fix these bugs:
338 dnl - pthreads under Linux was broken - changed -lpthread to -pthread
339 dnl - Compiling in MinGW32 mode under CygWin now correctly detects
340 dnl which shared libraries are available
341 dnl - Solaris support (?) (Not tested under Solaris yet)
343 dnl Revision 1.12 2001/07/25 19:16:27 oes
344 dnl Bumping version number to 2.9.8
346 dnl Revision 1.11 2001/07/21 18:00:07 jongfoster
347 dnl Bumping version number to 2.9.7
349 dnl Revision 1.10 2001/07/18 17:25:04 oes
352 dnl Revision 1.9 2001/07/15 19:45:13 jongfoster
353 dnl Added support for linking with POSIX threads library
355 dnl Revision 1.8 2001/07/15 17:54:29 jongfoster
356 dnl Renaming #define STATIC to STATIC_PCRE
357 dnl Adding new #define FEATURE_PTHREAD that will be used to enable
358 dnl POSIX threads support.
360 dnl Revision 1.7 2001/07/13 13:58:05 oes
361 dnl Completely reorganized the selection scheme for
362 dnl pcre, pcreposix, pcrs and gnu_regex:
364 dnl The presence of shared pcre, pcreposix or pcrs
365 dnl libraried is now autodetected. Additionally, the
366 dnl user can enforce using the built-in static variants
367 dnl by specifying --disable-dynamic-(pcre|pcrs).
368 dnl Care is taken to avoid that pcre is dyn, while pcreposix
369 dnl is static, if both are used and that pcrs is static if
372 dnl The choice between pcre, gnu or no regex for actionsfile
373 dnl URL matching is now via
374 dnl --(enable|disable)-regex-matching[=(gnu|pcre|no)] with the
375 dnl default being pcre.
377 dnl Revision 1.6 2001/06/29 21:56:40 oes
380 dnl Revision 1.5 2001/06/29 13:26:27 oes
381 dnl Introduced #define CODE_STATUS
383 dnl Revision 1.4 2001/05/29 09:50:24 jongfoster
384 dnl Unified blocklist/imagelist/permissionslist.
385 dnl File format is still under discussion, but the internal changes
386 dnl are (mostly) done.
388 dnl Also modified interceptor behaviour:
389 dnl - We now intercept all URLs beginning with one of the following
390 dnl prefixes (and *only* these prefixes):
392 dnl * http://ijbswa.sf.net/config/
393 dnl * http://ijbswa.sourceforge.net/config/
394 dnl - New interceptors "home page" - go to http://i.j.b/ to see it.
395 dnl - Internal changes so that intercepted and fast redirect pages
396 dnl are not replaced with an image.
397 dnl - Interceptors now have the option to send a binary page direct
398 dnl to the client. (i.e. ijb-send-banner uses this)
399 dnl - Implemented show-url-info interceptor. (Which is why I needed
400 dnl the above interceptors changes - a typical URL is
401 dnl "http://i.j.b/show-url-info?url=www.somesite.com/banner.gif".
402 dnl The previous mechanism would not have intercepted that, and
403 dnl if it had been intercepted then it then it would have replaced
404 dnl it with an image.)
406 dnl Revision 1.3 2001/05/22 18:46:04 oes
408 dnl - Enabled filtering banners by size rather than URL
409 dnl by adding patterns that replace all standard banner
410 dnl sizes with the "Junkbuster" gif to the re_filterfile
412 dnl - Enabled filtering WebBugs by providing a pattern
413 dnl which kills all 1x1 images
415 dnl - Added support for PCRE_UNGREEDY behaviour to pcrs,
416 dnl which is selected by the (nonstandard and therefore
417 dnl capital) letter 'U' in the option string.
418 dnl It causes the quantifiers to be ungreedy by default.
419 dnl Appending a ? turns back to greedy (!).
421 dnl - Added a new interceptor ijb-send-banner, which
422 dnl sends back the "Junkbuster" gif. Without imagelist or
423 dnl MSIE detection support, or if tinygif = 1, or the
424 dnl URL isn't recognized as an imageurl, a lame HTML
425 dnl explanation is sent instead.
427 dnl - Added new feature, which permits blocking remote
428 dnl script redirects and firing back a local redirect
430 dnl The feature is conditionally compiled, i.e. it
431 dnl can be disabled with --disable-fast-redirects,
432 dnl plus it must be activated by a "fast-redirects"
433 dnl line in the config file, has its own log level
434 dnl and of course wants to be displayed by show-proxy-args
435 dnl Note: Boy, all the #ifdefs in 1001 locations and
436 dnl all the fumbling with configure.in and acconfig.h
437 dnl were *way* more work than the feature itself :-(
439 dnl - Because a generic redirect template was needed for
440 dnl this, tinygif = 3 now uses the same.
442 dnl - Moved GIFs, and other static HTTP response templates
445 dnl - Some minor fixes
447 dnl - Removed some >400 CRs again (Jon, you really worked
450 dnl Revision 1.2 2001/05/20 01:21:20 jongfoster
451 dnl Version 2.9.4 checkin.
452 dnl - Merged popupfile and cookiefile, and added control over PCRS
453 dnl filtering, in new "permissionsfile".
454 dnl - Implemented LOG_LEVEL_FATAL, so that if there is a configuration
455 dnl file error you now get a message box (in the Win32 GUI) rather
456 dnl than the program exiting with no explanation.
457 dnl - Made killpopup use the PCRS MIME-type checking and HTTP-header
459 dnl - Removed tabs from "config"
460 dnl - Moved duplicated url parsing code in "loaders.c" to a new funcition.
461 dnl - Bumped up version number.
463 dnl Revision 1.1.1.1 2001/05/15 13:58:50 oes
464 dnl Initial import of version 2.9.3 source tree
469 dnl =================================================================
470 dnl AutoConf Initialization
471 dnl =================================================================
473 AC_REVISION($Revision: 1.98 $)
476 if test ! -f config.h.in; then
477 echo "You need to run autoheader first. "
478 echo -n "Shall I do this for you now? (y/n) "
480 if test "$answer" != "y"; then
487 AC_CONFIG_HEADER([config.h])
492 AC_ARG_WITH(docbook, dnl
493 --with-docbook=[[yes|no|directory]]
494 Enable docbook documentation creation
495 (default = yes, for gnu and linux),[dnl
496 case "$with_docbook" in
506 AC_ARG_WITH(db2html, dnl
507 --with-db2html=<path/executable>
508 Set the location of the docbook to html converter
509 (default = search),[dnl
513 dnl =================================================================
514 dnl Application version number
515 dnl =================================================================
520 CODE_STATUS="UNRELEASED"
522 dnl CODE_STATUS can be "alpha", "beta", or "stable", and will be
523 dnl used for CGI output. Set version to 0.0.0 and status to "UNRELEASED"
524 dnl whenever CVS in a stable branch differs from the last release.
526 dnl =================================================================
527 dnl Substitute the version numbers
528 dnl =================================================================
530 AC_SUBST(VERSION_MAJOR)
531 AC_SUBST(VERSION_MINOR)
532 AC_SUBST(VERSION_POINT)
533 AC_SUBST(CODE_STATUS)
536 AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR})
537 AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR})
538 AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT})
539 AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}")
540 AC_DEFINE_UNQUOTED(CODE_STATUS,"${CODE_STATUS}")
542 dnl =================================================================
543 dnl Checks for programs needed to build.
544 dnl =================================================================
546 dnl Keep AC_PROG_CC from setting its own defaults:
547 if test "X$CFLAGS" = "X"; then
558 AC_CHECK_PROG(GDB,gdb,yes,no)
559 AC_PATH_PROG(BGROUPS,groups,no,/bin:/usr/bin:/usr/local/bin)
560 AC_PATH_PROG(ID,id,no,/bin:/usr/bin:/usr/local/bin)
564 dnl =================================================================
565 dnl debug, gcc and gdb support
566 dnl =================================================================
569 [ --with-debug Enable debug mode],
571 if test "x$withval" != "xno" ; then
572 if test $ac_cv_prog_cc_g = yes; then
573 if test "$GCC" = yes; then
575 CFLAGS="$CFLAGS -ggdb"
579 CFLAGS="$CFLAGS -Wshadow -Wconversion"
587 if test "X$CFLAGS" = "X "; then # if CFLAGS were unset (see above)
588 if test "$GCC" = yes; then
595 dnl =================================================================
596 dnl Check for user and group validity
597 dnl =================================================================
600 if test "$EMXOS2" = yes; then
601 echo "Skipping user and group validity stuff.";
605 $ID privoxy >/dev/null 2>/dev/null
606 if test $? -ne 0 ; then
607 AC_MSG_WARN(There is no user 'privoxy' on this system)
609 AC_MSG_CHECKING([for user])
611 [ --with-user=privoxy Set user under which privoxy will run],
613 if test "x$withval" != "xyes"; then
614 if test $ID = no ; then
615 AC_MSG_ERROR(There is no 'id' program on this system)
617 AC_MSG_RESULT($with_user)
618 $ID $with_user 2>/dev/null >/dev/null
619 if test $? -eq 0 ; then
622 AC_MSG_ERROR(There is no user '$with_user' on this system)
626 AC_MSG_ERROR(We need a user if you give me this parameter)
630 if test $ID = no ; then
631 AC_MSG_ERROR(There is no 'id' programm on this system)
633 AC_MSG_RESULT(none specified)
640 AC_MSG_CHECKING([for group])
642 [ --with-group=privoxy Set group for privoxy],
644 if test "x$withval" != "xyes"; then
645 if test $BGROUPS = no ; then
646 AC_MSG_ERROR(There is no 'groups' program on this system)
648 AC_MSG_RESULT($with_group)
649 $BGROUPS $USER >/dev/null
650 if test $? -eq 0 ; then
651 # FIXME: this fails if valid group, but not first group
653 if test "$with_group" != "`$BGROUPS $USER | sed 's/.*: //' 2>/dev/null |$AWK '{print $1}'`" ; then
654 AC_MSG_ERROR(The given value '$withval' does not match group entry)
659 AC_MSG_ERROR(There is no group entry for user '$USER')
663 AC_MSG_ERROR(We need a group if you give me this parameter)
667 if test $BGROUPS = no ; then
668 AC_MSG_ERROR(There is no 'groups' programm on this system)
670 AC_MSG_RESULT(none specified)
679 dnl =================================================================
680 dnl additional gcc flags
681 dnl =================================================================
684 CFLAGS="-pipe $CFLAGS"
688 dnl =================================================================
690 dnl =================================================================
692 dnl Must do this first.
694 dnl Reason: This sets CFLAGS in order to switch the Cygwin compiler
695 dnl into Cygwin or MinGW32 modes. Depending on the mode selected,
696 dnl the compiler will use completely different sets of library
697 dnl and include files.
699 dnl =================================================================
704 if test "$MINGW32" = "yes"; then
707 if test "$CYGWIN" = "yes"; then
714 if test $dodk = auto; then
716 if test $target_type = unix; then
725 dnl Decide what to do based on target_type
726 dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
727 dnl This is because we don't know yet whether pthread is enabled.
729 AC_ARG_ENABLE(mingw32,
730 [ --enable-mingw32 Use mingw32 for a Windows GUI],
731 [if test $enableval = yes; then
735 if test $target_type = mingw; then
737 SPECIAL_CFLAGS="-mwindows -mno-cygwin"
738 PTHREAD_LIB=-lpthreadGC
739 echo "Using mingw32 (Win32 GUI)"
742 if test $target_type = cygwin; then
743 SPECIAL_CFLAGS="-mno-win32"
745 echo "Using Cygnus (Win32 command line)"
748 PTHREAD_LIB=-lpthread
753 dnl Checking which text html browser we have avaliable
754 if test $dodk != no; then
755 AC_CHECK_PROGS(WDUMP,w3m lynx links,false)
756 if test "$WDUMP" = false; then
757 AC_MSG_WARN(You need some kind of text browser to build documentation \(w3m, lynx and links are supported\))
759 if test $DB2HTML = false; then
760 dnl We need to clean the variable, otherwise AC_CHECK_PROGS
763 AC_CHECK_PROGS(DB2HTML,db2html docbook2html,false)
769 dnl If we use rpm, we need to check where %_topdir is
770 AC_CHECK_PROGS(RPMBIN,rpm,false)
771 if test $RPMBIN != false; then
772 RPM_BASE=`rpm --eval "%{_topdir}"`
773 if test "$RPM_BASE" = ""; then
774 RPM_BASE=/usr/src/redhat
779 dnl Check for jade, so we can build the documentation
780 AC_CHECK_PROGS(JADEBIN,jade openjade,false)
783 dnl Check for man2html for docs.
784 AC_CHECK_PROGS(MAN2HTML,man2html,false)
787 dnl Set doc status flag for conditional content inclusions
788 DOC_STATUS=p-not-stable
789 if test $CODE_STATUS = stable; then
790 DOC_STATUS="p-stable"
794 dnl Checking for the docbook.dsl stylesheet file
795 dnl It is still not portable (directory slash)
797 if test $dodk = yes; then
798 if test $DKPREFIX = none; then
799 for i in /usr/share/sgml/docbook/dsssl-stylesheets \
800 /usr/share/sgml/docbkdsl /usr/share/sgml/docbook-dsssl \
801 /usr/local/share/sgml/docbook/dsssl/modular \
802 /usr/share/sgml/docbook/stylesheet/dsssl/modular/ \
804 dnl echo -n does not fly with /bin/sh.
805 dnl echo -n "checking for $i/html/docbook.dsl..."
806 AC_MSG_CHECKING([for $i])
807 if test -f $i/html/docbook.dsl; then
815 # where are the catalogs?
816 for i in /usr/share/sgml/CATALOG.docbk30 \
817 /usr/share/sgml/CATALOG.docbk31 \
818 /usr/share/sgml/CATALOG.docbk31 \
819 /usr/local/share/sgml/docbook/3.0/docbook.cat \
820 /usr/local/share/sgml/docbook/3.1/docbook.cat \
821 /usr/share/sgml/docbook/dtd/3.1/docbook.cat \
823 dnl echo -n "checking for $i..."
824 AC_MSG_CHECKING([for $i])
827 JADECAT="$JADECAT -c $i"
837 dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
838 old_CFLAGS_nospecial=$CFLAGS
839 CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
841 # Hack to force AutoConf to use the CFLAGS we just set
842 dnl Warning: This may break with a future version of Autoconf
843 dnl Tested with autoconf 2.13
844 ac_cpp='$CPP $CPPFLAGS $SPECIAL_CFLAGS'
845 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
846 ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
849 dnl =================================================================
851 dnl =================================================================
853 AC_CHECK_HEADER(pthread.h, [have_pthread=yes], [have_pthread=no])
855 AC_ARG_ENABLE(pthread,
856 [ --disable-pthread Don't use POSIX threads (pthreads)],
857 [if test $enableval = no; then
862 if test $have_pthread = yes; then
864 AC_DEFINE(FEATURE_PTHREAD)
865 echo Using POSIX threads
866 if test "$GCC" = "yes"; then
867 # Set a GCC specific switch:
868 if test "$target_type" = "unix"; then
869 ac_jgf_save_CFLAGS=$CFLAGS
870 CFLAGS="$CFLAGS -pthread"
871 AC_TRY_LINK([#include <pthread.h>],
872 [void *p = pthread_create;],
874 # This compiler switch makes GCC on Linux thread-safe
875 # However, it's not supported on most other OS.
877 SPECIAL_CFLAGS="-pthread"
879 CFLAGS=$ac_jgf_save_CFLAGS
884 echo Using native threads
887 AC_SUBST(PTHREAD_ONLY)
889 dnl =================================================================
890 dnl Support for thread-safe versions of gethostbyaddr, gethostbyname,
891 dnl gmtime and localtime
892 dnl =================================================================
894 dnl Next line needed to find the gethost*_r functions on Solaris
895 AC_CHECK_LIB(nsl, gethostbyname)
897 AC_CHECK_FUNC(gethostbyaddr_r, [
898 AC_MSG_CHECKING([signature of gethostbyaddr_r])
902 struct hostent *h, *hp;
905 (void) gethostbyaddr_r(a, l, t, h, b, bl, &hp, &e)
907 AC_DEFINE(HAVE_GETHOSTBYADDR_R_8_ARGS)
908 AC_MSG_RESULT([8 args])
916 (void) gethostbyaddr_r(a, l, t, h, b, bl, &e)
918 AC_DEFINE(HAVE_GETHOSTBYADDR_R_7_ARGS)
919 AC_MSG_RESULT([7 args])
924 struct hostent_data *d;
928 (void) gethostbyaddr_r(a, l, t, h, d)
930 AC_DEFINE(HAVE_GETHOSTBYADDR_R_5_ARGS)
931 AC_MSG_RESULT([5 args])
933 AC_MSG_RESULT(unrecognised)
941 AC_CHECK_FUNC(gethostbyname_r, [
942 AC_MSG_CHECKING([signature of gethostbyname_r])
946 struct hostent *h, *r;
949 (void) gethostbyname_r(n, h, b, bl, &r, &e)
951 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARGS)
952 AC_MSG_RESULT([6 args])
960 (void) gethostbyname_r(n, h, b, bl, &e)
962 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARGS)
963 AC_MSG_RESULT([5 args])
968 struct hostent_data *d;
971 (void) gethostbyname_r(n, h, d)
973 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARGS)
974 AC_MSG_RESULT([3 args])
976 AC_MSG_RESULT(unrecognised)
984 AC_CHECK_FUNC(gmtime_r, [
985 AC_MSG_CHECKING([signature of gmtime_r])
991 (void) gmtime_r(t, tm)
994 AC_DEFINE(HAVE_GMTIME_R)
996 AC_MSG_RESULT(unrecognised)
1002 AC_CHECK_FUNC(localtime_r, [
1003 AC_MSG_CHECKING([signature of localtime_r])
1009 (void) localtime_r(t, tm)
1012 AC_DEFINE(HAVE_LOCALTIME_R)
1014 AC_MSG_RESULT(unrecognised)
1020 dnl =================================================================
1021 dnl Solaris specific
1022 dnl FIXME: Not tested on Solaris yet...
1023 dnl ISFIXED: Have tested it on Solaris, but there are other ways to
1024 dnl make these checks generic, e.g.:
1025 dnl AC_CHECK_FUNC(getsockopt, , AC_CHECK_LIB(socket, getsockopt))
1026 dnl (Moritz Barsnick <moritz@barsnick.net>)
1027 dnl =================================================================
1033 *-solaris*) SOCKET_LIB="-lsocket -lnsl"
1034 AC_DEFINE(__EXTENSIONS__)
1035 if test "$GCC" = "yes"; then
1036 # Set a GCC specific switch:
1037 # This compiler switch makes Solaris thread-safe
1039 SPECIAL_CFLAGS="-pthreads"
1041 # What do we do without GCC? Guess this:
1042 SPECIAL_CFLAGS="-D_REENTRANT"
1047 AC_SUBST(SOCKET_LIB)
1049 dnl =================================================================
1050 dnl Solaris problem, and others perhaps (socklen_t is undefined)
1051 dnl =================================================================
1053 AC_MSG_CHECKING([for socklen_t])
1054 AC_EGREP_HEADER(socklen_t, sys/socket.h, AC_MSG_RESULT([yes]),
1056 AC_DEFINE(socklen_t,int,
1057 [ Define to 'int' if <sys/socket.h> doesn't have it. ]))
1060 dnl =================================================================
1062 dnl =================================================================
1065 *-os2-emx*) SOCKET_LIB=-lsocket
1069 AC_SUBST(SOCKET_LIB)
1071 dnl =================================================================
1072 dnl Mac OSX specific
1073 dnl =================================================================
1076 *-apple-darwin*) SPECIAL_CFLAGS="-Dunix -DOSX_DARWIN"
1080 dnl =================================================================
1081 dnl OpenBSD specific
1082 dnl =================================================================
1085 *-openbsd*) SPECIAL_CFLAGS="$SPECIAL_CFLAGS -Dunix"
1089 dnl =================================================================
1090 dnl AmigaOS specific
1091 dnl =================================================================
1096 *-amigaos) AMIGAOS_ONLY=
1100 AC_SUBST(AMIGAOS_ONLY)
1102 dnl =================================================================
1103 dnl Check for standard compiler stuff
1104 dnl =================================================================
1115 AC_CHECK_SIZEOF(int, 4)
1116 AC_CHECK_SIZEOF(char *, 4)
1117 AC_CHECK_SIZEOF(long, 4)
1118 AC_CHECK_SIZEOF(long long, 8)
1119 AC_CHECK_SIZEOF(size_t, 4)
1121 dnl Checks for header files.
1122 dnl AC_HEADER_SYS_WAIT
1123 dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h)
1124 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])
1126 dnl Checks for library functions.
1128 dnl AC_CHECK_FUNC(strstr)
1129 dnl bcopy and memmove are for PCRE
1130 AC_CHECK_FUNCS([strerror bcopy memmove])
1131 AC_PROG_GCC_TRADITIONAL
1132 dnl uncommenting does not work for swa. suse linux
1136 dnl uncommenting does not work for swa. suse linux
1138 AC_CHECK_FUNCS([atexit getcwd gethostbyaddr gethostbyaddr_r gethostbyname gethostbyname_r inet_ntoa localtime_r memchr memmove memset random regcomp select setlocale socket strchr strdup strerror strftime strptime strstr strtoul timegm])
1141 dnl =================================================================
1142 dnl Checks for libraries.
1143 dnl =================================================================
1144 dnl Note: Some systems may have the library but not the system header
1145 dnl file, so we must check for both.
1146 dnl Also check for correct version
1147 AC_CHECK_LIB(pcre, pcre_compile, [
1148 AC_CHECK_HEADER(pcre.h, [
1149 AC_EGREP_HEADER(pcre_fullinfo, pcre.h, [have_pcre=yes], [AC_MSG_WARN([[pcre old version installed]]); have_pcre=no])
1151 AC_CHECK_HEADER(pcre/pcre.h, [
1152 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])
1157 AC_CHECK_LIB(pcreposix, regcomp, [
1158 AC_CHECK_HEADER(pcreposix.h, [
1159 AC_EGREP_HEADER(pcreposix_regerror, pcreposix.h, [AC_MSG_WARN([[pcreposix old version installed]]); have_pcreposix=no], [have_pcreposix=yes])
1161 AC_CHECK_HEADER(pcre/pcreposix.h, [
1162 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)])
1163 ], [have_pcreposix=no])
1165 ], [have_pcreposix=no], -lpcre)
1167 AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no], -lpcre)
1169 dnl =================================================================
1171 dnl =================================================================
1175 dnl =================================================================
1177 dnl =================================================================
1179 AC_ARG_ENABLE(toggle,
1180 [ --disable-toggle Don't support temporary disable],
1181 [if test $enableval = yes; then
1182 AC_DEFINE(FEATURE_TOGGLE)
1183 fi],AC_DEFINE(FEATURE_TOGGLE))
1185 AC_ARG_ENABLE(force,
1186 [ --disable-force Don't allow single-page disable],
1187 [if test $enableval = yes; then
1188 AC_DEFINE(FEATURE_FORCE_LOAD)
1189 fi],AC_DEFINE(FEATURE_FORCE_LOAD))
1191 AC_ARG_ENABLE(fast-redirects,
1192 [ --disable-fast-redirects Don't support fast redirects],
1193 [if test $enableval = yes; then
1194 AC_DEFINE(FEATURE_FAST_REDIRECTS)
1195 fi], AC_DEFINE(FEATURE_FAST_REDIRECTS))
1197 AC_ARG_ENABLE(killpopup,
1198 [ --disable-killpopup Never block popups],
1199 [if test $enableval = yes; then
1200 AC_DEFINE(FEATURE_KILL_POPUPS)
1201 fi],AC_DEFINE(FEATURE_KILL_POPUPS))
1203 AC_ARG_ENABLE(stats,
1204 [ --disable-stats Don't keep statistics],
1205 [if test $enableval = yes; then
1206 AC_DEFINE(FEATURE_STATISTICS)
1207 fi],AC_DEFINE(FEATURE_STATISTICS))
1209 AC_ARG_ENABLE(ie-images,
1210 [ --enable-ie-images Enable a quick but not always reliable auto-detect whether requests from
1211 MS Internet Explorer are for an image or not.],
1212 [if test $enableval = yes; then
1213 AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE)
1216 AC_ARG_ENABLE(image-blocking,
1217 [ --disable-image-blocking Don't try to figure out whether a request is
1218 for an image or HTML - assume HTML.],
1219 [if test $enableval = yes; then
1220 AC_DEFINE(FEATURE_IMAGE_BLOCKING)
1222 AC_DEFINE(FEATURE_IMAGE_BLOCKING))
1224 AC_ARG_ENABLE(acl-files,
1225 [ --disable-acl-files Prevents the use of ACL files to control access to
1226 Privoxy by IP address.],
1227 [if test $enableval = yes; then
1228 AC_DEFINE(FEATURE_ACL)
1230 AC_DEFINE(FEATURE_ACL))
1232 AC_ARG_ENABLE(trust-files,
1233 [ --disable-trust-files Prevents the use of trust files.],
1234 [if test $enableval = yes; then
1235 AC_DEFINE(FEATURE_TRUST)
1237 AC_DEFINE(FEATURE_TRUST))
1239 AC_ARG_ENABLE(jar-files,
1240 [ --disable-jar-files Prevents the use of jar files to capture cookies.],
1241 [if test $enableval = yes; then
1242 AC_DEFINE(FEATURE_COOKIE_JAR)
1244 AC_DEFINE(FEATURE_COOKIE_JAR))
1246 AC_ARG_ENABLE(editor,
1247 [ --disable-editor Prevents the use of the web-based actions file
1248 editor and web-based temporary disable setting.],
1249 [if test $enableval = yes; then
1250 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS)
1252 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS))
1254 AC_ARG_ENABLE(no-gifs,
1255 [ --enable-no-gifs Use politically correct PNG format instead of GIF
1256 for built-in images. May not work with all browsers.],
1257 [if test $enableval = yes; then
1258 AC_DEFINE(FEATURE_NO_GIFS)
1261 AC_ARG_ENABLE(graceful-termination,
1262 [ --enable-graceful-termination Allow to shutdown Privoxy through the webinterface.],
1263 [if test $enableval = yes; then
1264 AC_DEFINE(FEATURE_GRACEFUL_TERMINATION)
1267 dnl pcre/pcrs is needed for CGI anyway, so
1268 dnl the choice is only between static and
1271 AC_ARG_ENABLE(dynamic-pcre,
1272 [ --disable-dynamic-pcre Use the built-in, static pcre, even if libpcre is available],
1273 [ if test $enableval = "no"; then have_pcre=no; fi ])
1275 AC_ARG_ENABLE(dynamic-pcrs,
1276 [ --disable-dynamic-pcrs Use the built-in, static pcrs, even if libpcrs is available],
1277 [ if test $enableval = "no"; then have_pcrs=no; fi ])
1280 # This check is incomplete. mingw32's zlib is found but the build fails.
1282 [ --enable-zlib Use an external zlib library to allow decompressing
1284 [enableval2=$enableval],
1286 if test $enableval2 = yes; then
1287 AC_CHECK_LIB(z, zlibVersion, , [
1288 AC_MSG_ERROR([Unable to find a copy of zlib. The zlib library
1289 is necessary to enable compresion support. ])
1291 AC_DEFINE(FEATURE_ZLIB,1,
1292 [ Define to 1 to use compression through the zlib library. ])
1296 # If we have libpcre and either we also have pcreposix or
1297 # we don't need pcreposix, then link pcre dynamically; else
1298 # build it and link statically
1300 if test $have_pcre = "yes"; then
1301 echo "using libpcre"
1304 LIBS="$LIBS -lpcre -lpcreposix"
1306 echo "using built-in static pcre"
1308 AC_DEFINE(STATIC_PCRE)
1312 # If we have libpcrs and pcre is linked dynamically
1313 # then also link pcrs dynamically, else build and link
1316 if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
1317 echo "using libpcrs"
1321 echo "using built-in static pcrs"
1322 AC_DEFINE(STATIC_PCRS)
1326 AC_SUBST(STATIC_PCRE_ONLY)
1327 AC_SUBST(STATIC_PCRS_ONLY)
1329 dnl =================================================================
1330 dnl Final cleanup and output
1331 dnl =================================================================
1333 dnl Remove the SPECIAL_CFLAGS stuff from CFLAGS, and add it seperately
1335 CFLAGS=$old_CFLAGS_nospecial
1336 AC_SUBST(SPECIAL_CFLAGS)
1338 AC_SUBST(PTHREAD_LIB)
1340 AC_OUTPUT(GNUmakefile doc/source/ldp.dsl)