1 dnl Process this file with autoconf to produce a configure script.
3 dnl $Id: configure.in,v 1.68.2.18 2003/12/08 15:10:29 oes Exp $
5 dnl Written by and Copyright (C) 2001 - 2004 the SourceForge
6 dnl Privoxy team. http://www.privoxy.org/
8 dnl Based on the Internet Junkbuster originally written
9 dnl by and Copyright (C) 1997 Anonymous Coders and
10 dnl Junkbusters Corporation. http://www.junkbusters.com
12 dnl This program is free software; you can redistribute it
13 dnl and/or modify it under the terms of the GNU General
14 dnl Public License as published by the Free Software
15 dnl Foundation; either version 2 of the License, or (at
16 dnl your option) any later version.
18 dnl This program is distributed in the hope that it will
19 dnl be useful, but WITHOUT ANY WARRANTY; without even the
20 dnl implied warranty of MERCHANTABILITY or FITNESS FOR A
21 dnl PARTICULAR PURPOSE. See the GNU General Public
22 dnl License for more details.
24 dnl The GNU General Public License should be included with
25 dnl this file. If not, you can view it at
26 dnl http://www.gnu.org/copyleft/gpl.html
27 dnl or write to the Free Software Foundation, Inc., 59
28 dnl Temple Place - Suite 330, Boston, MA 02111-1307, USA.
30 dnl $Log: configure.in,v $
31 dnl Revision 1.68.2.18 2003/12/08 15:10:29 oes
32 dnl Bugfix: --with-docbook now correctly accepts its path parameter. Thanks, Roland!
34 dnl Revision 1.68.2.17 2003/10/18 18:41:26 david__schmidt
35 dnl Update to remain buildable on OS/2 - remove the failures
36 dnl due to missing unixisms
38 dnl Revision 1.68.2.16 2003/03/26 16:05:14 oes
39 dnl Marked as 0.0.0 UNRELEASED
41 dnl Revision 1.68.2.15 2003/03/26 00:25:00 oes
42 dnl Bump version for 3.0.2
44 dnl Revision 1.68.2.14 2003/03/25 13:27:12 hal9
45 dnl Manually apply Docbook/FreeBSD patch #708081 from a.go at tiscali.nl.
47 dnl Revision 1.68.2.13 2003/03/18 19:38:57 oes
48 dnl Set version info for 3.0.1 release
50 dnl Revision 1.68.2.12 2003/03/07 03:41:04 david__schmidt
51 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.
53 dnl Revision 1.68.2.11 2003/03/06 15:22:37 oes
54 dnl Fixed minor shell syntax bug
56 dnl Revision 1.68.2.10 2003/01/08 16:39:41 oes
57 dnl Changing default to exclude FEATURE_IMAGE_DETECT_MSIE because of problem reports with recent IEs
59 dnl Revision 1.68.2.9 2002/12/13 23:47:45 hal9
60 dnl Add openbsd $specialflags per gunner at styx2002.no-ip.org
62 dnl Revision 1.68.2.8 2002/11/27 12:55:26 oes
63 dnl Fixed broken handling of pre-set CFLAGS
65 dnl Revision 1.68.2.7 2002/10/25 02:44:22 hal9
66 dnl Port of make install, etc from main trunk. Needs testing! Add Slackware
67 dnl support, and other related changes. Update related docs.
69 dnl Revision 1.68.2.6 2002/09/25 15:35:15 oes
70 dnl Marking as non-release
72 dnl Revision 1.68.2.5 2002/08/25 23:37:00 hal9
73 dnl Getting ready for 3.0 release.
75 dnl Revision 1.68.2.4 2002/08/10 11:21:57 oes
76 dnl - Set Version to 2.9.20 (beta)
77 dnl - Add two AC_DEFINEs that indicate if the pcre*.h headers
78 dnl are located in a pcre/ subdir to the include path.
80 dnl Revision 1.68.2.3 2002/08/06 11:29:36 oes
81 dnl Fixed detection/inclusion of pcre.h, which is in a pcre subdir on RH
83 dnl Revision 1.68.2.2 2002/07/30 19:36:09 hal9
84 dnl Bump version to 2.9.17.
86 dnl Revision 1.68.2.1 2002/07/26 15:21:12 oes
87 dnl Bumped version number for 2.9.16 freeze
89 dnl Revision 1.68 2002/05/25 16:54:54 jongfoster
90 dnl Detect if the compiler supports -pthread.
91 dnl Hopefully this will fix bug 560442. (I don't have a HP PA-RISC
92 dnl machine to test this!)
94 dnl Revision 1.67 2002/05/03 14:33:59 oes
95 dnl Generate doc/soucre/ldp.dsl
97 dnl Revision 1.66 2002/05/03 00:41:56 oes
98 dnl Set version to 2.9.15 to comply with new versioning scheme
100 dnl Revision 1.65 2002/04/25 19:13:57 morcego
101 dnl Removed RPM release number declaration on configure.in
102 dnl Changed makefile to use given value for RPM_PACKAGEV when on uploading
103 dnl targets (will produce an error, explaining who to do it, if no value
106 dnl Revision 1.64 2002/04/22 16:32:31 morcego
107 dnl configure.in, *.spec: Bumping release to 2 (2.9.14-2)
108 dnl -rh.spec: uid and gid are now macros
109 dnl -suse.spec: Changing the header Copyright to License (Copyright is
112 dnl Revision 1.63 2002/04/11 11:00:21 oes
113 dnl Applied Moritz' fix for socklen_t on Solaris
115 dnl Revision 1.62 2002/04/11 10:09:20 oes
118 dnl Revision 1.61 2002/04/10 18:14:45 morcego
119 dnl - (privoxy-rh.spec only) Relisting template files on the %%files section
120 dnl - (configure.in, privoxy-rh.spec) Bumped package release to 5
122 dnl Revision 1.60 2002/04/09 16:38:49 oes
123 dnl Added detection of missing config.h.in
125 dnl Revision 1.59 2002/04/06 20:23:55 jongfoster
126 dnl Removing unnessacery tests (C++, ranlib)
128 dnl Revision 1.58 2002/04/04 20:49:20 swa
129 dnl attempt to consolidate the
130 dnl different dokbook versions.
132 dnl Revision 1.57 2002/04/04 00:36:36 gliptak
133 dnl always use pcre for matching
135 dnl Revision 1.56 2002/04/03 22:28:03 gliptak
136 dnl Removed references to gnu_regex
138 dnl Revision 1.55 2002/04/03 03:54:38 gliptak
139 dnl Checking pcre version
141 dnl Revision 1.54 2002/04/01 00:54:24 gliptak
142 dnl More changes needed around regex support.
144 dnl Revision 1.53 2002/03/29 20:09:01 swa
147 dnl Revision 1.52 2002/03/29 19:51:40 gliptak
148 dnl Correcting compile problem with Debian
150 dnl Revision 1.51 2002/03/28 20:43:00 swa
151 dnl set make correctly
153 dnl Revision 1.50 2002/03/27 03:03:45 hal9
154 dnl Add test for man2html
156 dnl Revision 1.49 2002/03/27 02:19:52 david__schmidt
157 dnl More Mac OSX support:
158 dnl - Get rid of extraneous, noisy -pthread warnings
159 dnl - Define unix so we get oes' unix-tagged changes
161 dnl Revision 1.48 2002/03/26 22:29:54 swa
162 dnl we have a new homepage!
164 dnl Revision 1.47 2002/03/26 16:41:00 hal9
165 dnl Upped RPM Release to 3 (need to build new RH packages)
167 dnl Revision 1.46 2002/03/24 18:55:06 jongfoster
168 dnl Making Docbook work under Windows
170 dnl Revision 1.45 2002/03/24 14:19:55 swa
171 dnl set rpm package release in configure.in. nowhere else.
173 dnl Revision 1.44 2002/03/24 13:25:43 swa
174 dnl name change related issues
176 dnl Revision 1.43 2002/03/24 12:56:21 swa
177 dnl name change related issues.
179 dnl Revision 1.42 2002/03/22 18:11:37 jongfoster
180 dnl Bumping version number to 2.9.12
182 dnl Revision 1.41 2002/03/19 19:30:04 morcego
183 dnl - Fixing stylesheet checking on configure. If it is found, no further checks
186 dnl - configure will now check for db2html or docbook2html (should work now
187 dnl on SuSe without the docbktls package)
189 dnl Revision 1.40 2002/03/09 14:33:30 oes
190 dnl Fixing the (harmless) AC_CHECK_FILE warnings
192 dnl Revision 1.39 2002/03/08 16:46:13 oes
193 dnl Added --enable-no-gifs
195 dnl Revision 1.38 2002/03/08 14:13:50 morcego
196 dnl Fixing configure, to remove a command not found error.
198 dnl Revision 1.37 2002/03/08 12:58:21 oes
199 dnl Tiny bugfix in AC_ARG_WITH(debug)
201 dnl Revision 1.36 2002/03/06 23:50:36 morcego
202 dnl Will not test for a text browser if we are not using docbook.
204 dnl Revision 1.35 2002/03/06 21:55:52 morcego
205 dnl New configure option: --with-docbook=(yes|no|directory)
206 dnl Preliminary new platform detection code included. Will work with the
207 dnl old one for now. No use just trowing it away
209 dnl Revision 1.34 2002/03/06 20:57:00 morcego
210 dnl Fixing detection of stylesheets on SuSe.
212 dnl Revision 1.33 2002/03/05 17:31:11 morcego
213 dnl Search for docbook.dsl. Should solve portability problems for SuSe.
215 dnl Revision 1.32 2002/03/05 14:07:43 morcego
216 dnl configure now detects rpm topdir, and change GNUmakefile acordingly
217 dnl (based on sugestion by Sarantis Paskalis)
219 dnl Revision 1.31 2002/03/05 13:43:28 morcego
220 dnl Checking for text browser, so redhat-dok can work.
222 dnl Revision 1.30 2002/03/04 17:58:01 oes
223 dnl Deleted _DEBUG and PID_FILE_PATH
225 dnl Revision 1.29 2002/02/28 14:20:53 oes
226 dnl Fixed detection of gethost*_r functions on Solaris
228 dnl Revision 1.28 2002/02/27 15:02:38 oes
229 dnl Incremented version number
231 dnl Revision 1.27 2002/01/10 12:35:18 oes
232 dnl Added cross-compile defaults to the AC_CHECK_SIZEOF macros
233 dnl to silence autoconf warnings. Numbers are for Intel/Linux.
234 dnl Is there a better way?
236 dnl Revision 1.26 2002/01/09 14:29:49 oes
237 dnl - Added AC_CHECK_FUNC tests for the availability of
238 dnl gethostbyname_r, gethostbyaddr_r, gmtime_r and
239 dnl localtime_r, as well as AC_TRY_COMPILE tests to
240 dnl determine their signatures.
242 dnl - Fixed a bug with the init of CFLAGS that was
243 dnl reported by barsnick
245 dnl Revision 1.25 2002/01/04 15:27:18 oes
246 dnl Changed quoting of CODE_STATUS for use in make
248 dnl Revision 1.24 2001/12/30 14:07:31 steudten
249 dnl - Add signal handling (unix)
250 dnl - Add SIGHUP handler (unix)
251 dnl - Add creation of pidfile (unix)
252 dnl - Add action 'top' in rc file (RH)
253 dnl - Add entry 'SIGNALS' to manpage
254 dnl - Add exit message to logfile (unix)
256 dnl Revision 1.23 2001/12/09 20:24:42 david__schmidt
257 dnl Change from "alpha" to "beta" in configure.in
259 dnl Revision 1.22 2001/12/01 11:24:01 jongfoster
260 dnl Renaming Makefile.in to GNUmakefile.in so that non-GNU versions of
261 dnl make break in a more obvious way.
263 dnl Revision 1.21 2001/11/30 21:35:54 jongfoster
264 dnl Bumping version number to 2.9.10
266 dnl Revision 1.20 2001/10/23 21:24:09 jongfoster
267 dnl Support for FEATURE_CGI_EDIT_ACTIONS
269 dnl Revision 1.19 2001/10/07 15:33:14 oes
270 dnl Removed FEATURE_DENY_GZIP
271 dnl Bumped up version number
273 dnl Revision 1.18 2001/09/13 13:10:24 steudten
275 dnl PreWork for Debug Interface.
276 dnl Add new option "--with-debug" to enable debugging (flags aso.)
278 dnl Revision 1.17 2001/09/12 23:44:55 david__schmidt
279 dnl Mac OSX (Darwin) support added.
281 dnl Revision 1.16 2001/09/12 22:55:45 joergs
282 dnl AmigaOS support added.
284 dnl Revision 1.15 2001/09/12 17:28:59 david__schmidt
286 dnl OS/2 port: update autoconf'd support for the platform.
288 dnl Revision 1.14 2001/07/30 22:12:11 jongfoster
289 dnl Fixing Solaris build (I hope) and tidying up #defines:
290 dnl - All feature #defines are now of the form FEATURE_xxx
291 dnl - Permanently turned off WIN_GUI_EDIT
292 dnl - Permanently turned on WEBDAV and SPLIT_PROXY_ARGS
294 dnl Revision 1.13 2001/07/29 17:09:17 jongfoster
295 dnl Major changes to build system in order to fix these bugs:
296 dnl - pthreads under Linux was broken - changed -lpthread to -pthread
297 dnl - Compiling in MinGW32 mode under CygWin now correctly detects
298 dnl which shared libraries are available
299 dnl - Solaris support (?) (Not tested under Solaris yet)
301 dnl Revision 1.12 2001/07/25 19:16:27 oes
302 dnl Bumping version number to 2.9.8
304 dnl Revision 1.11 2001/07/21 18:00:07 jongfoster
305 dnl Bumping version number to 2.9.7
307 dnl Revision 1.10 2001/07/18 17:25:04 oes
310 dnl Revision 1.9 2001/07/15 19:45:13 jongfoster
311 dnl Added support for linking with POSIX threads library
313 dnl Revision 1.8 2001/07/15 17:54:29 jongfoster
314 dnl Renaming #define STATIC to STATIC_PCRE
315 dnl Adding new #define FEATURE_PTHREAD that will be used to enable
316 dnl POSIX threads support.
318 dnl Revision 1.7 2001/07/13 13:58:05 oes
319 dnl Completely reorganized the selection scheme for
320 dnl pcre, pcreposix, pcrs and gnu_regex:
322 dnl The presence of shared pcre, pcreposix or pcrs
323 dnl libraried is now autodetected. Additionally, the
324 dnl user can enforce using the built-in static variants
325 dnl by specifying --disable-dynamic-(pcre|pcrs).
326 dnl Care is taken to avoid that pcre is dyn, while pcreposix
327 dnl is static, if both are used and that pcrs is static if
330 dnl The choice between pcre, gnu or no regex for actionsfile
331 dnl URL matching is now via
332 dnl --(enable|disable)-regex-matching[=(gnu|pcre|no)] with the
333 dnl default being pcre.
335 dnl Revision 1.6 2001/06/29 21:56:40 oes
338 dnl Revision 1.5 2001/06/29 13:26:27 oes
339 dnl Introduced #define CODE_STATUS
341 dnl Revision 1.4 2001/05/29 09:50:24 jongfoster
342 dnl Unified blocklist/imagelist/permissionslist.
343 dnl File format is still under discussion, but the internal changes
344 dnl are (mostly) done.
346 dnl Also modified interceptor behaviour:
347 dnl - We now intercept all URLs beginning with one of the following
348 dnl prefixes (and *only* these prefixes):
350 dnl * http://ijbswa.sf.net/config/
351 dnl * http://ijbswa.sourceforge.net/config/
352 dnl - New interceptors "home page" - go to http://i.j.b/ to see it.
353 dnl - Internal changes so that intercepted and fast redirect pages
354 dnl are not replaced with an image.
355 dnl - Interceptors now have the option to send a binary page direct
356 dnl to the client. (i.e. ijb-send-banner uses this)
357 dnl - Implemented show-url-info interceptor. (Which is why I needed
358 dnl the above interceptors changes - a typical URL is
359 dnl "http://i.j.b/show-url-info?url=www.somesite.com/banner.gif".
360 dnl The previous mechanism would not have intercepted that, and
361 dnl if it had been intercepted then it then it would have replaced
362 dnl it with an image.)
364 dnl Revision 1.3 2001/05/22 18:46:04 oes
366 dnl - Enabled filtering banners by size rather than URL
367 dnl by adding patterns that replace all standard banner
368 dnl sizes with the "Junkbuster" gif to the re_filterfile
370 dnl - Enabled filtering WebBugs by providing a pattern
371 dnl which kills all 1x1 images
373 dnl - Added support for PCRE_UNGREEDY behaviour to pcrs,
374 dnl which is selected by the (nonstandard and therefore
375 dnl capital) letter 'U' in the option string.
376 dnl It causes the quantifiers to be ungreedy by default.
377 dnl Appending a ? turns back to greedy (!).
379 dnl - Added a new interceptor ijb-send-banner, which
380 dnl sends back the "Junkbuster" gif. Without imagelist or
381 dnl MSIE detection support, or if tinygif = 1, or the
382 dnl URL isn't recognized as an imageurl, a lame HTML
383 dnl explanation is sent instead.
385 dnl - Added new feature, which permits blocking remote
386 dnl script redirects and firing back a local redirect
388 dnl The feature is conditionally compiled, i.e. it
389 dnl can be disabled with --disable-fast-redirects,
390 dnl plus it must be activated by a "fast-redirects"
391 dnl line in the config file, has its own log level
392 dnl and of course wants to be displayed by show-proxy-args
393 dnl Note: Boy, all the #ifdefs in 1001 locations and
394 dnl all the fumbling with configure.in and acconfig.h
395 dnl were *way* more work than the feature itself :-(
397 dnl - Because a generic redirect template was needed for
398 dnl this, tinygif = 3 now uses the same.
400 dnl - Moved GIFs, and other static HTTP response templates
403 dnl - Some minor fixes
405 dnl - Removed some >400 CRs again (Jon, you really worked
408 dnl Revision 1.2 2001/05/20 01:21:20 jongfoster
409 dnl Version 2.9.4 checkin.
410 dnl - Merged popupfile and cookiefile, and added control over PCRS
411 dnl filtering, in new "permissionsfile".
412 dnl - Implemented LOG_LEVEL_FATAL, so that if there is a configuration
413 dnl file error you now get a message box (in the Win32 GUI) rather
414 dnl than the program exiting with no explanation.
415 dnl - Made killpopup use the PCRS MIME-type checking and HTTP-header
417 dnl - Removed tabs from "config"
418 dnl - Moved duplicated url parsing code in "loaders.c" to a new funcition.
419 dnl - Bumped up version number.
421 dnl Revision 1.1.1.1 2001/05/15 13:58:50 oes
422 dnl Initial import of version 2.9.3 source tree
427 dnl =================================================================
428 dnl AutoConf Initialization
429 dnl =================================================================
431 AC_REVISION($Revision: 1.68.2.18 $)
434 if test ! -f config.h.in; then
435 echo "You need to run autoheader first. "
436 echo -n "Shall I do this for you now? (y/n) "
438 if test "$answer" != "y"; then
445 AC_CONFIG_HEADER([config.h])
450 AC_ARG_WITH(docbook, dnl
451 --with-docbook=[[yes|no|directory]]
452 Enable docbook documentation creation
453 (default = yes, for gnu and linux),[dnl
454 case "$with_docbook" in
464 AC_ARG_WITH(db2html, dnl
465 --with-db2html=<path/executable>
466 Set the location of the docbook to html converter
467 (default = search),[dnl
471 dnl =================================================================
472 dnl Application version number
473 dnl =================================================================
480 dnl CODE_STATUS can be "alpha", "beta", or "stable", and will be
481 dnl used for CGI output. Set version to 0.0.0 and status to "UNRELEASED"
482 dnl whenever CVS in a stable branch differs from the last release.
484 dnl =================================================================
485 dnl Substitute the version numbers
486 dnl =================================================================
488 AC_SUBST(VERSION_MAJOR)
489 AC_SUBST(VERSION_MINOR)
490 AC_SUBST(VERSION_POINT)
491 AC_SUBST(CODE_STATUS)
494 AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR})
495 AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR})
496 AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT})
497 AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}")
498 AC_DEFINE_UNQUOTED(CODE_STATUS,"${CODE_STATUS}")
500 dnl =================================================================
501 dnl Checks for programs needed to build.
502 dnl =================================================================
504 dnl Keep AC_PROG_CC from setting its own defaults:
505 if test "X$CFLAGS" = "X"; then
516 AC_CHECK_PROG(GDB,gdb,yes,no)
517 AC_PATH_PROG(BGROUPS,groups,no,/bin:/usr/bin:/usr/local/bin)
518 AC_PATH_PROG(ID,id,no,/bin:/usr/bin:/usr/local/bin)
522 dnl =================================================================
523 dnl debug, gcc and gdb support
524 dnl =================================================================
527 [ --with-debug Enable debug mode],
529 if test "x$withval" != "xno" ; then
530 if test $ac_cv_prog_cc_g = yes; then
531 if test "$GCC" = yes; then
533 CFLAGS="$CFLAGS -ggdb"
537 CFLAGS="$CFLAGS -Wshadow -Wconversion"
545 if test "X$CFLAGS" = "X "; then # if CFLAGS were unset (see above)
546 if test "$GCC" = yes; then
553 dnl =================================================================
554 dnl Check for user and group validity
555 dnl =================================================================
558 if test "$EMXOS2" = yes; then
559 echo "Skipping user and group validity stuff.";
563 $ID privoxy >/dev/null 2>/dev/null
564 if test $? -ne 0 ; then
565 AC_MSG_WARN(There is no user 'privoxy' on this system)
567 AC_MSG_CHECKING([for user])
569 [ --with-user=privoxy Set user under which privoxy will run],
571 if test "x$withval" != "xyes"; then
572 if test $ID = no ; then
573 AC_MSG_ERROR(There is no 'id' program on this system)
575 AC_MSG_RESULT($with_user)
576 $ID $with_user 2>/dev/null >/dev/null
577 if test $? -eq 0 ; then
580 AC_MSG_ERROR(There is no user '$with_user' on this system)
584 AC_MSG_ERROR(We need a user if you give me this parameter)
588 if test $ID = no ; then
589 AC_MSG_ERROR(There is no 'id' programm on this system)
591 AC_MSG_RESULT(none specified)
598 AC_MSG_CHECKING([for group])
600 [ --with-group=privoxy Set group for privoxy],
602 if test "x$withval" != "xyes"; then
603 if test $BGROUPS = no ; then
604 AC_MSG_ERROR(There is no 'groups' program on this system)
606 AC_MSG_RESULT($with_group)
607 $BGROUPS $USER >/dev/null
608 if test $? -eq 0 ; then
609 # FIXME: this fails if valid group, but not first group
611 if test "$with_group" != "`$BGROUPS $USER | sed 's/.*: //' 2>/dev/null |$AWK '{print $1}'`" ; then
612 AC_MSG_ERROR(The given value '$withval' does not match group entry)
617 AC_MSG_ERROR(There is no group entry for user '$USER')
621 AC_MSG_ERROR(We need a group if you give me this parameter)
625 if test $BGROUPS = no ; then
626 AC_MSG_ERROR(There is no 'groups' programm on this system)
628 AC_MSG_RESULT(none specified)
637 dnl =================================================================
638 dnl additional gcc flags
639 dnl =================================================================
642 CFLAGS="-pipe $CFLAGS"
646 dnl =================================================================
648 dnl =================================================================
650 dnl Must do this first.
652 dnl Reason: This sets CFLAGS in order to switch the Cygwin compiler
653 dnl into Cygwin or MinGW32 modes. Depending on the mode selected,
654 dnl the compiler will use completely different sets of library
655 dnl and include files.
657 dnl =================================================================
662 if test "$MINGW32" = "yes"; then
665 if test "$CYGWIN" = "yes"; then
672 if test $dodk = auto; then
674 if test $target_type = unix; then
683 dnl Decide what to do based on target_type
684 dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
685 dnl This is because we don't know yet whether pthread is enabled.
687 AC_ARG_ENABLE(mingw32,
688 [ --enable-mingw32 Use mingw32 for a Windows GUI],
689 [if test $enableval = yes; then
693 if test $target_type = mingw; then
695 SPECIAL_CFLAGS="-mwindows -mno-cygwin"
696 PTHREAD_LIB=-lpthreadGC
697 echo "Using mingw32 (Win32 GUI)"
700 if test $target_type = cygwin; then
701 SPECIAL_CFLAGS="-mno-win32"
703 echo "Using Cygnus (Win32 command line)"
706 PTHREAD_LIB=-lpthread
711 dnl Checking which text html browser we have avaliable
712 if test $dodk != no; then
713 AC_CHECK_PROGS(WDUMP,w3m lynx links,false)
714 if test "$WDUMP" = false; then
715 AC_MSG_WARN(You need some kind of text browser to build documentation \(w3m, lynx and links are supported\))
717 if test $DB2HTML = false; then
718 dnl We need to clean the variable, otherwise AC_CHECK_PROGS
721 AC_CHECK_PROGS(DB2HTML,db2html docbook2html,false)
727 dnl If we use rpm, we need to check where %_topdir is
728 AC_CHECK_PROGS(RPMBIN,rpm,false)
729 if test $RPMBIN != false; then
730 RPM_BASE=`rpm --eval "%{_topdir}"`
731 if test "$RPM_BASE" = ""; then
732 RPM_BASE=/usr/src/redhat
737 dnl Check for jade, so we can build the documentation
738 AC_CHECK_PROGS(JADEBIN,jade openjade,false)
741 dnl Check for man2html for docs.
742 AC_CHECK_PROGS(MAN2HTML,man2html,false)
745 dnl Set doc status flag for conditional content inclusions
746 DOC_STATUS=p-not-stable
747 if test $CODE_STATUS = stable; then
748 DOC_STATUS="p-stable"
752 dnl Checking for the docbook.dsl stylesheet file
753 dnl It is still not portable (directory slash)
755 if test $dodk = yes; then
756 if test $DKPREFIX = none; then
757 for i in /usr/share/sgml/docbook/dsssl-stylesheets \
758 /usr/share/sgml/docbkdsl /usr/share/sgml/docbook-dsssl \
759 /usr/local/share/sgml/docbook/dsssl/modular \
760 /usr/share/sgml/docbook/stylesheet/dsssl/modular/ \
762 dnl echo -n does not fly with /bin/sh.
763 dnl echo -n "checking for $i/html/docbook.dsl..."
764 AC_MSG_CHECKING([for $i])
765 if test -f $i/html/docbook.dsl; then
773 # where are the catalogs?
774 for i in /usr/share/sgml/CATALOG.docbk30 \
775 /usr/share/sgml/CATALOG.docbk31 \
776 /usr/share/sgml/CATALOG.docbk31 \
777 /usr/local/share/sgml/docbook/3.0/docbook.cat \
778 /usr/local/share/sgml/docbook/3.1/docbook.cat \
779 /usr/share/sgml/docbook/dtd/3.1/docbook.cat \
781 dnl echo -n "checking for $i..."
782 AC_MSG_CHECKING([for $i])
785 JADECAT="$JADECAT -c $i"
795 dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
796 old_CFLAGS_nospecial=$CFLAGS
797 CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
799 # Hack to force AutoConf to use the CFLAGS we just set
800 dnl Warning: This may break with a future version of Autoconf
801 dnl Tested with autoconf 2.13
802 ac_cpp='$CPP $CPPFLAGS $SPECIAL_CFLAGS'
803 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
804 ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
807 dnl =================================================================
809 dnl =================================================================
811 AC_CHECK_HEADER(pthread.h, [have_pthread=yes], [have_pthread=no])
813 AC_ARG_ENABLE(pthread,
814 [ --disable-pthread Don't use POSIX threads (pthreads)],
815 [if test $enableval = no; then
820 if test $have_pthread = yes; then
822 AC_DEFINE(FEATURE_PTHREAD)
823 echo Using POSIX threads
824 if test "$GCC" = "yes"; then
825 # Set a GCC specific switch:
826 if test "$target_type" = "unix"; then
827 ac_jgf_save_CFLAGS=$CFLAGS
828 CFLAGS="$CFLAGS -pthread"
829 AC_TRY_LINK([#include <pthread.h>],
830 [void *p = pthread_create;],
832 # This compiler switch makes GCC on Linux thread-safe
833 # However, it's not supported on most other OS.
835 SPECIAL_CFLAGS="-pthread"
837 CFLAGS=$ac_jgf_save_CFLAGS
842 echo Using native threads
845 AC_SUBST(PTHREAD_ONLY)
847 dnl =================================================================
848 dnl Support for thread-safe versions of gethostbyaddr, gethostbyname,
849 dnl gmtime and localtime
850 dnl =================================================================
852 dnl Next line needed to find the gethost*_r functions on Solaris
853 AC_CHECK_LIB(nsl, gethostbyname)
855 AC_CHECK_FUNC(gethostbyaddr_r, [
856 AC_MSG_CHECKING([signature of gethostbyaddr_r])
860 struct hostent *h, *hp;
863 (void) gethostbyaddr_r(a, l, t, h, b, bl, &hp, &e)
865 AC_DEFINE(HAVE_GETHOSTBYADDR_R_8_ARGS)
866 AC_MSG_RESULT([8 args])
874 (void) gethostbyaddr_r(a, l, t, h, b, bl, &e)
876 AC_DEFINE(HAVE_GETHOSTBYADDR_R_7_ARGS)
877 AC_MSG_RESULT([7 args])
882 struct hostent_data *d;
886 (void) gethostbyaddr_r(a, l, t, h, d)
888 AC_DEFINE(HAVE_GETHOSTBYADDR_R_5_ARGS)
889 AC_MSG_RESULT([5 args])
891 AC_MSG_RESULT(unrecognised)
899 AC_CHECK_FUNC(gethostbyname_r, [
900 AC_MSG_CHECKING([signature of gethostbyname_r])
904 struct hostent *h, *r;
907 (void) gethostbyname_r(n, h, b, bl, &r, &e)
909 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARGS)
910 AC_MSG_RESULT([6 args])
918 (void) gethostbyname_r(n, h, b, bl, &e)
920 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARGS)
921 AC_MSG_RESULT([5 args])
926 struct hostent_data *d;
929 (void) gethostbyname_r(n, h, d)
931 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARGS)
932 AC_MSG_RESULT([3 args])
934 AC_MSG_RESULT(unrecognised)
942 AC_CHECK_FUNC(gmtime_r, [
943 AC_MSG_CHECKING([signature of gmtime_r])
949 (void) gmtime_r(t, tm)
952 AC_DEFINE(HAVE_GMTIME_R)
954 AC_MSG_RESULT(unrecognised)
960 AC_CHECK_FUNC(localtime_r, [
961 AC_MSG_CHECKING([signature of localtime_r])
967 (void) localtime_r(t, tm)
970 AC_DEFINE(HAVE_LOCALTIME_R)
972 AC_MSG_RESULT(unrecognised)
978 dnl =================================================================
980 dnl FIXME: Not tested on Solaris yet...
981 dnl ISFIXED: Have tested it on Solaris, but there are other ways to
982 dnl make these checks generic, e.g.:
983 dnl AC_CHECK_FUNC(getsockopt, , AC_CHECK_LIB(socket, getsockopt))
984 dnl (Moritz Barsnick <moritz@barsnick.net>)
985 dnl =================================================================
991 *-solaris*) SOCKET_LIB="-lsocket -lnsl"
992 AC_DEFINE(__EXTENSIONS__)
993 if test "$GCC" = "yes"; then
994 # Set a GCC specific switch:
995 # This compiler switch makes Solaris thread-safe
997 SPECIAL_CFLAGS="-pthreads"
999 # What do we do without GCC? Guess this:
1000 SPECIAL_CFLAGS="-D_REENTRANT"
1005 AC_SUBST(SOCKET_LIB)
1007 dnl =================================================================
1008 dnl Solaris problem, and others perhaps (socklen_t is undefined)
1009 dnl =================================================================
1011 AC_MSG_CHECKING([for socklen_t])
1012 AC_EGREP_HEADER(socklen_t, sys/socket.h, AC_MSG_RESULT([yes]),
1014 AC_DEFINE(socklen_t,int,
1015 [ Define to 'int' if <sys/socket.h> doesn't have it. ]))
1018 dnl =================================================================
1020 dnl =================================================================
1023 *-os2-emx*) SOCKET_LIB=-lsocket
1027 AC_SUBST(SOCKET_LIB)
1029 dnl =================================================================
1030 dnl Mac OSX specific
1031 dnl =================================================================
1034 *-apple-darwin*) SPECIAL_CFLAGS="-Dunix -DOSX_DARWIN"
1038 dnl =================================================================
1039 dnl OpenBSD specific
1040 dnl =================================================================
1043 *-openbsd*) SPECIAL_CFLAGS="$SPECIAL_CFLAGS -Dunix"
1047 dnl =================================================================
1048 dnl AmigaOS specific
1049 dnl =================================================================
1054 *-amigaos) AMIGAOS_ONLY=
1058 AC_SUBST(AMIGAOS_ONLY)
1060 dnl =================================================================
1061 dnl Check for standard compiler stuff
1062 dnl =================================================================
1073 AC_CHECK_SIZEOF(int, 4)
1074 AC_CHECK_SIZEOF(char *, 4)
1075 AC_CHECK_SIZEOF(long, 4)
1076 AC_CHECK_SIZEOF(long long, 8)
1077 AC_CHECK_SIZEOF(size_t, 4)
1079 dnl Checks for header files.
1080 dnl AC_HEADER_SYS_WAIT
1081 dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h)
1082 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])
1084 dnl Checks for library functions.
1086 dnl AC_CHECK_FUNC(strstr)
1087 dnl bcopy and memmove are for PCRE
1088 AC_CHECK_FUNCS([strerror bcopy memmove])
1089 AC_PROG_GCC_TRADITIONAL
1090 dnl uncommenting does not work for swa. suse linux
1094 dnl uncommenting does not work for swa. suse linux
1096 AC_CHECK_FUNCS([atexit getcwd gethostbyaddr gethostbyname inet_ntoa localtime_r memchr memmove memset regcomp select setlocale socket strchr strdup strerror strftime strstr strtoul])
1099 dnl =================================================================
1100 dnl Checks for libraries.
1101 dnl =================================================================
1102 dnl Note: Some systems may have the library but not the system header
1103 dnl file, so we must check for both.
1104 dnl Also check for correct version
1105 AC_CHECK_LIB(pcre, pcre_compile, [
1106 AC_CHECK_HEADER(pcre.h, [
1107 AC_EGREP_HEADER(pcre_fullinfo, pcre.h, [have_pcre=yes], [AC_MSG_WARN([[pcre old version installed]]); have_pcre=no])
1109 AC_CHECK_HEADER(pcre/pcre.h, [
1110 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])
1115 AC_CHECK_LIB(pcreposix, regcomp, [
1116 AC_CHECK_HEADER(pcreposix.h, [
1117 AC_EGREP_HEADER(pcreposix_regerror, pcreposix.h, [AC_MSG_WARN([[pcreposix old version installed]]); have_pcreposix=no], [have_pcreposix=yes])
1119 AC_CHECK_HEADER(pcre/pcreposix.h, [
1120 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)])
1121 ], [have_pcreposix=no])
1123 ], [have_pcreposix=no], -lpcre)
1125 AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no], -lpcre)
1127 dnl =================================================================
1129 dnl =================================================================
1133 dnl =================================================================
1135 dnl =================================================================
1137 AC_ARG_ENABLE(toggle,
1138 [ --disable-toggle Don't support temporary disable],
1139 [if test $enableval = yes; then
1140 AC_DEFINE(FEATURE_TOGGLE)
1141 fi],AC_DEFINE(FEATURE_TOGGLE))
1143 AC_ARG_ENABLE(force,
1144 [ --disable-force Don't allow single-page disable],
1145 [if test $enableval = yes; then
1146 AC_DEFINE(FEATURE_FORCE_LOAD)
1147 fi],AC_DEFINE(FEATURE_FORCE_LOAD))
1149 AC_ARG_ENABLE(fast-redirects,
1150 [ --disable-fast-redirects Don't support fast redirects],
1151 [if test $enableval = yes; then
1152 AC_DEFINE(FEATURE_FAST_REDIRECTS)
1153 fi], AC_DEFINE(FEATURE_FAST_REDIRECTS))
1155 AC_ARG_ENABLE(killpopup,
1156 [ --disable-killpopup Never block popups],
1157 [if test $enableval = yes; then
1158 AC_DEFINE(FEATURE_KILL_POPUPS)
1159 fi],AC_DEFINE(FEATURE_KILL_POPUPS))
1161 AC_ARG_ENABLE(stats,
1162 [ --disable-stats Don't keep statistics],
1163 [if test $enableval = yes; then
1164 AC_DEFINE(FEATURE_STATISTICS)
1165 fi],AC_DEFINE(FEATURE_STATISTICS))
1167 AC_ARG_ENABLE(ie-images,
1168 [ --enable-ie-images Enable a quick but not always reliable auto-detect whether requests from
1169 MS Internet Explorer are for an image or not.],
1170 [if test $enableval = yes; then
1171 AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE)
1174 AC_ARG_ENABLE(image-blocking,
1175 [ --disable-image-blocking Don't try to figure out whether a request is
1176 for an image or HTML - assume HTML.],
1177 [if test $enableval = yes; then
1178 AC_DEFINE(FEATURE_IMAGE_BLOCKING)
1180 AC_DEFINE(FEATURE_IMAGE_BLOCKING))
1182 AC_ARG_ENABLE(acl-files,
1183 [ --disable-acl-files Prevents the use of ACL files to control access to
1184 the proxy by IP address.],
1185 [if test $enableval = yes; then
1186 AC_DEFINE(FEATURE_ACL)
1188 AC_DEFINE(FEATURE_ACL))
1190 AC_ARG_ENABLE(trust-files,
1191 [ --disable-trust-files Prevents the use of trust files.],
1192 [if test $enableval = yes; then
1193 AC_DEFINE(FEATURE_TRUST)
1195 AC_DEFINE(FEATURE_TRUST))
1197 AC_ARG_ENABLE(jar-files,
1198 [ --disable-jar-files Prevents the use of jar files to capture cookies.],
1199 [if test $enableval = yes; then
1200 AC_DEFINE(FEATURE_COOKIE_JAR)
1202 AC_DEFINE(FEATURE_COOKIE_JAR))
1204 AC_ARG_ENABLE(editor,
1205 [ --disable-editor Prevents the use of the web-based actions file
1206 editor and web-based temporary disable setting.],
1207 [if test $enableval = yes; then
1208 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS)
1210 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS))
1212 AC_ARG_ENABLE(no-gifs,
1213 [ --enable-no-gifs Use politically correct PNG format instead of GIF
1214 for built-in images. May not work with all browsers.],
1215 [if test $enableval = yes; then
1216 AC_DEFINE(FEATURE_NO_GIFS)
1220 dnl pcre/pcrs is needed for CGI anyway, so
1221 dnl the choice is only between static and
1224 AC_ARG_ENABLE(dynamic-pcre,
1225 [ --disable-dynamic-pcre Use the built-in, static pcre, even if
1226 libpcre is available],
1227 [ if test $enableval = "no"; then have_pcre=no; fi ])
1229 AC_ARG_ENABLE(dynamic-pcrs,
1230 [ --disable-dynamic-pcrs Use the built-in, static pcrs, even if
1231 libpcrs is available],
1232 [ if test $enableval = "no"; then have_pcrs=no; fi ])
1235 # If we have libpcre and either we also have pcreposix or
1236 # we don't need pcreposix, then link pcre dynamically; else
1237 # build it and link statically
1239 if test $have_pcre = "yes"; then
1240 echo "using libpcre"
1243 LIBS="$LIBS -lpcre -lpcreposix"
1245 echo "using built-in static pcre"
1247 AC_DEFINE(STATIC_PCRE)
1251 # If we have libpcrs and pcre is linked dynamically
1252 # then also link pcrs dynamically, else build and link
1255 if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
1256 echo "using libpcrs"
1260 echo "using built-in static pcrs"
1261 AC_DEFINE(STATIC_PCRS)
1265 AC_SUBST(STATIC_PCRE_ONLY)
1266 AC_SUBST(STATIC_PCRS_ONLY)
1268 dnl =================================================================
1269 dnl Final cleanup and output
1270 dnl =================================================================
1272 dnl Remove the SPECIAL_CFLAGS stuff from CFLAGS, and add it seperately
1274 CFLAGS=$old_CFLAGS_nospecial
1275 AC_SUBST(SPECIAL_CFLAGS)
1277 AC_SUBST(PTHREAD_LIB)
1279 AC_OUTPUT(GNUmakefile doc/source/ldp.dsl)