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