1 dnl Process this file with autoconf to produce a configure script.
3 dnl $Id: configure.in,v 1.97 2006/11/21 18:32:46 hal9 Exp $
5 dnl Written by and Copyright (C) 2001 - 2004 the SourceForge
6 dnl Privoxy team. http://www.privoxy.org/
8 dnl Based on the Internet Junkbuster originally written
9 dnl by and Copyright (C) 1997 Anonymous Coders and
10 dnl Junkbusters Corporation. http://www.junkbusters.com
12 dnl This program is free software; you can redistribute it
13 dnl and/or modify it under the terms of the GNU General
14 dnl Public License as published by the Free Software
15 dnl Foundation; either version 2 of the License, or (at
16 dnl your option) any later version.
18 dnl This program is distributed in the hope that it will
19 dnl be useful, but WITHOUT ANY WARRANTY; without even the
20 dnl implied warranty of MERCHANTABILITY or FITNESS FOR A
21 dnl PARTICULAR PURPOSE. See the GNU General Public
22 dnl License for more details.
24 dnl The GNU General Public License should be included with
25 dnl this file. If not, you can view it at
26 dnl http://www.gnu.org/copyleft/gpl.html
27 dnl or write to the Free Software Foundation, Inc., 59
28 dnl Temple Place - Suite 330, Boston, MA 02111-1307, USA.
30 dnl $Log: configure.in,v $
31 dnl Revision 1.97 2006/11/21 18:32:46 hal9
32 dnl Setting version to 3.0.7 UNRELEASED for lack of a better setting.
34 dnl Revision 1.96 2006/11/18 14:42:51 fabiankeil
37 dnl Revision 1.95 2006/11/14 02:08:59 hal9
38 dnl Setting version string to 3.0.6 UNRELEASED. This needs to be reset to 3.0.6
39 dnl stable just before CVS is tagged for release.
41 dnl Revision 1.94 2006/11/13 19:05:50 fabiankeil
42 dnl Make pthread mutex locking more generic. Instead of
43 dnl checking for OSX and OpenBSD, check for FEATURE_PTHREAD
44 dnl and use mutex locking unless there is an _r function
45 dnl available. Better safe than sorry.
47 dnl Fixes "./configure --disable-pthread" and should result
48 dnl in less threading-related problems on pthread-using platforms,
49 dnl but it still doesn't fix BR#1122404.
51 dnl Revision 1.93 2006/09/22 01:26:20 hal9
52 dnl Set version to 3.0.5 BETA for hopefully release this weekend.
54 dnl Revision 1.92 2006/08/17 17:09:49 fabiankeil
55 dnl Added check for timegm().
57 dnl Revision 1.91 2006/08/13 22:01:51 fabiankeil
58 dnl Added checks for strptime() and random()
60 dnl Revision 1.90 2006/07/18 14:48:45 david__schmidt
61 dnl Reorganizing the repository: swapping out what was HEAD (the old 3.1 branch)
62 dnl with what was really the latest development (the v_3_0_branch branch)
64 dnl Revision 1.68.2.20 2004/01/31 16:31:46 oes
65 dnl Resetting version info to 0.0.0 UNRELEASED
67 dnl Revision 1.68.2.19 2004/01/30 09:26:03 oes
68 dnl Added docbook paths for debian sarge; set status for release
70 dnl Revision 1.68.2.18 2003/12/08 15:10:29 oes
71 dnl Bugfix: --with-docbook now correctly accepts its path parameter. Thanks, Roland!
73 dnl Revision 1.68.2.17 2003/10/18 18:41:26 david__schmidt
74 dnl Update to remain buildable on OS/2 - remove the failures
75 dnl due to missing unixisms
77 dnl Revision 1.68.2.16 2003/03/26 16:05:14 oes
78 dnl Marked as 0.0.0 UNRELEASED
80 dnl Revision 1.68.2.15 2003/03/26 00:25:00 oes
81 dnl Bump version for 3.0.2
83 dnl Revision 1.68.2.14 2003/03/25 13:27:12 hal9
84 dnl Manually apply Docbook/FreeBSD patch #708081 from a.go at tiscali.nl.
86 dnl Revision 1.68.2.13 2003/03/18 19:38:57 oes
87 dnl Set version info for 3.0.1 release
89 dnl Revision 1.68.2.12 2003/03/07 03:41:04 david__schmidt
90 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.
92 dnl Revision 1.68.2.11 2003/03/06 15:22:37 oes
93 dnl Fixed minor shell syntax bug
95 dnl Revision 1.68.2.10 2003/01/08 16:39:41 oes
96 dnl Changing default to exclude FEATURE_IMAGE_DETECT_MSIE because of problem reports with recent IEs
98 dnl Revision 1.68.2.9 2002/12/13 23:47:45 hal9
99 dnl Add openbsd $specialflags per gunner at styx2002.no-ip.org
101 dnl Revision 1.68.2.8 2002/11/27 12:55:26 oes
102 dnl Fixed broken handling of pre-set CFLAGS
104 dnl Revision 1.68.2.7 2002/10/25 02:44:22 hal9
105 dnl Port of make install, etc from main trunk. Needs testing! Add Slackware
106 dnl support, and other related changes. Update related docs.
108 dnl Revision 1.68.2.6 2002/09/25 15:35:15 oes
109 dnl Marking as non-release
111 dnl Revision 1.68.2.5 2002/08/25 23:37:00 hal9
112 dnl Getting ready for 3.0 release.
114 dnl Revision 1.68.2.4 2002/08/10 11:21:57 oes
115 dnl - Set Version to 2.9.20 (beta)
116 dnl - Add two AC_DEFINEs that indicate if the pcre*.h headers
117 dnl are located in a pcre/ subdir to the include path.
119 dnl Revision 1.68.2.3 2002/08/06 11:29:36 oes
120 dnl Fixed detection/inclusion of pcre.h, which is in a pcre subdir on RH
122 dnl Revision 1.68.2.2 2002/07/30 19:36:09 hal9
123 dnl Bump version to 2.9.17.
125 dnl Revision 1.68.2.1 2002/07/26 15:21:12 oes
126 dnl Bumped version number for 2.9.16 freeze
128 dnl Revision 1.68 2002/05/25 16:54:54 jongfoster
129 dnl Detect if the compiler supports -pthread.
130 dnl Hopefully this will fix bug 560442. (I don't have a HP PA-RISC
131 dnl machine to test this!)
133 dnl Revision 1.67 2002/05/03 14:33:59 oes
134 dnl Generate doc/soucre/ldp.dsl
136 dnl Revision 1.66 2002/05/03 00:41:56 oes
137 dnl Set version to 2.9.15 to comply with new versioning scheme
139 dnl Revision 1.65 2002/04/25 19:13:57 morcego
140 dnl Removed RPM release number declaration on configure.in
141 dnl Changed makefile to use given value for RPM_PACKAGEV when on uploading
142 dnl targets (will produce an error, explaining who to do it, if no value
145 dnl Revision 1.64 2002/04/22 16:32:31 morcego
146 dnl configure.in, *.spec: Bumping release to 2 (2.9.14-2)
147 dnl -rh.spec: uid and gid are now macros
148 dnl -suse.spec: Changing the header Copyright to License (Copyright is
151 dnl Revision 1.63 2002/04/11 11:00:21 oes
152 dnl Applied Moritz' fix for socklen_t on Solaris
154 dnl Revision 1.62 2002/04/11 10:09:20 oes
157 dnl Revision 1.61 2002/04/10 18:14:45 morcego
158 dnl - (privoxy-rh.spec only) Relisting template files on the %%files section
159 dnl - (configure.in, privoxy-rh.spec) Bumped package release to 5
161 dnl Revision 1.60 2002/04/09 16:38:49 oes
162 dnl Added detection of missing config.h.in
164 dnl Revision 1.59 2002/04/06 20:23:55 jongfoster
165 dnl Removing unnessacery tests (C++, ranlib)
167 dnl Revision 1.58 2002/04/04 20:49:20 swa
168 dnl attempt to consolidate the
169 dnl different dokbook versions.
171 dnl Revision 1.57 2002/04/04 00:36:36 gliptak
172 dnl always use pcre for matching
174 dnl Revision 1.56 2002/04/03 22:28:03 gliptak
175 dnl Removed references to gnu_regex
177 dnl Revision 1.55 2002/04/03 03:54:38 gliptak
178 dnl Checking pcre version
180 dnl Revision 1.54 2002/04/01 00:54:24 gliptak
181 dnl More changes needed around regex support.
183 dnl Revision 1.53 2002/03/29 20:09:01 swa
186 dnl Revision 1.52 2002/03/29 19:51:40 gliptak
187 dnl Correcting compile problem with Debian
189 dnl Revision 1.51 2002/03/28 20:43:00 swa
190 dnl set make correctly
192 dnl Revision 1.50 2002/03/27 03:03:45 hal9
193 dnl Add test for man2html
195 dnl Revision 1.49 2002/03/27 02:19:52 david__schmidt
196 dnl More Mac OSX support:
197 dnl - Get rid of extraneous, noisy -pthread warnings
198 dnl - Define unix so we get oes' unix-tagged changes
200 dnl Revision 1.48 2002/03/26 22:29:54 swa
201 dnl we have a new homepage!
203 dnl Revision 1.47 2002/03/26 16:41:00 hal9
204 dnl Upped RPM Release to 3 (need to build new RH packages)
206 dnl Revision 1.46 2002/03/24 18:55:06 jongfoster
207 dnl Making Docbook work under Windows
209 dnl Revision 1.45 2002/03/24 14:19:55 swa
210 dnl set rpm package release in configure.in. nowhere else.
212 dnl Revision 1.44 2002/03/24 13:25:43 swa
213 dnl name change related issues
215 dnl Revision 1.43 2002/03/24 12:56:21 swa
216 dnl name change related issues.
218 dnl Revision 1.42 2002/03/22 18:11:37 jongfoster
219 dnl Bumping version number to 2.9.12
221 dnl Revision 1.41 2002/03/19 19:30:04 morcego
222 dnl - Fixing stylesheet checking on configure. If it is found, no further checks
225 dnl - configure will now check for db2html or docbook2html (should work now
226 dnl on SuSe without the docbktls package)
228 dnl Revision 1.40 2002/03/09 14:33:30 oes
229 dnl Fixing the (harmless) AC_CHECK_FILE warnings
231 dnl Revision 1.39 2002/03/08 16:46:13 oes
232 dnl Added --enable-no-gifs
234 dnl Revision 1.38 2002/03/08 14:13:50 morcego
235 dnl Fixing configure, to remove a command not found error.
237 dnl Revision 1.37 2002/03/08 12:58:21 oes
238 dnl Tiny bugfix in AC_ARG_WITH(debug)
240 dnl Revision 1.36 2002/03/06 23:50:36 morcego
241 dnl Will not test for a text browser if we are not using docbook.
243 dnl Revision 1.35 2002/03/06 21:55:52 morcego
244 dnl New configure option: --with-docbook=(yes|no|directory)
245 dnl Preliminary new platform detection code included. Will work with the
246 dnl old one for now. No use just trowing it away
248 dnl Revision 1.34 2002/03/06 20:57:00 morcego
249 dnl Fixing detection of stylesheets on SuSe.
251 dnl Revision 1.33 2002/03/05 17:31:11 morcego
252 dnl Search for docbook.dsl. Should solve portability problems for SuSe.
254 dnl Revision 1.32 2002/03/05 14:07:43 morcego
255 dnl configure now detects rpm topdir, and change GNUmakefile acordingly
256 dnl (based on sugestion by Sarantis Paskalis)
258 dnl Revision 1.31 2002/03/05 13:43:28 morcego
259 dnl Checking for text browser, so redhat-dok can work.
261 dnl Revision 1.30 2002/03/04 17:58:01 oes
262 dnl Deleted _DEBUG and PID_FILE_PATH
264 dnl Revision 1.29 2002/02/28 14:20:53 oes
265 dnl Fixed detection of gethost*_r functions on Solaris
267 dnl Revision 1.28 2002/02/27 15:02:38 oes
268 dnl Incremented version number
270 dnl Revision 1.27 2002/01/10 12:35:18 oes
271 dnl Added cross-compile defaults to the AC_CHECK_SIZEOF macros
272 dnl to silence autoconf warnings. Numbers are for Intel/Linux.
273 dnl Is there a better way?
275 dnl Revision 1.26 2002/01/09 14:29:49 oes
276 dnl - Added AC_CHECK_FUNC tests for the availability of
277 dnl gethostbyname_r, gethostbyaddr_r, gmtime_r and
278 dnl localtime_r, as well as AC_TRY_COMPILE tests to
279 dnl determine their signatures.
281 dnl - Fixed a bug with the init of CFLAGS that was
282 dnl reported by barsnick
284 dnl Revision 1.25 2002/01/04 15:27:18 oes
285 dnl Changed quoting of CODE_STATUS for use in make
287 dnl Revision 1.24 2001/12/30 14:07:31 steudten
288 dnl - Add signal handling (unix)
289 dnl - Add SIGHUP handler (unix)
290 dnl - Add creation of pidfile (unix)
291 dnl - Add action 'top' in rc file (RH)
292 dnl - Add entry 'SIGNALS' to manpage
293 dnl - Add exit message to logfile (unix)
295 dnl Revision 1.23 2001/12/09 20:24:42 david__schmidt
296 dnl Change from "alpha" to "beta" in configure.in
298 dnl Revision 1.22 2001/12/01 11:24:01 jongfoster
299 dnl Renaming Makefile.in to GNUmakefile.in so that non-GNU versions of
300 dnl make break in a more obvious way.
302 dnl Revision 1.21 2001/11/30 21:35:54 jongfoster
303 dnl Bumping version number to 2.9.10
305 dnl Revision 1.20 2001/10/23 21:24:09 jongfoster
306 dnl Support for FEATURE_CGI_EDIT_ACTIONS
308 dnl Revision 1.19 2001/10/07 15:33:14 oes
309 dnl Removed FEATURE_DENY_GZIP
310 dnl Bumped up version number
312 dnl Revision 1.18 2001/09/13 13:10:24 steudten
314 dnl PreWork for Debug Interface.
315 dnl Add new option "--with-debug" to enable debugging (flags aso.)
317 dnl Revision 1.17 2001/09/12 23:44:55 david__schmidt
318 dnl Mac OSX (Darwin) support added.
320 dnl Revision 1.16 2001/09/12 22:55:45 joergs
321 dnl AmigaOS support added.
323 dnl Revision 1.15 2001/09/12 17:28:59 david__schmidt
325 dnl OS/2 port: update autoconf'd support for the platform.
327 dnl Revision 1.14 2001/07/30 22:12:11 jongfoster
328 dnl Fixing Solaris build (I hope) and tidying up #defines:
329 dnl - All feature #defines are now of the form FEATURE_xxx
330 dnl - Permanently turned off WIN_GUI_EDIT
331 dnl - Permanently turned on WEBDAV and SPLIT_PROXY_ARGS
333 dnl Revision 1.13 2001/07/29 17:09:17 jongfoster
334 dnl Major changes to build system in order to fix these bugs:
335 dnl - pthreads under Linux was broken - changed -lpthread to -pthread
336 dnl - Compiling in MinGW32 mode under CygWin now correctly detects
337 dnl which shared libraries are available
338 dnl - Solaris support (?) (Not tested under Solaris yet)
340 dnl Revision 1.12 2001/07/25 19:16:27 oes
341 dnl Bumping version number to 2.9.8
343 dnl Revision 1.11 2001/07/21 18:00:07 jongfoster
344 dnl Bumping version number to 2.9.7
346 dnl Revision 1.10 2001/07/18 17:25:04 oes
349 dnl Revision 1.9 2001/07/15 19:45:13 jongfoster
350 dnl Added support for linking with POSIX threads library
352 dnl Revision 1.8 2001/07/15 17:54:29 jongfoster
353 dnl Renaming #define STATIC to STATIC_PCRE
354 dnl Adding new #define FEATURE_PTHREAD that will be used to enable
355 dnl POSIX threads support.
357 dnl Revision 1.7 2001/07/13 13:58:05 oes
358 dnl Completely reorganized the selection scheme for
359 dnl pcre, pcreposix, pcrs and gnu_regex:
361 dnl The presence of shared pcre, pcreposix or pcrs
362 dnl libraried is now autodetected. Additionally, the
363 dnl user can enforce using the built-in static variants
364 dnl by specifying --disable-dynamic-(pcre|pcrs).
365 dnl Care is taken to avoid that pcre is dyn, while pcreposix
366 dnl is static, if both are used and that pcrs is static if
369 dnl The choice between pcre, gnu or no regex for actionsfile
370 dnl URL matching is now via
371 dnl --(enable|disable)-regex-matching[=(gnu|pcre|no)] with the
372 dnl default being pcre.
374 dnl Revision 1.6 2001/06/29 21:56:40 oes
377 dnl Revision 1.5 2001/06/29 13:26:27 oes
378 dnl Introduced #define CODE_STATUS
380 dnl Revision 1.4 2001/05/29 09:50:24 jongfoster
381 dnl Unified blocklist/imagelist/permissionslist.
382 dnl File format is still under discussion, but the internal changes
383 dnl are (mostly) done.
385 dnl Also modified interceptor behaviour:
386 dnl - We now intercept all URLs beginning with one of the following
387 dnl prefixes (and *only* these prefixes):
389 dnl * http://ijbswa.sf.net/config/
390 dnl * http://ijbswa.sourceforge.net/config/
391 dnl - New interceptors "home page" - go to http://i.j.b/ to see it.
392 dnl - Internal changes so that intercepted and fast redirect pages
393 dnl are not replaced with an image.
394 dnl - Interceptors now have the option to send a binary page direct
395 dnl to the client. (i.e. ijb-send-banner uses this)
396 dnl - Implemented show-url-info interceptor. (Which is why I needed
397 dnl the above interceptors changes - a typical URL is
398 dnl "http://i.j.b/show-url-info?url=www.somesite.com/banner.gif".
399 dnl The previous mechanism would not have intercepted that, and
400 dnl if it had been intercepted then it then it would have replaced
401 dnl it with an image.)
403 dnl Revision 1.3 2001/05/22 18:46:04 oes
405 dnl - Enabled filtering banners by size rather than URL
406 dnl by adding patterns that replace all standard banner
407 dnl sizes with the "Junkbuster" gif to the re_filterfile
409 dnl - Enabled filtering WebBugs by providing a pattern
410 dnl which kills all 1x1 images
412 dnl - Added support for PCRE_UNGREEDY behaviour to pcrs,
413 dnl which is selected by the (nonstandard and therefore
414 dnl capital) letter 'U' in the option string.
415 dnl It causes the quantifiers to be ungreedy by default.
416 dnl Appending a ? turns back to greedy (!).
418 dnl - Added a new interceptor ijb-send-banner, which
419 dnl sends back the "Junkbuster" gif. Without imagelist or
420 dnl MSIE detection support, or if tinygif = 1, or the
421 dnl URL isn't recognized as an imageurl, a lame HTML
422 dnl explanation is sent instead.
424 dnl - Added new feature, which permits blocking remote
425 dnl script redirects and firing back a local redirect
427 dnl The feature is conditionally compiled, i.e. it
428 dnl can be disabled with --disable-fast-redirects,
429 dnl plus it must be activated by a "fast-redirects"
430 dnl line in the config file, has its own log level
431 dnl and of course wants to be displayed by show-proxy-args
432 dnl Note: Boy, all the #ifdefs in 1001 locations and
433 dnl all the fumbling with configure.in and acconfig.h
434 dnl were *way* more work than the feature itself :-(
436 dnl - Because a generic redirect template was needed for
437 dnl this, tinygif = 3 now uses the same.
439 dnl - Moved GIFs, and other static HTTP response templates
442 dnl - Some minor fixes
444 dnl - Removed some >400 CRs again (Jon, you really worked
447 dnl Revision 1.2 2001/05/20 01:21:20 jongfoster
448 dnl Version 2.9.4 checkin.
449 dnl - Merged popupfile and cookiefile, and added control over PCRS
450 dnl filtering, in new "permissionsfile".
451 dnl - Implemented LOG_LEVEL_FATAL, so that if there is a configuration
452 dnl file error you now get a message box (in the Win32 GUI) rather
453 dnl than the program exiting with no explanation.
454 dnl - Made killpopup use the PCRS MIME-type checking and HTTP-header
456 dnl - Removed tabs from "config"
457 dnl - Moved duplicated url parsing code in "loaders.c" to a new funcition.
458 dnl - Bumped up version number.
460 dnl Revision 1.1.1.1 2001/05/15 13:58:50 oes
461 dnl Initial import of version 2.9.3 source tree
466 dnl =================================================================
467 dnl AutoConf Initialization
468 dnl =================================================================
470 AC_REVISION($Revision: 1.97 $)
473 if test ! -f config.h.in; then
474 echo "You need to run autoheader first. "
475 echo -n "Shall I do this for you now? (y/n) "
477 if test "$answer" != "y"; then
484 AC_CONFIG_HEADER([config.h])
489 AC_ARG_WITH(docbook, dnl
490 --with-docbook=[[yes|no|directory]]
491 Enable docbook documentation creation
492 (default = yes, for gnu and linux),[dnl
493 case "$with_docbook" in
503 AC_ARG_WITH(db2html, dnl
504 --with-db2html=<path/executable>
505 Set the location of the docbook to html converter
506 (default = search),[dnl
510 dnl =================================================================
511 dnl Application version number
512 dnl =================================================================
517 CODE_STATUS="UNRELEASED"
519 dnl CODE_STATUS can be "alpha", "beta", or "stable", and will be
520 dnl used for CGI output. Set version to 0.0.0 and status to "UNRELEASED"
521 dnl whenever CVS in a stable branch differs from the last release.
523 dnl =================================================================
524 dnl Substitute the version numbers
525 dnl =================================================================
527 AC_SUBST(VERSION_MAJOR)
528 AC_SUBST(VERSION_MINOR)
529 AC_SUBST(VERSION_POINT)
530 AC_SUBST(CODE_STATUS)
533 AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR})
534 AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR})
535 AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT})
536 AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}")
537 AC_DEFINE_UNQUOTED(CODE_STATUS,"${CODE_STATUS}")
539 dnl =================================================================
540 dnl Checks for programs needed to build.
541 dnl =================================================================
543 dnl Keep AC_PROG_CC from setting its own defaults:
544 if test "X$CFLAGS" = "X"; then
555 AC_CHECK_PROG(GDB,gdb,yes,no)
556 AC_PATH_PROG(BGROUPS,groups,no,/bin:/usr/bin:/usr/local/bin)
557 AC_PATH_PROG(ID,id,no,/bin:/usr/bin:/usr/local/bin)
561 dnl =================================================================
562 dnl debug, gcc and gdb support
563 dnl =================================================================
566 [ --with-debug Enable debug mode],
568 if test "x$withval" != "xno" ; then
569 if test $ac_cv_prog_cc_g = yes; then
570 if test "$GCC" = yes; then
572 CFLAGS="$CFLAGS -ggdb"
576 CFLAGS="$CFLAGS -Wshadow -Wconversion"
584 if test "X$CFLAGS" = "X "; then # if CFLAGS were unset (see above)
585 if test "$GCC" = yes; then
592 dnl =================================================================
593 dnl Check for user and group validity
594 dnl =================================================================
597 if test "$EMXOS2" = yes; then
598 echo "Skipping user and group validity stuff.";
602 $ID privoxy >/dev/null 2>/dev/null
603 if test $? -ne 0 ; then
604 AC_MSG_WARN(There is no user 'privoxy' on this system)
606 AC_MSG_CHECKING([for user])
608 [ --with-user=privoxy Set user under which privoxy will run],
610 if test "x$withval" != "xyes"; then
611 if test $ID = no ; then
612 AC_MSG_ERROR(There is no 'id' program on this system)
614 AC_MSG_RESULT($with_user)
615 $ID $with_user 2>/dev/null >/dev/null
616 if test $? -eq 0 ; then
619 AC_MSG_ERROR(There is no user '$with_user' on this system)
623 AC_MSG_ERROR(We need a user if you give me this parameter)
627 if test $ID = no ; then
628 AC_MSG_ERROR(There is no 'id' programm on this system)
630 AC_MSG_RESULT(none specified)
637 AC_MSG_CHECKING([for group])
639 [ --with-group=privoxy Set group for privoxy],
641 if test "x$withval" != "xyes"; then
642 if test $BGROUPS = no ; then
643 AC_MSG_ERROR(There is no 'groups' program on this system)
645 AC_MSG_RESULT($with_group)
646 $BGROUPS $USER >/dev/null
647 if test $? -eq 0 ; then
648 # FIXME: this fails if valid group, but not first group
650 if test "$with_group" != "`$BGROUPS $USER | sed 's/.*: //' 2>/dev/null |$AWK '{print $1}'`" ; then
651 AC_MSG_ERROR(The given value '$withval' does not match group entry)
656 AC_MSG_ERROR(There is no group entry for user '$USER')
660 AC_MSG_ERROR(We need a group if you give me this parameter)
664 if test $BGROUPS = no ; then
665 AC_MSG_ERROR(There is no 'groups' programm on this system)
667 AC_MSG_RESULT(none specified)
676 dnl =================================================================
677 dnl additional gcc flags
678 dnl =================================================================
681 CFLAGS="-pipe $CFLAGS"
685 dnl =================================================================
687 dnl =================================================================
689 dnl Must do this first.
691 dnl Reason: This sets CFLAGS in order to switch the Cygwin compiler
692 dnl into Cygwin or MinGW32 modes. Depending on the mode selected,
693 dnl the compiler will use completely different sets of library
694 dnl and include files.
696 dnl =================================================================
701 if test "$MINGW32" = "yes"; then
704 if test "$CYGWIN" = "yes"; then
711 if test $dodk = auto; then
713 if test $target_type = unix; then
722 dnl Decide what to do based on target_type
723 dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
724 dnl This is because we don't know yet whether pthread is enabled.
726 AC_ARG_ENABLE(mingw32,
727 [ --enable-mingw32 Use mingw32 for a Windows GUI],
728 [if test $enableval = yes; then
732 if test $target_type = mingw; then
734 SPECIAL_CFLAGS="-mwindows -mno-cygwin"
735 PTHREAD_LIB=-lpthreadGC
736 echo "Using mingw32 (Win32 GUI)"
739 if test $target_type = cygwin; then
740 SPECIAL_CFLAGS="-mno-win32"
742 echo "Using Cygnus (Win32 command line)"
745 PTHREAD_LIB=-lpthread
750 dnl Checking which text html browser we have avaliable
751 if test $dodk != no; then
752 AC_CHECK_PROGS(WDUMP,w3m lynx links,false)
753 if test "$WDUMP" = false; then
754 AC_MSG_WARN(You need some kind of text browser to build documentation \(w3m, lynx and links are supported\))
756 if test $DB2HTML = false; then
757 dnl We need to clean the variable, otherwise AC_CHECK_PROGS
760 AC_CHECK_PROGS(DB2HTML,db2html docbook2html,false)
766 dnl If we use rpm, we need to check where %_topdir is
767 AC_CHECK_PROGS(RPMBIN,rpm,false)
768 if test $RPMBIN != false; then
769 RPM_BASE=`rpm --eval "%{_topdir}"`
770 if test "$RPM_BASE" = ""; then
771 RPM_BASE=/usr/src/redhat
776 dnl Check for jade, so we can build the documentation
777 AC_CHECK_PROGS(JADEBIN,jade openjade,false)
780 dnl Check for man2html for docs.
781 AC_CHECK_PROGS(MAN2HTML,man2html,false)
784 dnl Set doc status flag for conditional content inclusions
785 DOC_STATUS=p-not-stable
786 if test $CODE_STATUS = stable; then
787 DOC_STATUS="p-stable"
791 dnl Checking for the docbook.dsl stylesheet file
792 dnl It is still not portable (directory slash)
794 if test $dodk = yes; then
795 if test $DKPREFIX = none; then
796 for i in /usr/share/sgml/docbook/dsssl-stylesheets \
797 /usr/share/sgml/docbkdsl /usr/share/sgml/docbook-dsssl \
798 /usr/local/share/sgml/docbook/dsssl/modular \
799 /usr/share/sgml/docbook/stylesheet/dsssl/modular/ \
801 dnl echo -n does not fly with /bin/sh.
802 dnl echo -n "checking for $i/html/docbook.dsl..."
803 AC_MSG_CHECKING([for $i])
804 if test -f $i/html/docbook.dsl; then
812 # where are the catalogs?
813 for i in /usr/share/sgml/CATALOG.docbk30 \
814 /usr/share/sgml/CATALOG.docbk31 \
815 /usr/share/sgml/CATALOG.docbk31 \
816 /usr/local/share/sgml/docbook/3.0/docbook.cat \
817 /usr/local/share/sgml/docbook/3.1/docbook.cat \
818 /usr/share/sgml/docbook/dtd/3.1/docbook.cat \
820 dnl echo -n "checking for $i..."
821 AC_MSG_CHECKING([for $i])
824 JADECAT="$JADECAT -c $i"
834 dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
835 old_CFLAGS_nospecial=$CFLAGS
836 CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
838 # Hack to force AutoConf to use the CFLAGS we just set
839 dnl Warning: This may break with a future version of Autoconf
840 dnl Tested with autoconf 2.13
841 ac_cpp='$CPP $CPPFLAGS $SPECIAL_CFLAGS'
842 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
843 ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
846 dnl =================================================================
848 dnl =================================================================
850 AC_CHECK_HEADER(pthread.h, [have_pthread=yes], [have_pthread=no])
852 AC_ARG_ENABLE(pthread,
853 [ --disable-pthread Don't use POSIX threads (pthreads)],
854 [if test $enableval = no; then
859 if test $have_pthread = yes; then
861 AC_DEFINE(FEATURE_PTHREAD)
862 echo Using POSIX threads
863 if test "$GCC" = "yes"; then
864 # Set a GCC specific switch:
865 if test "$target_type" = "unix"; then
866 ac_jgf_save_CFLAGS=$CFLAGS
867 CFLAGS="$CFLAGS -pthread"
868 AC_TRY_LINK([#include <pthread.h>],
869 [void *p = pthread_create;],
871 # This compiler switch makes GCC on Linux thread-safe
872 # However, it's not supported on most other OS.
874 SPECIAL_CFLAGS="-pthread"
876 CFLAGS=$ac_jgf_save_CFLAGS
881 echo Using native threads
884 AC_SUBST(PTHREAD_ONLY)
886 dnl =================================================================
887 dnl Support for thread-safe versions of gethostbyaddr, gethostbyname,
888 dnl gmtime and localtime
889 dnl =================================================================
891 dnl Next line needed to find the gethost*_r functions on Solaris
892 AC_CHECK_LIB(nsl, gethostbyname)
894 AC_CHECK_FUNC(gethostbyaddr_r, [
895 AC_MSG_CHECKING([signature of gethostbyaddr_r])
899 struct hostent *h, *hp;
902 (void) gethostbyaddr_r(a, l, t, h, b, bl, &hp, &e)
904 AC_DEFINE(HAVE_GETHOSTBYADDR_R_8_ARGS)
905 AC_MSG_RESULT([8 args])
913 (void) gethostbyaddr_r(a, l, t, h, b, bl, &e)
915 AC_DEFINE(HAVE_GETHOSTBYADDR_R_7_ARGS)
916 AC_MSG_RESULT([7 args])
921 struct hostent_data *d;
925 (void) gethostbyaddr_r(a, l, t, h, d)
927 AC_DEFINE(HAVE_GETHOSTBYADDR_R_5_ARGS)
928 AC_MSG_RESULT([5 args])
930 AC_MSG_RESULT(unrecognised)
938 AC_CHECK_FUNC(gethostbyname_r, [
939 AC_MSG_CHECKING([signature of gethostbyname_r])
943 struct hostent *h, *r;
946 (void) gethostbyname_r(n, h, b, bl, &r, &e)
948 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARGS)
949 AC_MSG_RESULT([6 args])
957 (void) gethostbyname_r(n, h, b, bl, &e)
959 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARGS)
960 AC_MSG_RESULT([5 args])
965 struct hostent_data *d;
968 (void) gethostbyname_r(n, h, d)
970 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARGS)
971 AC_MSG_RESULT([3 args])
973 AC_MSG_RESULT(unrecognised)
981 AC_CHECK_FUNC(gmtime_r, [
982 AC_MSG_CHECKING([signature of gmtime_r])
988 (void) gmtime_r(t, tm)
991 AC_DEFINE(HAVE_GMTIME_R)
993 AC_MSG_RESULT(unrecognised)
999 AC_CHECK_FUNC(localtime_r, [
1000 AC_MSG_CHECKING([signature of localtime_r])
1006 (void) localtime_r(t, tm)
1009 AC_DEFINE(HAVE_LOCALTIME_R)
1011 AC_MSG_RESULT(unrecognised)
1017 dnl =================================================================
1018 dnl Solaris specific
1019 dnl FIXME: Not tested on Solaris yet...
1020 dnl ISFIXED: Have tested it on Solaris, but there are other ways to
1021 dnl make these checks generic, e.g.:
1022 dnl AC_CHECK_FUNC(getsockopt, , AC_CHECK_LIB(socket, getsockopt))
1023 dnl (Moritz Barsnick <moritz@barsnick.net>)
1024 dnl =================================================================
1030 *-solaris*) SOCKET_LIB="-lsocket -lnsl"
1031 AC_DEFINE(__EXTENSIONS__)
1032 if test "$GCC" = "yes"; then
1033 # Set a GCC specific switch:
1034 # This compiler switch makes Solaris thread-safe
1036 SPECIAL_CFLAGS="-pthreads"
1038 # What do we do without GCC? Guess this:
1039 SPECIAL_CFLAGS="-D_REENTRANT"
1044 AC_SUBST(SOCKET_LIB)
1046 dnl =================================================================
1047 dnl Solaris problem, and others perhaps (socklen_t is undefined)
1048 dnl =================================================================
1050 AC_MSG_CHECKING([for socklen_t])
1051 AC_EGREP_HEADER(socklen_t, sys/socket.h, AC_MSG_RESULT([yes]),
1053 AC_DEFINE(socklen_t,int,
1054 [ Define to 'int' if <sys/socket.h> doesn't have it. ]))
1057 dnl =================================================================
1059 dnl =================================================================
1062 *-os2-emx*) SOCKET_LIB=-lsocket
1066 AC_SUBST(SOCKET_LIB)
1068 dnl =================================================================
1069 dnl Mac OSX specific
1070 dnl =================================================================
1073 *-apple-darwin*) SPECIAL_CFLAGS="-Dunix -DOSX_DARWIN"
1077 dnl =================================================================
1078 dnl OpenBSD specific
1079 dnl =================================================================
1082 *-openbsd*) SPECIAL_CFLAGS="$SPECIAL_CFLAGS -Dunix"
1086 dnl =================================================================
1087 dnl AmigaOS specific
1088 dnl =================================================================
1093 *-amigaos) AMIGAOS_ONLY=
1097 AC_SUBST(AMIGAOS_ONLY)
1099 dnl =================================================================
1100 dnl Check for standard compiler stuff
1101 dnl =================================================================
1112 AC_CHECK_SIZEOF(int, 4)
1113 AC_CHECK_SIZEOF(char *, 4)
1114 AC_CHECK_SIZEOF(long, 4)
1115 AC_CHECK_SIZEOF(long long, 8)
1116 AC_CHECK_SIZEOF(size_t, 4)
1118 dnl Checks for header files.
1119 dnl AC_HEADER_SYS_WAIT
1120 dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h)
1121 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])
1123 dnl Checks for library functions.
1125 dnl AC_CHECK_FUNC(strstr)
1126 dnl bcopy and memmove are for PCRE
1127 AC_CHECK_FUNCS([strerror bcopy memmove])
1128 AC_PROG_GCC_TRADITIONAL
1129 dnl uncommenting does not work for swa. suse linux
1133 dnl uncommenting does not work for swa. suse linux
1135 AC_CHECK_FUNCS([atexit getcwd gethostbyaddr gethostbyaddr_r gethostbyname gethostbyname_r inet_ntoa localtime_r memchr memmove memset random regcomp select setlocale socket strchr strdup strerror strftime strptime strstr strtoul timegm])
1138 dnl =================================================================
1139 dnl Checks for libraries.
1140 dnl =================================================================
1141 dnl Note: Some systems may have the library but not the system header
1142 dnl file, so we must check for both.
1143 dnl Also check for correct version
1144 AC_CHECK_LIB(pcre, pcre_compile, [
1145 AC_CHECK_HEADER(pcre.h, [
1146 AC_EGREP_HEADER(pcre_fullinfo, pcre.h, [have_pcre=yes], [AC_MSG_WARN([[pcre old version installed]]); have_pcre=no])
1148 AC_CHECK_HEADER(pcre/pcre.h, [
1149 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])
1154 AC_CHECK_LIB(pcreposix, regcomp, [
1155 AC_CHECK_HEADER(pcreposix.h, [
1156 AC_EGREP_HEADER(pcreposix_regerror, pcreposix.h, [AC_MSG_WARN([[pcreposix old version installed]]); have_pcreposix=no], [have_pcreposix=yes])
1158 AC_CHECK_HEADER(pcre/pcreposix.h, [
1159 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)])
1160 ], [have_pcreposix=no])
1162 ], [have_pcreposix=no], -lpcre)
1164 AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no], -lpcre)
1166 dnl =================================================================
1168 dnl =================================================================
1172 dnl =================================================================
1174 dnl =================================================================
1176 AC_ARG_ENABLE(toggle,
1177 [ --disable-toggle Don't support temporary disable],
1178 [if test $enableval = yes; then
1179 AC_DEFINE(FEATURE_TOGGLE)
1180 fi],AC_DEFINE(FEATURE_TOGGLE))
1182 AC_ARG_ENABLE(force,
1183 [ --disable-force Don't allow single-page disable],
1184 [if test $enableval = yes; then
1185 AC_DEFINE(FEATURE_FORCE_LOAD)
1186 fi],AC_DEFINE(FEATURE_FORCE_LOAD))
1188 AC_ARG_ENABLE(fast-redirects,
1189 [ --disable-fast-redirects Don't support fast redirects],
1190 [if test $enableval = yes; then
1191 AC_DEFINE(FEATURE_FAST_REDIRECTS)
1192 fi], AC_DEFINE(FEATURE_FAST_REDIRECTS))
1194 AC_ARG_ENABLE(killpopup,
1195 [ --disable-killpopup Never block popups],
1196 [if test $enableval = yes; then
1197 AC_DEFINE(FEATURE_KILL_POPUPS)
1198 fi],AC_DEFINE(FEATURE_KILL_POPUPS))
1200 AC_ARG_ENABLE(stats,
1201 [ --disable-stats Don't keep statistics],
1202 [if test $enableval = yes; then
1203 AC_DEFINE(FEATURE_STATISTICS)
1204 fi],AC_DEFINE(FEATURE_STATISTICS))
1206 AC_ARG_ENABLE(ie-images,
1207 [ --enable-ie-images Enable a quick but not always reliable auto-detect whether requests from
1208 MS Internet Explorer are for an image or not.],
1209 [if test $enableval = yes; then
1210 AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE)
1213 AC_ARG_ENABLE(image-blocking,
1214 [ --disable-image-blocking Don't try to figure out whether a request is
1215 for an image or HTML - assume HTML.],
1216 [if test $enableval = yes; then
1217 AC_DEFINE(FEATURE_IMAGE_BLOCKING)
1219 AC_DEFINE(FEATURE_IMAGE_BLOCKING))
1221 AC_ARG_ENABLE(acl-files,
1222 [ --disable-acl-files Prevents the use of ACL files to control access to
1223 Privoxy by IP address.],
1224 [if test $enableval = yes; then
1225 AC_DEFINE(FEATURE_ACL)
1227 AC_DEFINE(FEATURE_ACL))
1229 AC_ARG_ENABLE(trust-files,
1230 [ --disable-trust-files Prevents the use of trust files.],
1231 [if test $enableval = yes; then
1232 AC_DEFINE(FEATURE_TRUST)
1234 AC_DEFINE(FEATURE_TRUST))
1236 AC_ARG_ENABLE(jar-files,
1237 [ --disable-jar-files Prevents the use of jar files to capture cookies.],
1238 [if test $enableval = yes; then
1239 AC_DEFINE(FEATURE_COOKIE_JAR)
1241 AC_DEFINE(FEATURE_COOKIE_JAR))
1243 AC_ARG_ENABLE(editor,
1244 [ --disable-editor Prevents the use of the web-based actions file
1245 editor and web-based temporary disable setting.],
1246 [if test $enableval = yes; then
1247 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS)
1249 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS))
1251 AC_ARG_ENABLE(no-gifs,
1252 [ --enable-no-gifs Use politically correct PNG format instead of GIF
1253 for built-in images. May not work with all browsers.],
1254 [if test $enableval = yes; then
1255 AC_DEFINE(FEATURE_NO_GIFS)
1258 AC_ARG_ENABLE(graceful-termination,
1259 [ --enable-graceful-termination Allow to shutdown Privoxy through the webinterface.],
1260 [if test $enableval = yes; then
1261 AC_DEFINE(FEATURE_GRACEFUL_TERMINATION)
1264 dnl pcre/pcrs is needed for CGI anyway, so
1265 dnl the choice is only between static and
1268 AC_ARG_ENABLE(dynamic-pcre,
1269 [ --disable-dynamic-pcre Use the built-in, static pcre, even if libpcre is available],
1270 [ if test $enableval = "no"; then have_pcre=no; fi ])
1272 AC_ARG_ENABLE(dynamic-pcrs,
1273 [ --disable-dynamic-pcrs Use the built-in, static pcrs, even if libpcrs is available],
1274 [ if test $enableval = "no"; then have_pcrs=no; fi ])
1277 # If we have libpcre and either we also have pcreposix or
1278 # we don't need pcreposix, then link pcre dynamically; else
1279 # build it and link statically
1281 if test $have_pcre = "yes"; then
1282 echo "using libpcre"
1285 LIBS="$LIBS -lpcre -lpcreposix"
1287 echo "using built-in static pcre"
1289 AC_DEFINE(STATIC_PCRE)
1293 # If we have libpcrs and pcre is linked dynamically
1294 # then also link pcrs dynamically, else build and link
1297 if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
1298 echo "using libpcrs"
1302 echo "using built-in static pcrs"
1303 AC_DEFINE(STATIC_PCRS)
1307 AC_SUBST(STATIC_PCRE_ONLY)
1308 AC_SUBST(STATIC_PCRS_ONLY)
1310 dnl =================================================================
1311 dnl Final cleanup and output
1312 dnl =================================================================
1314 dnl Remove the SPECIAL_CFLAGS stuff from CFLAGS, and add it seperately
1316 CFLAGS=$old_CFLAGS_nospecial
1317 AC_SUBST(SPECIAL_CFLAGS)
1319 AC_SUBST(PTHREAD_LIB)
1321 AC_OUTPUT(GNUmakefile doc/source/ldp.dsl)