1 dnl Process this file with autoconf to produce a configure script.
3 dnl $Id: configure.in,v 1.111 2008/02/03 14:40:47 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.111 2008/02/03 14:40:47 fabiankeil
32 dnl Remove unused OSX_DARWIN macro. Reported by Mark Miller in #1852529.
34 dnl Revision 1.110 2008/01/26 10:52:13 fabiankeil
35 dnl Change version to 3.0.9 UNRELEASED.
37 dnl Revision 1.109 2008/01/20 14:07:09 fabiankeil
38 dnl Set CODE_STATUS to stable.
40 dnl Revision 1.108 2007/12/10 02:30:00 hal9
41 dnl Change versioning for > 3.0.7 && < 3.0.8
43 dnl Revision 1.107 2007/11/15 02:50:14 hal9
44 dnl Setting to "beta" (for doc builds, etc).
46 dnl Revision 1.106 2007/05/11 11:49:41 fabiankeil
47 dnl Check for strlcat().
49 dnl Revision 1.105 2007/04/09 17:34:58 fabiankeil
50 dnl Check for snprintf().
52 dnl Revision 1.104 2007/03/31 13:35:11 fabiankeil
53 dnl Add checks for gettimeofday() and strlcpy().
55 dnl Revision 1.103 2007/01/20 16:29:38 fabiankeil
56 dnl Suppress edit buttons for action files if Privoxy has
57 dnl no write access. Suggested by Roland in PR 1564026.
59 dnl Revision 1.102 2007/01/18 14:55:45 fabiankeil
60 dnl Check for tzset() and putenv() to make sure the
61 dnl replacement timegm() isn't included on systems
62 dnl where it fails to compile.
64 dnl Revision 1.101 2007/01/12 15:20:17 fabiankeil
65 dnl Temporarily ignore external libpcrs to prevent
66 dnl problems that are fixed in Privoxy's own version.
68 dnl Revision 1.100 2007/01/07 07:38:10 joergs
69 dnl Disabled -pipe for AmigaOS4.
71 dnl Revision 1.99 2007/01/01 19:36:37 fabiankeil
72 dnl Integrate a modified version of Wil Mahan's
73 dnl zlib patch (PR #895531).
75 dnl Revision 1.98 2006/12/17 19:15:26 fabiankeil
76 dnl Added ./configure switch for FEATURE_GRACEFUL_TERMINATION.
78 dnl Revision 1.97 2006/11/21 18:32:46 hal9
79 dnl Setting version to 3.0.7 UNRELEASED for lack of a better setting.
81 dnl Revision 1.96 2006/11/18 14:42:51 fabiankeil
84 dnl Revision 1.95 2006/11/14 02:08:59 hal9
85 dnl Setting version string to 3.0.6 UNRELEASED. This needs to be reset to 3.0.6
86 dnl stable just before CVS is tagged for release.
88 dnl Revision 1.94 2006/11/13 19:05:50 fabiankeil
89 dnl Make pthread mutex locking more generic. Instead of
90 dnl checking for OSX and OpenBSD, check for FEATURE_PTHREAD
91 dnl and use mutex locking unless there is an _r function
92 dnl available. Better safe than sorry.
94 dnl Fixes "./configure --disable-pthread" and should result
95 dnl in less threading-related problems on pthread-using platforms,
96 dnl but it still doesn't fix BR#1122404.
98 dnl Revision 1.93 2006/09/22 01:26:20 hal9
99 dnl Set version to 3.0.5 BETA for hopefully release this weekend.
101 dnl Revision 1.92 2006/08/17 17:09:49 fabiankeil
102 dnl Added check for timegm().
104 dnl Revision 1.91 2006/08/13 22:01:51 fabiankeil
105 dnl Added checks for strptime() and random()
107 dnl Revision 1.90 2006/07/18 14:48:45 david__schmidt
108 dnl Reorganizing the repository: swapping out what was HEAD (the old 3.1 branch)
109 dnl with what was really the latest development (the v_3_0_branch branch)
111 dnl Revision 1.68.2.20 2004/01/31 16:31:46 oes
112 dnl Resetting version info to 0.0.0 UNRELEASED
114 dnl Revision 1.68.2.19 2004/01/30 09:26:03 oes
115 dnl Added docbook paths for debian sarge; set status for release
117 dnl Revision 1.68.2.18 2003/12/08 15:10:29 oes
118 dnl Bugfix: --with-docbook now correctly accepts its path parameter. Thanks, Roland!
120 dnl Revision 1.68.2.17 2003/10/18 18:41:26 david__schmidt
121 dnl Update to remain buildable on OS/2 - remove the failures
122 dnl due to missing unixisms
124 dnl Revision 1.68.2.16 2003/03/26 16:05:14 oes
125 dnl Marked as 0.0.0 UNRELEASED
127 dnl Revision 1.68.2.15 2003/03/26 00:25:00 oes
128 dnl Bump version for 3.0.2
130 dnl Revision 1.68.2.14 2003/03/25 13:27:12 hal9
131 dnl Manually apply Docbook/FreeBSD patch #708081 from a.go at tiscali.nl.
133 dnl Revision 1.68.2.13 2003/03/18 19:38:57 oes
134 dnl Set version info for 3.0.1 release
136 dnl Revision 1.68.2.12 2003/03/07 03:41:04 david__schmidt
137 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.
139 dnl Revision 1.68.2.11 2003/03/06 15:22:37 oes
140 dnl Fixed minor shell syntax bug
142 dnl Revision 1.68.2.10 2003/01/08 16:39:41 oes
143 dnl Changing default to exclude FEATURE_IMAGE_DETECT_MSIE because of problem reports with recent IEs
145 dnl Revision 1.68.2.9 2002/12/13 23:47:45 hal9
146 dnl Add openbsd $specialflags per gunner at styx2002.no-ip.org
148 dnl Revision 1.68.2.8 2002/11/27 12:55:26 oes
149 dnl Fixed broken handling of pre-set CFLAGS
151 dnl Revision 1.68.2.7 2002/10/25 02:44:22 hal9
152 dnl Port of make install, etc from main trunk. Needs testing! Add Slackware
153 dnl support, and other related changes. Update related docs.
155 dnl Revision 1.68.2.6 2002/09/25 15:35:15 oes
156 dnl Marking as non-release
158 dnl Revision 1.68.2.5 2002/08/25 23:37:00 hal9
159 dnl Getting ready for 3.0 release.
161 dnl Revision 1.68.2.4 2002/08/10 11:21:57 oes
162 dnl - Set Version to 2.9.20 (beta)
163 dnl - Add two AC_DEFINEs that indicate if the pcre*.h headers
164 dnl are located in a pcre/ subdir to the include path.
166 dnl Revision 1.68.2.3 2002/08/06 11:29:36 oes
167 dnl Fixed detection/inclusion of pcre.h, which is in a pcre subdir on RH
169 dnl Revision 1.68.2.2 2002/07/30 19:36:09 hal9
170 dnl Bump version to 2.9.17.
172 dnl Revision 1.68.2.1 2002/07/26 15:21:12 oes
173 dnl Bumped version number for 2.9.16 freeze
175 dnl Revision 1.68 2002/05/25 16:54:54 jongfoster
176 dnl Detect if the compiler supports -pthread.
177 dnl Hopefully this will fix bug 560442. (I don't have a HP PA-RISC
178 dnl machine to test this!)
180 dnl Revision 1.67 2002/05/03 14:33:59 oes
181 dnl Generate doc/soucre/ldp.dsl
183 dnl Revision 1.66 2002/05/03 00:41:56 oes
184 dnl Set version to 2.9.15 to comply with new versioning scheme
186 dnl Revision 1.65 2002/04/25 19:13:57 morcego
187 dnl Removed RPM release number declaration on configure.in
188 dnl Changed makefile to use given value for RPM_PACKAGEV when on uploading
189 dnl targets (will produce an error, explaining who to do it, if no value
192 dnl Revision 1.64 2002/04/22 16:32:31 morcego
193 dnl configure.in, *.spec: Bumping release to 2 (2.9.14-2)
194 dnl -rh.spec: uid and gid are now macros
195 dnl -suse.spec: Changing the header Copyright to License (Copyright is
198 dnl Revision 1.63 2002/04/11 11:00:21 oes
199 dnl Applied Moritz' fix for socklen_t on Solaris
201 dnl Revision 1.62 2002/04/11 10:09:20 oes
204 dnl Revision 1.61 2002/04/10 18:14:45 morcego
205 dnl - (privoxy-rh.spec only) Relisting template files on the %%files section
206 dnl - (configure.in, privoxy-rh.spec) Bumped package release to 5
208 dnl Revision 1.60 2002/04/09 16:38:49 oes
209 dnl Added detection of missing config.h.in
211 dnl Revision 1.59 2002/04/06 20:23:55 jongfoster
212 dnl Removing unnessacery tests (C++, ranlib)
214 dnl Revision 1.58 2002/04/04 20:49:20 swa
215 dnl attempt to consolidate the
216 dnl different dokbook versions.
218 dnl Revision 1.57 2002/04/04 00:36:36 gliptak
219 dnl always use pcre for matching
221 dnl Revision 1.56 2002/04/03 22:28:03 gliptak
222 dnl Removed references to gnu_regex
224 dnl Revision 1.55 2002/04/03 03:54:38 gliptak
225 dnl Checking pcre version
227 dnl Revision 1.54 2002/04/01 00:54:24 gliptak
228 dnl More changes needed around regex support.
230 dnl Revision 1.53 2002/03/29 20:09:01 swa
233 dnl Revision 1.52 2002/03/29 19:51:40 gliptak
234 dnl Correcting compile problem with Debian
236 dnl Revision 1.51 2002/03/28 20:43:00 swa
237 dnl set make correctly
239 dnl Revision 1.50 2002/03/27 03:03:45 hal9
240 dnl Add test for man2html
242 dnl Revision 1.49 2002/03/27 02:19:52 david__schmidt
243 dnl More Mac OSX support:
244 dnl - Get rid of extraneous, noisy -pthread warnings
245 dnl - Define unix so we get oes' unix-tagged changes
247 dnl Revision 1.48 2002/03/26 22:29:54 swa
248 dnl we have a new homepage!
250 dnl Revision 1.47 2002/03/26 16:41:00 hal9
251 dnl Upped RPM Release to 3 (need to build new RH packages)
253 dnl Revision 1.46 2002/03/24 18:55:06 jongfoster
254 dnl Making Docbook work under Windows
256 dnl Revision 1.45 2002/03/24 14:19:55 swa
257 dnl set rpm package release in configure.in. nowhere else.
259 dnl Revision 1.44 2002/03/24 13:25:43 swa
260 dnl name change related issues
262 dnl Revision 1.43 2002/03/24 12:56:21 swa
263 dnl name change related issues.
265 dnl Revision 1.42 2002/03/22 18:11:37 jongfoster
266 dnl Bumping version number to 2.9.12
268 dnl Revision 1.41 2002/03/19 19:30:04 morcego
269 dnl - Fixing stylesheet checking on configure. If it is found, no further checks
272 dnl - configure will now check for db2html or docbook2html (should work now
273 dnl on SuSe without the docbktls package)
275 dnl Revision 1.40 2002/03/09 14:33:30 oes
276 dnl Fixing the (harmless) AC_CHECK_FILE warnings
278 dnl Revision 1.39 2002/03/08 16:46:13 oes
279 dnl Added --enable-no-gifs
281 dnl Revision 1.38 2002/03/08 14:13:50 morcego
282 dnl Fixing configure, to remove a command not found error.
284 dnl Revision 1.37 2002/03/08 12:58:21 oes
285 dnl Tiny bugfix in AC_ARG_WITH(debug)
287 dnl Revision 1.36 2002/03/06 23:50:36 morcego
288 dnl Will not test for a text browser if we are not using docbook.
290 dnl Revision 1.35 2002/03/06 21:55:52 morcego
291 dnl New configure option: --with-docbook=(yes|no|directory)
292 dnl Preliminary new platform detection code included. Will work with the
293 dnl old one for now. No use just trowing it away
295 dnl Revision 1.34 2002/03/06 20:57:00 morcego
296 dnl Fixing detection of stylesheets on SuSe.
298 dnl Revision 1.33 2002/03/05 17:31:11 morcego
299 dnl Search for docbook.dsl. Should solve portability problems for SuSe.
301 dnl Revision 1.32 2002/03/05 14:07:43 morcego
302 dnl configure now detects rpm topdir, and change GNUmakefile acordingly
303 dnl (based on sugestion by Sarantis Paskalis)
305 dnl Revision 1.31 2002/03/05 13:43:28 morcego
306 dnl Checking for text browser, so redhat-dok can work.
308 dnl Revision 1.30 2002/03/04 17:58:01 oes
309 dnl Deleted _DEBUG and PID_FILE_PATH
311 dnl Revision 1.29 2002/02/28 14:20:53 oes
312 dnl Fixed detection of gethost*_r functions on Solaris
314 dnl Revision 1.28 2002/02/27 15:02:38 oes
315 dnl Incremented version number
317 dnl Revision 1.27 2002/01/10 12:35:18 oes
318 dnl Added cross-compile defaults to the AC_CHECK_SIZEOF macros
319 dnl to silence autoconf warnings. Numbers are for Intel/Linux.
320 dnl Is there a better way?
322 dnl Revision 1.26 2002/01/09 14:29:49 oes
323 dnl - Added AC_CHECK_FUNC tests for the availability of
324 dnl gethostbyname_r, gethostbyaddr_r, gmtime_r and
325 dnl localtime_r, as well as AC_TRY_COMPILE tests to
326 dnl determine their signatures.
328 dnl - Fixed a bug with the init of CFLAGS that was
329 dnl reported by barsnick
331 dnl Revision 1.25 2002/01/04 15:27:18 oes
332 dnl Changed quoting of CODE_STATUS for use in make
334 dnl Revision 1.24 2001/12/30 14:07:31 steudten
335 dnl - Add signal handling (unix)
336 dnl - Add SIGHUP handler (unix)
337 dnl - Add creation of pidfile (unix)
338 dnl - Add action 'top' in rc file (RH)
339 dnl - Add entry 'SIGNALS' to manpage
340 dnl - Add exit message to logfile (unix)
342 dnl Revision 1.23 2001/12/09 20:24:42 david__schmidt
343 dnl Change from "alpha" to "beta" in configure.in
345 dnl Revision 1.22 2001/12/01 11:24:01 jongfoster
346 dnl Renaming Makefile.in to GNUmakefile.in so that non-GNU versions of
347 dnl make break in a more obvious way.
349 dnl Revision 1.21 2001/11/30 21:35:54 jongfoster
350 dnl Bumping version number to 2.9.10
352 dnl Revision 1.20 2001/10/23 21:24:09 jongfoster
353 dnl Support for FEATURE_CGI_EDIT_ACTIONS
355 dnl Revision 1.19 2001/10/07 15:33:14 oes
356 dnl Removed FEATURE_DENY_GZIP
357 dnl Bumped up version number
359 dnl Revision 1.18 2001/09/13 13:10:24 steudten
361 dnl PreWork for Debug Interface.
362 dnl Add new option "--with-debug" to enable debugging (flags aso.)
364 dnl Revision 1.17 2001/09/12 23:44:55 david__schmidt
365 dnl Mac OSX (Darwin) support added.
367 dnl Revision 1.16 2001/09/12 22:55:45 joergs
368 dnl AmigaOS support added.
370 dnl Revision 1.15 2001/09/12 17:28:59 david__schmidt
372 dnl OS/2 port: update autoconf'd support for the platform.
374 dnl Revision 1.14 2001/07/30 22:12:11 jongfoster
375 dnl Fixing Solaris build (I hope) and tidying up #defines:
376 dnl - All feature #defines are now of the form FEATURE_xxx
377 dnl - Permanently turned off WIN_GUI_EDIT
378 dnl - Permanently turned on WEBDAV and SPLIT_PROXY_ARGS
380 dnl Revision 1.13 2001/07/29 17:09:17 jongfoster
381 dnl Major changes to build system in order to fix these bugs:
382 dnl - pthreads under Linux was broken - changed -lpthread to -pthread
383 dnl - Compiling in MinGW32 mode under CygWin now correctly detects
384 dnl which shared libraries are available
385 dnl - Solaris support (?) (Not tested under Solaris yet)
387 dnl Revision 1.12 2001/07/25 19:16:27 oes
388 dnl Bumping version number to 2.9.8
390 dnl Revision 1.11 2001/07/21 18:00:07 jongfoster
391 dnl Bumping version number to 2.9.7
393 dnl Revision 1.10 2001/07/18 17:25:04 oes
396 dnl Revision 1.9 2001/07/15 19:45:13 jongfoster
397 dnl Added support for linking with POSIX threads library
399 dnl Revision 1.8 2001/07/15 17:54:29 jongfoster
400 dnl Renaming #define STATIC to STATIC_PCRE
401 dnl Adding new #define FEATURE_PTHREAD that will be used to enable
402 dnl POSIX threads support.
404 dnl Revision 1.7 2001/07/13 13:58:05 oes
405 dnl Completely reorganized the selection scheme for
406 dnl pcre, pcreposix, pcrs and gnu_regex:
408 dnl The presence of shared pcre, pcreposix or pcrs
409 dnl libraried is now autodetected. Additionally, the
410 dnl user can enforce using the built-in static variants
411 dnl by specifying --disable-dynamic-(pcre|pcrs).
412 dnl Care is taken to avoid that pcre is dyn, while pcreposix
413 dnl is static, if both are used and that pcrs is static if
416 dnl The choice between pcre, gnu or no regex for actionsfile
417 dnl URL matching is now via
418 dnl --(enable|disable)-regex-matching[=(gnu|pcre|no)] with the
419 dnl default being pcre.
421 dnl Revision 1.6 2001/06/29 21:56:40 oes
424 dnl Revision 1.5 2001/06/29 13:26:27 oes
425 dnl Introduced #define CODE_STATUS
427 dnl Revision 1.4 2001/05/29 09:50:24 jongfoster
428 dnl Unified blocklist/imagelist/permissionslist.
429 dnl File format is still under discussion, but the internal changes
430 dnl are (mostly) done.
432 dnl Also modified interceptor behaviour:
433 dnl - We now intercept all URLs beginning with one of the following
434 dnl prefixes (and *only* these prefixes):
436 dnl * http://ijbswa.sf.net/config/
437 dnl * http://ijbswa.sourceforge.net/config/
438 dnl - New interceptors "home page" - go to http://i.j.b/ to see it.
439 dnl - Internal changes so that intercepted and fast redirect pages
440 dnl are not replaced with an image.
441 dnl - Interceptors now have the option to send a binary page direct
442 dnl to the client. (i.e. ijb-send-banner uses this)
443 dnl - Implemented show-url-info interceptor. (Which is why I needed
444 dnl the above interceptors changes - a typical URL is
445 dnl "http://i.j.b/show-url-info?url=www.somesite.com/banner.gif".
446 dnl The previous mechanism would not have intercepted that, and
447 dnl if it had been intercepted then it then it would have replaced
448 dnl it with an image.)
450 dnl Revision 1.3 2001/05/22 18:46:04 oes
452 dnl - Enabled filtering banners by size rather than URL
453 dnl by adding patterns that replace all standard banner
454 dnl sizes with the "Junkbuster" gif to the re_filterfile
456 dnl - Enabled filtering WebBugs by providing a pattern
457 dnl which kills all 1x1 images
459 dnl - Added support for PCRE_UNGREEDY behaviour to pcrs,
460 dnl which is selected by the (nonstandard and therefore
461 dnl capital) letter 'U' in the option string.
462 dnl It causes the quantifiers to be ungreedy by default.
463 dnl Appending a ? turns back to greedy (!).
465 dnl - Added a new interceptor ijb-send-banner, which
466 dnl sends back the "Junkbuster" gif. Without imagelist or
467 dnl MSIE detection support, or if tinygif = 1, or the
468 dnl URL isn't recognized as an imageurl, a lame HTML
469 dnl explanation is sent instead.
471 dnl - Added new feature, which permits blocking remote
472 dnl script redirects and firing back a local redirect
474 dnl The feature is conditionally compiled, i.e. it
475 dnl can be disabled with --disable-fast-redirects,
476 dnl plus it must be activated by a "fast-redirects"
477 dnl line in the config file, has its own log level
478 dnl and of course wants to be displayed by show-proxy-args
479 dnl Note: Boy, all the #ifdefs in 1001 locations and
480 dnl all the fumbling with configure.in and acconfig.h
481 dnl were *way* more work than the feature itself :-(
483 dnl - Because a generic redirect template was needed for
484 dnl this, tinygif = 3 now uses the same.
486 dnl - Moved GIFs, and other static HTTP response templates
489 dnl - Some minor fixes
491 dnl - Removed some >400 CRs again (Jon, you really worked
494 dnl Revision 1.2 2001/05/20 01:21:20 jongfoster
495 dnl Version 2.9.4 checkin.
496 dnl - Merged popupfile and cookiefile, and added control over PCRS
497 dnl filtering, in new "permissionsfile".
498 dnl - Implemented LOG_LEVEL_FATAL, so that if there is a configuration
499 dnl file error you now get a message box (in the Win32 GUI) rather
500 dnl than the program exiting with no explanation.
501 dnl - Made killpopup use the PCRS MIME-type checking and HTTP-header
503 dnl - Removed tabs from "config"
504 dnl - Moved duplicated url parsing code in "loaders.c" to a new funcition.
505 dnl - Bumped up version number.
507 dnl Revision 1.1.1.1 2001/05/15 13:58:50 oes
508 dnl Initial import of version 2.9.3 source tree
513 dnl =================================================================
514 dnl AutoConf Initialization
515 dnl =================================================================
517 AC_REVISION($Revision: 1.111 $)
520 if test ! -f config.h.in; then
521 echo "You need to run autoheader first. "
522 echo -n "Shall I do this for you now? (y/n) "
524 if test "$answer" != "y"; then
531 AC_CONFIG_HEADER([config.h])
536 AC_ARG_WITH(docbook, dnl
537 --with-docbook=[[yes|no|directory]]
538 Enable docbook documentation creation
539 (default = yes, for gnu and linux),[dnl
540 case "$with_docbook" in
550 AC_ARG_WITH(db2html, dnl
551 --with-db2html=<path/executable>
552 Set the location of the docbook to html converter
553 (default = search),[dnl
557 dnl =================================================================
558 dnl Application version number
559 dnl =================================================================
564 CODE_STATUS="UNRELEASED"
566 dnl CODE_STATUS can be "alpha", "beta", or "stable", and will be
567 dnl used for CGI output. Set version to 0.0.0 and status to "UNRELEASED"
568 dnl whenever CVS in a stable branch differs from the last release.
570 dnl =================================================================
571 dnl Substitute the version numbers
572 dnl =================================================================
574 AC_SUBST(VERSION_MAJOR)
575 AC_SUBST(VERSION_MINOR)
576 AC_SUBST(VERSION_POINT)
577 AC_SUBST(CODE_STATUS)
580 AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR})
581 AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR})
582 AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT})
583 AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}")
584 AC_DEFINE_UNQUOTED(CODE_STATUS,"${CODE_STATUS}")
586 dnl =================================================================
587 dnl Checks for programs needed to build.
588 dnl =================================================================
590 dnl Keep AC_PROG_CC from setting its own defaults:
591 if test "X$CFLAGS" = "X"; then
602 AC_CHECK_PROG(GDB,gdb,yes,no)
603 AC_PATH_PROG(BGROUPS,groups,no,/bin:/usr/bin:/usr/local/bin)
604 AC_PATH_PROG(ID,id,no,/bin:/usr/bin:/usr/local/bin)
608 dnl =================================================================
609 dnl debug, gcc and gdb support
610 dnl =================================================================
613 [ --with-debug Enable debug mode],
615 if test "x$withval" != "xno" ; then
616 if test $ac_cv_prog_cc_g = yes; then
617 if test "$GCC" = yes; then
619 CFLAGS="$CFLAGS -ggdb"
623 CFLAGS="$CFLAGS -Wshadow -Wconversion"
631 if test "X$CFLAGS" = "X "; then # if CFLAGS were unset (see above)
632 if test "$GCC" = yes; then
639 dnl =================================================================
640 dnl Check for user and group validity
641 dnl =================================================================
644 if test "$EMXOS2" = yes; then
645 echo "Skipping user and group validity stuff.";
649 $ID privoxy >/dev/null 2>/dev/null
650 if test $? -ne 0 ; then
651 AC_MSG_WARN(There is no user 'privoxy' on this system)
653 AC_MSG_CHECKING([for user])
655 [ --with-user=privoxy Set user under which privoxy will run],
657 if test "x$withval" != "xyes"; then
658 if test $ID = no ; then
659 AC_MSG_ERROR(There is no 'id' program on this system)
661 AC_MSG_RESULT($with_user)
662 $ID $with_user 2>/dev/null >/dev/null
663 if test $? -eq 0 ; then
666 AC_MSG_ERROR(There is no user '$with_user' on this system)
670 AC_MSG_ERROR(We need a user if you give me this parameter)
674 if test $ID = no ; then
675 AC_MSG_ERROR(There is no 'id' programm on this system)
677 AC_MSG_RESULT(none specified)
684 AC_MSG_CHECKING([for group])
686 [ --with-group=privoxy Set group for privoxy],
688 if test "x$withval" != "xyes"; then
689 if test $BGROUPS = no ; then
690 AC_MSG_ERROR(There is no 'groups' program on this system)
692 AC_MSG_RESULT($with_group)
693 $BGROUPS $USER >/dev/null
694 if test $? -eq 0 ; then
695 # FIXME: this fails if valid group, but not first group
697 if test "$with_group" != "`$BGROUPS $USER | sed 's/.*: //' 2>/dev/null |$AWK '{print $1}'`" ; then
698 AC_MSG_ERROR(The given value '$withval' does not match group entry)
703 AC_MSG_ERROR(There is no group entry for user '$USER')
707 AC_MSG_ERROR(We need a group if you give me this parameter)
711 if test $BGROUPS = no ; then
712 AC_MSG_ERROR(There is no 'groups' programm on this system)
714 AC_MSG_RESULT(none specified)
723 dnl =================================================================
724 dnl additional gcc flags
725 dnl =================================================================
728 if test "$host" != "powerpc-unknown-amigaos"; then
729 CFLAGS="-pipe $CFLAGS"
734 dnl =================================================================
736 dnl =================================================================
738 dnl Must do this first.
740 dnl Reason: This sets CFLAGS in order to switch the Cygwin compiler
741 dnl into Cygwin or MinGW32 modes. Depending on the mode selected,
742 dnl the compiler will use completely different sets of library
743 dnl and include files.
745 dnl =================================================================
750 if test "$MINGW32" = "yes"; then
753 if test "$CYGWIN" = "yes"; then
760 if test $dodk = auto; then
762 if test $target_type = unix; then
771 dnl Decide what to do based on target_type
772 dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
773 dnl This is because we don't know yet whether pthread is enabled.
775 AC_ARG_ENABLE(mingw32,
776 [ --enable-mingw32 Use mingw32 for a Windows GUI],
777 [if test $enableval = yes; then
781 if test $target_type = mingw; then
783 SPECIAL_CFLAGS="-mwindows -mno-cygwin"
784 PTHREAD_LIB=-lpthreadGC
785 echo "Using mingw32 (Win32 GUI)"
788 if test $target_type = cygwin; then
789 SPECIAL_CFLAGS="-mno-win32"
791 echo "Using Cygnus (Win32 command line)"
794 PTHREAD_LIB=-lpthread
799 dnl Checking which text html browser we have avaliable
800 if test $dodk != no; then
801 AC_CHECK_PROGS(WDUMP,w3m lynx links,false)
802 if test "$WDUMP" = false; then
803 AC_MSG_WARN(You need some kind of text browser to build documentation \(w3m, lynx and links are supported\))
805 if test $DB2HTML = false; then
806 dnl We need to clean the variable, otherwise AC_CHECK_PROGS
809 AC_CHECK_PROGS(DB2HTML,db2html docbook2html,false)
815 dnl If we use rpm, we need to check where %_topdir is
816 AC_CHECK_PROGS(RPMBIN,rpm,false)
817 if test $RPMBIN != false; then
818 RPM_BASE=`rpm --eval "%{_topdir}"`
819 if test "$RPM_BASE" = ""; then
820 RPM_BASE=/usr/src/redhat
825 dnl Check for jade, so we can build the documentation
826 AC_CHECK_PROGS(JADEBIN,jade openjade,false)
829 dnl Check for man2html for docs.
830 AC_CHECK_PROGS(MAN2HTML,man2html,false)
833 dnl Set doc status flag for conditional content inclusions
834 DOC_STATUS=p-not-stable
835 if test $CODE_STATUS = stable; then
836 DOC_STATUS="p-stable"
840 dnl Checking for the docbook.dsl stylesheet file
841 dnl It is still not portable (directory slash)
843 if test $dodk = yes; then
844 if test $DKPREFIX = none; then
845 for i in /usr/share/sgml/docbook/dsssl-stylesheets \
846 /usr/share/sgml/docbkdsl /usr/share/sgml/docbook-dsssl \
847 /usr/local/share/sgml/docbook/dsssl/modular \
848 /usr/share/sgml/docbook/stylesheet/dsssl/modular/ \
850 dnl echo -n does not fly with /bin/sh.
851 dnl echo -n "checking for $i/html/docbook.dsl..."
852 AC_MSG_CHECKING([for $i])
853 if test -f $i/html/docbook.dsl; then
861 # where are the catalogs?
862 for i in /usr/share/sgml/CATALOG.docbk30 \
863 /usr/share/sgml/CATALOG.docbk31 \
864 /usr/share/sgml/CATALOG.docbk31 \
865 /usr/local/share/sgml/docbook/3.0/docbook.cat \
866 /usr/local/share/sgml/docbook/3.1/docbook.cat \
867 /usr/share/sgml/docbook/dtd/3.1/docbook.cat \
869 dnl echo -n "checking for $i..."
870 AC_MSG_CHECKING([for $i])
873 JADECAT="$JADECAT -c $i"
883 dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
884 old_CFLAGS_nospecial=$CFLAGS
885 CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
887 # Hack to force AutoConf to use the CFLAGS we just set
888 dnl Warning: This may break with a future version of Autoconf
889 dnl Tested with autoconf 2.13
890 ac_cpp='$CPP $CPPFLAGS $SPECIAL_CFLAGS'
891 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
892 ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
895 dnl =================================================================
897 dnl =================================================================
899 AC_CHECK_HEADER(pthread.h, [have_pthread=yes], [have_pthread=no])
901 AC_ARG_ENABLE(pthread,
902 [ --disable-pthread Don't use POSIX threads (pthreads)],
903 [if test $enableval = no; then
908 if test $have_pthread = yes; then
910 AC_DEFINE(FEATURE_PTHREAD)
911 echo Using POSIX threads
912 if test "$GCC" = "yes"; then
913 # Set a GCC specific switch:
914 if test "$target_type" = "unix"; then
915 ac_jgf_save_CFLAGS=$CFLAGS
916 CFLAGS="$CFLAGS -pthread"
917 AC_TRY_LINK([#include <pthread.h>],
918 [void *p = pthread_create;],
920 # This compiler switch makes GCC on Linux thread-safe
921 # However, it's not supported on most other OS.
923 SPECIAL_CFLAGS="-pthread"
925 CFLAGS=$ac_jgf_save_CFLAGS
930 echo Using native threads
933 AC_SUBST(PTHREAD_ONLY)
935 dnl =================================================================
936 dnl Support for thread-safe versions of gethostbyaddr, gethostbyname,
937 dnl gmtime and localtime
938 dnl =================================================================
940 dnl Next line needed to find the gethost*_r functions on Solaris
941 AC_CHECK_LIB(nsl, gethostbyname)
943 AC_CHECK_FUNC(gethostbyaddr_r, [
944 AC_MSG_CHECKING([signature of gethostbyaddr_r])
948 struct hostent *h, *hp;
951 (void) gethostbyaddr_r(a, l, t, h, b, bl, &hp, &e)
953 AC_DEFINE(HAVE_GETHOSTBYADDR_R_8_ARGS)
954 AC_MSG_RESULT([8 args])
962 (void) gethostbyaddr_r(a, l, t, h, b, bl, &e)
964 AC_DEFINE(HAVE_GETHOSTBYADDR_R_7_ARGS)
965 AC_MSG_RESULT([7 args])
970 struct hostent_data *d;
974 (void) gethostbyaddr_r(a, l, t, h, d)
976 AC_DEFINE(HAVE_GETHOSTBYADDR_R_5_ARGS)
977 AC_MSG_RESULT([5 args])
979 AC_MSG_RESULT(unrecognised)
987 AC_CHECK_FUNC(gethostbyname_r, [
988 AC_MSG_CHECKING([signature of gethostbyname_r])
992 struct hostent *h, *r;
995 (void) gethostbyname_r(n, h, b, bl, &r, &e)
997 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARGS)
998 AC_MSG_RESULT([6 args])
1006 (void) gethostbyname_r(n, h, b, bl, &e)
1008 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARGS)
1009 AC_MSG_RESULT([5 args])
1014 struct hostent_data *d;
1017 (void) gethostbyname_r(n, h, d)
1019 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARGS)
1020 AC_MSG_RESULT([3 args])
1022 AC_MSG_RESULT(unrecognised)
1030 AC_CHECK_FUNC(gmtime_r, [
1031 AC_MSG_CHECKING([signature of gmtime_r])
1037 (void) gmtime_r(t, tm)
1040 AC_DEFINE(HAVE_GMTIME_R)
1042 AC_MSG_RESULT(unrecognised)
1048 AC_CHECK_FUNC(localtime_r, [
1049 AC_MSG_CHECKING([signature of localtime_r])
1055 (void) localtime_r(t, tm)
1058 AC_DEFINE(HAVE_LOCALTIME_R)
1060 AC_MSG_RESULT(unrecognised)
1066 dnl =================================================================
1067 dnl Solaris specific
1068 dnl FIXME: Not tested on Solaris yet...
1069 dnl ISFIXED: Have tested it on Solaris, but there are other ways to
1070 dnl make these checks generic, e.g.:
1071 dnl AC_CHECK_FUNC(getsockopt, , AC_CHECK_LIB(socket, getsockopt))
1072 dnl (Moritz Barsnick <moritz@barsnick.net>)
1073 dnl =================================================================
1079 *-solaris*) SOCKET_LIB="-lsocket -lnsl"
1080 AC_DEFINE(__EXTENSIONS__)
1081 if test "$GCC" = "yes"; then
1082 # Set a GCC specific switch:
1083 # This compiler switch makes Solaris thread-safe
1085 SPECIAL_CFLAGS="-pthreads"
1087 # What do we do without GCC? Guess this:
1088 SPECIAL_CFLAGS="-D_REENTRANT"
1093 AC_SUBST(SOCKET_LIB)
1095 dnl =================================================================
1096 dnl Solaris problem, and others perhaps (socklen_t is undefined)
1097 dnl =================================================================
1099 AC_MSG_CHECKING([for socklen_t])
1100 AC_EGREP_HEADER(socklen_t, sys/socket.h, AC_MSG_RESULT([yes]),
1102 AC_DEFINE(socklen_t,int,
1103 [ Define to 'int' if <sys/socket.h> doesn't have it. ]))
1106 dnl =================================================================
1108 dnl =================================================================
1111 *-os2-emx*) SOCKET_LIB=-lsocket
1115 AC_SUBST(SOCKET_LIB)
1117 dnl =================================================================
1118 dnl Mac OSX specific
1119 dnl =================================================================
1122 *-apple-darwin*) SPECIAL_CFLAGS="-Dunix"
1126 dnl =================================================================
1127 dnl OpenBSD specific
1128 dnl =================================================================
1131 *-openbsd*) SPECIAL_CFLAGS="$SPECIAL_CFLAGS -Dunix"
1135 dnl =================================================================
1136 dnl AmigaOS specific
1137 dnl =================================================================
1142 *-amigaos) AMIGAOS_ONLY=
1146 AC_SUBST(AMIGAOS_ONLY)
1148 dnl =================================================================
1149 dnl Check for standard compiler stuff
1150 dnl =================================================================
1161 AC_CHECK_SIZEOF(int, 4)
1162 AC_CHECK_SIZEOF(char *, 4)
1163 AC_CHECK_SIZEOF(long, 4)
1164 AC_CHECK_SIZEOF(long long, 8)
1165 AC_CHECK_SIZEOF(size_t, 4)
1167 dnl Checks for header files.
1168 dnl AC_HEADER_SYS_WAIT
1169 dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h)
1170 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])
1172 dnl Checks for library functions.
1174 dnl AC_CHECK_FUNC(strstr)
1175 dnl bcopy and memmove are for PCRE
1176 AC_CHECK_FUNCS([strerror bcopy memmove])
1177 AC_PROG_GCC_TRADITIONAL
1178 dnl uncommenting does not work for swa. suse linux
1182 dnl uncommenting does not work for swa. suse linux
1184 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])
1187 dnl =================================================================
1188 dnl Checks for libraries.
1189 dnl =================================================================
1190 dnl Note: Some systems may have the library but not the system header
1191 dnl file, so we must check for both.
1192 dnl Also check for correct version
1193 AC_CHECK_LIB(pcre, pcre_compile, [
1194 AC_CHECK_HEADER(pcre.h, [
1195 AC_EGREP_HEADER(pcre_fullinfo, pcre.h, [have_pcre=yes], [AC_MSG_WARN([[pcre old version installed]]); have_pcre=no])
1197 AC_CHECK_HEADER(pcre/pcre.h, [
1198 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])
1203 AC_CHECK_LIB(pcreposix, regcomp, [
1204 AC_CHECK_HEADER(pcreposix.h, [
1205 AC_EGREP_HEADER(pcreposix_regerror, pcreposix.h, [AC_MSG_WARN([[pcreposix old version installed]]); have_pcreposix=no], [have_pcreposix=yes])
1207 AC_CHECK_HEADER(pcre/pcreposix.h, [
1208 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)])
1209 ], [have_pcreposix=no])
1211 ], [have_pcreposix=no], -lpcre)
1213 dnl ================================================================
1214 dnl libpcrs is temporarily disabled.
1216 dnl Privoxy's own pcrs version fixes some problems that
1217 dnl are present in libpcrs 0.3, the last pcrs release we
1218 dnl know of, and as libpcrs seems to be currently unmaintained
1219 dnl we can't send these fixes upstream.
1220 dnl ================================================================
1222 dnl AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no], -lpcre)
1224 dnl =================================================================
1226 dnl =================================================================
1230 dnl =================================================================
1232 dnl =================================================================
1234 AC_ARG_ENABLE(toggle,
1235 [ --disable-toggle Don't support temporary disable],
1236 [if test $enableval = yes; then
1237 AC_DEFINE(FEATURE_TOGGLE)
1238 fi],AC_DEFINE(FEATURE_TOGGLE))
1240 AC_ARG_ENABLE(force,
1241 [ --disable-force Don't allow single-page disable],
1242 [if test $enableval = yes; then
1243 AC_DEFINE(FEATURE_FORCE_LOAD)
1244 fi],AC_DEFINE(FEATURE_FORCE_LOAD))
1246 AC_ARG_ENABLE(fast-redirects,
1247 [ --disable-fast-redirects Don't support fast redirects],
1248 [if test $enableval = yes; then
1249 AC_DEFINE(FEATURE_FAST_REDIRECTS)
1250 fi], AC_DEFINE(FEATURE_FAST_REDIRECTS))
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)