1 dnl Process this file with autoconf to produce a configure script.
3 dnl $Id: configure.in,v 1.113 2008/04/06 14:54:26 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.113 2008/04/06 14:54:26 fabiankeil
32 dnl Use PCRE syntax in host patterns when configured
33 dnl with --enable-pcre-host-patterns.
35 dnl Revision 1.112 2008/03/27 18:27:22 fabiankeil
36 dnl Remove kill-popups action.
38 dnl Revision 1.111 2008/02/03 14:40:47 fabiankeil
39 dnl Remove unused OSX_DARWIN macro. Reported by Mark Miller in #1852529.
41 dnl Revision 1.110 2008/01/26 10:52:13 fabiankeil
42 dnl Change version to 3.0.9 UNRELEASED.
44 dnl Revision 1.109 2008/01/20 14:07:09 fabiankeil
45 dnl Set CODE_STATUS to stable.
47 dnl Revision 1.108 2007/12/10 02:30:00 hal9
48 dnl Change versioning for > 3.0.7 && < 3.0.8
50 dnl Revision 1.107 2007/11/15 02:50:14 hal9
51 dnl Setting to "beta" (for doc builds, etc).
53 dnl Revision 1.106 2007/05/11 11:49:41 fabiankeil
54 dnl Check for strlcat().
56 dnl Revision 1.105 2007/04/09 17:34:58 fabiankeil
57 dnl Check for snprintf().
59 dnl Revision 1.104 2007/03/31 13:35:11 fabiankeil
60 dnl Add checks for gettimeofday() and strlcpy().
62 dnl Revision 1.103 2007/01/20 16:29:38 fabiankeil
63 dnl Suppress edit buttons for action files if Privoxy has
64 dnl no write access. Suggested by Roland in PR 1564026.
66 dnl Revision 1.102 2007/01/18 14:55:45 fabiankeil
67 dnl Check for tzset() and putenv() to make sure the
68 dnl replacement timegm() isn't included on systems
69 dnl where it fails to compile.
71 dnl Revision 1.101 2007/01/12 15:20:17 fabiankeil
72 dnl Temporarily ignore external libpcrs to prevent
73 dnl problems that are fixed in Privoxy's own version.
75 dnl Revision 1.100 2007/01/07 07:38:10 joergs
76 dnl Disabled -pipe for AmigaOS4.
78 dnl Revision 1.99 2007/01/01 19:36:37 fabiankeil
79 dnl Integrate a modified version of Wil Mahan's
80 dnl zlib patch (PR #895531).
82 dnl Revision 1.98 2006/12/17 19:15:26 fabiankeil
83 dnl Added ./configure switch for FEATURE_GRACEFUL_TERMINATION.
85 dnl Revision 1.97 2006/11/21 18:32:46 hal9
86 dnl Setting version to 3.0.7 UNRELEASED for lack of a better setting.
88 dnl Revision 1.96 2006/11/18 14:42:51 fabiankeil
91 dnl Revision 1.95 2006/11/14 02:08:59 hal9
92 dnl Setting version string to 3.0.6 UNRELEASED. This needs to be reset to 3.0.6
93 dnl stable just before CVS is tagged for release.
95 dnl Revision 1.94 2006/11/13 19:05:50 fabiankeil
96 dnl Make pthread mutex locking more generic. Instead of
97 dnl checking for OSX and OpenBSD, check for FEATURE_PTHREAD
98 dnl and use mutex locking unless there is an _r function
99 dnl available. Better safe than sorry.
101 dnl Fixes "./configure --disable-pthread" and should result
102 dnl in less threading-related problems on pthread-using platforms,
103 dnl but it still doesn't fix BR#1122404.
105 dnl Revision 1.93 2006/09/22 01:26:20 hal9
106 dnl Set version to 3.0.5 BETA for hopefully release this weekend.
108 dnl Revision 1.92 2006/08/17 17:09:49 fabiankeil
109 dnl Added check for timegm().
111 dnl Revision 1.91 2006/08/13 22:01:51 fabiankeil
112 dnl Added checks for strptime() and random()
114 dnl Revision 1.90 2006/07/18 14:48:45 david__schmidt
115 dnl Reorganizing the repository: swapping out what was HEAD (the old 3.1 branch)
116 dnl with what was really the latest development (the v_3_0_branch branch)
118 dnl Revision 1.68.2.20 2004/01/31 16:31:46 oes
119 dnl Resetting version info to 0.0.0 UNRELEASED
121 dnl Revision 1.68.2.19 2004/01/30 09:26:03 oes
122 dnl Added docbook paths for debian sarge; set status for release
124 dnl Revision 1.68.2.18 2003/12/08 15:10:29 oes
125 dnl Bugfix: --with-docbook now correctly accepts its path parameter. Thanks, Roland!
127 dnl Revision 1.68.2.17 2003/10/18 18:41:26 david__schmidt
128 dnl Update to remain buildable on OS/2 - remove the failures
129 dnl due to missing unixisms
131 dnl Revision 1.68.2.16 2003/03/26 16:05:14 oes
132 dnl Marked as 0.0.0 UNRELEASED
134 dnl Revision 1.68.2.15 2003/03/26 00:25:00 oes
135 dnl Bump version for 3.0.2
137 dnl Revision 1.68.2.14 2003/03/25 13:27:12 hal9
138 dnl Manually apply Docbook/FreeBSD patch #708081 from a.go at tiscali.nl.
140 dnl Revision 1.68.2.13 2003/03/18 19:38:57 oes
141 dnl Set version info for 3.0.1 release
143 dnl Revision 1.68.2.12 2003/03/07 03:41:04 david__schmidt
144 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.
146 dnl Revision 1.68.2.11 2003/03/06 15:22:37 oes
147 dnl Fixed minor shell syntax bug
149 dnl Revision 1.68.2.10 2003/01/08 16:39:41 oes
150 dnl Changing default to exclude FEATURE_IMAGE_DETECT_MSIE because of problem reports with recent IEs
152 dnl Revision 1.68.2.9 2002/12/13 23:47:45 hal9
153 dnl Add openbsd $specialflags per gunner at styx2002.no-ip.org
155 dnl Revision 1.68.2.8 2002/11/27 12:55:26 oes
156 dnl Fixed broken handling of pre-set CFLAGS
158 dnl Revision 1.68.2.7 2002/10/25 02:44:22 hal9
159 dnl Port of make install, etc from main trunk. Needs testing! Add Slackware
160 dnl support, and other related changes. Update related docs.
162 dnl Revision 1.68.2.6 2002/09/25 15:35:15 oes
163 dnl Marking as non-release
165 dnl Revision 1.68.2.5 2002/08/25 23:37:00 hal9
166 dnl Getting ready for 3.0 release.
168 dnl Revision 1.68.2.4 2002/08/10 11:21:57 oes
169 dnl - Set Version to 2.9.20 (beta)
170 dnl - Add two AC_DEFINEs that indicate if the pcre*.h headers
171 dnl are located in a pcre/ subdir to the include path.
173 dnl Revision 1.68.2.3 2002/08/06 11:29:36 oes
174 dnl Fixed detection/inclusion of pcre.h, which is in a pcre subdir on RH
176 dnl Revision 1.68.2.2 2002/07/30 19:36:09 hal9
177 dnl Bump version to 2.9.17.
179 dnl Revision 1.68.2.1 2002/07/26 15:21:12 oes
180 dnl Bumped version number for 2.9.16 freeze
182 dnl Revision 1.68 2002/05/25 16:54:54 jongfoster
183 dnl Detect if the compiler supports -pthread.
184 dnl Hopefully this will fix bug 560442. (I don't have a HP PA-RISC
185 dnl machine to test this!)
187 dnl Revision 1.67 2002/05/03 14:33:59 oes
188 dnl Generate doc/soucre/ldp.dsl
190 dnl Revision 1.66 2002/05/03 00:41:56 oes
191 dnl Set version to 2.9.15 to comply with new versioning scheme
193 dnl Revision 1.65 2002/04/25 19:13:57 morcego
194 dnl Removed RPM release number declaration on configure.in
195 dnl Changed makefile to use given value for RPM_PACKAGEV when on uploading
196 dnl targets (will produce an error, explaining who to do it, if no value
199 dnl Revision 1.64 2002/04/22 16:32:31 morcego
200 dnl configure.in, *.spec: Bumping release to 2 (2.9.14-2)
201 dnl -rh.spec: uid and gid are now macros
202 dnl -suse.spec: Changing the header Copyright to License (Copyright is
205 dnl Revision 1.63 2002/04/11 11:00:21 oes
206 dnl Applied Moritz' fix for socklen_t on Solaris
208 dnl Revision 1.62 2002/04/11 10:09:20 oes
211 dnl Revision 1.61 2002/04/10 18:14:45 morcego
212 dnl - (privoxy-rh.spec only) Relisting template files on the %%files section
213 dnl - (configure.in, privoxy-rh.spec) Bumped package release to 5
215 dnl Revision 1.60 2002/04/09 16:38:49 oes
216 dnl Added detection of missing config.h.in
218 dnl Revision 1.59 2002/04/06 20:23:55 jongfoster
219 dnl Removing unnessacery tests (C++, ranlib)
221 dnl Revision 1.58 2002/04/04 20:49:20 swa
222 dnl attempt to consolidate the
223 dnl different dokbook versions.
225 dnl Revision 1.57 2002/04/04 00:36:36 gliptak
226 dnl always use pcre for matching
228 dnl Revision 1.56 2002/04/03 22:28:03 gliptak
229 dnl Removed references to gnu_regex
231 dnl Revision 1.55 2002/04/03 03:54:38 gliptak
232 dnl Checking pcre version
234 dnl Revision 1.54 2002/04/01 00:54:24 gliptak
235 dnl More changes needed around regex support.
237 dnl Revision 1.53 2002/03/29 20:09:01 swa
240 dnl Revision 1.52 2002/03/29 19:51:40 gliptak
241 dnl Correcting compile problem with Debian
243 dnl Revision 1.51 2002/03/28 20:43:00 swa
244 dnl set make correctly
246 dnl Revision 1.50 2002/03/27 03:03:45 hal9
247 dnl Add test for man2html
249 dnl Revision 1.49 2002/03/27 02:19:52 david__schmidt
250 dnl More Mac OSX support:
251 dnl - Get rid of extraneous, noisy -pthread warnings
252 dnl - Define unix so we get oes' unix-tagged changes
254 dnl Revision 1.48 2002/03/26 22:29:54 swa
255 dnl we have a new homepage!
257 dnl Revision 1.47 2002/03/26 16:41:00 hal9
258 dnl Upped RPM Release to 3 (need to build new RH packages)
260 dnl Revision 1.46 2002/03/24 18:55:06 jongfoster
261 dnl Making Docbook work under Windows
263 dnl Revision 1.45 2002/03/24 14:19:55 swa
264 dnl set rpm package release in configure.in. nowhere else.
266 dnl Revision 1.44 2002/03/24 13:25:43 swa
267 dnl name change related issues
269 dnl Revision 1.43 2002/03/24 12:56:21 swa
270 dnl name change related issues.
272 dnl Revision 1.42 2002/03/22 18:11:37 jongfoster
273 dnl Bumping version number to 2.9.12
275 dnl Revision 1.41 2002/03/19 19:30:04 morcego
276 dnl - Fixing stylesheet checking on configure. If it is found, no further checks
279 dnl - configure will now check for db2html or docbook2html (should work now
280 dnl on SuSe without the docbktls package)
282 dnl Revision 1.40 2002/03/09 14:33:30 oes
283 dnl Fixing the (harmless) AC_CHECK_FILE warnings
285 dnl Revision 1.39 2002/03/08 16:46:13 oes
286 dnl Added --enable-no-gifs
288 dnl Revision 1.38 2002/03/08 14:13:50 morcego
289 dnl Fixing configure, to remove a command not found error.
291 dnl Revision 1.37 2002/03/08 12:58:21 oes
292 dnl Tiny bugfix in AC_ARG_WITH(debug)
294 dnl Revision 1.36 2002/03/06 23:50:36 morcego
295 dnl Will not test for a text browser if we are not using docbook.
297 dnl Revision 1.35 2002/03/06 21:55:52 morcego
298 dnl New configure option: --with-docbook=(yes|no|directory)
299 dnl Preliminary new platform detection code included. Will work with the
300 dnl old one for now. No use just trowing it away
302 dnl Revision 1.34 2002/03/06 20:57:00 morcego
303 dnl Fixing detection of stylesheets on SuSe.
305 dnl Revision 1.33 2002/03/05 17:31:11 morcego
306 dnl Search for docbook.dsl. Should solve portability problems for SuSe.
308 dnl Revision 1.32 2002/03/05 14:07:43 morcego
309 dnl configure now detects rpm topdir, and change GNUmakefile acordingly
310 dnl (based on sugestion by Sarantis Paskalis)
312 dnl Revision 1.31 2002/03/05 13:43:28 morcego
313 dnl Checking for text browser, so redhat-dok can work.
315 dnl Revision 1.30 2002/03/04 17:58:01 oes
316 dnl Deleted _DEBUG and PID_FILE_PATH
318 dnl Revision 1.29 2002/02/28 14:20:53 oes
319 dnl Fixed detection of gethost*_r functions on Solaris
321 dnl Revision 1.28 2002/02/27 15:02:38 oes
322 dnl Incremented version number
324 dnl Revision 1.27 2002/01/10 12:35:18 oes
325 dnl Added cross-compile defaults to the AC_CHECK_SIZEOF macros
326 dnl to silence autoconf warnings. Numbers are for Intel/Linux.
327 dnl Is there a better way?
329 dnl Revision 1.26 2002/01/09 14:29:49 oes
330 dnl - Added AC_CHECK_FUNC tests for the availability of
331 dnl gethostbyname_r, gethostbyaddr_r, gmtime_r and
332 dnl localtime_r, as well as AC_TRY_COMPILE tests to
333 dnl determine their signatures.
335 dnl - Fixed a bug with the init of CFLAGS that was
336 dnl reported by barsnick
338 dnl Revision 1.25 2002/01/04 15:27:18 oes
339 dnl Changed quoting of CODE_STATUS for use in make
341 dnl Revision 1.24 2001/12/30 14:07:31 steudten
342 dnl - Add signal handling (unix)
343 dnl - Add SIGHUP handler (unix)
344 dnl - Add creation of pidfile (unix)
345 dnl - Add action 'top' in rc file (RH)
346 dnl - Add entry 'SIGNALS' to manpage
347 dnl - Add exit message to logfile (unix)
349 dnl Revision 1.23 2001/12/09 20:24:42 david__schmidt
350 dnl Change from "alpha" to "beta" in configure.in
352 dnl Revision 1.22 2001/12/01 11:24:01 jongfoster
353 dnl Renaming Makefile.in to GNUmakefile.in so that non-GNU versions of
354 dnl make break in a more obvious way.
356 dnl Revision 1.21 2001/11/30 21:35:54 jongfoster
357 dnl Bumping version number to 2.9.10
359 dnl Revision 1.20 2001/10/23 21:24:09 jongfoster
360 dnl Support for FEATURE_CGI_EDIT_ACTIONS
362 dnl Revision 1.19 2001/10/07 15:33:14 oes
363 dnl Removed FEATURE_DENY_GZIP
364 dnl Bumped up version number
366 dnl Revision 1.18 2001/09/13 13:10:24 steudten
368 dnl PreWork for Debug Interface.
369 dnl Add new option "--with-debug" to enable debugging (flags aso.)
371 dnl Revision 1.17 2001/09/12 23:44:55 david__schmidt
372 dnl Mac OSX (Darwin) support added.
374 dnl Revision 1.16 2001/09/12 22:55:45 joergs
375 dnl AmigaOS support added.
377 dnl Revision 1.15 2001/09/12 17:28:59 david__schmidt
379 dnl OS/2 port: update autoconf'd support for the platform.
381 dnl Revision 1.14 2001/07/30 22:12:11 jongfoster
382 dnl Fixing Solaris build (I hope) and tidying up #defines:
383 dnl - All feature #defines are now of the form FEATURE_xxx
384 dnl - Permanently turned off WIN_GUI_EDIT
385 dnl - Permanently turned on WEBDAV and SPLIT_PROXY_ARGS
387 dnl Revision 1.13 2001/07/29 17:09:17 jongfoster
388 dnl Major changes to build system in order to fix these bugs:
389 dnl - pthreads under Linux was broken - changed -lpthread to -pthread
390 dnl - Compiling in MinGW32 mode under CygWin now correctly detects
391 dnl which shared libraries are available
392 dnl - Solaris support (?) (Not tested under Solaris yet)
394 dnl Revision 1.12 2001/07/25 19:16:27 oes
395 dnl Bumping version number to 2.9.8
397 dnl Revision 1.11 2001/07/21 18:00:07 jongfoster
398 dnl Bumping version number to 2.9.7
400 dnl Revision 1.10 2001/07/18 17:25:04 oes
403 dnl Revision 1.9 2001/07/15 19:45:13 jongfoster
404 dnl Added support for linking with POSIX threads library
406 dnl Revision 1.8 2001/07/15 17:54:29 jongfoster
407 dnl Renaming #define STATIC to STATIC_PCRE
408 dnl Adding new #define FEATURE_PTHREAD that will be used to enable
409 dnl POSIX threads support.
411 dnl Revision 1.7 2001/07/13 13:58:05 oes
412 dnl Completely reorganized the selection scheme for
413 dnl pcre, pcreposix, pcrs and gnu_regex:
415 dnl The presence of shared pcre, pcreposix or pcrs
416 dnl libraried is now autodetected. Additionally, the
417 dnl user can enforce using the built-in static variants
418 dnl by specifying --disable-dynamic-(pcre|pcrs).
419 dnl Care is taken to avoid that pcre is dyn, while pcreposix
420 dnl is static, if both are used and that pcrs is static if
423 dnl The choice between pcre, gnu or no regex for actionsfile
424 dnl URL matching is now via
425 dnl --(enable|disable)-regex-matching[=(gnu|pcre|no)] with the
426 dnl default being pcre.
428 dnl Revision 1.6 2001/06/29 21:56:40 oes
431 dnl Revision 1.5 2001/06/29 13:26:27 oes
432 dnl Introduced #define CODE_STATUS
434 dnl Revision 1.4 2001/05/29 09:50:24 jongfoster
435 dnl Unified blocklist/imagelist/permissionslist.
436 dnl File format is still under discussion, but the internal changes
437 dnl are (mostly) done.
439 dnl Also modified interceptor behaviour:
440 dnl - We now intercept all URLs beginning with one of the following
441 dnl prefixes (and *only* these prefixes):
443 dnl * http://ijbswa.sf.net/config/
444 dnl * http://ijbswa.sourceforge.net/config/
445 dnl - New interceptors "home page" - go to http://i.j.b/ to see it.
446 dnl - Internal changes so that intercepted and fast redirect pages
447 dnl are not replaced with an image.
448 dnl - Interceptors now have the option to send a binary page direct
449 dnl to the client. (i.e. ijb-send-banner uses this)
450 dnl - Implemented show-url-info interceptor. (Which is why I needed
451 dnl the above interceptors changes - a typical URL is
452 dnl "http://i.j.b/show-url-info?url=www.somesite.com/banner.gif".
453 dnl The previous mechanism would not have intercepted that, and
454 dnl if it had been intercepted then it then it would have replaced
455 dnl it with an image.)
457 dnl Revision 1.3 2001/05/22 18:46:04 oes
459 dnl - Enabled filtering banners by size rather than URL
460 dnl by adding patterns that replace all standard banner
461 dnl sizes with the "Junkbuster" gif to the re_filterfile
463 dnl - Enabled filtering WebBugs by providing a pattern
464 dnl which kills all 1x1 images
466 dnl - Added support for PCRE_UNGREEDY behaviour to pcrs,
467 dnl which is selected by the (nonstandard and therefore
468 dnl capital) letter 'U' in the option string.
469 dnl It causes the quantifiers to be ungreedy by default.
470 dnl Appending a ? turns back to greedy (!).
472 dnl - Added a new interceptor ijb-send-banner, which
473 dnl sends back the "Junkbuster" gif. Without imagelist or
474 dnl MSIE detection support, or if tinygif = 1, or the
475 dnl URL isn't recognized as an imageurl, a lame HTML
476 dnl explanation is sent instead.
478 dnl - Added new feature, which permits blocking remote
479 dnl script redirects and firing back a local redirect
481 dnl The feature is conditionally compiled, i.e. it
482 dnl can be disabled with --disable-fast-redirects,
483 dnl plus it must be activated by a "fast-redirects"
484 dnl line in the config file, has its own log level
485 dnl and of course wants to be displayed by show-proxy-args
486 dnl Note: Boy, all the #ifdefs in 1001 locations and
487 dnl all the fumbling with configure.in and acconfig.h
488 dnl were *way* more work than the feature itself :-(
490 dnl - Because a generic redirect template was needed for
491 dnl this, tinygif = 3 now uses the same.
493 dnl - Moved GIFs, and other static HTTP response templates
496 dnl - Some minor fixes
498 dnl - Removed some >400 CRs again (Jon, you really worked
501 dnl Revision 1.2 2001/05/20 01:21:20 jongfoster
502 dnl Version 2.9.4 checkin.
503 dnl - Merged popupfile and cookiefile, and added control over PCRS
504 dnl filtering, in new "permissionsfile".
505 dnl - Implemented LOG_LEVEL_FATAL, so that if there is a configuration
506 dnl file error you now get a message box (in the Win32 GUI) rather
507 dnl than the program exiting with no explanation.
508 dnl - Made killpopup use the PCRS MIME-type checking and HTTP-header
510 dnl - Removed tabs from "config"
511 dnl - Moved duplicated url parsing code in "loaders.c" to a new funcition.
512 dnl - Bumped up version number.
514 dnl Revision 1.1.1.1 2001/05/15 13:58:50 oes
515 dnl Initial import of version 2.9.3 source tree
520 dnl =================================================================
521 dnl AutoConf Initialization
522 dnl =================================================================
524 AC_REVISION($Revision: 1.113 $)
527 if test ! -f config.h.in; then
528 echo "You need to run autoheader first. "
529 echo -n "Shall I do this for you now? (y/n) "
531 if test "$answer" != "y"; then
538 AC_CONFIG_HEADER([config.h])
543 AC_ARG_WITH(docbook, dnl
544 --with-docbook=[[yes|no|directory]]
545 Enable docbook documentation creation
546 (default = yes, for gnu and linux),[dnl
547 case "$with_docbook" in
557 AC_ARG_WITH(db2html, dnl
558 --with-db2html=<path/executable>
559 Set the location of the docbook to html converter
560 (default = search),[dnl
564 dnl =================================================================
565 dnl Application version number
566 dnl =================================================================
571 CODE_STATUS="UNRELEASED"
573 dnl CODE_STATUS can be "alpha", "beta", or "stable", and will be
574 dnl used for CGI output. Set version to 0.0.0 and status to "UNRELEASED"
575 dnl whenever CVS in a stable branch differs from the last release.
577 dnl =================================================================
578 dnl Substitute the version numbers
579 dnl =================================================================
581 AC_SUBST(VERSION_MAJOR)
582 AC_SUBST(VERSION_MINOR)
583 AC_SUBST(VERSION_POINT)
584 AC_SUBST(CODE_STATUS)
587 AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR})
588 AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR})
589 AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT})
590 AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}")
591 AC_DEFINE_UNQUOTED(CODE_STATUS,"${CODE_STATUS}")
593 dnl =================================================================
594 dnl Checks for programs needed to build.
595 dnl =================================================================
597 dnl Keep AC_PROG_CC from setting its own defaults:
598 if test "X$CFLAGS" = "X"; then
609 AC_CHECK_PROG(GDB,gdb,yes,no)
610 AC_PATH_PROG(BGROUPS,groups,no,/bin:/usr/bin:/usr/local/bin)
611 AC_PATH_PROG(ID,id,no,/bin:/usr/bin:/usr/local/bin)
615 dnl =================================================================
616 dnl debug, gcc and gdb support
617 dnl =================================================================
620 [ --with-debug Enable debug mode],
622 if test "x$withval" != "xno" ; then
623 if test $ac_cv_prog_cc_g = yes; then
624 if test "$GCC" = yes; then
626 CFLAGS="$CFLAGS -ggdb"
630 CFLAGS="$CFLAGS -Wshadow -Wconversion"
638 if test "X$CFLAGS" = "X "; then # if CFLAGS were unset (see above)
639 if test "$GCC" = yes; then
646 dnl =================================================================
647 dnl Check for user and group validity
648 dnl =================================================================
651 if test "$EMXOS2" = yes; then
652 echo "Skipping user and group validity stuff.";
656 $ID privoxy >/dev/null 2>/dev/null
657 if test $? -ne 0 ; then
658 AC_MSG_WARN(There is no user 'privoxy' on this system)
660 AC_MSG_CHECKING([for user])
662 [ --with-user=privoxy Set user under which privoxy will run],
664 if test "x$withval" != "xyes"; then
665 if test $ID = no ; then
666 AC_MSG_ERROR(There is no 'id' program on this system)
668 AC_MSG_RESULT($with_user)
669 $ID $with_user 2>/dev/null >/dev/null
670 if test $? -eq 0 ; then
673 AC_MSG_ERROR(There is no user '$with_user' on this system)
677 AC_MSG_ERROR(We need a user if you give me this parameter)
681 if test $ID = no ; then
682 AC_MSG_ERROR(There is no 'id' programm on this system)
684 AC_MSG_RESULT(none specified)
691 AC_MSG_CHECKING([for group])
693 [ --with-group=privoxy Set group for privoxy],
695 if test "x$withval" != "xyes"; then
696 if test $BGROUPS = no ; then
697 AC_MSG_ERROR(There is no 'groups' program on this system)
699 AC_MSG_RESULT($with_group)
700 $BGROUPS $USER >/dev/null
701 if test $? -eq 0 ; then
702 # FIXME: this fails if valid group, but not first group
704 if test "$with_group" != "`$BGROUPS $USER | sed 's/.*: //' 2>/dev/null |$AWK '{print $1}'`" ; then
705 AC_MSG_ERROR(The given value '$withval' does not match group entry)
710 AC_MSG_ERROR(There is no group entry for user '$USER')
714 AC_MSG_ERROR(We need a group if you give me this parameter)
718 if test $BGROUPS = no ; then
719 AC_MSG_ERROR(There is no 'groups' programm on this system)
721 AC_MSG_RESULT(none specified)
730 dnl =================================================================
731 dnl additional gcc flags
732 dnl =================================================================
735 if test "$host" != "powerpc-unknown-amigaos"; then
736 CFLAGS="-pipe $CFLAGS"
741 dnl =================================================================
743 dnl =================================================================
745 dnl Must do this first.
747 dnl Reason: This sets CFLAGS in order to switch the Cygwin compiler
748 dnl into Cygwin or MinGW32 modes. Depending on the mode selected,
749 dnl the compiler will use completely different sets of library
750 dnl and include files.
752 dnl =================================================================
757 if test "$MINGW32" = "yes"; then
760 if test "$CYGWIN" = "yes"; then
767 if test $dodk = auto; then
769 if test $target_type = unix; then
778 dnl Decide what to do based on target_type
779 dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
780 dnl This is because we don't know yet whether pthread is enabled.
782 AC_ARG_ENABLE(mingw32,
783 [ --enable-mingw32 Use mingw32 for a Windows GUI],
784 [if test $enableval = yes; then
788 if test $target_type = mingw; then
790 SPECIAL_CFLAGS="-mwindows -mno-cygwin"
791 PTHREAD_LIB=-lpthreadGC
792 echo "Using mingw32 (Win32 GUI)"
795 if test $target_type = cygwin; then
796 SPECIAL_CFLAGS="-mno-win32"
798 echo "Using Cygnus (Win32 command line)"
801 PTHREAD_LIB=-lpthread
806 dnl Checking which text html browser we have avaliable
807 if test $dodk != no; then
808 AC_CHECK_PROGS(WDUMP,w3m lynx links,false)
809 if test "$WDUMP" = false; then
810 AC_MSG_WARN(You need some kind of text browser to build documentation \(w3m, lynx and links are supported\))
812 if test $DB2HTML = false; then
813 dnl We need to clean the variable, otherwise AC_CHECK_PROGS
816 AC_CHECK_PROGS(DB2HTML,db2html docbook2html,false)
822 dnl If we use rpm, we need to check where %_topdir is
823 AC_CHECK_PROGS(RPMBIN,rpm,false)
824 if test $RPMBIN != false; then
825 RPM_BASE=`rpm --eval "%{_topdir}"`
826 if test "$RPM_BASE" = ""; then
827 RPM_BASE=/usr/src/redhat
832 dnl Check for jade, so we can build the documentation
833 AC_CHECK_PROGS(JADEBIN,jade openjade,false)
836 dnl Check for man2html for docs.
837 AC_CHECK_PROGS(MAN2HTML,man2html,false)
840 dnl Set doc status flag for conditional content inclusions
841 DOC_STATUS=p-not-stable
842 if test $CODE_STATUS = stable; then
843 DOC_STATUS="p-stable"
847 dnl Checking for the docbook.dsl stylesheet file
848 dnl It is still not portable (directory slash)
850 if test $dodk = yes; then
851 if test $DKPREFIX = none; then
852 for i in /usr/share/sgml/docbook/dsssl-stylesheets \
853 /usr/share/sgml/docbkdsl /usr/share/sgml/docbook-dsssl \
854 /usr/local/share/sgml/docbook/dsssl/modular \
855 /usr/share/sgml/docbook/stylesheet/dsssl/modular/ \
857 dnl echo -n does not fly with /bin/sh.
858 dnl echo -n "checking for $i/html/docbook.dsl..."
859 AC_MSG_CHECKING([for $i])
860 if test -f $i/html/docbook.dsl; then
868 # where are the catalogs?
869 for i in /usr/share/sgml/CATALOG.docbk30 \
870 /usr/share/sgml/CATALOG.docbk31 \
871 /usr/share/sgml/CATALOG.docbk31 \
872 /usr/local/share/sgml/docbook/3.0/docbook.cat \
873 /usr/local/share/sgml/docbook/3.1/docbook.cat \
874 /usr/share/sgml/docbook/dtd/3.1/docbook.cat \
876 dnl echo -n "checking for $i..."
877 AC_MSG_CHECKING([for $i])
880 JADECAT="$JADECAT -c $i"
890 dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
891 old_CFLAGS_nospecial=$CFLAGS
892 CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
894 # Hack to force AutoConf to use the CFLAGS we just set
895 dnl Warning: This may break with a future version of Autoconf
896 dnl Tested with autoconf 2.13
897 ac_cpp='$CPP $CPPFLAGS $SPECIAL_CFLAGS'
898 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
899 ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
902 dnl =================================================================
904 dnl =================================================================
906 AC_CHECK_HEADER(pthread.h, [have_pthread=yes], [have_pthread=no])
908 AC_ARG_ENABLE(pthread,
909 [ --disable-pthread Don't use POSIX threads (pthreads)],
910 [if test $enableval = no; then
915 if test $have_pthread = yes; then
917 AC_DEFINE(FEATURE_PTHREAD)
918 echo Using POSIX threads
919 if test "$GCC" = "yes"; then
920 # Set a GCC specific switch:
921 if test "$target_type" = "unix"; then
922 ac_jgf_save_CFLAGS=$CFLAGS
923 CFLAGS="$CFLAGS -pthread"
924 AC_TRY_LINK([#include <pthread.h>],
925 [void *p = pthread_create;],
927 # This compiler switch makes GCC on Linux thread-safe
928 # However, it's not supported on most other OS.
930 SPECIAL_CFLAGS="-pthread"
932 CFLAGS=$ac_jgf_save_CFLAGS
937 echo Using native threads
940 AC_SUBST(PTHREAD_ONLY)
942 dnl =================================================================
943 dnl Support for thread-safe versions of gethostbyaddr, gethostbyname,
944 dnl gmtime and localtime
945 dnl =================================================================
947 dnl Next line needed to find the gethost*_r functions on Solaris
948 AC_CHECK_LIB(nsl, gethostbyname)
950 AC_CHECK_FUNC(gethostbyaddr_r, [
951 AC_MSG_CHECKING([signature of gethostbyaddr_r])
955 struct hostent *h, *hp;
958 (void) gethostbyaddr_r(a, l, t, h, b, bl, &hp, &e)
960 AC_DEFINE(HAVE_GETHOSTBYADDR_R_8_ARGS)
961 AC_MSG_RESULT([8 args])
969 (void) gethostbyaddr_r(a, l, t, h, b, bl, &e)
971 AC_DEFINE(HAVE_GETHOSTBYADDR_R_7_ARGS)
972 AC_MSG_RESULT([7 args])
977 struct hostent_data *d;
981 (void) gethostbyaddr_r(a, l, t, h, d)
983 AC_DEFINE(HAVE_GETHOSTBYADDR_R_5_ARGS)
984 AC_MSG_RESULT([5 args])
986 AC_MSG_RESULT(unrecognised)
994 AC_CHECK_FUNC(gethostbyname_r, [
995 AC_MSG_CHECKING([signature of gethostbyname_r])
999 struct hostent *h, *r;
1002 (void) gethostbyname_r(n, h, b, bl, &r, &e)
1004 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARGS)
1005 AC_MSG_RESULT([6 args])
1013 (void) gethostbyname_r(n, h, b, bl, &e)
1015 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARGS)
1016 AC_MSG_RESULT([5 args])
1021 struct hostent_data *d;
1024 (void) gethostbyname_r(n, h, d)
1026 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARGS)
1027 AC_MSG_RESULT([3 args])
1029 AC_MSG_RESULT(unrecognised)
1037 AC_CHECK_FUNC(gmtime_r, [
1038 AC_MSG_CHECKING([signature of gmtime_r])
1044 (void) gmtime_r(t, tm)
1047 AC_DEFINE(HAVE_GMTIME_R)
1049 AC_MSG_RESULT(unrecognised)
1055 AC_CHECK_FUNC(localtime_r, [
1056 AC_MSG_CHECKING([signature of localtime_r])
1062 (void) localtime_r(t, tm)
1065 AC_DEFINE(HAVE_LOCALTIME_R)
1067 AC_MSG_RESULT(unrecognised)
1073 dnl =================================================================
1074 dnl Solaris specific
1075 dnl FIXME: Not tested on Solaris yet...
1076 dnl ISFIXED: Have tested it on Solaris, but there are other ways to
1077 dnl make these checks generic, e.g.:
1078 dnl AC_CHECK_FUNC(getsockopt, , AC_CHECK_LIB(socket, getsockopt))
1079 dnl (Moritz Barsnick <moritz@barsnick.net>)
1080 dnl =================================================================
1086 *-solaris*) SOCKET_LIB="-lsocket -lnsl"
1087 AC_DEFINE(__EXTENSIONS__)
1088 if test "$GCC" = "yes"; then
1089 # Set a GCC specific switch:
1090 # This compiler switch makes Solaris thread-safe
1092 SPECIAL_CFLAGS="-pthreads"
1094 # What do we do without GCC? Guess this:
1095 SPECIAL_CFLAGS="-D_REENTRANT"
1100 AC_SUBST(SOCKET_LIB)
1102 dnl =================================================================
1103 dnl Solaris problem, and others perhaps (socklen_t is undefined)
1104 dnl =================================================================
1106 AC_MSG_CHECKING([for socklen_t])
1107 AC_EGREP_HEADER(socklen_t, sys/socket.h, AC_MSG_RESULT([yes]),
1109 AC_DEFINE(socklen_t,int,
1110 [ Define to 'int' if <sys/socket.h> doesn't have it. ]))
1113 dnl =================================================================
1115 dnl =================================================================
1118 *-os2-emx*) SOCKET_LIB=-lsocket
1122 AC_SUBST(SOCKET_LIB)
1124 dnl =================================================================
1125 dnl Mac OSX specific
1126 dnl =================================================================
1129 *-apple-darwin*) SPECIAL_CFLAGS="-Dunix"
1133 dnl =================================================================
1134 dnl OpenBSD specific
1135 dnl =================================================================
1138 *-openbsd*) SPECIAL_CFLAGS="$SPECIAL_CFLAGS -Dunix"
1142 dnl =================================================================
1143 dnl AmigaOS specific
1144 dnl =================================================================
1149 *-amigaos) AMIGAOS_ONLY=
1153 AC_SUBST(AMIGAOS_ONLY)
1155 dnl =================================================================
1156 dnl Check for standard compiler stuff
1157 dnl =================================================================
1168 AC_CHECK_SIZEOF(int, 4)
1169 AC_CHECK_SIZEOF(char *, 4)
1170 AC_CHECK_SIZEOF(long, 4)
1171 AC_CHECK_SIZEOF(long long, 8)
1172 AC_CHECK_SIZEOF(size_t, 4)
1174 dnl Checks for header files.
1175 dnl AC_HEADER_SYS_WAIT
1176 dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h)
1177 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])
1179 dnl Checks for library functions.
1181 dnl AC_CHECK_FUNC(strstr)
1182 dnl bcopy and memmove are for PCRE
1183 AC_CHECK_FUNCS([strerror bcopy memmove])
1184 AC_PROG_GCC_TRADITIONAL
1185 dnl uncommenting does not work for swa. suse linux
1189 dnl uncommenting does not work for swa. suse linux
1191 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])
1194 dnl =================================================================
1195 dnl Checks for libraries.
1196 dnl =================================================================
1197 dnl Note: Some systems may have the library but not the system header
1198 dnl file, so we must check for both.
1199 dnl Also check for correct version
1200 AC_CHECK_LIB(pcre, pcre_compile, [
1201 AC_CHECK_HEADER(pcre.h, [
1202 AC_EGREP_HEADER(pcre_fullinfo, pcre.h, [have_pcre=yes], [AC_MSG_WARN([[pcre old version installed]]); have_pcre=no])
1204 AC_CHECK_HEADER(pcre/pcre.h, [
1205 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])
1210 AC_CHECK_LIB(pcreposix, regcomp, [
1211 AC_CHECK_HEADER(pcreposix.h, [
1212 AC_EGREP_HEADER(pcreposix_regerror, pcreposix.h, [AC_MSG_WARN([[pcreposix old version installed]]); have_pcreposix=no], [have_pcreposix=yes])
1214 AC_CHECK_HEADER(pcre/pcreposix.h, [
1215 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)])
1216 ], [have_pcreposix=no])
1218 ], [have_pcreposix=no], -lpcre)
1220 dnl ================================================================
1221 dnl libpcrs is temporarily disabled.
1223 dnl Privoxy's own pcrs version fixes some problems that
1224 dnl are present in libpcrs 0.3, the last pcrs release we
1225 dnl know of, and as libpcrs seems to be currently unmaintained
1226 dnl we can't send these fixes upstream.
1227 dnl ================================================================
1229 dnl AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no], -lpcre)
1231 dnl =================================================================
1233 dnl =================================================================
1237 dnl =================================================================
1239 dnl =================================================================
1241 AC_ARG_ENABLE(toggle,
1242 [ --disable-toggle Don't support temporary disable],
1243 [if test $enableval = yes; then
1244 AC_DEFINE(FEATURE_TOGGLE)
1245 fi],AC_DEFINE(FEATURE_TOGGLE))
1247 AC_ARG_ENABLE(force,
1248 [ --disable-force Don't allow single-page disable],
1249 [if test $enableval = yes; then
1250 AC_DEFINE(FEATURE_FORCE_LOAD)
1251 fi],AC_DEFINE(FEATURE_FORCE_LOAD))
1253 AC_ARG_ENABLE(fast-redirects,
1254 [ --disable-fast-redirects Don't support fast redirects],
1255 [if test $enableval = yes; then
1256 AC_DEFINE(FEATURE_FAST_REDIRECTS)
1257 fi], AC_DEFINE(FEATURE_FAST_REDIRECTS))
1259 AC_ARG_ENABLE(stats,
1260 [ --disable-stats Don't keep statistics],
1261 [if test $enableval = yes; then
1262 AC_DEFINE(FEATURE_STATISTICS)
1263 fi],AC_DEFINE(FEATURE_STATISTICS))
1265 AC_ARG_ENABLE(ie-images,
1266 [ --enable-ie-images Enable a quick but not always reliable auto-detect whether requests from
1267 MS Internet Explorer are for an image or not.],
1268 [if test $enableval = yes; then
1269 AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE)
1272 AC_ARG_ENABLE(image-blocking,
1273 [ --disable-image-blocking Don't try to figure out whether a request is
1274 for an image or HTML - assume HTML.],
1275 [if test $enableval = yes; then
1276 AC_DEFINE(FEATURE_IMAGE_BLOCKING)
1278 AC_DEFINE(FEATURE_IMAGE_BLOCKING))
1280 AC_ARG_ENABLE(acl-files,
1281 [ --disable-acl-files Prevents the use of ACL files to control access to
1282 Privoxy by IP address.],
1283 [if test $enableval = yes; then
1284 AC_DEFINE(FEATURE_ACL)
1286 AC_DEFINE(FEATURE_ACL))
1288 AC_ARG_ENABLE(trust-files,
1289 [ --disable-trust-files Prevents the use of trust files.],
1290 [if test $enableval = yes; then
1291 AC_DEFINE(FEATURE_TRUST)
1293 AC_DEFINE(FEATURE_TRUST))
1295 AC_ARG_ENABLE(jar-files,
1296 [ --disable-jar-files Prevents the use of jar files to capture cookies.],
1297 [if test $enableval = yes; then
1298 AC_DEFINE(FEATURE_COOKIE_JAR)
1300 AC_DEFINE(FEATURE_COOKIE_JAR))
1302 AC_ARG_ENABLE(editor,
1303 [ --disable-editor Prevents the use of the web-based actions file
1304 editor and web-based temporary disable setting.],
1305 [if test $enableval = yes; then
1306 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS)
1308 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS))
1310 AC_ARG_ENABLE(no-gifs,
1311 [ --enable-no-gifs Use politically correct PNG format instead of GIF
1312 for built-in images. May not work with all browsers.],
1313 [if test $enableval = yes; then
1314 AC_DEFINE(FEATURE_NO_GIFS)
1317 AC_ARG_ENABLE(graceful-termination,
1318 [ --enable-graceful-termination Allow to shutdown Privoxy through the webinterface.],
1319 [if test $enableval = yes; then
1320 AC_DEFINE(FEATURE_GRACEFUL_TERMINATION)
1323 AC_ARG_ENABLE(extended-host-patterns,
1324 [ --enable-extended-host-patterns Allow extended regular expressions in host patterns.],
1325 [if test $enableval = yes; then
1326 AC_DEFINE(FEATURE_EXTENDED_HOST_PATTERNS)
1329 dnl pcre/pcrs is needed for CGI anyway, so
1330 dnl the choice is only between static and
1333 AC_ARG_ENABLE(dynamic-pcre,
1334 [ --disable-dynamic-pcre Use the built-in, static pcre, even if libpcre is available],
1335 [ if test $enableval = "no"; then have_pcre=no; fi ])
1337 dnl =================================================
1338 dnl libpcrs is temporarily disabled,
1339 dnl see comment above for the reason.
1340 dnl =================================================
1341 dnl AC_ARG_ENABLE(dynamic-pcrs,
1342 dnl [ --disable-dynamic-pcrs Use the built-in, static pcrs, even if libpcrs is available],
1343 dnl [ if test $enableval = "no"; then have_pcrs=no; fi ])
1346 dnl ====================================================
1347 dnl This check is incomplete. For mingw32 zlib is found
1348 dnl by configure, but not necessarily by the compiler.
1349 dnl ====================================================
1351 [ --enable-zlib Use an external zlib library to allow decompressing
1353 [enableval2=$enableval],
1355 if test $enableval2 = yes; then
1356 AC_CHECK_LIB(z, zlibVersion, , [
1357 AC_MSG_ERROR([Unable to find a copy of zlib. The zlib library
1358 is necessary to enable compresion support. ])
1360 AC_DEFINE(FEATURE_ZLIB,1,
1361 [ Define to 1 to use compression through the zlib library. ])
1365 # If we have libpcre and either we also have pcreposix or
1366 # we don't need pcreposix, then link pcre dynamically; else
1367 # build it and link statically
1369 if test $have_pcre = "yes"; then
1370 echo "using libpcre"
1373 LIBS="$LIBS -lpcre -lpcreposix"
1375 echo "using built-in static pcre"
1377 AC_DEFINE(STATIC_PCRE)
1381 dnl =================================================
1382 dnl libpcrs is temporarily disabled,
1383 dnl see comment above for the reason.
1384 dnl =================================================
1385 dnl # If we have libpcrs and pcre is linked dynamically
1386 dnl # then also link pcrs dynamically, else build and link
1387 dnl # pcrs statically
1389 dnl if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
1390 dnl echo "using libpcrs"
1391 dnl STATIC_PCRS_ONLY=#
1392 dnl LIBS="$LIBS -lpcrs"
1394 echo "using built-in static pcrs"
1395 AC_DEFINE(STATIC_PCRS)
1399 AC_SUBST(STATIC_PCRE_ONLY)
1400 AC_SUBST(STATIC_PCRS_ONLY)
1402 dnl =================================================================
1403 dnl Final cleanup and output
1404 dnl =================================================================
1406 dnl Remove the SPECIAL_CFLAGS stuff from CFLAGS, and add it seperately
1408 CFLAGS=$old_CFLAGS_nospecial
1409 AC_SUBST(SPECIAL_CFLAGS)
1411 AC_SUBST(PTHREAD_LIB)
1413 AC_OUTPUT(GNUmakefile doc/source/ldp.dsl)