190d752ad12c71bb16072989a7e987c2aa4b0944
[privoxy.git] / configure.in
1 dnl Process this file with autoconf to produce a configure script.
2 dnl 
3 dnl $Id: configure.in,v 1.94 2006/11/13 19:05:50 fabiankeil Exp $
4 dnl 
5 dnl Written by and Copyright (C) 2001 - 2004 the SourceForge
6 dnl Privoxy team. http://www.privoxy.org/
7 dnl
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
11 dnl
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.
17 dnl 
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.
23 dnl 
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.
29 dnl 
30 dnl $Log: configure.in,v $
31 dnl Revision 1.94  2006/11/13 19:05:50  fabiankeil
32 dnl Make pthread mutex locking more generic. Instead of
33 dnl checking for OSX and OpenBSD, check for FEATURE_PTHREAD
34 dnl and use mutex locking unless there is an _r function
35 dnl available. Better safe than sorry.
36 dnl
37 dnl Fixes "./configure --disable-pthread" and should result
38 dnl in less threading-related problems on pthread-using platforms,
39 dnl but it still doesn't fix BR#1122404.
40 dnl
41 dnl Revision 1.93  2006/09/22 01:26:20  hal9
42 dnl Set version to 3.0.5 BETA for hopefully release this weekend.
43 dnl
44 dnl Revision 1.92  2006/08/17 17:09:49  fabiankeil
45 dnl Added check for timegm().
46 dnl
47 dnl Revision 1.91  2006/08/13 22:01:51  fabiankeil
48 dnl Added checks for strptime() and random()
49 dnl
50 dnl Revision 1.90  2006/07/18 14:48:45  david__schmidt
51 dnl Reorganizing the repository: swapping out what was HEAD (the old 3.1 branch)
52 dnl with what was really the latest development (the v_3_0_branch branch)
53 dnl
54 dnl Revision 1.68.2.20  2004/01/31 16:31:46  oes
55 dnl Resetting version info to 0.0.0 UNRELEASED
56 dnl
57 dnl Revision 1.68.2.19  2004/01/30 09:26:03  oes
58 dnl Added docbook paths for debian sarge; set status for release
59 dnl
60 dnl Revision 1.68.2.18  2003/12/08 15:10:29  oes
61 dnl Bugfix: --with-docbook now correctly accepts its path parameter. Thanks, Roland!
62 dnl
63 dnl Revision 1.68.2.17  2003/10/18 18:41:26  david__schmidt
64 dnl Update to remain buildable on OS/2 - remove the failures
65 dnl due to missing unixisms
66 dnl
67 dnl Revision 1.68.2.16  2003/03/26 16:05:14  oes
68 dnl Marked as 0.0.0 UNRELEASED
69 dnl
70 dnl Revision 1.68.2.15  2003/03/26 00:25:00  oes
71 dnl Bump version for 3.0.2
72 dnl
73 dnl Revision 1.68.2.14  2003/03/25 13:27:12  hal9
74 dnl Manually apply Docbook/FreeBSD patch #708081 from a.go at tiscali.nl.
75 dnl
76 dnl Revision 1.68.2.13  2003/03/18 19:38:57  oes
77 dnl Set version info for 3.0.1 release
78 dnl
79 dnl Revision 1.68.2.12  2003/03/07 03:41:04  david__schmidt
80 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.
81 dnl
82 dnl Revision 1.68.2.11  2003/03/06 15:22:37  oes
83 dnl Fixed minor shell syntax bug
84 dnl
85 dnl Revision 1.68.2.10  2003/01/08 16:39:41  oes
86 dnl Changing default to exclude FEATURE_IMAGE_DETECT_MSIE because of problem reports with recent IEs
87 dnl
88 dnl Revision 1.68.2.9  2002/12/13 23:47:45  hal9
89 dnl Add openbsd $specialflags per gunner at styx2002.no-ip.org
90 dnl
91 dnl Revision 1.68.2.8  2002/11/27 12:55:26  oes
92 dnl Fixed broken handling of pre-set CFLAGS
93 dnl
94 dnl Revision 1.68.2.7  2002/10/25 02:44:22  hal9
95 dnl Port of make install, etc from main trunk. Needs testing! Add Slackware
96 dnl support, and other related changes. Update related docs.
97 dnl
98 dnl Revision 1.68.2.6  2002/09/25 15:35:15  oes
99 dnl Marking as non-release
100 dnl
101 dnl Revision 1.68.2.5  2002/08/25 23:37:00  hal9
102 dnl Getting ready for 3.0 release.
103 dnl
104 dnl Revision 1.68.2.4  2002/08/10 11:21:57  oes
105 dnl - Set Version to 2.9.20 (beta)
106 dnl - Add two AC_DEFINEs that indicate if the pcre*.h headers
107 dnl   are located in a pcre/ subdir to the include path.
108 dnl
109 dnl Revision 1.68.2.3  2002/08/06 11:29:36  oes
110 dnl Fixed detection/inclusion of pcre.h, which is in a pcre subdir on RH
111 dnl
112 dnl Revision 1.68.2.2  2002/07/30 19:36:09  hal9
113 dnl Bump version to 2.9.17.
114 dnl
115 dnl Revision 1.68.2.1  2002/07/26 15:21:12  oes
116 dnl  Bumped version number for 2.9.16 freeze
117 dnl
118 dnl Revision 1.68  2002/05/25 16:54:54  jongfoster
119 dnl Detect if the compiler supports -pthread.
120 dnl Hopefully this will fix bug 560442.  (I don't have a HP PA-RISC
121 dnl machine to test this!)
122 dnl
123 dnl Revision 1.67  2002/05/03 14:33:59  oes
124 dnl Generate doc/soucre/ldp.dsl
125 dnl
126 dnl Revision 1.66  2002/05/03 00:41:56  oes
127 dnl Set version to 2.9.15 to comply with new versioning scheme
128 dnl
129 dnl Revision 1.65  2002/04/25 19:13:57  morcego
130 dnl Removed RPM release number declaration on configure.in
131 dnl Changed makefile to use given value for RPM_PACKAGEV when on uploading
132 dnl targets (will produce an error, explaining who to do it, if no value
133 dnl if provided).
134 dnl
135 dnl Revision 1.64  2002/04/22 16:32:31  morcego
136 dnl configure.in, *.spec: Bumping release to 2 (2.9.14-2)
137 dnl -rh.spec: uid and gid are now macros
138 dnl -suse.spec: Changing the header Copyright to License (Copyright is
139 dnl             deprecable)
140 dnl
141 dnl Revision 1.63  2002/04/11 11:00:21  oes
142 dnl Applied Moritz' fix for socklen_t on Solaris
143 dnl
144 dnl Revision 1.62  2002/04/11 10:09:20  oes
145 dnl Version 2.9.14
146 dnl
147 dnl Revision 1.61  2002/04/10 18:14:45  morcego
148 dnl - (privoxy-rh.spec only) Relisting template files on the %%files section
149 dnl - (configure.in, privoxy-rh.spec) Bumped package release to 5
150 dnl
151 dnl Revision 1.60  2002/04/09 16:38:49  oes
152 dnl Added detection of missing config.h.in
153 dnl
154 dnl Revision 1.59  2002/04/06 20:23:55  jongfoster
155 dnl Removing unnessacery tests (C++, ranlib)
156 dnl
157 dnl Revision 1.58  2002/04/04 20:49:20  swa
158 dnl attempt to consolidate the
159 dnl different dokbook versions.
160 dnl
161 dnl Revision 1.57  2002/04/04 00:36:36  gliptak
162 dnl always use pcre for matching
163 dnl
164 dnl Revision 1.56  2002/04/03 22:28:03  gliptak
165 dnl Removed references to gnu_regex
166 dnl
167 dnl Revision 1.55  2002/04/03 03:54:38  gliptak
168 dnl Checking pcre version
169 dnl
170 dnl Revision 1.54  2002/04/01 00:54:24  gliptak
171 dnl More changes needed around regex support.
172 dnl
173 dnl Revision 1.53  2002/03/29 20:09:01  swa
174 dnl al's patch
175 dnl
176 dnl Revision 1.52  2002/03/29 19:51:40  gliptak
177 dnl Correcting compile problem with Debian
178 dnl
179 dnl Revision 1.51  2002/03/28 20:43:00  swa
180 dnl set make correctly
181 dnl
182 dnl Revision 1.50  2002/03/27 03:03:45  hal9
183 dnl Add test for man2html
184 dnl
185 dnl Revision 1.49  2002/03/27 02:19:52  david__schmidt
186 dnl More Mac OSX support:
187 dnl - Get rid of extraneous, noisy -pthread warnings
188 dnl - Define unix so we get oes' unix-tagged changes
189 dnl
190 dnl Revision 1.48  2002/03/26 22:29:54  swa
191 dnl we have a new homepage!
192 dnl
193 dnl Revision 1.47  2002/03/26 16:41:00  hal9
194 dnl Upped RPM Release to 3 (need to build new RH packages)
195 dnl
196 dnl Revision 1.46  2002/03/24 18:55:06  jongfoster
197 dnl Making Docbook work under Windows
198 dnl
199 dnl Revision 1.45  2002/03/24 14:19:55  swa
200 dnl set rpm package release in configure.in. nowhere else.
201 dnl
202 dnl Revision 1.44  2002/03/24 13:25:43  swa
203 dnl name change related issues
204 dnl
205 dnl Revision 1.43  2002/03/24 12:56:21  swa
206 dnl name change related issues.
207 dnl
208 dnl Revision 1.42  2002/03/22 18:11:37  jongfoster
209 dnl Bumping version number to 2.9.12
210 dnl
211 dnl Revision 1.41  2002/03/19 19:30:04  morcego
212 dnl - Fixing stylesheet checking on configure. If it is found, no further checks
213 dnl   should be done
214 dnl
215 dnl - configure will now check for db2html or docbook2html (should work now
216 dnl   on SuSe without the docbktls package)
217 dnl
218 dnl Revision 1.40  2002/03/09 14:33:30  oes
219 dnl Fixing the (harmless) AC_CHECK_FILE warnings
220 dnl
221 dnl Revision 1.39  2002/03/08 16:46:13  oes
222 dnl Added --enable-no-gifs
223 dnl
224 dnl Revision 1.38  2002/03/08 14:13:50  morcego
225 dnl Fixing configure, to remove a command not found error.
226 dnl
227 dnl Revision 1.37  2002/03/08 12:58:21  oes
228 dnl Tiny bugfix in AC_ARG_WITH(debug)
229 dnl
230 dnl Revision 1.36  2002/03/06 23:50:36  morcego
231 dnl Will not test for a text browser if we are not using docbook.
232 dnl
233 dnl Revision 1.35  2002/03/06 21:55:52  morcego
234 dnl New configure option: --with-docbook=(yes|no|directory)
235 dnl Preliminary new platform detection code included. Will work with the
236 dnl old one for now. No use just trowing it away
237 dnl
238 dnl Revision 1.34  2002/03/06 20:57:00  morcego
239 dnl Fixing detection of stylesheets on SuSe.
240 dnl
241 dnl Revision 1.33  2002/03/05 17:31:11  morcego
242 dnl Search for docbook.dsl. Should solve portability problems for SuSe.
243 dnl
244 dnl Revision 1.32  2002/03/05 14:07:43  morcego
245 dnl configure now detects rpm topdir, and change GNUmakefile acordingly
246 dnl    (based on sugestion by Sarantis Paskalis)
247 dnl
248 dnl Revision 1.31  2002/03/05 13:43:28  morcego
249 dnl Checking for text browser, so redhat-dok can work.
250 dnl
251 dnl Revision 1.30  2002/03/04 17:58:01  oes
252 dnl Deleted _DEBUG and PID_FILE_PATH
253 dnl
254 dnl Revision 1.29  2002/02/28 14:20:53  oes
255 dnl Fixed detection of gethost*_r functions on Solaris
256 dnl
257 dnl Revision 1.28  2002/02/27 15:02:38  oes
258 dnl Incremented version number
259 dnl
260 dnl Revision 1.27  2002/01/10 12:35:18  oes
261 dnl Added cross-compile defaults to the AC_CHECK_SIZEOF macros
262 dnl to silence autoconf warnings. Numbers are for Intel/Linux.
263 dnl Is there a better way?
264 dnl
265 dnl Revision 1.26  2002/01/09 14:29:49  oes
266 dnl - Added AC_CHECK_FUNC tests for the availability of
267 dnl   gethostbyname_r, gethostbyaddr_r, gmtime_r and
268 dnl   localtime_r, as well as AC_TRY_COMPILE tests to
269 dnl   determine their signatures.
270 dnl
271 dnl - Fixed a bug with the init of CFLAGS that was
272 dnl   reported by barsnick
273 dnl
274 dnl Revision 1.25  2002/01/04 15:27:18  oes
275 dnl Changed quoting of CODE_STATUS for use in make
276 dnl
277 dnl Revision 1.24  2001/12/30 14:07:31  steudten
278 dnl - Add signal handling (unix)
279 dnl - Add SIGHUP handler (unix)
280 dnl - Add creation of pidfile (unix)
281 dnl - Add action 'top' in rc file (RH)
282 dnl - Add entry 'SIGNALS' to manpage
283 dnl - Add exit message to logfile (unix)
284 dnl
285 dnl Revision 1.23  2001/12/09 20:24:42  david__schmidt
286 dnl Change from "alpha" to "beta" in configure.in
287 dnl
288 dnl Revision 1.22  2001/12/01 11:24:01  jongfoster
289 dnl Renaming Makefile.in to GNUmakefile.in so that non-GNU versions of
290 dnl make break in a more obvious way.
291 dnl
292 dnl Revision 1.21  2001/11/30 21:35:54  jongfoster
293 dnl Bumping version number to 2.9.10
294 dnl
295 dnl Revision 1.20  2001/10/23 21:24:09  jongfoster
296 dnl Support for FEATURE_CGI_EDIT_ACTIONS
297 dnl
298 dnl Revision 1.19  2001/10/07 15:33:14  oes
299 dnl Removed FEATURE_DENY_GZIP
300 dnl Bumped up version number
301 dnl
302 dnl Revision 1.18  2001/09/13 13:10:24  steudten
303 dnl
304 dnl PreWork for Debug Interface.
305 dnl Add new option "--with-debug" to enable debugging (flags aso.)
306 dnl
307 dnl Revision 1.17  2001/09/12 23:44:55  david__schmidt
308 dnl Mac OSX (Darwin) support added.
309 dnl
310 dnl Revision 1.16  2001/09/12 22:55:45  joergs
311 dnl AmigaOS support added.
312 dnl
313 dnl Revision 1.15  2001/09/12 17:28:59  david__schmidt
314 dnl
315 dnl OS/2 port: update autoconf'd support for the platform.
316 dnl
317 dnl Revision 1.14  2001/07/30 22:12:11  jongfoster
318 dnl Fixing Solaris build (I hope) and tidying up #defines:
319 dnl - All feature #defines are now of the form FEATURE_xxx
320 dnl - Permanently turned off WIN_GUI_EDIT
321 dnl - Permanently turned on WEBDAV and SPLIT_PROXY_ARGS
322 dnl
323 dnl Revision 1.13  2001/07/29 17:09:17  jongfoster
324 dnl Major changes to build system in order to fix these bugs:
325 dnl - pthreads under Linux was broken - changed -lpthread to -pthread
326 dnl - Compiling in MinGW32 mode under CygWin now correctly detects
327 dnl   which shared libraries are available
328 dnl - Solaris support (?) (Not tested under Solaris yet)
329 dnl
330 dnl Revision 1.12  2001/07/25 19:16:27  oes
331 dnl Bumping version number to 2.9.8
332 dnl
333 dnl Revision 1.11  2001/07/21 18:00:07  jongfoster
334 dnl Bumping version number to 2.9.7
335 dnl
336 dnl Revision 1.10  2001/07/18 17:25:04  oes
337 dnl Fixed a typo
338 dnl
339 dnl Revision 1.9  2001/07/15 19:45:13  jongfoster
340 dnl Added support for linking with POSIX threads library
341 dnl
342 dnl Revision 1.8  2001/07/15 17:54:29  jongfoster
343 dnl Renaming #define STATIC to STATIC_PCRE
344 dnl Adding new #define FEATURE_PTHREAD that will be used to enable
345 dnl POSIX threads support.
346 dnl
347 dnl Revision 1.7  2001/07/13 13:58:05  oes
348 dnl    Completely reorganized the selection scheme for
349 dnl    pcre, pcreposix, pcrs and gnu_regex:
350 dnl
351 dnl    The presence of shared pcre, pcreposix or pcrs
352 dnl    libraried is now autodetected. Additionally, the
353 dnl    user can enforce using the built-in static variants
354 dnl    by specifying --disable-dynamic-(pcre|pcrs).
355 dnl    Care is taken to avoid that pcre is dyn, while pcreposix
356 dnl    is static, if both are used and that pcrs is static if
357 dnl    pcrs is.
358 dnl
359 dnl    The choice between pcre, gnu or no regex for actionsfile
360 dnl    URL matching is now via
361 dnl    --(enable|disable)-regex-matching[=(gnu|pcre|no)] with the
362 dnl    default being pcre.
363 dnl
364 dnl Revision 1.6  2001/06/29 21:56:40  oes
365 dnl Version -> 2.9.5
366 dnl
367 dnl Revision 1.5  2001/06/29 13:26:27  oes
368 dnl Introduced #define CODE_STATUS
369 dnl
370 dnl Revision 1.4  2001/05/29 09:50:24  jongfoster
371 dnl Unified blocklist/imagelist/permissionslist.
372 dnl File format is still under discussion, but the internal changes
373 dnl are (mostly) done.
374 dnl
375 dnl Also modified interceptor behaviour:
376 dnl - We now intercept all URLs beginning with one of the following
377 dnl   prefixes (and *only* these prefixes):
378 dnl     * http://i.j.b/
379 dnl     * http://ijbswa.sf.net/config/
380 dnl     * http://ijbswa.sourceforge.net/config/
381 dnl - New interceptors "home page" - go to http://i.j.b/ to see it.
382 dnl - Internal changes so that intercepted and fast redirect pages
383 dnl   are not replaced with an image.
384 dnl - Interceptors now have the option to send a binary page direct
385 dnl   to the client. (i.e. ijb-send-banner uses this)
386 dnl - Implemented show-url-info interceptor.  (Which is why I needed
387 dnl   the above interceptors changes - a typical URL is
388 dnl   "http://i.j.b/show-url-info?url=www.somesite.com/banner.gif".
389 dnl   The previous mechanism would not have intercepted that, and
390 dnl   if it had been intercepted then it then it would have replaced
391 dnl   it with an image.)
392 dnl
393 dnl Revision 1.3  2001/05/22 18:46:04  oes
394 dnl
395 dnl - Enabled filtering banners by size rather than URL
396 dnl   by adding patterns that replace all standard banner
397 dnl   sizes with the "Junkbuster" gif to the re_filterfile
398 dnl
399 dnl - Enabled filtering WebBugs by providing a pattern
400 dnl   which kills all 1x1 images
401 dnl
402 dnl - Added support for PCRE_UNGREEDY behaviour to pcrs,
403 dnl   which is selected by the (nonstandard and therefore
404 dnl   capital) letter 'U' in the option string.
405 dnl   It causes the quantifiers to be ungreedy by default.
406 dnl   Appending a ? turns back to greedy (!).
407 dnl
408 dnl - Added a new interceptor ijb-send-banner, which
409 dnl   sends back the "Junkbuster" gif. Without imagelist or
410 dnl   MSIE detection support, or if tinygif = 1, or the
411 dnl   URL isn't recognized as an imageurl, a lame HTML
412 dnl   explanation is sent instead.
413 dnl
414 dnl - Added new feature, which permits blocking remote
415 dnl   script redirects and firing back a local redirect
416 dnl   to the browser.
417 dnl   The feature is conditionally compiled, i.e. it
418 dnl   can be disabled with --disable-fast-redirects,
419 dnl   plus it must be activated by a "fast-redirects"
420 dnl   line in the config file, has its own log level
421 dnl   and of course wants to be displayed by show-proxy-args
422 dnl   Note: Boy, all the #ifdefs in 1001 locations and
423 dnl   all the fumbling with configure.in and acconfig.h
424 dnl   were *way* more work than the feature itself :-(
425 dnl
426 dnl - Because a generic redirect template was needed for
427 dnl   this, tinygif = 3 now uses the same.
428 dnl
429 dnl - Moved GIFs, and other static HTTP response templates
430 dnl   to project.h
431 dnl
432 dnl - Some minor fixes
433 dnl
434 dnl - Removed some >400 CRs again (Jon, you really worked
435 dnl   a lot! ;-)
436 dnl
437 dnl Revision 1.2  2001/05/20 01:21:20  jongfoster
438 dnl Version 2.9.4 checkin.
439 dnl - Merged popupfile and cookiefile, and added control over PCRS
440 dnl   filtering, in new "permissionsfile".
441 dnl - Implemented LOG_LEVEL_FATAL, so that if there is a configuration
442 dnl   file error you now get a message box (in the Win32 GUI) rather
443 dnl   than the program exiting with no explanation.
444 dnl - Made killpopup use the PCRS MIME-type checking and HTTP-header
445 dnl   skipping.
446 dnl - Removed tabs from "config"
447 dnl - Moved duplicated url parsing code in "loaders.c" to a new funcition.
448 dnl - Bumped up version number.
449 dnl
450 dnl Revision 1.1.1.1  2001/05/15 13:58:50  oes
451 dnl Initial import of version 2.9.3 source tree
452 dnl
453 dnl 
454
455
456 dnl =================================================================
457 dnl AutoConf Initialization
458 dnl =================================================================
459
460 AC_REVISION($Revision: 1.94 $)
461 AC_INIT(jcc.c)
462
463 if test ! -f config.h.in; then
464    echo "You need to run autoheader first. "
465    echo -n "Shall I do this for you now? (y/n) "
466    read answer
467    if test "$answer" != "y"; then
468       exit 1
469    else
470       autoheader
471   fi
472 fi  
473
474 AC_CONFIG_HEADER([config.h])
475 AC_CANONICAL_HOST
476
477 dodk=auto
478 DKPREFIX=none
479 AC_ARG_WITH(docbook, dnl
480   --with-docbook=[[yes|no|directory]]   
481                            Enable docbook documentation creation 
482                            (default = yes, for gnu and linux),[dnl
483 case "$with_docbook" in
484 yes) dodk=yes;;
485 no) dodk=no;;
486 *) 
487         dodk=yes
488         DKPREFIX=$withval
489         ;;
490 esac
491 ])
492 DB2HTML=false
493 AC_ARG_WITH(db2html, dnl
494   --with-db2html=<path/executable>
495                           Set the location of the docbook to html converter
496                           (default = search),[dnl
497 DB2HTML=$withval
498 ])
499
500 dnl =================================================================
501 dnl Application version number
502 dnl =================================================================
503
504 VERSION_MAJOR=3
505 VERSION_MINOR=0
506 VERSION_POINT=6
507 CODE_STATUS="UNRELEASED"
508
509 dnl CODE_STATUS can be "alpha", "beta", or "stable", and will be
510 dnl used for CGI output. Set version to 0.0.0 and status to "UNRELEASED"
511 dnl whenever CVS in a stable branch differs from the last release.
512
513 dnl =================================================================
514 dnl Substitute the version numbers
515 dnl =================================================================
516
517 AC_SUBST(VERSION_MAJOR)
518 AC_SUBST(VERSION_MINOR)
519 AC_SUBST(VERSION_POINT)
520 AC_SUBST(CODE_STATUS)
521
522 dnl
523 AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR})
524 AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR})
525 AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT})
526 AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}")
527 AC_DEFINE_UNQUOTED(CODE_STATUS,"${CODE_STATUS}")
528
529 dnl =================================================================
530 dnl Checks for programs needed to build.
531 dnl =================================================================
532
533 dnl Keep AC_PROG_CC from setting its own defaults:
534 if test "X$CFLAGS" = "X"; then
535    CFLAGS=" "
536 fi
537
538 AC_PROG_CC
539 AC_PROG_CPP
540 AC_PROG_INSTALL
541 AC_PROG_LN_S
542 AC_PROG_MAKE_SET
543 AC_PROG_AWK
544
545 AC_CHECK_PROG(GDB,gdb,yes,no)
546 AC_PATH_PROG(BGROUPS,groups,no,/bin:/usr/bin:/usr/local/bin)
547 AC_PATH_PROG(ID,id,no,/bin:/usr/bin:/usr/local/bin)
548 AC_SUBST(ID)
549 AC_SUBST(BGROUPS)
550
551 dnl =================================================================
552 dnl debug, gcc and gdb support 
553 dnl =================================================================
554
555 AC_ARG_WITH(debug,
556         [  --with-debug            Enable debug mode],
557         [
558                 if test "x$withval" != "xno" ; then
559                     if test $ac_cv_prog_cc_g = yes; then
560                       if test "$GCC" = yes; then
561                         if test "$GDB"; then
562                           CFLAGS="$CFLAGS -ggdb"
563                         else
564                           CFLAGS="$CFLAGS -g"
565                         fi
566                         CFLAGS="$CFLAGS -Wshadow  -Wconversion"
567                       else
568                         CFLAGS="$CFLAGS -g"
569                       fi
570                    fi
571                 fi
572         ],
573         [
574             if test "X$CFLAGS" = "X "; then # if CFLAGS were unset (see above)
575               if test "$GCC" = yes; then
576                 CFLAGS="-O2"
577               fi
578             fi
579         ]
580 )
581
582 dnl =================================================================
583 dnl Check for user and group validity
584 dnl =================================================================
585
586
587 if test "$EMXOS2" = yes; then
588   echo "Skipping user and group validity stuff.";
589
590 else
591
592   $ID privoxy >/dev/null 2>/dev/null
593   if test $? -ne 0 ; then
594    AC_MSG_WARN(There is no user 'privoxy' on this system)
595   fi
596   AC_MSG_CHECKING([for user])
597   AC_ARG_WITH(user,
598         [  --with-user=privoxy          Set user under which privoxy will run],
599         [
600                 if test "x$withval" != "xyes"; then
601                   if test $ID = no ; then
602                     AC_MSG_ERROR(There is no 'id' program on this system)
603                   else
604                     AC_MSG_RESULT($with_user)
605                     $ID $with_user 2>/dev/null >/dev/null
606                     if test $? -eq 0 ; then
607                       USER=$with_user;
608                     else
609                       AC_MSG_ERROR(There is no user '$with_user' on this system)
610                     fi
611                   fi
612                   else
613                    AC_MSG_ERROR(We need a user if you give me this parameter)
614                 fi
615         ],
616         [
617           if test $ID = no ; then
618             AC_MSG_ERROR(There is no 'id' programm on this system)
619           else
620             AC_MSG_RESULT(none specified)
621             USER=$with_user
622           fi
623         ]
624   )
625   AC_SUBST(USER)
626
627   AC_MSG_CHECKING([for group])
628   AC_ARG_WITH(group,
629         [  --with-group=privoxy         Set group for privoxy],
630         [ 
631                 if test "x$withval" != "xyes"; then
632                   if test $BGROUPS = no ; then
633                     AC_MSG_ERROR(There is no 'groups' program on this system)
634                   else
635                     AC_MSG_RESULT($with_group)
636                     $BGROUPS $USER >/dev/null
637                     if test $? -eq 0 ; then
638                     # FIXME: this fails if valid group, but not first group
639                     # listed.
640                       if test "$with_group" != "`$BGROUPS $USER | sed 's/.*: //' 2>/dev/null |$AWK '{print $1}'`" ; then
641                         AC_MSG_ERROR(The given value '$withval' does not match group entry)
642                       else
643                         GROUP=$with_group;
644                       fi
645                     else
646                       AC_MSG_ERROR(There is no group entry for user '$USER')
647                     fi
648                   fi
649                 else
650                    AC_MSG_ERROR(We need a group if you give me this parameter)
651                 fi
652         ],
653         [
654           if test $BGROUPS = no ; then
655             AC_MSG_ERROR(There is no 'groups' programm on this system)
656           else
657             AC_MSG_RESULT(none specified)
658             GROUP=$with_group;
659           fi
660         ]
661   )
662   AC_SUBST(GROUP)
663
664 fi
665
666 dnl =================================================================
667 dnl additional gcc flags
668 dnl =================================================================
669 dnl 
670 if test "$GCC"; then
671   CFLAGS="-pipe $CFLAGS"
672 fi
673
674
675 dnl =================================================================
676 dnl Build type
677 dnl =================================================================
678 dnl
679 dnl Must do this first.
680 dnl
681 dnl Reason: This sets CFLAGS in order to switch the Cygwin compiler
682 dnl into Cygwin or MinGW32 modes.  Depending on the mode selected,
683 dnl the compiler will use completely different sets of library
684 dnl and include files.
685 dnl 
686 dnl =================================================================
687
688 AC_MINGW32
689 AC_CYGWIN
690
691 if test "$MINGW32" = "yes"; then
692   target_type=mingw
693 else
694   if test "$CYGWIN" = "yes"; then
695     target_type=cygwin
696   else
697     target_type=unix
698   fi
699 fi
700
701 if test $dodk = auto; then
702         dodk=no
703         if test $target_type = unix; then
704                 case "$host_os" in
705                 linux* | gnu*)
706                         dodk=yes
707                 ;;
708                 esac
709         fi
710 fi
711
712 dnl Decide what to do based on target_type
713 dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
714 dnl This is because we don't know yet whether pthread is enabled.
715
716 AC_ARG_ENABLE(mingw32,
717 [  --enable-mingw32        Use mingw32 for a Windows GUI],
718 [if test $enableval = yes; then
719   target_type=mingw
720 fi])
721
722 if test $target_type = mingw; then
723   WIN_ONLY=
724   SPECIAL_CFLAGS="-mwindows -mno-cygwin"
725   PTHREAD_LIB=-lpthreadGC
726   echo "Using mingw32 (Win32 GUI)"
727 else
728   WIN_ONLY=#
729   if test $target_type = cygwin; then
730     SPECIAL_CFLAGS="-mno-win32"
731     PTHREAD_LIB=
732     echo "Using Cygnus (Win32 command line)"
733   else
734     SPECIAL_CFLAGS=
735     PTHREAD_LIB=-lpthread
736   fi
737 fi
738 AC_SUBST(WIN_ONLY)
739
740 dnl Checking which text html browser we have avaliable
741 if test $dodk != no; then
742         AC_CHECK_PROGS(WDUMP,w3m lynx links,false)
743         if test "$WDUMP" = false; then
744                 AC_MSG_WARN(You need some kind of text browser to build documentation \(w3m, lynx and links are supported\))
745         fi
746         if test $DB2HTML = false; then
747                 dnl We need to clean the variable, otherwise AC_CHECK_PROGS
748                 dnl will fail   
749                 DB2HTML=""
750                 AC_CHECK_PROGS(DB2HTML,db2html docbook2html,false)
751         fi
752 fi
753 AC_SUBST(WDUMP)
754 AC_SUBST(DB2HTML)
755
756 dnl If we use rpm, we need to check where %_topdir is
757 AC_CHECK_PROGS(RPMBIN,rpm,false)
758 if test $RPMBIN != false; then
759                 RPM_BASE=`rpm --eval "%{_topdir}"`
760                 if test "$RPM_BASE" = ""; then
761                         RPM_BASE=/usr/src/redhat
762                 fi
763 fi
764 AC_SUBST(RPM_BASE)
765
766 dnl Check for jade, so we can build the documentation
767 AC_CHECK_PROGS(JADEBIN,jade openjade,false)
768 AC_SUBST(JADEBIN)
769
770 dnl Check for man2html for docs.
771 AC_CHECK_PROGS(MAN2HTML,man2html,false)
772 AC_SUBST(MAN2HTML)
773
774 dnl Set doc status flag for conditional content inclusions
775 DOC_STATUS=p-not-stable
776 if  test $CODE_STATUS = stable; then
777      DOC_STATUS="p-stable"
778 fi
779 AC_SUBST(DOC_STATUS)
780
781 dnl Checking for the docbook.dsl stylesheet file
782 dnl It is still not portable (directory slash)
783 JADECAT=""
784 if test $dodk = yes; then
785   if test $DKPREFIX = none; then
786     for i in /usr/share/sgml/docbook/dsssl-stylesheets \
787              /usr/share/sgml/docbkdsl /usr/share/sgml/docbook-dsssl \
788              /usr/local/share/sgml/docbook/dsssl/modular \
789              /usr/share/sgml/docbook/stylesheet/dsssl/modular/ \
790              ; do
791 dnl  echo -n does not fly with /bin/sh.
792 dnl      echo -n "checking for $i/html/docbook.dsl..."
793       AC_MSG_CHECKING([for $i])
794       if test -f $i/html/docbook.dsl; then
795         echo "yes"
796         DKPREFIX=$i
797         break
798       else
799         echo "no"
800       fi
801     done
802 # where are the catalogs?
803     for i in /usr/share/sgml/CATALOG.docbk30 \
804              /usr/share/sgml/CATALOG.docbk31 \
805              /usr/share/sgml/CATALOG.docbk31 \
806              /usr/local/share/sgml/docbook/3.0/docbook.cat \
807              /usr/local/share/sgml/docbook/3.1/docbook.cat \
808              /usr/share/sgml/docbook/dtd/3.1/docbook.cat \
809              ; do
810 dnl     echo -n "checking for $i..."
811       AC_MSG_CHECKING([for $i])
812       if test -f $i; then
813         echo "yes"
814         JADECAT="$JADECAT -c $i"
815       else
816         echo "no"
817       fi
818     done
819   fi
820 fi
821 AC_SUBST(JADECAT)
822 AC_SUBST(DKPREFIX)
823
824 dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
825 old_CFLAGS_nospecial=$CFLAGS
826 CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
827
828 # Hack to force AutoConf to use the CFLAGS we just set
829 dnl Warning: This may break with a future version of Autoconf
830 dnl          Tested with autoconf 2.13
831 ac_cpp='$CPP $CPPFLAGS $SPECIAL_CFLAGS'
832 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
833 ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
834
835
836 dnl =================================================================
837 dnl Thread support
838 dnl =================================================================
839
840 AC_CHECK_HEADER(pthread.h, [have_pthread=yes], [have_pthread=no])
841
842 AC_ARG_ENABLE(pthread,
843 [  --disable-pthread       Don't use POSIX threads (pthreads)],
844 [if test $enableval = no; then
845   # Disable pthreads
846   have_pthread=no
847 fi])
848
849 if test $have_pthread = yes; then
850   PTHREAD_ONLY=
851   AC_DEFINE(FEATURE_PTHREAD)
852   echo Using POSIX threads
853   if test "$GCC" = "yes"; then
854     # Set a GCC specific switch:
855     if test "$target_type" = "unix"; then
856       ac_jgf_save_CFLAGS=$CFLAGS
857       CFLAGS="$CFLAGS -pthread"
858       AC_TRY_LINK([#include <pthread.h>],
859         [void *p = pthread_create;],
860         [
861           # This compiler switch makes GCC on Linux thread-safe
862           # However, it's not supported on most other OS.
863           PTHREAD_LIB=
864           SPECIAL_CFLAGS="-pthread"
865         ])
866       CFLAGS=$ac_jgf_save_CFLAGS
867     fi
868   fi
869 else
870   PTHREAD_ONLY=#
871   echo Using native threads
872 fi
873
874 AC_SUBST(PTHREAD_ONLY)
875
876 dnl =================================================================
877 dnl Support for thread-safe versions of gethostbyaddr, gethostbyname,
878 dnl gmtime and localtime
879 dnl =================================================================
880
881 dnl Next line needed to find the gethost*_r functions on Solaris
882 AC_CHECK_LIB(nsl, gethostbyname)
883
884 AC_CHECK_FUNC(gethostbyaddr_r, [
885   AC_MSG_CHECKING([signature of gethostbyaddr_r])
886   AC_TRY_COMPILE([
887 #   include <netdb.h>
888   ], [
889     struct hostent *h, *hp;
890     char *a, *b;
891     int l, bl, t, e;
892     (void) gethostbyaddr_r(a, l, t, h, b, bl, &hp, &e)
893   ], [
894     AC_DEFINE(HAVE_GETHOSTBYADDR_R_8_ARGS)
895     AC_MSG_RESULT([8 args])
896   ], [
897     AC_TRY_COMPILE([
898 #     include <netdb.h>
899     ], [
900       struct hostent *h;
901       char *a, *b;
902       int l, bl, t, e;
903       (void) gethostbyaddr_r(a, l, t, h, b, bl, &e)
904     ], [
905       AC_DEFINE(HAVE_GETHOSTBYADDR_R_7_ARGS)
906       AC_MSG_RESULT([7 args])
907     ], [
908       AC_TRY_COMPILE([
909 #       include <netdb.h>
910       ], [
911         struct hostent_data *d;
912         struct hostent *h;
913         char a,
914         int l, t;
915         (void) gethostbyaddr_r(a, l, t, h, d)
916       ], [
917         AC_DEFINE(HAVE_GETHOSTBYADDR_R_5_ARGS)
918         AC_MSG_RESULT([5 args])
919       ], [
920         AC_MSG_RESULT(unrecognised)
921       ])
922     ])
923   ])
924 ], [
925   AC_MSG_RESULT(no)
926 ])
927
928 AC_CHECK_FUNC(gethostbyname_r, [
929   AC_MSG_CHECKING([signature of gethostbyname_r])
930   AC_TRY_COMPILE([
931 #   include <netdb.h>
932   ], [
933     struct hostent *h, *r;
934     char *n, *b;
935     int bl, e;
936     (void) gethostbyname_r(n, h, b, bl, &r, &e)
937   ], [
938     AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARGS)
939     AC_MSG_RESULT([6 args])
940   ], [
941     AC_TRY_COMPILE([
942 #     include <netdb.h>
943     ], [
944       struct hostent *h;
945       char *n, *b;
946       int bl, e;
947       (void) gethostbyname_r(n, h, b, bl, &e)
948     ], [
949       AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARGS)
950       AC_MSG_RESULT([5 args])
951     ], [
952       AC_TRY_COMPILE([
953 #       include <netdb.h>
954       ], [
955         struct hostent_data *d;
956         struct hostent *h;
957         char *n,
958         (void) gethostbyname_r(n, h, d)
959       ], [
960         AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARGS)
961         AC_MSG_RESULT([3 args])
962       ], [
963         AC_MSG_RESULT(unrecognised)
964       ])
965     ])
966   ])
967 ], [
968   AC_MSG_RESULT(no)
969 ])
970
971 AC_CHECK_FUNC(gmtime_r, [
972   AC_MSG_CHECKING([signature of gmtime_r])
973   AC_TRY_COMPILE([
974 #   include <time.h>
975   ], [
976     struct time *t;
977     struct tm *tm;
978     (void) gmtime_r(t, tm)
979   ], [
980     AC_MSG_RESULT(ok)
981     AC_DEFINE(HAVE_GMTIME_R)
982   ], [
983     AC_MSG_RESULT(unrecognised)
984   ])
985 ], [
986   AC_MSG_RESULT(no)
987 ])
988
989 AC_CHECK_FUNC(localtime_r, [
990   AC_MSG_CHECKING([signature of localtime_r])
991   AC_TRY_COMPILE([
992 #   include <time.h>
993   ], [
994     struct time *t;
995     struct tm *tm;
996     (void) localtime_r(t, tm)
997   ], [
998     AC_MSG_RESULT(ok)
999     AC_DEFINE(HAVE_LOCALTIME_R)
1000   ], [
1001     AC_MSG_RESULT(unrecognised)
1002   ])
1003 ], [
1004   AC_MSG_RESULT(no)
1005 ])
1006
1007 dnl =================================================================
1008 dnl Solaris specific
1009 dnl FIXME: Not tested on Solaris yet...
1010 dnl ISFIXED: Have tested it on Solaris, but there are other ways to
1011 dnl     make these checks generic, e.g.:
1012 dnl AC_CHECK_FUNC(getsockopt, , AC_CHECK_LIB(socket, getsockopt))
1013 dnl     (Moritz Barsnick <moritz@barsnick.net>)
1014 dnl =================================================================
1015
1016
1017 SOCKET_LIB=
1018
1019 case "$host" in
1020 *-solaris*) SOCKET_LIB="-lsocket -lnsl"
1021             AC_DEFINE(__EXTENSIONS__)
1022             if test "$GCC" = "yes"; then
1023               # Set a GCC specific switch:
1024               # This compiler switch makes Solaris thread-safe
1025               PTHREAD_LIB=
1026               SPECIAL_CFLAGS="-pthreads"
1027             else
1028               # What do we do without GCC? Guess this:
1029               SPECIAL_CFLAGS="-D_REENTRANT"
1030             fi
1031 ;;
1032 esac
1033
1034 AC_SUBST(SOCKET_LIB)
1035
1036 dnl =================================================================
1037 dnl Solaris problem, and others perhaps (socklen_t is undefined)
1038 dnl =================================================================
1039
1040 AC_MSG_CHECKING([for socklen_t])
1041 AC_EGREP_HEADER(socklen_t, sys/socket.h, AC_MSG_RESULT([yes]),
1042         AC_MSG_RESULT([no])
1043         AC_DEFINE(socklen_t,int,
1044                 [ Define to 'int' if <sys/socket.h> doesn't have it. ]))
1045
1046
1047 dnl =================================================================
1048 dnl OS/2 specific
1049 dnl =================================================================
1050
1051 case "$host" in
1052 *-os2-emx*) SOCKET_LIB=-lsocket
1053 ;;
1054 esac
1055
1056 AC_SUBST(SOCKET_LIB)
1057
1058 dnl =================================================================
1059 dnl Mac OSX specific
1060 dnl =================================================================
1061     
1062 case "$host" in
1063 *-apple-darwin*) SPECIAL_CFLAGS="-Dunix -DOSX_DARWIN"
1064 ;;  
1065 esac
1066
1067 dnl =================================================================
1068 dnl OpenBSD specific
1069 dnl =================================================================
1070
1071 case "$host" in
1072 *-openbsd*) SPECIAL_CFLAGS="$SPECIAL_CFLAGS -Dunix"
1073 ;;
1074 esac
1075
1076 dnl =================================================================
1077 dnl AmigaOS specific
1078 dnl =================================================================
1079
1080 AMIGAOS_ONLY=#
1081
1082 case "$host" in
1083 *-amigaos) AMIGAOS_ONLY=
1084 ;;
1085 esac
1086
1087 AC_SUBST(AMIGAOS_ONLY)
1088
1089 dnl =================================================================
1090 dnl Check for standard compiler stuff
1091 dnl =================================================================
1092
1093 AC_EXEEXT
1094 AC_OBJEXT
1095 AC_HEADER_STDC
1096 AC_HEADER_DIRENT
1097 AC_C_CONST
1098 AC_TYPE_SIZE_T
1099 AC_TYPE_PID_T
1100 AC_HEADER_TIME
1101 AC_STRUCT_TM
1102 AC_CHECK_SIZEOF(int, 4)
1103 AC_CHECK_SIZEOF(char *, 4)
1104 AC_CHECK_SIZEOF(long, 4)
1105 AC_CHECK_SIZEOF(long long, 8)
1106 AC_CHECK_SIZEOF(size_t, 4)
1107
1108 dnl Checks for header files.
1109 dnl AC_HEADER_SYS_WAIT
1110 dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h)
1111 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])
1112
1113 dnl Checks for library functions.
1114 dnl AC_TYPE_SIGNAL
1115 dnl AC_CHECK_FUNC(strstr)
1116 dnl bcopy and memmove are for PCRE
1117 AC_CHECK_FUNCS([strerror bcopy memmove])
1118 AC_PROG_GCC_TRADITIONAL
1119 dnl uncommenting does not work for swa. suse linux
1120 dnl AC_FUNC_MALLOC
1121 AC_FUNC_SETPGRP
1122 AC_TYPE_SIGNAL
1123 dnl uncommenting does not work for swa. suse linux
1124 dnl AC_FUNC_STAT
1125 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])
1126
1127
1128 dnl =================================================================
1129 dnl Checks for libraries.
1130 dnl =================================================================
1131 dnl Note: Some systems may have the library but not the system header
1132 dnl       file, so we must check for both.
1133 dnl       Also check for correct version
1134 AC_CHECK_LIB(pcre, pcre_compile, [
1135    AC_CHECK_HEADER(pcre.h, [
1136       AC_EGREP_HEADER(pcre_fullinfo, pcre.h, [have_pcre=yes], [AC_MSG_WARN([[pcre old version installed]]); have_pcre=no])
1137    ], [
1138       AC_CHECK_HEADER(pcre/pcre.h, [
1139          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])
1140       ], [have_pcre=no])
1141    ])
1142 ], [have_pcre=no])
1143  
1144 AC_CHECK_LIB(pcreposix, regcomp, [
1145    AC_CHECK_HEADER(pcreposix.h, [
1146       AC_EGREP_HEADER(pcreposix_regerror, pcreposix.h, [AC_MSG_WARN([[pcreposix old version installed]]); have_pcreposix=no], [have_pcreposix=yes])
1147    ], [
1148       AC_CHECK_HEADER(pcre/pcreposix.h, [
1149          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)])
1150       ], [have_pcreposix=no])
1151    ])
1152 ], [have_pcreposix=no], -lpcre) 
1153
1154 AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no], -lpcre)
1155
1156 dnl =================================================================
1157 dnl Always defined
1158 dnl =================================================================
1159
1160 AC_DEFINE(__MT__)
1161
1162 dnl =================================================================
1163 dnl Features
1164 dnl =================================================================
1165
1166 AC_ARG_ENABLE(toggle,
1167 [  --disable-toggle         Don't support temporary disable],
1168 [if test $enableval = yes; then
1169   AC_DEFINE(FEATURE_TOGGLE)
1170 fi],AC_DEFINE(FEATURE_TOGGLE))
1171
1172 AC_ARG_ENABLE(force,
1173 [  --disable-force          Don't allow single-page disable],
1174 [if test $enableval = yes; then
1175   AC_DEFINE(FEATURE_FORCE_LOAD)
1176 fi],AC_DEFINE(FEATURE_FORCE_LOAD))
1177
1178 AC_ARG_ENABLE(fast-redirects,
1179 [  --disable-fast-redirects Don't support fast redirects],
1180 [if test $enableval = yes; then
1181   AC_DEFINE(FEATURE_FAST_REDIRECTS)
1182 fi], AC_DEFINE(FEATURE_FAST_REDIRECTS))
1183
1184 AC_ARG_ENABLE(killpopup,
1185 [  --disable-killpopup      Never block popups],
1186 [if test $enableval = yes; then
1187   AC_DEFINE(FEATURE_KILL_POPUPS)
1188 fi],AC_DEFINE(FEATURE_KILL_POPUPS))
1189
1190 AC_ARG_ENABLE(stats,
1191 [  --disable-stats          Don't keep statistics],
1192 [if test $enableval = yes; then
1193   AC_DEFINE(FEATURE_STATISTICS)
1194 fi],AC_DEFINE(FEATURE_STATISTICS))
1195
1196 AC_ARG_ENABLE(ie-images,
1197 [  --enable-ie-images       Enable a quick but not always reliable auto-detect whether requests from
1198                            MS Internet Explorer are for an image or not.],
1199 [if test $enableval = yes; then
1200   AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE)
1201 fi],)
1202
1203 AC_ARG_ENABLE(image-blocking,
1204 [  --disable-image-blocking Don't try to figure out whether a request is 
1205                            for an image or HTML - assume HTML.],
1206 [if test $enableval = yes; then
1207   AC_DEFINE(FEATURE_IMAGE_BLOCKING)
1208 fi],
1209 AC_DEFINE(FEATURE_IMAGE_BLOCKING))
1210
1211 AC_ARG_ENABLE(acl-files,
1212 [  --disable-acl-files      Prevents the use of ACL files to control access to
1213                            the proxy by IP address.],
1214 [if test $enableval = yes; then
1215   AC_DEFINE(FEATURE_ACL)
1216 fi],
1217 AC_DEFINE(FEATURE_ACL))
1218
1219 AC_ARG_ENABLE(trust-files,
1220 [  --disable-trust-files    Prevents the use of trust files.],
1221 [if test $enableval = yes; then
1222   AC_DEFINE(FEATURE_TRUST)
1223 fi],
1224 AC_DEFINE(FEATURE_TRUST))
1225
1226 AC_ARG_ENABLE(jar-files,
1227 [  --disable-jar-files      Prevents the use of jar files to capture cookies.],
1228 [if test $enableval = yes; then
1229   AC_DEFINE(FEATURE_COOKIE_JAR)
1230 fi],
1231 AC_DEFINE(FEATURE_COOKIE_JAR))
1232
1233 AC_ARG_ENABLE(editor,
1234 [  --disable-editor         Prevents the use of the web-based actions file
1235                            editor and web-based temporary disable setting.],
1236 [if test $enableval = yes; then
1237   AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS)
1238 fi],
1239 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS))
1240
1241 AC_ARG_ENABLE(no-gifs,
1242 [  --enable-no-gifs         Use politically correct PNG format instead of GIF
1243                            for built-in images. May not work with all browsers.],
1244 [if test $enableval = yes; then
1245   AC_DEFINE(FEATURE_NO_GIFS)
1246 fi])
1247
1248
1249 dnl pcre/pcrs is needed for CGI anyway, so
1250 dnl the choice is only between static and
1251 dnl dynamic:
1252
1253 AC_ARG_ENABLE(dynamic-pcre,
1254 [  --disable-dynamic-pcre        Use the built-in, static pcre, even if
1255                                 libpcre is available],
1256 [ if test $enableval = "no"; then have_pcre=no; fi ])
1257
1258 AC_ARG_ENABLE(dynamic-pcrs,
1259 [  --disable-dynamic-pcrs        Use the built-in, static pcrs, even if
1260                                 libpcrs is available],
1261 [ if test $enableval = "no"; then have_pcrs=no; fi ])
1262
1263
1264 # If we have libpcre and either we also have pcreposix or
1265 # we don't need pcreposix, then link pcre dynamically; else
1266 # build it and link statically
1267 #
1268 if test $have_pcre = "yes"; then
1269   echo "using libpcre"
1270   pcre_dyn=yes
1271   STATIC_PCRE_ONLY=#
1272   LIBS="$LIBS -lpcre -lpcreposix"
1273 else
1274   echo "using built-in static pcre"
1275   pcre_dyn=no
1276   AC_DEFINE(STATIC_PCRE)
1277   STATIC_PCRE_ONLY=
1278 fi
1279
1280 # If we have libpcrs and pcre is linked dynamically
1281 # then also link pcrs dynamically, else build and link
1282 # pcrs statically
1283 #
1284 if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
1285   echo "using libpcrs"
1286   STATIC_PCRS_ONLY=#
1287   LIBS="$LIBS -lpcrs"
1288 else
1289   echo "using built-in static pcrs"
1290   AC_DEFINE(STATIC_PCRS)
1291   STATIC_PCRS_ONLY=
1292 fi
1293
1294 AC_SUBST(STATIC_PCRE_ONLY)
1295 AC_SUBST(STATIC_PCRS_ONLY)
1296
1297 dnl =================================================================
1298 dnl Final cleanup and output
1299 dnl =================================================================
1300
1301 dnl Remove the SPECIAL_CFLAGS stuff from CFLAGS, and add it seperately
1302 dnl in the Makefile
1303 CFLAGS=$old_CFLAGS_nospecial
1304 AC_SUBST(SPECIAL_CFLAGS)
1305
1306 AC_SUBST(PTHREAD_LIB)
1307
1308 AC_OUTPUT(GNUmakefile doc/source/ldp.dsl)