1 dnl Process this file with autoconf to produce a configure script.
3 dnl $Id: configure.in,v 1.109 2008/01/20 14:07:09 fabiankeil Exp $
5 dnl Written by and Copyright (C) 2001 - 2007 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.109 2008/01/20 14:07:09 fabiankeil
32 dnl Set CODE_STATUS to stable.
34 dnl Revision 1.108 2007/12/10 02:30:00 hal9
35 dnl Change versioning for > 3.0.7 && < 3.0.8
37 dnl Revision 1.107 2007/11/15 02:50:14 hal9
38 dnl Setting to "beta" (for doc builds, etc).
40 dnl Revision 1.106 2007/05/11 11:49:41 fabiankeil
41 dnl Check for strlcat().
43 dnl Revision 1.105 2007/04/09 17:34:58 fabiankeil
44 dnl Check for snprintf().
46 dnl Revision 1.104 2007/03/31 13:35:11 fabiankeil
47 dnl Add checks for gettimeofday() and strlcpy().
49 dnl Revision 1.103 2007/01/20 16:29:38 fabiankeil
50 dnl Suppress edit buttons for action files if Privoxy has
51 dnl no write access. Suggested by Roland in PR 1564026.
53 dnl Revision 1.102 2007/01/18 14:55:45 fabiankeil
54 dnl Check for tzset() and putenv() to make sure the
55 dnl replacement timegm() isn't included on systems
56 dnl where it fails to compile.
58 dnl Revision 1.101 2007/01/12 15:20:17 fabiankeil
59 dnl Temporarily ignore external libpcrs to prevent
60 dnl problems that are fixed in Privoxy's own version.
62 dnl Revision 1.100 2007/01/07 07:38:10 joergs
63 dnl Disabled -pipe for AmigaOS4.
65 dnl Revision 1.99 2007/01/01 19:36:37 fabiankeil
66 dnl Integrate a modified version of Wil Mahan's
67 dnl zlib patch (PR #895531).
69 dnl Revision 1.98 2006/12/17 19:15:26 fabiankeil
70 dnl Added ./configure switch for FEATURE_GRACEFUL_TERMINATION.
72 dnl Revision 1.97 2006/11/21 18:32:46 hal9
73 dnl Setting version to 3.0.7 UNRELEASED for lack of a better setting.
75 dnl Revision 1.96 2006/11/18 14:42:51 fabiankeil
78 dnl Revision 1.95 2006/11/14 02:08:59 hal9
79 dnl Setting version string to 3.0.6 UNRELEASED. This needs to be reset to 3.0.6
80 dnl stable just before CVS is tagged for release.
82 dnl Revision 1.94 2006/11/13 19:05:50 fabiankeil
83 dnl Make pthread mutex locking more generic. Instead of
84 dnl checking for OSX and OpenBSD, check for FEATURE_PTHREAD
85 dnl and use mutex locking unless there is an _r function
86 dnl available. Better safe than sorry.
88 dnl Fixes "./configure --disable-pthread" and should result
89 dnl in less threading-related problems on pthread-using platforms,
90 dnl but it still doesn't fix BR#1122404.
92 dnl Revision 1.93 2006/09/22 01:26:20 hal9
93 dnl Set version to 3.0.5 BETA for hopefully release this weekend.
95 dnl Revision 1.92 2006/08/17 17:09:49 fabiankeil
96 dnl Added check for timegm().
98 dnl Revision 1.91 2006/08/13 22:01:51 fabiankeil
99 dnl Added checks for strptime() and random()
101 dnl Revision 1.90 2006/07/18 14:48:45 david__schmidt
102 dnl Reorganizing the repository: swapping out what was HEAD (the old 3.1 branch)
103 dnl with what was really the latest development (the v_3_0_branch branch)
105 dnl Revision 1.68.2.20 2004/01/31 16:31:46 oes
106 dnl Resetting version info to 0.0.0 UNRELEASED
108 dnl Revision 1.68.2.19 2004/01/30 09:26:03 oes
109 dnl Added docbook paths for debian sarge; set status for release
111 dnl Revision 1.68.2.18 2003/12/08 15:10:29 oes
112 dnl Bugfix: --with-docbook now correctly accepts its path parameter. Thanks, Roland!
114 dnl Revision 1.68.2.17 2003/10/18 18:41:26 david__schmidt
115 dnl Update to remain buildable on OS/2 - remove the failures
116 dnl due to missing unixisms
118 dnl Revision 1.68.2.16 2003/03/26 16:05:14 oes
119 dnl Marked as 0.0.0 UNRELEASED
121 dnl Revision 1.68.2.15 2003/03/26 00:25:00 oes
122 dnl Bump version for 3.0.2
124 dnl Revision 1.68.2.14 2003/03/25 13:27:12 hal9
125 dnl Manually apply Docbook/FreeBSD patch #708081 from a.go at tiscali.nl.
127 dnl Revision 1.68.2.13 2003/03/18 19:38:57 oes
128 dnl Set version info for 3.0.1 release
130 dnl Revision 1.68.2.12 2003/03/07 03:41:04 david__schmidt
131 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.
133 dnl Revision 1.68.2.11 2003/03/06 15:22:37 oes
134 dnl Fixed minor shell syntax bug
136 dnl Revision 1.68.2.10 2003/01/08 16:39:41 oes
137 dnl Changing default to exclude FEATURE_IMAGE_DETECT_MSIE because of problem reports with recent IEs
139 dnl Revision 1.68.2.9 2002/12/13 23:47:45 hal9
140 dnl Add openbsd $specialflags per gunner at styx2002.no-ip.org
142 dnl Revision 1.68.2.8 2002/11/27 12:55:26 oes
143 dnl Fixed broken handling of pre-set CFLAGS
145 dnl Revision 1.68.2.7 2002/10/25 02:44:22 hal9
146 dnl Port of make install, etc from main trunk. Needs testing! Add Slackware
147 dnl support, and other related changes. Update related docs.
149 dnl Revision 1.68.2.6 2002/09/25 15:35:15 oes
150 dnl Marking as non-release
152 dnl Revision 1.68.2.5 2002/08/25 23:37:00 hal9
153 dnl Getting ready for 3.0 release.
155 dnl Revision 1.68.2.4 2002/08/10 11:21:57 oes
156 dnl - Set Version to 2.9.20 (beta)
157 dnl - Add two AC_DEFINEs that indicate if the pcre*.h headers
158 dnl are located in a pcre/ subdir to the include path.
160 dnl Revision 1.68.2.3 2002/08/06 11:29:36 oes
161 dnl Fixed detection/inclusion of pcre.h, which is in a pcre subdir on RH
163 dnl Revision 1.68.2.2 2002/07/30 19:36:09 hal9
164 dnl Bump version to 2.9.17.
166 dnl Revision 1.68.2.1 2002/07/26 15:21:12 oes
167 dnl Bumped version number for 2.9.16 freeze
169 dnl Revision 1.68 2002/05/25 16:54:54 jongfoster
170 dnl Detect if the compiler supports -pthread.
171 dnl Hopefully this will fix bug 560442. (I don't have a HP PA-RISC
172 dnl machine to test this!)
174 dnl Revision 1.67 2002/05/03 14:33:59 oes
175 dnl Generate doc/soucre/ldp.dsl
177 dnl Revision 1.66 2002/05/03 00:41:56 oes
178 dnl Set version to 2.9.15 to comply with new versioning scheme
180 dnl Revision 1.65 2002/04/25 19:13:57 morcego
181 dnl Removed RPM release number declaration on configure.in
182 dnl Changed makefile to use given value for RPM_PACKAGEV when on uploading
183 dnl targets (will produce an error, explaining who to do it, if no value
186 dnl Revision 1.64 2002/04/22 16:32:31 morcego
187 dnl configure.in, *.spec: Bumping release to 2 (2.9.14-2)
188 dnl -rh.spec: uid and gid are now macros
189 dnl -suse.spec: Changing the header Copyright to License (Copyright is
192 dnl Revision 1.63 2002/04/11 11:00:21 oes
193 dnl Applied Moritz' fix for socklen_t on Solaris
195 dnl Revision 1.62 2002/04/11 10:09:20 oes
198 dnl Revision 1.61 2002/04/10 18:14:45 morcego
199 dnl - (privoxy-rh.spec only) Relisting template files on the %%files section
200 dnl - (configure.in, privoxy-rh.spec) Bumped package release to 5
202 dnl Revision 1.60 2002/04/09 16:38:49 oes
203 dnl Added detection of missing config.h.in
205 dnl Revision 1.59 2002/04/06 20:23:55 jongfoster
206 dnl Removing unnessacery tests (C++, ranlib)
208 dnl Revision 1.58 2002/04/04 20:49:20 swa
209 dnl attempt to consolidate the
210 dnl different dokbook versions.
212 dnl Revision 1.57 2002/04/04 00:36:36 gliptak
213 dnl always use pcre for matching
215 dnl Revision 1.56 2002/04/03 22:28:03 gliptak
216 dnl Removed references to gnu_regex
218 dnl Revision 1.55 2002/04/03 03:54:38 gliptak
219 dnl Checking pcre version
221 dnl Revision 1.54 2002/04/01 00:54:24 gliptak
222 dnl More changes needed around regex support.
224 dnl Revision 1.53 2002/03/29 20:09:01 swa
227 dnl Revision 1.52 2002/03/29 19:51:40 gliptak
228 dnl Correcting compile problem with Debian
230 dnl Revision 1.51 2002/03/28 20:43:00 swa
231 dnl set make correctly
233 dnl Revision 1.50 2002/03/27 03:03:45 hal9
234 dnl Add test for man2html
236 dnl Revision 1.49 2002/03/27 02:19:52 david__schmidt
237 dnl More Mac OSX support:
238 dnl - Get rid of extraneous, noisy -pthread warnings
239 dnl - Define unix so we get oes' unix-tagged changes
241 dnl Revision 1.48 2002/03/26 22:29:54 swa
242 dnl we have a new homepage!
244 dnl Revision 1.47 2002/03/26 16:41:00 hal9
245 dnl Upped RPM Release to 3 (need to build new RH packages)
247 dnl Revision 1.46 2002/03/24 18:55:06 jongfoster
248 dnl Making Docbook work under Windows
250 dnl Revision 1.45 2002/03/24 14:19:55 swa
251 dnl set rpm package release in configure.in. nowhere else.
253 dnl Revision 1.44 2002/03/24 13:25:43 swa
254 dnl name change related issues
256 dnl Revision 1.43 2002/03/24 12:56:21 swa
257 dnl name change related issues.
259 dnl Revision 1.42 2002/03/22 18:11:37 jongfoster
260 dnl Bumping version number to 2.9.12
262 dnl Revision 1.41 2002/03/19 19:30:04 morcego
263 dnl - Fixing stylesheet checking on configure. If it is found, no further checks
266 dnl - configure will now check for db2html or docbook2html (should work now
267 dnl on SuSe without the docbktls package)
269 dnl Revision 1.40 2002/03/09 14:33:30 oes
270 dnl Fixing the (harmless) AC_CHECK_FILE warnings
272 dnl Revision 1.39 2002/03/08 16:46:13 oes
273 dnl Added --enable-no-gifs
275 dnl Revision 1.38 2002/03/08 14:13:50 morcego
276 dnl Fixing configure, to remove a command not found error.
278 dnl Revision 1.37 2002/03/08 12:58:21 oes
279 dnl Tiny bugfix in AC_ARG_WITH(debug)
281 dnl Revision 1.36 2002/03/06 23:50:36 morcego
282 dnl Will not test for a text browser if we are not using docbook.
284 dnl Revision 1.35 2002/03/06 21:55:52 morcego
285 dnl New configure option: --with-docbook=(yes|no|directory)
286 dnl Preliminary new platform detection code included. Will work with the
287 dnl old one for now. No use just trowing it away
289 dnl Revision 1.34 2002/03/06 20:57:00 morcego
290 dnl Fixing detection of stylesheets on SuSe.
292 dnl Revision 1.33 2002/03/05 17:31:11 morcego
293 dnl Search for docbook.dsl. Should solve portability problems for SuSe.
295 dnl Revision 1.32 2002/03/05 14:07:43 morcego
296 dnl configure now detects rpm topdir, and change GNUmakefile acordingly
297 dnl (based on sugestion by Sarantis Paskalis)
299 dnl Revision 1.31 2002/03/05 13:43:28 morcego
300 dnl Checking for text browser, so redhat-dok can work.
302 dnl Revision 1.30 2002/03/04 17:58:01 oes
303 dnl Deleted _DEBUG and PID_FILE_PATH
305 dnl Revision 1.29 2002/02/28 14:20:53 oes
306 dnl Fixed detection of gethost*_r functions on Solaris
308 dnl Revision 1.28 2002/02/27 15:02:38 oes
309 dnl Incremented version number
311 dnl Revision 1.27 2002/01/10 12:35:18 oes
312 dnl Added cross-compile defaults to the AC_CHECK_SIZEOF macros
313 dnl to silence autoconf warnings. Numbers are for Intel/Linux.
314 dnl Is there a better way?
316 dnl Revision 1.26 2002/01/09 14:29:49 oes
317 dnl - Added AC_CHECK_FUNC tests for the availability of
318 dnl gethostbyname_r, gethostbyaddr_r, gmtime_r and
319 dnl localtime_r, as well as AC_TRY_COMPILE tests to
320 dnl determine their signatures.
322 dnl - Fixed a bug with the init of CFLAGS that was
323 dnl reported by barsnick
325 dnl Revision 1.25 2002/01/04 15:27:18 oes
326 dnl Changed quoting of CODE_STATUS for use in make
328 dnl Revision 1.24 2001/12/30 14:07:31 steudten
329 dnl - Add signal handling (unix)
330 dnl - Add SIGHUP handler (unix)
331 dnl - Add creation of pidfile (unix)
332 dnl - Add action 'top' in rc file (RH)
333 dnl - Add entry 'SIGNALS' to manpage
334 dnl - Add exit message to logfile (unix)
336 dnl Revision 1.23 2001/12/09 20:24:42 david__schmidt
337 dnl Change from "alpha" to "beta" in configure.in
339 dnl Revision 1.22 2001/12/01 11:24:01 jongfoster
340 dnl Renaming Makefile.in to GNUmakefile.in so that non-GNU versions of
341 dnl make break in a more obvious way.
343 dnl Revision 1.21 2001/11/30 21:35:54 jongfoster
344 dnl Bumping version number to 2.9.10
346 dnl Revision 1.20 2001/10/23 21:24:09 jongfoster
347 dnl Support for FEATURE_CGI_EDIT_ACTIONS
349 dnl Revision 1.19 2001/10/07 15:33:14 oes
350 dnl Removed FEATURE_DENY_GZIP
351 dnl Bumped up version number
353 dnl Revision 1.18 2001/09/13 13:10:24 steudten
355 dnl PreWork for Debug Interface.
356 dnl Add new option "--with-debug" to enable debugging (flags aso.)
358 dnl Revision 1.17 2001/09/12 23:44:55 david__schmidt
359 dnl Mac OSX (Darwin) support added.
361 dnl Revision 1.16 2001/09/12 22:55:45 joergs
362 dnl AmigaOS support added.
364 dnl Revision 1.15 2001/09/12 17:28:59 david__schmidt
366 dnl OS/2 port: update autoconf'd support for the platform.
368 dnl Revision 1.14 2001/07/30 22:12:11 jongfoster
369 dnl Fixing Solaris build (I hope) and tidying up #defines:
370 dnl - All feature #defines are now of the form FEATURE_xxx
371 dnl - Permanently turned off WIN_GUI_EDIT
372 dnl - Permanently turned on WEBDAV and SPLIT_PROXY_ARGS
374 dnl Revision 1.13 2001/07/29 17:09:17 jongfoster
375 dnl Major changes to build system in order to fix these bugs:
376 dnl - pthreads under Linux was broken - changed -lpthread to -pthread
377 dnl - Compiling in MinGW32 mode under CygWin now correctly detects
378 dnl which shared libraries are available
379 dnl - Solaris support (?) (Not tested under Solaris yet)
381 dnl Revision 1.12 2001/07/25 19:16:27 oes
382 dnl Bumping version number to 2.9.8
384 dnl Revision 1.11 2001/07/21 18:00:07 jongfoster
385 dnl Bumping version number to 2.9.7
387 dnl Revision 1.10 2001/07/18 17:25:04 oes
390 dnl Revision 1.9 2001/07/15 19:45:13 jongfoster
391 dnl Added support for linking with POSIX threads library
393 dnl Revision 1.8 2001/07/15 17:54:29 jongfoster
394 dnl Renaming #define STATIC to STATIC_PCRE
395 dnl Adding new #define FEATURE_PTHREAD that will be used to enable
396 dnl POSIX threads support.
398 dnl Revision 1.7 2001/07/13 13:58:05 oes
399 dnl Completely reorganized the selection scheme for
400 dnl pcre, pcreposix, pcrs and gnu_regex:
402 dnl The presence of shared pcre, pcreposix or pcrs
403 dnl libraried is now autodetected. Additionally, the
404 dnl user can enforce using the built-in static variants
405 dnl by specifying --disable-dynamic-(pcre|pcrs).
406 dnl Care is taken to avoid that pcre is dyn, while pcreposix
407 dnl is static, if both are used and that pcrs is static if
410 dnl The choice between pcre, gnu or no regex for actionsfile
411 dnl URL matching is now via
412 dnl --(enable|disable)-regex-matching[=(gnu|pcre|no)] with the
413 dnl default being pcre.
415 dnl Revision 1.6 2001/06/29 21:56:40 oes
418 dnl Revision 1.5 2001/06/29 13:26:27 oes
419 dnl Introduced #define CODE_STATUS
421 dnl Revision 1.4 2001/05/29 09:50:24 jongfoster
422 dnl Unified blocklist/imagelist/permissionslist.
423 dnl File format is still under discussion, but the internal changes
424 dnl are (mostly) done.
426 dnl Also modified interceptor behaviour:
427 dnl - We now intercept all URLs beginning with one of the following
428 dnl prefixes (and *only* these prefixes):
430 dnl * http://ijbswa.sf.net/config/
431 dnl * http://ijbswa.sourceforge.net/config/
432 dnl - New interceptors "home page" - go to http://i.j.b/ to see it.
433 dnl - Internal changes so that intercepted and fast redirect pages
434 dnl are not replaced with an image.
435 dnl - Interceptors now have the option to send a binary page direct
436 dnl to the client. (i.e. ijb-send-banner uses this)
437 dnl - Implemented show-url-info interceptor. (Which is why I needed
438 dnl the above interceptors changes - a typical URL is
439 dnl "http://i.j.b/show-url-info?url=www.somesite.com/banner.gif".
440 dnl The previous mechanism would not have intercepted that, and
441 dnl if it had been intercepted then it then it would have replaced
442 dnl it with an image.)
444 dnl Revision 1.3 2001/05/22 18:46:04 oes
446 dnl - Enabled filtering banners by size rather than URL
447 dnl by adding patterns that replace all standard banner
448 dnl sizes with the "Junkbuster" gif to the re_filterfile
450 dnl - Enabled filtering WebBugs by providing a pattern
451 dnl which kills all 1x1 images
453 dnl - Added support for PCRE_UNGREEDY behaviour to pcrs,
454 dnl which is selected by the (nonstandard and therefore
455 dnl capital) letter 'U' in the option string.
456 dnl It causes the quantifiers to be ungreedy by default.
457 dnl Appending a ? turns back to greedy (!).
459 dnl - Added a new interceptor ijb-send-banner, which
460 dnl sends back the "Junkbuster" gif. Without imagelist or
461 dnl MSIE detection support, or if tinygif = 1, or the
462 dnl URL isn't recognized as an imageurl, a lame HTML
463 dnl explanation is sent instead.
465 dnl - Added new feature, which permits blocking remote
466 dnl script redirects and firing back a local redirect
468 dnl The feature is conditionally compiled, i.e. it
469 dnl can be disabled with --disable-fast-redirects,
470 dnl plus it must be activated by a "fast-redirects"
471 dnl line in the config file, has its own log level
472 dnl and of course wants to be displayed by show-proxy-args
473 dnl Note: Boy, all the #ifdefs in 1001 locations and
474 dnl all the fumbling with configure.in and acconfig.h
475 dnl were *way* more work than the feature itself :-(
477 dnl - Because a generic redirect template was needed for
478 dnl this, tinygif = 3 now uses the same.
480 dnl - Moved GIFs, and other static HTTP response templates
483 dnl - Some minor fixes
485 dnl - Removed some >400 CRs again (Jon, you really worked
488 dnl Revision 1.2 2001/05/20 01:21:20 jongfoster
489 dnl Version 2.9.4 checkin.
490 dnl - Merged popupfile and cookiefile, and added control over PCRS
491 dnl filtering, in new "permissionsfile".
492 dnl - Implemented LOG_LEVEL_FATAL, so that if there is a configuration
493 dnl file error you now get a message box (in the Win32 GUI) rather
494 dnl than the program exiting with no explanation.
495 dnl - Made killpopup use the PCRS MIME-type checking and HTTP-header
497 dnl - Removed tabs from "config"
498 dnl - Moved duplicated url parsing code in "loaders.c" to a new funcition.
499 dnl - Bumped up version number.
501 dnl Revision 1.1.1.1 2001/05/15 13:58:50 oes
502 dnl Initial import of version 2.9.3 source tree
507 dnl =================================================================
508 dnl AutoConf Initialization
509 dnl =================================================================
511 AC_REVISION($Revision: 1.109 $)
514 if test ! -f config.h.in; then
515 echo "You need to run autoheader first. "
516 echo -n "Shall I do this for you now? (y/n) "
518 if test "$answer" != "y"; then
525 AC_CONFIG_HEADER([config.h])
530 AC_ARG_WITH(docbook, dnl
531 --with-docbook=[[yes|no|directory]]
532 Enable docbook documentation creation
533 (default = yes, for gnu and linux),[dnl
534 case "$with_docbook" in
544 AC_ARG_WITH(db2html, dnl
545 --with-db2html=<path/executable>
546 Set the location of the docbook to html converter
547 (default = search),[dnl
551 dnl =================================================================
552 dnl Application version number
553 dnl =================================================================
558 CODE_STATUS="UNRELEASED"
560 dnl CODE_STATUS can be "alpha", "beta", or "stable", and will be
561 dnl used for CGI output. Set version to 0.0.0 and status to "UNRELEASED"
562 dnl whenever CVS in a stable branch differs from the last release.
564 dnl =================================================================
565 dnl Substitute the version numbers
566 dnl =================================================================
568 AC_SUBST(VERSION_MAJOR)
569 AC_SUBST(VERSION_MINOR)
570 AC_SUBST(VERSION_POINT)
571 AC_SUBST(CODE_STATUS)
574 AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR})
575 AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR})
576 AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT})
577 AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}")
578 AC_DEFINE_UNQUOTED(CODE_STATUS,"${CODE_STATUS}")
580 dnl =================================================================
581 dnl Checks for programs needed to build.
582 dnl =================================================================
584 dnl Keep AC_PROG_CC from setting its own defaults:
585 if test "X$CFLAGS" = "X"; then
596 AC_CHECK_PROG(GDB,gdb,yes,no)
597 AC_PATH_PROG(BGROUPS,groups,no,/bin:/usr/bin:/usr/local/bin)
598 AC_PATH_PROG(ID,id,no,/bin:/usr/bin:/usr/local/bin)
602 dnl =================================================================
603 dnl debug, gcc and gdb support
604 dnl =================================================================
607 [ --with-debug Enable debug mode],
609 if test "x$withval" != "xno" ; then
610 if test $ac_cv_prog_cc_g = yes; then
611 if test "$GCC" = yes; then
613 CFLAGS="$CFLAGS -ggdb"
617 CFLAGS="$CFLAGS -Wshadow -Wconversion"
625 if test "X$CFLAGS" = "X "; then # if CFLAGS were unset (see above)
626 if test "$GCC" = yes; then
633 dnl =================================================================
634 dnl Check for user and group validity
635 dnl =================================================================
638 if test "$EMXOS2" = yes; then
639 echo "Skipping user and group validity stuff.";
643 $ID privoxy >/dev/null 2>/dev/null
644 if test $? -ne 0 ; then
645 AC_MSG_WARN(There is no user 'privoxy' on this system)
647 AC_MSG_CHECKING([for user])
649 [ --with-user=privoxy Set user under which privoxy will run],
651 if test "x$withval" != "xyes"; then
652 if test $ID = no ; then
653 AC_MSG_ERROR(There is no 'id' program on this system)
655 AC_MSG_RESULT($with_user)
656 $ID $with_user 2>/dev/null >/dev/null
657 if test $? -eq 0 ; then
660 AC_MSG_ERROR(There is no user '$with_user' on this system)
664 AC_MSG_ERROR(We need a user if you give me this parameter)
668 if test $ID = no ; then
669 AC_MSG_ERROR(There is no 'id' programm on this system)
671 AC_MSG_RESULT(none specified)
678 AC_MSG_CHECKING([for group])
680 [ --with-group=privoxy Set group for privoxy],
682 if test "x$withval" != "xyes"; then
683 if test $BGROUPS = no ; then
684 AC_MSG_ERROR(There is no 'groups' program on this system)
686 AC_MSG_RESULT($with_group)
687 $BGROUPS $USER >/dev/null
688 if test $? -eq 0 ; then
689 # FIXME: this fails if valid group, but not first group
691 if test "$with_group" != "`$BGROUPS $USER | sed 's/.*: //' 2>/dev/null |$AWK '{print $1}'`" ; then
692 AC_MSG_ERROR(The given value '$withval' does not match group entry)
697 AC_MSG_ERROR(There is no group entry for user '$USER')
701 AC_MSG_ERROR(We need a group if you give me this parameter)
705 if test $BGROUPS = no ; then
706 AC_MSG_ERROR(There is no 'groups' programm on this system)
708 AC_MSG_RESULT(none specified)
717 dnl =================================================================
718 dnl additional gcc flags
719 dnl =================================================================
722 if test "$host" != "powerpc-unknown-amigaos"; then
723 CFLAGS="-pipe $CFLAGS"
728 dnl =================================================================
730 dnl =================================================================
732 dnl Must do this first.
734 dnl Reason: This sets CFLAGS in order to switch the Cygwin compiler
735 dnl into Cygwin or MinGW32 modes. Depending on the mode selected,
736 dnl the compiler will use completely different sets of library
737 dnl and include files.
739 dnl =================================================================
744 if test "$MINGW32" = "yes"; then
747 if test "$CYGWIN" = "yes"; then
754 if test $dodk = auto; then
756 if test $target_type = unix; then
765 dnl Decide what to do based on target_type
766 dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
767 dnl This is because we don't know yet whether pthread is enabled.
769 AC_ARG_ENABLE(mingw32,
770 [ --enable-mingw32 Use mingw32 for a Windows GUI],
771 [if test $enableval = yes; then
775 if test $target_type = mingw; then
777 SPECIAL_CFLAGS="-mwindows -mno-cygwin"
778 PTHREAD_LIB=-lpthreadGC
779 echo "Using mingw32 (Win32 GUI)"
782 if test $target_type = cygwin; then
783 SPECIAL_CFLAGS="-mno-win32"
785 echo "Using Cygnus (Win32 command line)"
788 PTHREAD_LIB=-lpthread
793 dnl Checking which text html browser we have avaliable
794 if test $dodk != no; then
795 AC_CHECK_PROGS(WDUMP,w3m lynx links,false)
796 if test "$WDUMP" = false; then
797 AC_MSG_WARN(You need some kind of text browser to build documentation \(w3m, lynx and links are supported\))
799 if test $DB2HTML = false; then
800 dnl We need to clean the variable, otherwise AC_CHECK_PROGS
803 AC_CHECK_PROGS(DB2HTML,db2html docbook2html,false)
809 dnl If we use rpm, we need to check where %_topdir is
810 AC_CHECK_PROGS(RPMBIN,rpm,false)
811 if test $RPMBIN != false; then
812 RPM_BASE=`rpm --eval "%{_topdir}"`
813 if test "$RPM_BASE" = ""; then
814 RPM_BASE=/usr/src/redhat
819 dnl Check for jade, so we can build the documentation
820 AC_CHECK_PROGS(JADEBIN,jade openjade,false)
823 dnl Check for man2html for docs.
824 AC_CHECK_PROGS(MAN2HTML,man2html,false)
827 dnl Set doc status flag for conditional content inclusions
828 DOC_STATUS=p-not-stable
829 if test $CODE_STATUS = stable; then
830 DOC_STATUS="p-stable"
834 dnl Checking for the docbook.dsl stylesheet file
835 dnl It is still not portable (directory slash)
837 if test $dodk = yes; then
838 if test $DKPREFIX = none; then
839 for i in /usr/share/sgml/docbook/dsssl-stylesheets \
840 /usr/share/sgml/docbkdsl /usr/share/sgml/docbook-dsssl \
841 /usr/local/share/sgml/docbook/dsssl/modular \
842 /usr/share/sgml/docbook/stylesheet/dsssl/modular/ \
844 dnl echo -n does not fly with /bin/sh.
845 dnl echo -n "checking for $i/html/docbook.dsl..."
846 AC_MSG_CHECKING([for $i])
847 if test -f $i/html/docbook.dsl; then
855 # where are the catalogs?
856 for i in /usr/share/sgml/CATALOG.docbk30 \
857 /usr/share/sgml/CATALOG.docbk31 \
858 /usr/share/sgml/CATALOG.docbk31 \
859 /usr/local/share/sgml/docbook/3.0/docbook.cat \
860 /usr/local/share/sgml/docbook/3.1/docbook.cat \
861 /usr/share/sgml/docbook/dtd/3.1/docbook.cat \
863 dnl echo -n "checking for $i..."
864 AC_MSG_CHECKING([for $i])
867 JADECAT="$JADECAT -c $i"
877 dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
878 old_CFLAGS_nospecial=$CFLAGS
879 CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
881 # Hack to force AutoConf to use the CFLAGS we just set
882 dnl Warning: This may break with a future version of Autoconf
883 dnl Tested with autoconf 2.13
884 ac_cpp='$CPP $CPPFLAGS $SPECIAL_CFLAGS'
885 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
886 ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
889 dnl =================================================================
891 dnl =================================================================
893 AC_CHECK_HEADER(pthread.h, [have_pthread=yes], [have_pthread=no])
895 AC_ARG_ENABLE(pthread,
896 [ --disable-pthread Don't use POSIX threads (pthreads)],
897 [if test $enableval = no; then
902 if test $have_pthread = yes; then
904 AC_DEFINE(FEATURE_PTHREAD)
905 echo Using POSIX threads
906 if test "$GCC" = "yes"; then
907 # Set a GCC specific switch:
908 if test "$target_type" = "unix"; then
909 ac_jgf_save_CFLAGS=$CFLAGS
910 CFLAGS="$CFLAGS -pthread"
911 AC_TRY_LINK([#include <pthread.h>],
912 [void *p = pthread_create;],
914 # This compiler switch makes GCC on Linux thread-safe
915 # However, it's not supported on most other OS.
917 SPECIAL_CFLAGS="-pthread"
919 CFLAGS=$ac_jgf_save_CFLAGS
924 echo Using native threads
927 AC_SUBST(PTHREAD_ONLY)
929 dnl =================================================================
930 dnl Support for thread-safe versions of gethostbyaddr, gethostbyname,
931 dnl gmtime and localtime
932 dnl =================================================================
934 dnl Next line needed to find the gethost*_r functions on Solaris
935 AC_CHECK_LIB(nsl, gethostbyname)
937 AC_CHECK_FUNC(gethostbyaddr_r, [
938 AC_MSG_CHECKING([signature of gethostbyaddr_r])
942 struct hostent *h, *hp;
945 (void) gethostbyaddr_r(a, l, t, h, b, bl, &hp, &e)
947 AC_DEFINE(HAVE_GETHOSTBYADDR_R_8_ARGS)
948 AC_MSG_RESULT([8 args])
956 (void) gethostbyaddr_r(a, l, t, h, b, bl, &e)
958 AC_DEFINE(HAVE_GETHOSTBYADDR_R_7_ARGS)
959 AC_MSG_RESULT([7 args])
964 struct hostent_data *d;
968 (void) gethostbyaddr_r(a, l, t, h, d)
970 AC_DEFINE(HAVE_GETHOSTBYADDR_R_5_ARGS)
971 AC_MSG_RESULT([5 args])
973 AC_MSG_RESULT(unrecognised)
981 AC_CHECK_FUNC(gethostbyname_r, [
982 AC_MSG_CHECKING([signature of gethostbyname_r])
986 struct hostent *h, *r;
989 (void) gethostbyname_r(n, h, b, bl, &r, &e)
991 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARGS)
992 AC_MSG_RESULT([6 args])
1000 (void) gethostbyname_r(n, h, b, bl, &e)
1002 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARGS)
1003 AC_MSG_RESULT([5 args])
1008 struct hostent_data *d;
1011 (void) gethostbyname_r(n, h, d)
1013 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARGS)
1014 AC_MSG_RESULT([3 args])
1016 AC_MSG_RESULT(unrecognised)
1024 AC_CHECK_FUNC(gmtime_r, [
1025 AC_MSG_CHECKING([signature of gmtime_r])
1031 (void) gmtime_r(t, tm)
1034 AC_DEFINE(HAVE_GMTIME_R)
1036 AC_MSG_RESULT(unrecognised)
1042 AC_CHECK_FUNC(localtime_r, [
1043 AC_MSG_CHECKING([signature of localtime_r])
1049 (void) localtime_r(t, tm)
1052 AC_DEFINE(HAVE_LOCALTIME_R)
1054 AC_MSG_RESULT(unrecognised)
1060 dnl =================================================================
1061 dnl Solaris specific
1062 dnl FIXME: Not tested on Solaris yet...
1063 dnl ISFIXED: Have tested it on Solaris, but there are other ways to
1064 dnl make these checks generic, e.g.:
1065 dnl AC_CHECK_FUNC(getsockopt, , AC_CHECK_LIB(socket, getsockopt))
1066 dnl (Moritz Barsnick <moritz@barsnick.net>)
1067 dnl =================================================================
1073 *-solaris*) SOCKET_LIB="-lsocket -lnsl"
1074 AC_DEFINE(__EXTENSIONS__)
1075 if test "$GCC" = "yes"; then
1076 # Set a GCC specific switch:
1077 # This compiler switch makes Solaris thread-safe
1079 SPECIAL_CFLAGS="-pthreads"
1081 # What do we do without GCC? Guess this:
1082 SPECIAL_CFLAGS="-D_REENTRANT"
1087 AC_SUBST(SOCKET_LIB)
1089 dnl =================================================================
1090 dnl Solaris problem, and others perhaps (socklen_t is undefined)
1091 dnl =================================================================
1093 AC_MSG_CHECKING([for socklen_t])
1094 AC_EGREP_HEADER(socklen_t, sys/socket.h, AC_MSG_RESULT([yes]),
1096 AC_DEFINE(socklen_t,int,
1097 [ Define to 'int' if <sys/socket.h> doesn't have it. ]))
1100 dnl =================================================================
1102 dnl =================================================================
1105 *-os2-emx*) SOCKET_LIB=-lsocket
1109 AC_SUBST(SOCKET_LIB)
1111 dnl =================================================================
1112 dnl Mac OSX specific
1113 dnl =================================================================
1116 *-apple-darwin*) SPECIAL_CFLAGS="-Dunix -DOSX_DARWIN"
1120 dnl =================================================================
1121 dnl OpenBSD specific
1122 dnl =================================================================
1125 *-openbsd*) SPECIAL_CFLAGS="$SPECIAL_CFLAGS -Dunix"
1129 dnl =================================================================
1130 dnl AmigaOS specific
1131 dnl =================================================================
1136 *-amigaos) AMIGAOS_ONLY=
1140 AC_SUBST(AMIGAOS_ONLY)
1142 dnl =================================================================
1143 dnl Check for standard compiler stuff
1144 dnl =================================================================
1155 AC_CHECK_SIZEOF(int, 4)
1156 AC_CHECK_SIZEOF(char *, 4)
1157 AC_CHECK_SIZEOF(long, 4)
1158 AC_CHECK_SIZEOF(long long, 8)
1159 AC_CHECK_SIZEOF(size_t, 4)
1161 dnl Checks for header files.
1162 dnl AC_HEADER_SYS_WAIT
1163 dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h)
1164 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])
1166 dnl Checks for library functions.
1168 dnl AC_CHECK_FUNC(strstr)
1169 dnl bcopy and memmove are for PCRE
1170 AC_CHECK_FUNCS([strerror bcopy memmove])
1171 AC_PROG_GCC_TRADITIONAL
1172 dnl uncommenting does not work for swa. suse linux
1176 dnl uncommenting does not work for swa. suse linux
1178 AC_CHECK_FUNCS([access atexit getcwd gethostbyaddr gethostbyaddr_r gethostbyname gethostbyname_r gettimeofday inet_ntoa localtime_r memchr memmove memset putenv random regcomp select setlocale snprintf socket strchr strdup strerror strftime strlcat strlcpy strptime strstr strtoul timegm tzset])
1181 dnl =================================================================
1182 dnl Checks for libraries.
1183 dnl =================================================================
1184 dnl Note: Some systems may have the library but not the system header
1185 dnl file, so we must check for both.
1186 dnl Also check for correct version
1187 AC_CHECK_LIB(pcre, pcre_compile, [
1188 AC_CHECK_HEADER(pcre.h, [
1189 AC_EGREP_HEADER(pcre_fullinfo, pcre.h, [have_pcre=yes], [AC_MSG_WARN([[pcre old version installed]]); have_pcre=no])
1191 AC_CHECK_HEADER(pcre/pcre.h, [
1192 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])
1197 AC_CHECK_LIB(pcreposix, regcomp, [
1198 AC_CHECK_HEADER(pcreposix.h, [
1199 AC_EGREP_HEADER(pcreposix_regerror, pcreposix.h, [AC_MSG_WARN([[pcreposix old version installed]]); have_pcreposix=no], [have_pcreposix=yes])
1201 AC_CHECK_HEADER(pcre/pcreposix.h, [
1202 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)])
1203 ], [have_pcreposix=no])
1205 ], [have_pcreposix=no], -lpcre)
1207 dnl ================================================================
1208 dnl libpcrs is temporarily disabled.
1210 dnl Privoxy's own pcrs version fixes some problems that
1211 dnl are present in libpcrs 0.3, the last pcrs release we
1212 dnl know of, and as libpcrs seems to be currently unmaintained
1213 dnl we can't send these fixes upstream.
1214 dnl ================================================================
1216 dnl AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no], -lpcre)
1218 dnl =================================================================
1220 dnl =================================================================
1224 dnl =================================================================
1226 dnl =================================================================
1228 AC_ARG_ENABLE(toggle,
1229 [ --disable-toggle Don't support temporary disable],
1230 [if test $enableval = yes; then
1231 AC_DEFINE(FEATURE_TOGGLE)
1232 fi],AC_DEFINE(FEATURE_TOGGLE))
1234 AC_ARG_ENABLE(force,
1235 [ --disable-force Don't allow single-page disable],
1236 [if test $enableval = yes; then
1237 AC_DEFINE(FEATURE_FORCE_LOAD)
1238 fi],AC_DEFINE(FEATURE_FORCE_LOAD))
1240 AC_ARG_ENABLE(fast-redirects,
1241 [ --disable-fast-redirects Don't support fast redirects],
1242 [if test $enableval = yes; then
1243 AC_DEFINE(FEATURE_FAST_REDIRECTS)
1244 fi], AC_DEFINE(FEATURE_FAST_REDIRECTS))
1246 AC_ARG_ENABLE(killpopup,
1247 [ --disable-killpopup Never block popups],
1248 [if test $enableval = yes; then
1249 AC_DEFINE(FEATURE_KILL_POPUPS)
1250 fi],AC_DEFINE(FEATURE_KILL_POPUPS))
1252 AC_ARG_ENABLE(stats,
1253 [ --disable-stats Don't keep statistics],
1254 [if test $enableval = yes; then
1255 AC_DEFINE(FEATURE_STATISTICS)
1256 fi],AC_DEFINE(FEATURE_STATISTICS))
1258 AC_ARG_ENABLE(ie-images,
1259 [ --enable-ie-images Enable a quick but not always reliable auto-detect whether requests from
1260 MS Internet Explorer are for an image or not.],
1261 [if test $enableval = yes; then
1262 AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE)
1265 AC_ARG_ENABLE(image-blocking,
1266 [ --disable-image-blocking Don't try to figure out whether a request is
1267 for an image or HTML - assume HTML.],
1268 [if test $enableval = yes; then
1269 AC_DEFINE(FEATURE_IMAGE_BLOCKING)
1271 AC_DEFINE(FEATURE_IMAGE_BLOCKING))
1273 AC_ARG_ENABLE(acl-files,
1274 [ --disable-acl-files Prevents the use of ACL files to control access to
1275 Privoxy by IP address.],
1276 [if test $enableval = yes; then
1277 AC_DEFINE(FEATURE_ACL)
1279 AC_DEFINE(FEATURE_ACL))
1281 AC_ARG_ENABLE(trust-files,
1282 [ --disable-trust-files Prevents the use of trust files.],
1283 [if test $enableval = yes; then
1284 AC_DEFINE(FEATURE_TRUST)
1286 AC_DEFINE(FEATURE_TRUST))
1288 AC_ARG_ENABLE(jar-files,
1289 [ --disable-jar-files Prevents the use of jar files to capture cookies.],
1290 [if test $enableval = yes; then
1291 AC_DEFINE(FEATURE_COOKIE_JAR)
1293 AC_DEFINE(FEATURE_COOKIE_JAR))
1295 AC_ARG_ENABLE(editor,
1296 [ --disable-editor Prevents the use of the web-based actions file
1297 editor and web-based temporary disable setting.],
1298 [if test $enableval = yes; then
1299 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS)
1301 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS))
1303 AC_ARG_ENABLE(no-gifs,
1304 [ --enable-no-gifs Use politically correct PNG format instead of GIF
1305 for built-in images. May not work with all browsers.],
1306 [if test $enableval = yes; then
1307 AC_DEFINE(FEATURE_NO_GIFS)
1310 AC_ARG_ENABLE(graceful-termination,
1311 [ --enable-graceful-termination Allow to shutdown Privoxy through the webinterface.],
1312 [if test $enableval = yes; then
1313 AC_DEFINE(FEATURE_GRACEFUL_TERMINATION)
1316 dnl pcre/pcrs is needed for CGI anyway, so
1317 dnl the choice is only between static and
1320 AC_ARG_ENABLE(dynamic-pcre,
1321 [ --disable-dynamic-pcre Use the built-in, static pcre, even if libpcre is available],
1322 [ if test $enableval = "no"; then have_pcre=no; fi ])
1324 dnl =================================================
1325 dnl libpcrs is temporarily disabled,
1326 dnl see comment above for the reason.
1327 dnl =================================================
1328 dnl AC_ARG_ENABLE(dynamic-pcrs,
1329 dnl [ --disable-dynamic-pcrs Use the built-in, static pcrs, even if libpcrs is available],
1330 dnl [ if test $enableval = "no"; then have_pcrs=no; fi ])
1333 dnl ====================================================
1334 dnl This check is incomplete. For mingw32 zlib is found
1335 dnl by configure, but not necessarily by the compiler.
1336 dnl ====================================================
1338 [ --enable-zlib Use an external zlib library to allow decompressing
1340 [enableval2=$enableval],
1342 if test $enableval2 = yes; then
1343 AC_CHECK_LIB(z, zlibVersion, , [
1344 AC_MSG_ERROR([Unable to find a copy of zlib. The zlib library
1345 is necessary to enable compresion support. ])
1347 AC_DEFINE(FEATURE_ZLIB,1,
1348 [ Define to 1 to use compression through the zlib library. ])
1352 # If we have libpcre and either we also have pcreposix or
1353 # we don't need pcreposix, then link pcre dynamically; else
1354 # build it and link statically
1356 if test $have_pcre = "yes"; then
1357 echo "using libpcre"
1360 LIBS="$LIBS -lpcre -lpcreposix"
1362 echo "using built-in static pcre"
1364 AC_DEFINE(STATIC_PCRE)
1368 dnl =================================================
1369 dnl libpcrs is temporarily disabled,
1370 dnl see comment above for the reason.
1371 dnl =================================================
1372 dnl # If we have libpcrs and pcre is linked dynamically
1373 dnl # then also link pcrs dynamically, else build and link
1374 dnl # pcrs statically
1376 dnl if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
1377 dnl echo "using libpcrs"
1378 dnl STATIC_PCRS_ONLY=#
1379 dnl LIBS="$LIBS -lpcrs"
1381 echo "using built-in static pcrs"
1382 AC_DEFINE(STATIC_PCRS)
1386 AC_SUBST(STATIC_PCRE_ONLY)
1387 AC_SUBST(STATIC_PCRS_ONLY)
1389 dnl =================================================================
1390 dnl Final cleanup and output
1391 dnl =================================================================
1393 dnl Remove the SPECIAL_CFLAGS stuff from CFLAGS, and add it seperately
1395 CFLAGS=$old_CFLAGS_nospecial
1396 AC_SUBST(SPECIAL_CFLAGS)
1398 AC_SUBST(PTHREAD_LIB)
1400 AC_OUTPUT(GNUmakefile doc/source/ldp.dsl)