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