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