1 dnl Process this file with autoconf to produce a configure script.
3 dnl $Id: configure.in,v 1.68 2002/05/25 16:54:54 jongfoster 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 2002/05/25 16:54:54 jongfoster
32 dnl Detect if the compiler supports -pthread.
33 dnl Hopefully this will fix bug 560442. (I don't have a HP PA-RISC
34 dnl machine to test this!)
36 dnl Revision 1.67 2002/05/03 14:33:59 oes
37 dnl Generate doc/soucre/ldp.dsl
39 dnl Revision 1.66 2002/05/03 00:41:56 oes
40 dnl Set version to 2.9.15 to comply with new versioning scheme
42 dnl Revision 1.65 2002/04/25 19:13:57 morcego
43 dnl Removed RPM release number declaration on configure.in
44 dnl Changed makefile to use given value for RPM_PACKAGEV when on uploading
45 dnl targets (will produce an error, explaining who to do it, if no value
48 dnl Revision 1.64 2002/04/22 16:32:31 morcego
49 dnl configure.in, *.spec: Bumping release to 2 (2.9.14-2)
50 dnl -rh.spec: uid and gid are now macros
51 dnl -suse.spec: Changing the header Copyright to License (Copyright is
54 dnl Revision 1.63 2002/04/11 11:00:21 oes
55 dnl Applied Moritz' fix for socklen_t on Solaris
57 dnl Revision 1.62 2002/04/11 10:09:20 oes
60 dnl Revision 1.61 2002/04/10 18:14:45 morcego
61 dnl - (privoxy-rh.spec only) Relisting template files on the %%files section
62 dnl - (configure.in, privoxy-rh.spec) Bumped package release to 5
64 dnl Revision 1.60 2002/04/09 16:38:49 oes
65 dnl Added detection of missing config.h.in
67 dnl Revision 1.59 2002/04/06 20:23:55 jongfoster
68 dnl Removing unnessacery tests (C++, ranlib)
70 dnl Revision 1.58 2002/04/04 20:49:20 swa
71 dnl attempt to consolidate the
72 dnl different dokbook versions.
74 dnl Revision 1.57 2002/04/04 00:36:36 gliptak
75 dnl always use pcre for matching
77 dnl Revision 1.56 2002/04/03 22:28:03 gliptak
78 dnl Removed references to gnu_regex
80 dnl Revision 1.55 2002/04/03 03:54:38 gliptak
81 dnl Checking pcre version
83 dnl Revision 1.54 2002/04/01 00:54:24 gliptak
84 dnl More changes needed around regex support.
86 dnl Revision 1.53 2002/03/29 20:09:01 swa
89 dnl Revision 1.52 2002/03/29 19:51:40 gliptak
90 dnl Correcting compile problem with Debian
92 dnl Revision 1.51 2002/03/28 20:43:00 swa
93 dnl set make correctly
95 dnl Revision 1.50 2002/03/27 03:03:45 hal9
96 dnl Add test for man2html
98 dnl Revision 1.49 2002/03/27 02:19:52 david__schmidt
99 dnl More Mac OSX support:
100 dnl - Get rid of extraneous, noisy -pthread warnings
101 dnl - Define unix so we get oes' unix-tagged changes
103 dnl Revision 1.48 2002/03/26 22:29:54 swa
104 dnl we have a new homepage!
106 dnl Revision 1.47 2002/03/26 16:41:00 hal9
107 dnl Upped RPM Release to 3 (need to build new RH packages)
109 dnl Revision 1.46 2002/03/24 18:55:06 jongfoster
110 dnl Making Docbook work under Windows
112 dnl Revision 1.45 2002/03/24 14:19:55 swa
113 dnl set rpm package release in configure.in. nowhere else.
115 dnl Revision 1.44 2002/03/24 13:25:43 swa
116 dnl name change related issues
118 dnl Revision 1.43 2002/03/24 12:56:21 swa
119 dnl name change related issues.
121 dnl Revision 1.42 2002/03/22 18:11:37 jongfoster
122 dnl Bumping version number to 2.9.12
124 dnl Revision 1.41 2002/03/19 19:30:04 morcego
125 dnl - Fixing stylesheet checking on configure. If it is found, no further checks
128 dnl - configure will now check for db2html or docbook2html (should work now
129 dnl on SuSe without the docbktls package)
131 dnl Revision 1.40 2002/03/09 14:33:30 oes
132 dnl Fixing the (harmless) AC_CHECK_FILE warnings
134 dnl Revision 1.39 2002/03/08 16:46:13 oes
135 dnl Added --enable-no-gifs
137 dnl Revision 1.38 2002/03/08 14:13:50 morcego
138 dnl Fixing configure, to remove a command not found error.
140 dnl Revision 1.37 2002/03/08 12:58:21 oes
141 dnl Tiny bugfix in AC_ARG_WITH(debug)
143 dnl Revision 1.36 2002/03/06 23:50:36 morcego
144 dnl Will not test for a text browser if we are not using docbook.
146 dnl Revision 1.35 2002/03/06 21:55:52 morcego
147 dnl New configure option: --with-docbook=(yes|no|directory)
148 dnl Preliminary new platform detection code included. Will work with the
149 dnl old one for now. No use just trowing it away
151 dnl Revision 1.34 2002/03/06 20:57:00 morcego
152 dnl Fixing detection of stylesheets on SuSe.
154 dnl Revision 1.33 2002/03/05 17:31:11 morcego
155 dnl Search for docbook.dsl. Should solve portability problems for SuSe.
157 dnl Revision 1.32 2002/03/05 14:07:43 morcego
158 dnl configure now detects rpm topdir, and change GNUmakefile acordingly
159 dnl (based on sugestion by Sarantis Paskalis)
161 dnl Revision 1.31 2002/03/05 13:43:28 morcego
162 dnl Checking for text browser, so redhat-dok can work.
164 dnl Revision 1.30 2002/03/04 17:58:01 oes
165 dnl Deleted _DEBUG and PID_FILE_PATH
167 dnl Revision 1.29 2002/02/28 14:20:53 oes
168 dnl Fixed detection of gethost*_r functions on Solaris
170 dnl Revision 1.28 2002/02/27 15:02:38 oes
171 dnl Incremented version number
173 dnl Revision 1.27 2002/01/10 12:35:18 oes
174 dnl Added cross-compile defaults to the AC_CHECK_SIZEOF macros
175 dnl to silence autoconf warnings. Numbers are for Intel/Linux.
176 dnl Is there a better way?
178 dnl Revision 1.26 2002/01/09 14:29:49 oes
179 dnl - Added AC_CHECK_FUNC tests for the availability of
180 dnl gethostbyname_r, gethostbyaddr_r, gmtime_r and
181 dnl localtime_r, as well as AC_TRY_COMPILE tests to
182 dnl determine their signatures.
184 dnl - Fixed a bug with the init of CFLAGS that was
185 dnl reported by barsnick
187 dnl Revision 1.25 2002/01/04 15:27:18 oes
188 dnl Changed quoting of CODE_STATUS for use in make
190 dnl Revision 1.24 2001/12/30 14:07:31 steudten
191 dnl - Add signal handling (unix)
192 dnl - Add SIGHUP handler (unix)
193 dnl - Add creation of pidfile (unix)
194 dnl - Add action 'top' in rc file (RH)
195 dnl - Add entry 'SIGNALS' to manpage
196 dnl - Add exit message to logfile (unix)
198 dnl Revision 1.23 2001/12/09 20:24:42 david__schmidt
199 dnl Change from "alpha" to "beta" in configure.in
201 dnl Revision 1.22 2001/12/01 11:24:01 jongfoster
202 dnl Renaming Makefile.in to GNUmakefile.in so that non-GNU versions of
203 dnl make break in a more obvious way.
205 dnl Revision 1.21 2001/11/30 21:35:54 jongfoster
206 dnl Bumping version number to 2.9.10
208 dnl Revision 1.20 2001/10/23 21:24:09 jongfoster
209 dnl Support for FEATURE_CGI_EDIT_ACTIONS
211 dnl Revision 1.19 2001/10/07 15:33:14 oes
212 dnl Removed FEATURE_DENY_GZIP
213 dnl Bumped up version number
215 dnl Revision 1.18 2001/09/13 13:10:24 steudten
217 dnl PreWork for Debug Interface.
218 dnl Add new option "--with-debug" to enable debugging (flags aso.)
220 dnl Revision 1.17 2001/09/12 23:44:55 david__schmidt
221 dnl Mac OSX (Darwin) support added.
223 dnl Revision 1.16 2001/09/12 22:55:45 joergs
224 dnl AmigaOS support added.
226 dnl Revision 1.15 2001/09/12 17:28:59 david__schmidt
228 dnl OS/2 port: update autoconf'd support for the platform.
230 dnl Revision 1.14 2001/07/30 22:12:11 jongfoster
231 dnl Fixing Solaris build (I hope) and tidying up #defines:
232 dnl - All feature #defines are now of the form FEATURE_xxx
233 dnl - Permanently turned off WIN_GUI_EDIT
234 dnl - Permanently turned on WEBDAV and SPLIT_PROXY_ARGS
236 dnl Revision 1.13 2001/07/29 17:09:17 jongfoster
237 dnl Major changes to build system in order to fix these bugs:
238 dnl - pthreads under Linux was broken - changed -lpthread to -pthread
239 dnl - Compiling in MinGW32 mode under CygWin now correctly detects
240 dnl which shared libraries are available
241 dnl - Solaris support (?) (Not tested under Solaris yet)
243 dnl Revision 1.12 2001/07/25 19:16:27 oes
244 dnl Bumping version number to 2.9.8
246 dnl Revision 1.11 2001/07/21 18:00:07 jongfoster
247 dnl Bumping version number to 2.9.7
249 dnl Revision 1.10 2001/07/18 17:25:04 oes
252 dnl Revision 1.9 2001/07/15 19:45:13 jongfoster
253 dnl Added support for linking with POSIX threads library
255 dnl Revision 1.8 2001/07/15 17:54:29 jongfoster
256 dnl Renaming #define STATIC to STATIC_PCRE
257 dnl Adding new #define FEATURE_PTHREAD that will be used to enable
258 dnl POSIX threads support.
260 dnl Revision 1.7 2001/07/13 13:58:05 oes
261 dnl Completely reorganized the selection scheme for
262 dnl pcre, pcreposix, pcrs and gnu_regex:
264 dnl The presence of shared pcre, pcreposix or pcrs
265 dnl libraried is now autodetected. Additionally, the
266 dnl user can enforce using the built-in static variants
267 dnl by specifying --disable-dynamic-(pcre|pcrs).
268 dnl Care is taken to avoid that pcre is dyn, while pcreposix
269 dnl is static, if both are used and that pcrs is static if
272 dnl The choice between pcre, gnu or no regex for actionsfile
273 dnl URL matching is now via
274 dnl --(enable|disable)-regex-matching[=(gnu|pcre|no)] with the
275 dnl default being pcre.
277 dnl Revision 1.6 2001/06/29 21:56:40 oes
280 dnl Revision 1.5 2001/06/29 13:26:27 oes
281 dnl Introduced #define CODE_STATUS
283 dnl Revision 1.4 2001/05/29 09:50:24 jongfoster
284 dnl Unified blocklist/imagelist/permissionslist.
285 dnl File format is still under discussion, but the internal changes
286 dnl are (mostly) done.
288 dnl Also modified interceptor behaviour:
289 dnl - We now intercept all URLs beginning with one of the following
290 dnl prefixes (and *only* these prefixes):
292 dnl * http://ijbswa.sf.net/config/
293 dnl * http://ijbswa.sourceforge.net/config/
294 dnl - New interceptors "home page" - go to http://i.j.b/ to see it.
295 dnl - Internal changes so that intercepted and fast redirect pages
296 dnl are not replaced with an image.
297 dnl - Interceptors now have the option to send a binary page direct
298 dnl to the client. (i.e. ijb-send-banner uses this)
299 dnl - Implemented show-url-info interceptor. (Which is why I needed
300 dnl the above interceptors changes - a typical URL is
301 dnl "http://i.j.b/show-url-info?url=www.somesite.com/banner.gif".
302 dnl The previous mechanism would not have intercepted that, and
303 dnl if it had been intercepted then it then it would have replaced
304 dnl it with an image.)
306 dnl Revision 1.3 2001/05/22 18:46:04 oes
308 dnl - Enabled filtering banners by size rather than URL
309 dnl by adding patterns that replace all standard banner
310 dnl sizes with the "Junkbuster" gif to the re_filterfile
312 dnl - Enabled filtering WebBugs by providing a pattern
313 dnl which kills all 1x1 images
315 dnl - Added support for PCRE_UNGREEDY behaviour to pcrs,
316 dnl which is selected by the (nonstandard and therefore
317 dnl capital) letter 'U' in the option string.
318 dnl It causes the quantifiers to be ungreedy by default.
319 dnl Appending a ? turns back to greedy (!).
321 dnl - Added a new interceptor ijb-send-banner, which
322 dnl sends back the "Junkbuster" gif. Without imagelist or
323 dnl MSIE detection support, or if tinygif = 1, or the
324 dnl URL isn't recognized as an imageurl, a lame HTML
325 dnl explanation is sent instead.
327 dnl - Added new feature, which permits blocking remote
328 dnl script redirects and firing back a local redirect
330 dnl The feature is conditionally compiled, i.e. it
331 dnl can be disabled with --disable-fast-redirects,
332 dnl plus it must be activated by a "fast-redirects"
333 dnl line in the config file, has its own log level
334 dnl and of course wants to be displayed by show-proxy-args
335 dnl Note: Boy, all the #ifdefs in 1001 locations and
336 dnl all the fumbling with configure.in and acconfig.h
337 dnl were *way* more work than the feature itself :-(
339 dnl - Because a generic redirect template was needed for
340 dnl this, tinygif = 3 now uses the same.
342 dnl - Moved GIFs, and other static HTTP response templates
345 dnl - Some minor fixes
347 dnl - Removed some >400 CRs again (Jon, you really worked
350 dnl Revision 1.2 2001/05/20 01:21:20 jongfoster
351 dnl Version 2.9.4 checkin.
352 dnl - Merged popupfile and cookiefile, and added control over PCRS
353 dnl filtering, in new "permissionsfile".
354 dnl - Implemented LOG_LEVEL_FATAL, so that if there is a configuration
355 dnl file error you now get a message box (in the Win32 GUI) rather
356 dnl than the program exiting with no explanation.
357 dnl - Made killpopup use the PCRS MIME-type checking and HTTP-header
359 dnl - Removed tabs from "config"
360 dnl - Moved duplicated url parsing code in "loaders.c" to a new funcition.
361 dnl - Bumped up version number.
363 dnl Revision 1.1.1.1 2001/05/15 13:58:50 oes
364 dnl Initial import of version 2.9.3 source tree
369 dnl =================================================================
370 dnl AutoConf Initialization
371 dnl =================================================================
373 AC_REVISION($Revision: 1.68 $)
376 if test ! -f config.h.in; then
377 echo "You need to run autoheader first. "
378 echo -n "Shall I do this for you now? (y/n) "
380 if test $answer != "y"; then
387 AC_CONFIG_HEADER([config.h])
392 AC_ARG_WITH(docbook, dnl
393 --with-docbook=[[yes|no|directory]]
394 Enable docbook documentation creation
395 (default = yes, for gnu and linux),[dnl
396 case "$with_docbook" in
406 AC_ARG_WITH(db2html, dnl
407 --with-db2html=<path/executable>
408 Set the location of the docbook to html converter
409 (default = search),[dnl
413 dnl =================================================================
414 dnl Application version number
415 dnl =================================================================
422 dnl CODE_STATUS can be "alpha", "beta", or "stable", and will be
423 dnl used for CGI output
425 dnl =================================================================
426 dnl Substitute the version numbers
427 dnl =================================================================
429 AC_SUBST(VERSION_MAJOR)
430 AC_SUBST(VERSION_MINOR)
431 AC_SUBST(VERSION_POINT)
432 AC_SUBST(CODE_STATUS)
435 AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR})
436 AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR})
437 AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT})
438 AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}")
439 AC_DEFINE_UNQUOTED(CODE_STATUS,"${CODE_STATUS}")
441 dnl =================================================================
442 dnl Checks for programs needed to build.
443 dnl =================================================================
450 AC_CHECK_PROG(GDB,gdb,yes,no)
452 dnl =================================================================
453 dnl debug, gcc and gdb support
454 dnl =================================================================
457 [ --with-debug Enable debug mode],
459 if test "x$withval" != "xno" ; then
460 if test $ac_cv_prog_cc_g = yes; then
461 if test "$GCC" = yes; then
467 CFLAGS="$CFLAGS -Wshadow -Wconversion"
475 if test "X$CFLAGS" = "X"; then # if CFLAGS are unset
476 if test "$GCC" = yes; then
486 [ --with-user=privoxy Set user under which privoxy run],
488 if test "x$withval" != "xyes"; then
491 AC_MSG_ERROR(We need a user if you give me this parameter)
501 [ --with-group=privoxy Set group for privoxy],
503 if test "x$withval" != "xyes"; then
506 AC_MSG_ERROR(We need a group if you give me this parameter)
514 dnl =================================================================
515 dnl additional gcc flags
516 dnl =================================================================
519 CFLAGS="-pipe $CFLAGS"
523 dnl =================================================================
525 dnl =================================================================
527 dnl Must do this first.
529 dnl Reason: This sets CFLAGS in order to switch the Cygwin compiler
530 dnl into Cygwin or MinGW32 modes. Depending on the mode selected,
531 dnl the compiler will use completely different sets of library
532 dnl and include files.
534 dnl =================================================================
539 if test "$MINGW32" = "yes"; then
542 if test "$CYGWIN" = "yes"; then
549 if test $dodk = auto; then
551 if test $target_type = unix; then
560 dnl Decide what to do based on target_type
561 dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
562 dnl This is because we don't know yet whether pthread is enabled.
564 AC_ARG_ENABLE(mingw32,
565 [ --enable-mingw32 Use mingw32 for a Windows GUI],
566 [if test $enableval = yes; then
570 if test $target_type = mingw; then
572 SPECIAL_CFLAGS="-mwindows -mno-cygwin"
573 PTHREAD_LIB=-lpthreadGC
574 echo "Using mingw32 (Win32 GUI)"
577 if test $target_type = cygwin; then
578 SPECIAL_CFLAGS="-mno-win32"
580 echo "Using Cygnus (Win32 command line)"
583 PTHREAD_LIB=-lpthread
588 dnl Checking which text html browser we have avaliable
589 if test $dodk != no; then
590 AC_CHECK_PROGS(WDUMP,w3m lynx links,false)
591 if test "$WDUMP" = false; then
592 AC_MSG_ERROR(You need some kind of text browser to continue \(w3m, lynx and links are supported\))
594 if test $DB2HTML = false; then
595 dnl We need to clean the variable, otherwise AC_CHECK_PROGS
598 AC_CHECK_PROGS(DB2HTML,db2html docbook2html,false)
604 dnl If we use rpm, we need to check where %_topdir is
605 AC_CHECK_PROGS(RPMBIN,rpm,false)
606 if test $RPMBIN != false; then
607 RPM_BASE=`rpm --eval "%{_topdir}"`
608 if test "$RPM_BASE" = ""; then
609 RPM_BASE=/usr/src/redhat
614 dnl Check for jade, so we can build the documentation
615 AC_CHECK_PROGS(JADEBIN,jade openjade,false)
618 dnl Check for man2html for docs.
619 AC_CHECK_PROGS(MAN2HTML,man2html,false)
622 dnl Checking for the docbook.dsl stylesheet file
623 dnl It is still not portable (directory slash)
625 if test $dodk = yes; then
626 if test $DKPREFIX = none; then
627 for i in /usr/share/sgml/docbook/dsssl-stylesheets /usr/share/sgml/docbkdsl /usr/share/sgml/docbook-dsssl; do
628 echo -n "checking for $i/html/docbook.dsl..."
629 if test -f $i/html/docbook.dsl; then
637 # where are the catalogs?
638 for i in /usr/share/sgml/CATALOG.docbk30 /usr/share/sgml/CATALOG.docbk31; do
639 echo -n "checking for $i..."
642 JADECAT="$JADECAT -c $i"
652 dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
653 old_CFLAGS_nospecial=$CFLAGS
654 CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
656 # Hack to force AutoConf to use the CFLAGS we just set
657 dnl Warning: This may break with a future version of Autoconf
658 dnl Tested with autoconf 2.13
659 ac_cpp='$CPP $CPPFLAGS $SPECIAL_CFLAGS'
660 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
661 ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
664 dnl =================================================================
666 dnl =================================================================
668 AC_CHECK_HEADER(pthread.h, [have_pthread=yes], [have_pthread=no])
670 AC_ARG_ENABLE(pthread,
671 [ --disable-pthread Don't use POSIX threads (pthreads)],
672 [if test $enableval = no; then
677 if test $have_pthread = yes; then
679 AC_DEFINE(FEATURE_PTHREAD)
680 echo Using POSIX threads
681 if test "$GCC" = "yes"; then
682 # Set a GCC specific switch:
683 if test "$target_type" = "unix"; then
684 ac_jgf_save_CFLAGS=$CFLAGS
685 CFLAGS="$CFLAGS -pthread"
686 AC_TRY_LINK([#include <pthread.h>],
687 [void *p = pthread_create;],
689 # This compiler switch makes GCC on Linux thread-safe
690 # However, it's not supported on most other OS.
692 SPECIAL_CFLAGS="-pthread"
694 CFLAGS=$ac_jgf_save_CFLAGS
699 echo Using native threads
702 AC_SUBST(PTHREAD_ONLY)
704 dnl =================================================================
705 dnl Support for thread-safe versions of gethostbyaddr, gethostbyname,
706 dnl gmtime and localtime
707 dnl =================================================================
709 dnl Next line needed to find the gethost*_r functions on Solaris
710 AC_CHECK_LIB(nsl, gethostbyname)
712 AC_CHECK_FUNC(gethostbyaddr_r, [
713 AC_MSG_CHECKING([signature of gethostbyaddr_r])
717 struct hostent *h, *hp;
720 (void) gethostbyaddr_r(a, l, t, h, b, bl, &hp, &e)
722 AC_DEFINE(HAVE_GETHOSTBYADDR_R_8_ARGS)
723 AC_MSG_RESULT([8 args])
731 (void) gethostbyaddr_r(a, l, t, h, b, bl, &e)
733 AC_DEFINE(HAVE_GETHOSTBYADDR_R_7_ARGS)
734 AC_MSG_RESULT([7 args])
739 struct hostent_data *d;
743 (void) gethostbyaddr_r(a, l, t, h, d)
745 AC_DEFINE(HAVE_GETHOSTBYADDR_R_5_ARGS)
746 AC_MSG_RESULT([5 args])
748 AC_MSG_RESULT(unrecognised)
756 AC_CHECK_FUNC(gethostbyname_r, [
757 AC_MSG_CHECKING([signature of gethostbyname_r])
761 struct hostent *h, *r;
764 (void) gethostbyname_r(n, h, b, bl, &r, &e)
766 AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARGS)
767 AC_MSG_RESULT([6 args])
775 (void) gethostbyname_r(n, h, b, bl, &e)
777 AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARGS)
778 AC_MSG_RESULT([5 args])
783 struct hostent_data *d;
786 (void) gethostbyname_r(n, h, d)
788 AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARGS)
789 AC_MSG_RESULT([3 args])
791 AC_MSG_RESULT(unrecognised)
799 AC_CHECK_FUNC(gmtime_r, [
800 AC_MSG_CHECKING([signature of gmtime_r])
806 (void) gmtime_r(t, tm)
809 AC_DEFINE(HAVE_GMTIME_R)
811 AC_MSG_RESULT(unrecognised)
817 AC_CHECK_FUNC(localtime_r, [
818 AC_MSG_CHECKING([signature of localtime_r])
824 (void) localtime_r(t, tm)
827 AC_DEFINE(HAVE_LOCALTIME_R)
829 AC_MSG_RESULT(unrecognised)
835 dnl =================================================================
837 dnl FIXME: Not tested on Solaris yet...
838 dnl ISFIXED: Have tested it on Solaris, but there are other ways to
839 dnl make these checks generic, e.g.:
840 dnl AC_CHECK_FUNC(getsockopt, , AC_CHECK_LIB(socket, getsockopt))
841 dnl (Moritz Barsnick <moritz@barsnick.net>)
842 dnl =================================================================
848 *-solaris*) SOCKET_LIB="-lsocket -lnsl"
849 AC_DEFINE(__EXTENSIONS__)
850 if test "$GCC" = "yes"; then
851 # Set a GCC specific switch:
852 # This compiler switch makes Solaris thread-safe
854 SPECIAL_CFLAGS="-pthreads"
856 # What do we do without GCC? Guess this:
857 SPECIAL_CFLAGS="-D_REENTRANT"
864 dnl =================================================================
865 dnl Solaris problem, and others perhaps (socklen_t is undefined)
866 dnl =================================================================
868 AC_MSG_CHECKING([for socklen_t])
869 AC_EGREP_HEADER(socklen_t, sys/socket.h, AC_MSG_RESULT([yes]),
871 AC_DEFINE(socklen_t,int,
872 [ Define to 'int' if <sys/socket.h> doesn't have it. ]))
875 dnl =================================================================
877 dnl =================================================================
880 *-os2-emx*) SOCKET_LIB=-lsocket
886 dnl =================================================================
888 dnl =================================================================
891 *-apple-darwin*) SPECIAL_CFLAGS="-Dunix"
895 dnl =================================================================
897 dnl =================================================================
902 *-amigaos) AMIGAOS_ONLY=
906 AC_SUBST(AMIGAOS_ONLY)
908 dnl =================================================================
909 dnl Check for standard compiler stuff
910 dnl =================================================================
921 AC_CHECK_SIZEOF(int, 4)
922 AC_CHECK_SIZEOF(char *, 4)
923 AC_CHECK_SIZEOF(long, 4)
924 AC_CHECK_SIZEOF(long long, 8)
925 AC_CHECK_SIZEOF(size_t, 4)
927 dnl Checks for header files.
928 dnl AC_HEADER_SYS_WAIT
929 dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h)
930 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])
932 dnl Checks for library functions.
934 dnl AC_CHECK_FUNC(strstr)
935 dnl bcopy and memmove are for PCRE
936 AC_CHECK_FUNCS([strerror bcopy memmove])
937 AC_PROG_GCC_TRADITIONAL
938 dnl uncommenting does not work for swa. suse linux
942 dnl uncommenting does not work for swa. suse linux
944 AC_CHECK_FUNCS([atexit getcwd gethostbyaddr gethostbyname inet_ntoa localtime_r memchr memmove memset regcomp select setlocale socket strchr strdup strerror strftime strstr strtoul])
947 dnl =================================================================
948 dnl Checks for libraries.
949 dnl =================================================================
950 dnl Note: Some systems may have the library but not the system header
951 dnl file, so we must check for both.
952 dnl Also check for correct version
953 AC_CHECK_LIB(pcre, pcre_compile, [AC_CHECK_HEADER(pcre.h, [AC_EGREP_HEADER(pcre_fullinfo, pcre.h, [have_pcre=yes], [AC_MSG_WARN([[pcre old version installed]]); have_pcre=no])], [have_pcre=no])], [have_pcre=no])
954 AC_CHECK_LIB(pcreposix, regcomp, [AC_CHECK_HEADER(pcreposix.h, [AC_EGREP_HEADER(pcreposix_regerror, pcreposix.h, [AC_MSG_WARN([[pcreposix old version installed]]); have_pcreposix=no], [have_pcreposix=yes])], [have_pcreposix=no])], [have_pcreposix=no], -lpcre)
955 AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no])
958 dnl =================================================================
960 dnl =================================================================
964 dnl =================================================================
966 dnl =================================================================
968 AC_ARG_ENABLE(toggle,
969 [ --disable-toggle Don't support temporary disable],
970 [if test $enableval = yes; then
971 AC_DEFINE(FEATURE_TOGGLE)
972 fi],AC_DEFINE(FEATURE_TOGGLE))
975 [ --disable-force Don't allow single-page disable],
976 [if test $enableval = yes; then
977 AC_DEFINE(FEATURE_FORCE_LOAD)
978 fi],AC_DEFINE(FEATURE_FORCE_LOAD))
980 AC_ARG_ENABLE(fast-redirects,
981 [ --disable-fast-redirects Don't support fast redirects],
982 [if test $enableval = yes; then
983 AC_DEFINE(FEATURE_FAST_REDIRECTS)
984 fi], AC_DEFINE(FEATURE_FAST_REDIRECTS))
986 AC_ARG_ENABLE(killpopup,
987 [ --disable-killpopup Never block popups],
988 [if test $enableval = yes; then
989 AC_DEFINE(FEATURE_KILL_POPUPS)
990 fi],AC_DEFINE(FEATURE_KILL_POPUPS))
993 [ --disable-stats Don't keep statistics],
994 [if test $enableval = yes; then
995 AC_DEFINE(FEATURE_STATISTICS)
996 fi],AC_DEFINE(FEATURE_STATISTICS))
998 AC_ARG_ENABLE(ie-images,
999 [ --disable-ie-images Don't auto-detect whether a request from MS Internet
1000 Explorer is for an image or HTML.],
1001 [if test $enableval = yes; then
1002 AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE)
1004 AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE))
1006 AC_ARG_ENABLE(image-blocking,
1007 [ --disable-image-blocking Don't try to figure out whether a request is
1008 for an image or HTML - assume HTML.],
1009 [if test $enableval = yes; then
1010 AC_DEFINE(FEATURE_IMAGE_BLOCKING)
1012 AC_DEFINE(FEATURE_IMAGE_BLOCKING))
1014 AC_ARG_ENABLE(acl-files,
1015 [ --disable-acl-files Prevents the use of ACL files to control access to
1016 the proxy by IP address.],
1017 [if test $enableval = yes; then
1018 AC_DEFINE(FEATURE_ACL)
1020 AC_DEFINE(FEATURE_ACL))
1022 AC_ARG_ENABLE(trust-files,
1023 [ --disable-trust-files Prevents the use of trust files.],
1024 [if test $enableval = yes; then
1025 AC_DEFINE(FEATURE_TRUST)
1027 AC_DEFINE(FEATURE_TRUST))
1029 AC_ARG_ENABLE(jar-files,
1030 [ --disable-jar-files Prevents the use of jar files to capture cookies.],
1031 [if test $enableval = yes; then
1032 AC_DEFINE(FEATURE_COOKIE_JAR)
1034 AC_DEFINE(FEATURE_COOKIE_JAR))
1036 AC_ARG_ENABLE(editor,
1037 [ --disable-editor Prevents the use of the web-based actions file
1038 editor and web-based temporary disable setting.],
1039 [if test $enableval = yes; then
1040 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS)
1042 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS))
1044 AC_ARG_ENABLE(no-gifs,
1045 [ --enable-no-gifs Use politically correct PNG format instead of GIF
1046 for built-in images. May not work with all browsers.],
1047 [if test $enableval = yes; then
1048 AC_DEFINE(FEATURE_NO_GIFS)
1052 dnl pcre/pcrs is needed for CGI anyway, so
1053 dnl the choice is only between static and
1056 AC_ARG_ENABLE(dynamic-pcre,
1057 [ --disable-dynamic-pcre Use the built-in, static pcre, even if
1058 libpcre is available],
1059 [ if test $enableval = "no"; then have_pcre=no; fi ])
1061 AC_ARG_ENABLE(dynamic-pcrs,
1062 [ --disable-dynamic-pcrs Use the built-in, static pcrs, even if
1063 libpcrs is available],
1064 [ if test $enableval = "no"; then have_pcrs=no; fi ])
1067 # If we have libpcre and either we also have pcreposix or
1068 # we don't need pcreposix, then link pcre dynamically; else
1069 # build it and link statically
1071 if test $have_pcre = "yes"; then
1072 echo "using libpcre"
1075 LIBS="$LIBS -lpcre -lpcreposix"
1077 echo "using built-in static pcre"
1079 AC_DEFINE(STATIC_PCRE)
1083 # If we have libpcrs and pcre is linked dynamically
1084 # then also link pcrs dynamically, else build and link
1087 if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
1088 echo "using libpcrs"
1092 echo "using built-in static pcrs"
1093 AC_DEFINE(STATIC_PCRS)
1097 AC_SUBST(STATIC_PCRE_ONLY)
1098 AC_SUBST(STATIC_PCRS_ONLY)
1100 dnl =================================================================
1101 dnl Final cleanup and output
1102 dnl =================================================================
1104 dnl Remove the SPECIAL_CFLAGS stuff from CFLAGS, and add it seperately
1106 CFLAGS=$old_CFLAGS_nospecial
1107 AC_SUBST(SPECIAL_CFLAGS)
1109 AC_SUBST(PTHREAD_LIB)
1111 AC_OUTPUT(GNUmakefile doc/source/ldp.dsl)