1 dnl Process this file with autoconf to produce a configure script.
3 dnl $Id: configure.in,v 1.68.2.6 2002/09/25 15:35:15 oes Exp $
5 dnl Written by and Copyright (C) 2001, 2002 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.6 2002/09/25 15:35:15 oes
32 dnl Marking as non-release
34 dnl Revision 1.68.2.5 2002/08/25 23:37:00 hal9
35 dnl Getting ready for 3.0 release.
37 dnl Revision 1.68.2.4 2002/08/10 11:21:57 oes
38 dnl - Set Version to 2.9.20 (beta)
39 dnl - Add two AC_DEFINEs that indicate if the pcre*.h headers
40 dnl are located in a pcre/ subdir to the include path.
42 dnl Revision 1.68.2.3 2002/08/06 11:29:36 oes
43 dnl Fixed detection/inclusion of pcre.h, which is in a pcre subdir on RH
45 dnl Revision 1.68.2.2 2002/07/30 19:36:09 hal9
46 dnl Bump version to 2.9.17.
48 dnl Revision 1.68.2.1 2002/07/26 15:21:12 oes
49 dnl Bumped version number for 2.9.16 freeze
51 dnl Revision 1.68 2002/05/25 16:54:54 jongfoster
52 dnl Detect if the compiler supports -pthread.
53 dnl Hopefully this will fix bug 560442. (I don't have a HP PA-RISC
54 dnl machine to test this!)
56 dnl Revision 1.67 2002/05/03 14:33:59 oes
57 dnl Generate doc/soucre/ldp.dsl
59 dnl Revision 1.66 2002/05/03 00:41:56 oes
60 dnl Set version to 2.9.15 to comply with new versioning scheme
62 dnl Revision 1.65 2002/04/25 19:13:57 morcego
63 dnl Removed RPM release number declaration on configure.in
64 dnl Changed makefile to use given value for RPM_PACKAGEV when on uploading
65 dnl targets (will produce an error, explaining who to do it, if no value
68 dnl Revision 1.64 2002/04/22 16:32:31 morcego
69 dnl configure.in, *.spec: Bumping release to 2 (2.9.14-2)
70 dnl -rh.spec: uid and gid are now macros
71 dnl -suse.spec: Changing the header Copyright to License (Copyright is
74 dnl Revision 1.63 2002/04/11 11:00:21 oes
75 dnl Applied Moritz' fix for socklen_t on Solaris
77 dnl Revision 1.62 2002/04/11 10:09:20 oes
80 dnl Revision 1.61 2002/04/10 18:14:45 morcego
81 dnl - (privoxy-rh.spec only) Relisting template files on the %%files section
82 dnl - (configure.in, privoxy-rh.spec) Bumped package release to 5
84 dnl Revision 1.60 2002/04/09 16:38:49 oes
85 dnl Added detection of missing config.h.in
87 dnl Revision 1.59 2002/04/06 20:23:55 jongfoster
88 dnl Removing unnessacery tests (C++, ranlib)
90 dnl Revision 1.58 2002/04/04 20:49:20 swa
91 dnl attempt to consolidate the
92 dnl different dokbook versions.
94 dnl Revision 1.57 2002/04/04 00:36:36 gliptak
95 dnl always use pcre for matching
97 dnl Revision 1.56 2002/04/03 22:28:03 gliptak
98 dnl Removed references to gnu_regex
100 dnl Revision 1.55 2002/04/03 03:54:38 gliptak
101 dnl Checking pcre version
103 dnl Revision 1.54 2002/04/01 00:54:24 gliptak
104 dnl More changes needed around regex support.
106 dnl Revision 1.53 2002/03/29 20:09:01 swa
109 dnl Revision 1.52 2002/03/29 19:51:40 gliptak
110 dnl Correcting compile problem with Debian
112 dnl Revision 1.51 2002/03/28 20:43:00 swa
113 dnl set make correctly
115 dnl Revision 1.50 2002/03/27 03:03:45 hal9
116 dnl Add test for man2html
118 dnl Revision 1.49 2002/03/27 02:19:52 david__schmidt
119 dnl More Mac OSX support:
120 dnl - Get rid of extraneous, noisy -pthread warnings
121 dnl - Define unix so we get oes' unix-tagged changes
123 dnl Revision 1.48 2002/03/26 22:29:54 swa
124 dnl we have a new homepage!
126 dnl Revision 1.47 2002/03/26 16:41:00 hal9
127 dnl Upped RPM Release to 3 (need to build new RH packages)
129 dnl Revision 1.46 2002/03/24 18:55:06 jongfoster
130 dnl Making Docbook work under Windows
132 dnl Revision 1.45 2002/03/24 14:19:55 swa
133 dnl set rpm package release in configure.in. nowhere else.
135 dnl Revision 1.44 2002/03/24 13:25:43 swa
136 dnl name change related issues
138 dnl Revision 1.43 2002/03/24 12:56:21 swa
139 dnl name change related issues.
141 dnl Revision 1.42 2002/03/22 18:11:37 jongfoster
142 dnl Bumping version number to 2.9.12
144 dnl Revision 1.41 2002/03/19 19:30:04 morcego
145 dnl - Fixing stylesheet checking on configure. If it is found, no further checks
148 dnl - configure will now check for db2html or docbook2html (should work now
149 dnl on SuSe without the docbktls package)
151 dnl Revision 1.40 2002/03/09 14:33:30 oes
152 dnl Fixing the (harmless) AC_CHECK_FILE warnings
154 dnl Revision 1.39 2002/03/08 16:46:13 oes
155 dnl Added --enable-no-gifs
157 dnl Revision 1.38 2002/03/08 14:13:50 morcego
158 dnl Fixing configure, to remove a command not found error.
160 dnl Revision 1.37 2002/03/08 12:58:21 oes
161 dnl Tiny bugfix in AC_ARG_WITH(debug)
163 dnl Revision 1.36 2002/03/06 23:50:36 morcego
164 dnl Will not test for a text browser if we are not using docbook.
166 dnl Revision 1.35 2002/03/06 21:55:52 morcego
167 dnl New configure option: --with-docbook=(yes|no|directory)
168 dnl Preliminary new platform detection code included. Will work with the
169 dnl old one for now. No use just trowing it away
171 dnl Revision 1.34 2002/03/06 20:57:00 morcego
172 dnl Fixing detection of stylesheets on SuSe.
174 dnl Revision 1.33 2002/03/05 17:31:11 morcego
175 dnl Search for docbook.dsl. Should solve portability problems for SuSe.
177 dnl Revision 1.32 2002/03/05 14:07:43 morcego
178 dnl configure now detects rpm topdir, and change GNUmakefile acordingly
179 dnl (based on sugestion by Sarantis Paskalis)
181 dnl Revision 1.31 2002/03/05 13:43:28 morcego
182 dnl Checking for text browser, so redhat-dok can work.
184 dnl Revision 1.30 2002/03/04 17:58:01 oes
185 dnl Deleted _DEBUG and PID_FILE_PATH
187 dnl Revision 1.29 2002/02/28 14:20:53 oes
188 dnl Fixed detection of gethost*_r functions on Solaris
190 dnl Revision 1.28 2002/02/27 15:02:38 oes
191 dnl Incremented version number
193 dnl Revision 1.27 2002/01/10 12:35:18 oes
194 dnl Added cross-compile defaults to the AC_CHECK_SIZEOF macros
195 dnl to silence autoconf warnings. Numbers are for Intel/Linux.
196 dnl Is there a better way?
198 dnl Revision 1.26 2002/01/09 14:29:49 oes
199 dnl - Added AC_CHECK_FUNC tests for the availability of
200 dnl gethostbyname_r, gethostbyaddr_r, gmtime_r and
201 dnl localtime_r, as well as AC_TRY_COMPILE tests to
202 dnl determine their signatures.
204 dnl - Fixed a bug with the init of CFLAGS that was
205 dnl reported by barsnick
207 dnl Revision 1.25 2002/01/04 15:27:18 oes
208 dnl Changed quoting of CODE_STATUS for use in make
210 dnl Revision 1.24 2001/12/30 14:07:31 steudten
211 dnl - Add signal handling (unix)
212 dnl - Add SIGHUP handler (unix)
213 dnl - Add creation of pidfile (unix)
214 dnl - Add action 'top' in rc file (RH)
215 dnl - Add entry 'SIGNALS' to manpage
216 dnl - Add exit message to logfile (unix)
218 dnl Revision 1.23 2001/12/09 20:24:42 david__schmidt
219 dnl Change from "alpha" to "beta" in configure.in
221 dnl Revision 1.22 2001/12/01 11:24:01 jongfoster
222 dnl Renaming Makefile.in to GNUmakefile.in so that non-GNU versions of
223 dnl make break in a more obvious way.
225 dnl Revision 1.21 2001/11/30 21:35:54 jongfoster
226 dnl Bumping version number to 2.9.10
228 dnl Revision 1.20 2001/10/23 21:24:09 jongfoster
229 dnl Support for FEATURE_CGI_EDIT_ACTIONS
231 dnl Revision 1.19 2001/10/07 15:33:14 oes
232 dnl Removed FEATURE_DENY_GZIP
233 dnl Bumped up version number
235 dnl Revision 1.18 2001/09/13 13:10:24 steudten
237 dnl PreWork for Debug Interface.
238 dnl Add new option "--with-debug" to enable debugging (flags aso.)
240 dnl Revision 1.17 2001/09/12 23:44:55 david__schmidt
241 dnl Mac OSX (Darwin) support added.
243 dnl Revision 1.16 2001/09/12 22:55:45 joergs
244 dnl AmigaOS support added.
246 dnl Revision 1.15 2001/09/12 17:28:59 david__schmidt
248 dnl OS/2 port: update autoconf'd support for the platform.
250 dnl Revision 1.14 2001/07/30 22:12:11 jongfoster
251 dnl Fixing Solaris build (I hope) and tidying up #defines:
252 dnl - All feature #defines are now of the form FEATURE_xxx
253 dnl - Permanently turned off WIN_GUI_EDIT
254 dnl - Permanently turned on WEBDAV and SPLIT_PROXY_ARGS
256 dnl Revision 1.13 2001/07/29 17:09:17 jongfoster
257 dnl Major changes to build system in order to fix these bugs:
258 dnl - pthreads under Linux was broken - changed -lpthread to -pthread
259 dnl - Compiling in MinGW32 mode under CygWin now correctly detects
260 dnl which shared libraries are available
261 dnl - Solaris support (?) (Not tested under Solaris yet)
263 dnl Revision 1.12 2001/07/25 19:16:27 oes
264 dnl Bumping version number to 2.9.8
266 dnl Revision 1.11 2001/07/21 18:00:07 jongfoster
267 dnl Bumping version number to 2.9.7
269 dnl Revision 1.10 2001/07/18 17:25:04 oes
272 dnl Revision 1.9 2001/07/15 19:45:13 jongfoster
273 dnl Added support for linking with POSIX threads library
275 dnl Revision 1.8 2001/07/15 17:54:29 jongfoster
276 dnl Renaming #define STATIC to STATIC_PCRE
277 dnl Adding new #define FEATURE_PTHREAD that will be used to enable
278 dnl POSIX threads support.
280 dnl Revision 1.7 2001/07/13 13:58:05 oes
281 dnl Completely reorganized the selection scheme for
282 dnl pcre, pcreposix, pcrs and gnu_regex:
284 dnl The presence of shared pcre, pcreposix or pcrs
285 dnl libraried is now autodetected. Additionally, the
286 dnl user can enforce using the built-in static variants
287 dnl by specifying --disable-dynamic-(pcre|pcrs).
288 dnl Care is taken to avoid that pcre is dyn, while pcreposix
289 dnl is static, if both are used and that pcrs is static if
292 dnl The choice between pcre, gnu or no regex for actionsfile
293 dnl URL matching is now via
294 dnl --(enable|disable)-regex-matching[=(gnu|pcre|no)] with the
295 dnl default being pcre.
297 dnl Revision 1.6 2001/06/29 21:56:40 oes
300 dnl Revision 1.5 2001/06/29 13:26:27 oes
301 dnl Introduced #define CODE_STATUS
303 dnl Revision 1.4 2001/05/29 09:50:24 jongfoster
304 dnl Unified blocklist/imagelist/permissionslist.
305 dnl File format is still under discussion, but the internal changes
306 dnl are (mostly) done.
308 dnl Also modified interceptor behaviour:
309 dnl - We now intercept all URLs beginning with one of the following
310 dnl prefixes (and *only* these prefixes):
312 dnl * http://ijbswa.sf.net/config/
313 dnl * http://ijbswa.sourceforge.net/config/
314 dnl - New interceptors "home page" - go to http://i.j.b/ to see it.
315 dnl - Internal changes so that intercepted and fast redirect pages
316 dnl are not replaced with an image.
317 dnl - Interceptors now have the option to send a binary page direct
318 dnl to the client. (i.e. ijb-send-banner uses this)
319 dnl - Implemented show-url-info interceptor. (Which is why I needed
320 dnl the above interceptors changes - a typical URL is
321 dnl "http://i.j.b/show-url-info?url=www.somesite.com/banner.gif".
322 dnl The previous mechanism would not have intercepted that, and
323 dnl if it had been intercepted then it then it would have replaced
324 dnl it with an image.)
326 dnl Revision 1.3 2001/05/22 18:46:04 oes
328 dnl - Enabled filtering banners by size rather than URL
329 dnl by adding patterns that replace all standard banner
330 dnl sizes with the "Junkbuster" gif to the re_filterfile
332 dnl - Enabled filtering WebBugs by providing a pattern
333 dnl which kills all 1x1 images
335 dnl - Added support for PCRE_UNGREEDY behaviour to pcrs,
336 dnl which is selected by the (nonstandard and therefore
337 dnl capital) letter 'U' in the option string.
338 dnl It causes the quantifiers to be ungreedy by default.
339 dnl Appending a ? turns back to greedy (!).
341 dnl - Added a new interceptor ijb-send-banner, which
342 dnl sends back the "Junkbuster" gif. Without imagelist or
343 dnl MSIE detection support, or if tinygif = 1, or the
344 dnl URL isn't recognized as an imageurl, a lame HTML
345 dnl explanation is sent instead.
347 dnl - Added new feature, which permits blocking remote
348 dnl script redirects and firing back a local redirect
350 dnl The feature is conditionally compiled, i.e. it
351 dnl can be disabled with --disable-fast-redirects,
352 dnl plus it must be activated by a "fast-redirects"
353 dnl line in the config file, has its own log level
354 dnl and of course wants to be displayed by show-proxy-args
355 dnl Note: Boy, all the #ifdefs in 1001 locations and
356 dnl all the fumbling with configure.in and acconfig.h
357 dnl were *way* more work than the feature itself :-(
359 dnl - Because a generic redirect template was needed for
360 dnl this, tinygif = 3 now uses the same.
362 dnl - Moved GIFs, and other static HTTP response templates
365 dnl - Some minor fixes
367 dnl - Removed some >400 CRs again (Jon, you really worked
370 dnl Revision 1.2 2001/05/20 01:21:20 jongfoster
371 dnl Version 2.9.4 checkin.
372 dnl - Merged popupfile and cookiefile, and added control over PCRS
373 dnl filtering, in new "permissionsfile".
374 dnl - Implemented LOG_LEVEL_FATAL, so that if there is a configuration
375 dnl file error you now get a message box (in the Win32 GUI) rather
376 dnl than the program exiting with no explanation.
377 dnl - Made killpopup use the PCRS MIME-type checking and HTTP-header
379 dnl - Removed tabs from "config"
380 dnl - Moved duplicated url parsing code in "loaders.c" to a new funcition.
381 dnl - Bumped up version number.
383 dnl Revision 1.1.1.1 2001/05/15 13:58:50 oes
384 dnl Initial import of version 2.9.3 source tree
389 dnl =================================================================
390 dnl AutoConf Initialization
391 dnl =================================================================
393 AC_REVISION($Revision: 1.68.2.6 $)
396 if test ! -f config.h.in; then
397 echo "You need to run autoheader first. "
398 echo -n "Shall I do this for you now? (y/n) "
400 if test "$answer" != "y"; then
407 AC_CONFIG_HEADER([config.h])
412 AC_ARG_WITH(docbook, dnl
413 --with-docbook=[[yes|no|directory]]
414 Enable docbook documentation creation
415 (default = yes, for gnu and linux),[dnl
416 case "$with_docbook" in
426 AC_ARG_WITH(db2html, dnl
427 --with-db2html=<path/executable>
428 Set the location of the docbook to html converter
429 (default = search),[dnl
433 dnl =================================================================
434 dnl Application version number
435 dnl =================================================================
440 CODE_STATUS="UNRELEASED"
442 dnl CODE_STATUS can be "alpha", "beta", or "stable", and will be
443 dnl used for CGI output. Set version to 0.0.0 and status to "UNRELEASED"
444 dnl whenever CVS in a stable branch differs from the last release.
446 dnl =================================================================
447 dnl Substitute the version numbers
448 dnl =================================================================
450 AC_SUBST(VERSION_MAJOR)
451 AC_SUBST(VERSION_MINOR)
452 AC_SUBST(VERSION_POINT)
453 AC_SUBST(CODE_STATUS)
456 AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR})
457 AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR})
458 AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT})
459 AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}")
460 AC_DEFINE_UNQUOTED(CODE_STATUS,"${CODE_STATUS}")
462 dnl =================================================================
463 dnl Checks for programs needed to build.
464 dnl =================================================================
472 AC_CHECK_PROG(GDB,gdb,yes,no)
473 AC_PATH_PROG(BGROUPS,groups,no,/bin:/usr/bin:/usr/local/bin)
474 AC_PATH_PROG(ID,id,no,/bin:/usr/bin:/usr/local/bin)
478 dnl =================================================================
479 dnl debug, gcc and gdb support
480 dnl =================================================================
483 [ --with-debug Enable debug mode],
485 if test "x$withval" != "xno" ; then
486 if test $ac_cv_prog_cc_g = yes; then
487 if test "$GCC" = yes; then
493 CFLAGS="$CFLAGS -Wshadow -Wconversion"
501 if test "X$CFLAGS" = "X"; then # if CFLAGS are unset
502 if test "$GCC" = yes; then
511 dnl =================================================================
512 dnl Check for user and group validity
513 dnl =================================================================
515 $ID privoxy >/dev/null 2>/dev/null
516 if test $? -ne 0 ; then
517 AC_MSG_WARN(There is no user 'privoxy' on this system)
519 AC_MSG_CHECKING([for user])
521 [ --with-user=privoxy Set user under which privoxy will run],
523 if test "x$withval" != "xyes"; then
524 if test $ID = no ; then
525 AC_MSG_ERROR(There is no 'id' program on this system)
527 AC_MSG_RESULT($with_user)
528 $ID $with_user 2>/dev/null >/dev/null
529 if test $? -eq 0 ; then
532 AC_MSG_ERROR(There is no user '$with_user' on this system)
536 AC_MSG_ERROR(We need a user if you give me this parameter)
540 if test $ID = no ; then
541 AC_MSG_ERROR(There is no 'id' programm on this system)
543 AC_MSG_RESULT(none specified)
550 AC_MSG_CHECKING([for group])
552 [ --with-group=privoxy Set group for privoxy],
554 if test "x$withval" != "xyes"; then
555 if test $BGROUPS = no ; then
556 AC_MSG_ERROR(There is no 'groups' program on this system)
558 AC_MSG_RESULT($with_group)
559 $BGROUPS $USER >/dev/null
560 if test $? -eq 0 ; then
561 # FIXME: this fails if valid group, but not first group
563 if test "$with_group" != "`$BGROUPS $USER | sed 's/.*: //' 2>/dev/null |$AWK '{print $1}'`" ; then
564 AC_MSG_ERROR(The given value '$withval' does not match group entry)
569 AC_MSG_ERROR(There is no group entry for user '$USER')
573 AC_MSG_ERROR(We need a group if you give me this parameter)
577 if test $BGROUPS = no ; then
578 AC_MSG_ERROR(There is no 'groups' programm on this system)
580 AC_MSG_RESULT(none specified)
587 dnl =================================================================
588 dnl additional gcc flags
589 dnl =================================================================
592 CFLAGS="-pipe $CFLAGS"
596 dnl =================================================================
598 dnl =================================================================
600 dnl Must do this first.
602 dnl Reason: This sets CFLAGS in order to switch the Cygwin compiler
603 dnl into Cygwin or MinGW32 modes. Depending on the mode selected,
604 dnl the compiler will use completely different sets of library
605 dnl and include files.
607 dnl =================================================================
612 if test "$MINGW32" = "yes"; then
615 if test "$CYGWIN" = "yes"; then
622 if test $dodk = auto; then
624 if test $target_type = unix; then
633 dnl Decide what to do based on target_type
634 dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
635 dnl This is because we don't know yet whether pthread is enabled.
637 AC_ARG_ENABLE(mingw32,
638 [ --enable-mingw32 Use mingw32 for a Windows GUI],
639 [if test $enableval = yes; then
643 if test $target_type = mingw; then
645 SPECIAL_CFLAGS="-mwindows -mno-cygwin"
646 PTHREAD_LIB=-lpthreadGC
647 echo "Using mingw32 (Win32 GUI)"
650 if test $target_type = cygwin; then
651 SPECIAL_CFLAGS="-mno-win32"
653 echo "Using Cygnus (Win32 command line)"
656 PTHREAD_LIB=-lpthread
661 dnl Checking which text html browser we have avaliable
662 if test $dodk != no; then
663 AC_CHECK_PROGS(WDUMP,w3m lynx links,false)
664 if test "$WDUMP" = false; then
665 AC_MSG_WARN(You need some kind of text browser to build documentation \(w3m, lynx and links are supported\))
667 if test $DB2HTML = false; then
668 dnl We need to clean the variable, otherwise AC_CHECK_PROGS
671 AC_CHECK_PROGS(DB2HTML,db2html docbook2html,false)
677 dnl If we use rpm, we need to check where %_topdir is
678 AC_CHECK_PROGS(RPMBIN,rpm,false)
679 if test $RPMBIN != false; then
680 RPM_BASE=`rpm --eval "%{_topdir}"`
681 if test "$RPM_BASE" = ""; then
682 RPM_BASE=/usr/src/redhat
687 dnl Check for jade, so we can build the documentation
688 AC_CHECK_PROGS(JADEBIN,jade openjade,false)
691 dnl Check for man2html for docs.
692 AC_CHECK_PROGS(MAN2HTML,man2html,false)
695 dnl Set doc status flag for conditional content inclusions
696 DOC_STATUS=p-not-stable
697 if test $CODE_STATUS = stable; then
698 DOC_STATUS="p-stable"
702 dnl Checking for the docbook.dsl stylesheet file
703 dnl It is still not portable (directory slash)
705 if test $dodk = yes; then
706 if test $DKPREFIX = none; then
707 for i in /usr/share/sgml/docbook/dsssl-stylesheets /usr/share/sgml/docbkdsl /usr/share/sgml/docbook-dsssl; do
708 dnl echo -n does not fly with /bin/sh.
709 dnl echo -n "checking for $i/html/docbook.dsl..."
710 AC_MSG_CHECKING([for $i])
711 if test -f $i/html/docbook.dsl; then
719 # where are the catalogs?
720 for i in /usr/share/sgml/CATALOG.docbk30 /usr/share/sgml/CATALOG.docbk31; do
721 dnl echo -n "checking for $i..."
722 AC_MSG_CHECKING([for $i])
725 JADECAT="$JADECAT -c $i"
735 dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
736 old_CFLAGS_nospecial=$CFLAGS
737 CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
739 # Hack to force AutoConf to use the CFLAGS we just set
740 dnl Warning: This may break with a future version of Autoconf
741 dnl Tested with autoconf 2.13
742 ac_cpp='$CPP $CPPFLAGS $SPECIAL_CFLAGS'
743 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
744 ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
747 dnl =================================================================
749 dnl =================================================================
751 AC_CHECK_HEADER(pthread.h, [have_pthread=yes], [have_pthread=no])
753 AC_ARG_ENABLE(pthread,
754 [ --disable-pthread Don't use POSIX threads (pthreads)],
755 [if test $enableval = no; then
760 if test $have_pthread = yes; then
762 AC_DEFINE(FEATURE_PTHREAD)
763 echo Using POSIX threads
764 if test "$GCC" = "yes"; then
765 # Set a GCC specific switch:
766 if test "$target_type" = "unix"; then
767 ac_jgf_save_CFLAGS=$CFLAGS
768 CFLAGS="$CFLAGS -pthread"
769 AC_TRY_LINK([#include <pthread.h>],
770 [void *p = pthread_create;],
772 # This compiler switch makes GCC on Linux thread-safe
773 # However, it's not supported on most other OS.
775 SPECIAL_CFLAGS="-pthread"
777 CFLAGS=$ac_jgf_save_CFLAGS
782 echo Using native threads
785 AC_SUBST(PTHREAD_ONLY)
787 dnl =================================================================
788 dnl Support for thread-safe versions of gethostbyaddr, gethostbyname,
789 dnl gmtime and localtime
790 dnl =================================================================
792 dnl Next line needed to find the gethost*_r functions on Solaris
793 AC_CHECK_LIB(nsl, gethostbyname)
795 AC_CHECK_FUNC(gethostbyaddr_r, [
796 AC_MSG_CHECKING([signature of gethostbyaddr_r])
800 struct hostent *h, *hp;
803 (void) gethostbyaddr_r(a, l, t, h, b, bl, &hp, &e)
805 AC_DEFINE(HAVE_GETHOSTBYADDR_R_8_ARGS)
806 AC_MSG_RESULT([8 args])
814 (void) gethostbyaddr_r(a, l, t, h, b, bl, &e)
816 AC_DEFINE(HAVE_GETHOSTBYADDR_R_7_ARGS)
817 AC_MSG_RESULT([7 args])
822 struct hostent_data *d;
826 (void) gethostbyaddr_r(a, l, t, h, d)
828 AC_DEFINE(HAVE_GETHOSTBYADDR_R_5_ARGS)
829 AC_MSG_RESULT([5 args])
831 AC_MSG_RESULT(unrecognised)
839 AC_CHECK_FUNC(gethostbyname_r, [
840 AC_MSG_CHECKING([signature of gethostbyname_r])
844 struct hostent *h, *r;
847 (void) gethostbyname_r(n, h, b, bl, &r, &e)
849 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARGS)
850 AC_MSG_RESULT([6 args])
858 (void) gethostbyname_r(n, h, b, bl, &e)
860 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARGS)
861 AC_MSG_RESULT([5 args])
866 struct hostent_data *d;
869 (void) gethostbyname_r(n, h, d)
871 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARGS)
872 AC_MSG_RESULT([3 args])
874 AC_MSG_RESULT(unrecognised)
882 AC_CHECK_FUNC(gmtime_r, [
883 AC_MSG_CHECKING([signature of gmtime_r])
889 (void) gmtime_r(t, tm)
892 AC_DEFINE(HAVE_GMTIME_R)
894 AC_MSG_RESULT(unrecognised)
900 AC_CHECK_FUNC(localtime_r, [
901 AC_MSG_CHECKING([signature of localtime_r])
907 (void) localtime_r(t, tm)
910 AC_DEFINE(HAVE_LOCALTIME_R)
912 AC_MSG_RESULT(unrecognised)
918 dnl =================================================================
920 dnl FIXME: Not tested on Solaris yet...
921 dnl ISFIXED: Have tested it on Solaris, but there are other ways to
922 dnl make these checks generic, e.g.:
923 dnl AC_CHECK_FUNC(getsockopt, , AC_CHECK_LIB(socket, getsockopt))
924 dnl (Moritz Barsnick <moritz@barsnick.net>)
925 dnl =================================================================
931 *-solaris*) SOCKET_LIB="-lsocket -lnsl"
932 AC_DEFINE(__EXTENSIONS__)
933 if test "$GCC" = "yes"; then
934 # Set a GCC specific switch:
935 # This compiler switch makes Solaris thread-safe
937 SPECIAL_CFLAGS="-pthreads"
939 # What do we do without GCC? Guess this:
940 SPECIAL_CFLAGS="-D_REENTRANT"
947 dnl =================================================================
948 dnl Solaris problem, and others perhaps (socklen_t is undefined)
949 dnl =================================================================
951 AC_MSG_CHECKING([for socklen_t])
952 AC_EGREP_HEADER(socklen_t, sys/socket.h, AC_MSG_RESULT([yes]),
954 AC_DEFINE(socklen_t,int,
955 [ Define to 'int' if <sys/socket.h> doesn't have it. ]))
958 dnl =================================================================
960 dnl =================================================================
963 *-os2-emx*) SOCKET_LIB=-lsocket
969 dnl =================================================================
971 dnl =================================================================
974 *-apple-darwin*) SPECIAL_CFLAGS="-Dunix"
978 dnl =================================================================
980 dnl =================================================================
985 *-amigaos) AMIGAOS_ONLY=
989 AC_SUBST(AMIGAOS_ONLY)
991 dnl =================================================================
992 dnl Check for standard compiler stuff
993 dnl =================================================================
1004 AC_CHECK_SIZEOF(int, 4)
1005 AC_CHECK_SIZEOF(char *, 4)
1006 AC_CHECK_SIZEOF(long, 4)
1007 AC_CHECK_SIZEOF(long long, 8)
1008 AC_CHECK_SIZEOF(size_t, 4)
1010 dnl Checks for header files.
1011 dnl AC_HEADER_SYS_WAIT
1012 dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h)
1013 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])
1015 dnl Checks for library functions.
1017 dnl AC_CHECK_FUNC(strstr)
1018 dnl bcopy and memmove are for PCRE
1019 AC_CHECK_FUNCS([strerror bcopy memmove])
1020 AC_PROG_GCC_TRADITIONAL
1021 dnl uncommenting does not work for swa. suse linux
1025 dnl uncommenting does not work for swa. suse linux
1027 AC_CHECK_FUNCS([atexit getcwd gethostbyaddr gethostbyname inet_ntoa localtime_r memchr memmove memset regcomp select setlocale socket strchr strdup strerror strftime strstr strtoul])
1030 dnl =================================================================
1031 dnl Checks for libraries.
1032 dnl =================================================================
1033 dnl Note: Some systems may have the library but not the system header
1034 dnl file, so we must check for both.
1035 dnl Also check for correct version
1036 AC_CHECK_LIB(pcre, pcre_compile, [
1037 AC_CHECK_HEADER(pcre.h, [
1038 AC_EGREP_HEADER(pcre_fullinfo, pcre.h, [have_pcre=yes], [AC_MSG_WARN([[pcre old version installed]]); have_pcre=no])
1040 AC_CHECK_HEADER(pcre/pcre.h, [
1041 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])
1046 AC_CHECK_LIB(pcreposix, regcomp, [
1047 AC_CHECK_HEADER(pcreposix.h, [
1048 AC_EGREP_HEADER(pcreposix_regerror, pcreposix.h, [AC_MSG_WARN([[pcreposix old version installed]]); have_pcreposix=no], [have_pcreposix=yes])
1050 AC_CHECK_HEADER(pcre/pcreposix.h, [
1051 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)])
1052 ], [have_pcreposix=no])
1054 ], [have_pcreposix=no], -lpcre)
1056 AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no], -lpcre)
1058 dnl =================================================================
1060 dnl =================================================================
1064 dnl =================================================================
1066 dnl =================================================================
1068 AC_ARG_ENABLE(toggle,
1069 [ --disable-toggle Don't support temporary disable],
1070 [if test $enableval = yes; then
1071 AC_DEFINE(FEATURE_TOGGLE)
1072 fi],AC_DEFINE(FEATURE_TOGGLE))
1074 AC_ARG_ENABLE(force,
1075 [ --disable-force Don't allow single-page disable],
1076 [if test $enableval = yes; then
1077 AC_DEFINE(FEATURE_FORCE_LOAD)
1078 fi],AC_DEFINE(FEATURE_FORCE_LOAD))
1080 AC_ARG_ENABLE(fast-redirects,
1081 [ --disable-fast-redirects Don't support fast redirects],
1082 [if test $enableval = yes; then
1083 AC_DEFINE(FEATURE_FAST_REDIRECTS)
1084 fi], AC_DEFINE(FEATURE_FAST_REDIRECTS))
1086 AC_ARG_ENABLE(killpopup,
1087 [ --disable-killpopup Never block popups],
1088 [if test $enableval = yes; then
1089 AC_DEFINE(FEATURE_KILL_POPUPS)
1090 fi],AC_DEFINE(FEATURE_KILL_POPUPS))
1092 AC_ARG_ENABLE(stats,
1093 [ --disable-stats Don't keep statistics],
1094 [if test $enableval = yes; then
1095 AC_DEFINE(FEATURE_STATISTICS)
1096 fi],AC_DEFINE(FEATURE_STATISTICS))
1098 AC_ARG_ENABLE(ie-images,
1099 [ --disable-ie-images Don't auto-detect whether a request from MS Internet
1100 Explorer is for an image or HTML.],
1101 [if test $enableval = yes; then
1102 AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE)
1104 AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE))
1106 AC_ARG_ENABLE(image-blocking,
1107 [ --disable-image-blocking Don't try to figure out whether a request is
1108 for an image or HTML - assume HTML.],
1109 [if test $enableval = yes; then
1110 AC_DEFINE(FEATURE_IMAGE_BLOCKING)
1112 AC_DEFINE(FEATURE_IMAGE_BLOCKING))
1114 AC_ARG_ENABLE(acl-files,
1115 [ --disable-acl-files Prevents the use of ACL files to control access to
1116 the proxy by IP address.],
1117 [if test $enableval = yes; then
1118 AC_DEFINE(FEATURE_ACL)
1120 AC_DEFINE(FEATURE_ACL))
1122 AC_ARG_ENABLE(trust-files,
1123 [ --disable-trust-files Prevents the use of trust files.],
1124 [if test $enableval = yes; then
1125 AC_DEFINE(FEATURE_TRUST)
1127 AC_DEFINE(FEATURE_TRUST))
1129 AC_ARG_ENABLE(jar-files,
1130 [ --disable-jar-files Prevents the use of jar files to capture cookies.],
1131 [if test $enableval = yes; then
1132 AC_DEFINE(FEATURE_COOKIE_JAR)
1134 AC_DEFINE(FEATURE_COOKIE_JAR))
1136 AC_ARG_ENABLE(editor,
1137 [ --disable-editor Prevents the use of the web-based actions file
1138 editor and web-based temporary disable setting.],
1139 [if test $enableval = yes; then
1140 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS)
1142 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS))
1144 AC_ARG_ENABLE(no-gifs,
1145 [ --enable-no-gifs Use politically correct PNG format instead of GIF
1146 for built-in images. May not work with all browsers.],
1147 [if test $enableval = yes; then
1148 AC_DEFINE(FEATURE_NO_GIFS)
1152 dnl pcre/pcrs is needed for CGI anyway, so
1153 dnl the choice is only between static and
1156 AC_ARG_ENABLE(dynamic-pcre,
1157 [ --disable-dynamic-pcre Use the built-in, static pcre, even if
1158 libpcre is available],
1159 [ if test $enableval = "no"; then have_pcre=no; fi ])
1161 AC_ARG_ENABLE(dynamic-pcrs,
1162 [ --disable-dynamic-pcrs Use the built-in, static pcrs, even if
1163 libpcrs is available],
1164 [ if test $enableval = "no"; then have_pcrs=no; fi ])
1167 # If we have libpcre and either we also have pcreposix or
1168 # we don't need pcreposix, then link pcre dynamically; else
1169 # build it and link statically
1171 if test $have_pcre = "yes"; then
1172 echo "using libpcre"
1175 LIBS="$LIBS -lpcre -lpcreposix"
1177 echo "using built-in static pcre"
1179 AC_DEFINE(STATIC_PCRE)
1183 # If we have libpcrs and pcre is linked dynamically
1184 # then also link pcrs dynamically, else build and link
1187 if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
1188 echo "using libpcrs"
1192 echo "using built-in static pcrs"
1193 AC_DEFINE(STATIC_PCRS)
1197 AC_SUBST(STATIC_PCRE_ONLY)
1198 AC_SUBST(STATIC_PCRS_ONLY)
1200 dnl =================================================================
1201 dnl Final cleanup and output
1202 dnl =================================================================
1204 dnl Remove the SPECIAL_CFLAGS stuff from CFLAGS, and add it seperately
1206 CFLAGS=$old_CFLAGS_nospecial
1207 AC_SUBST(SPECIAL_CFLAGS)
1209 AC_SUBST(PTHREAD_LIB)
1211 AC_OUTPUT(GNUmakefile doc/source/ldp.dsl)