Removed references to gnu_regex
[privoxy.git] / configure.in
1 dnl Process this file with autoconf to produce a configure script.
2 dnl 
3 dnl $Id: configure.in,v 1.55 2002/04/03 03:54:38 gliptak Exp $
4 dnl 
5 dnl Written by and Copyright (C) 2001, 2002 the SourceForge
6 dnl Privoxy team. http://www.privoxy.org/
7 dnl
8 dnl Based on the Internet Junkbuster originally written
9 dnl by and Copyright (C) 1997 Anonymous Coders and 
10 dnl Junkbusters Corporation.  http://www.junkbusters.com
11 dnl
12 dnl This program is free software; you can redistribute it 
13 dnl and/or modify it under the terms of the GNU General
14 dnl Public License as published by the Free Software
15 dnl Foundation; either version 2 of the License, or (at
16 dnl your option) any later version.
17 dnl 
18 dnl This program is distributed in the hope that it will
19 dnl be useful, but WITHOUT ANY WARRANTY; without even the
20 dnl implied warranty of MERCHANTABILITY or FITNESS FOR A
21 dnl PARTICULAR PURPOSE.  See the GNU General Public
22 dnl License for more details.
23 dnl 
24 dnl The GNU General Public License should be included with
25 dnl this file.  If not, you can view it at
26 dnl http://www.gnu.org/copyleft/gpl.html
27 dnl or write to the Free Software Foundation, Inc., 59
28 dnl Temple Place - Suite 330, Boston, MA  02111-1307, USA.
29 dnl 
30 dnl $Log: configure.in,v $
31 dnl Revision 1.55  2002/04/03 03:54:38  gliptak
32 dnl Checking pcre version
33 dnl
34 dnl Revision 1.54  2002/04/01 00:54:24  gliptak
35 dnl More changes needed around regex support.
36 dnl
37 dnl Revision 1.53  2002/03/29 20:09:01  swa
38 dnl al's patch
39 dnl
40 dnl Revision 1.52  2002/03/29 19:51:40  gliptak
41 dnl Correcting compile problem with Debian
42 dnl
43 dnl Revision 1.51  2002/03/28 20:43:00  swa
44 dnl set make correctly
45 dnl
46 dnl Revision 1.50  2002/03/27 03:03:45  hal9
47 dnl Add test for man2html
48 dnl
49 dnl Revision 1.49  2002/03/27 02:19:52  david__schmidt
50 dnl More Mac OSX support:
51 dnl - Get rid of extraneous, noisy -pthread warnings
52 dnl - Define unix so we get oes' unix-tagged changes
53 dnl
54 dnl Revision 1.48  2002/03/26 22:29:54  swa
55 dnl we have a new homepage!
56 dnl
57 dnl Revision 1.47  2002/03/26 16:41:00  hal9
58 dnl Upped RPM Release to 3 (need to build new RH packages)
59 dnl
60 dnl Revision 1.46  2002/03/24 18:55:06  jongfoster
61 dnl Making Docbook work under Windows
62 dnl
63 dnl Revision 1.45  2002/03/24 14:19:55  swa
64 dnl set rpm package release in configure.in. nowhere else.
65 dnl
66 dnl Revision 1.44  2002/03/24 13:25:43  swa
67 dnl name change related issues
68 dnl
69 dnl Revision 1.43  2002/03/24 12:56:21  swa
70 dnl name change related issues.
71 dnl
72 dnl Revision 1.42  2002/03/22 18:11:37  jongfoster
73 dnl Bumping version number to 2.9.12
74 dnl
75 dnl Revision 1.41  2002/03/19 19:30:04  morcego
76 dnl - Fixing stylesheet checking on configure. If it is found, no further checks
77 dnl   should be done
78 dnl
79 dnl - configure will now check for db2html or docbook2html (should work now
80 dnl   on SuSe without the docbktls package)
81 dnl
82 dnl Revision 1.40  2002/03/09 14:33:30  oes
83 dnl Fixing the (harmless) AC_CHECK_FILE warnings
84 dnl
85 dnl Revision 1.39  2002/03/08 16:46:13  oes
86 dnl Added --enable-no-gifs
87 dnl
88 dnl Revision 1.38  2002/03/08 14:13:50  morcego
89 dnl Fixing configure, to remove a command not found error.
90 dnl
91 dnl Revision 1.37  2002/03/08 12:58:21  oes
92 dnl Tiny bugfix in AC_ARG_WITH(debug)
93 dnl
94 dnl Revision 1.36  2002/03/06 23:50:36  morcego
95 dnl Will not test for a text browser if we are not using docbook.
96 dnl
97 dnl Revision 1.35  2002/03/06 21:55:52  morcego
98 dnl New configure option: --with-docbook=(yes|no|directory)
99 dnl Preliminary new platform detection code included. Will work with the
100 dnl old one for now. No use just trowing it away
101 dnl
102 dnl Revision 1.34  2002/03/06 20:57:00  morcego
103 dnl Fixing detection of stylesheets on SuSe.
104 dnl
105 dnl Revision 1.33  2002/03/05 17:31:11  morcego
106 dnl Search for docbook.dsl. Should solve portability problems for SuSe.
107 dnl
108 dnl Revision 1.32  2002/03/05 14:07:43  morcego
109 dnl configure now detects rpm topdir, and change GNUmakefile acordingly
110 dnl    (based on sugestion by Sarantis Paskalis)
111 dnl
112 dnl Revision 1.31  2002/03/05 13:43:28  morcego
113 dnl Checking for text browser, so redhat-dok can work.
114 dnl
115 dnl Revision 1.30  2002/03/04 17:58:01  oes
116 dnl Deleted _DEBUG and PID_FILE_PATH
117 dnl
118 dnl Revision 1.29  2002/02/28 14:20:53  oes
119 dnl Fixed detection of gethost*_r functions on Solaris
120 dnl
121 dnl Revision 1.28  2002/02/27 15:02:38  oes
122 dnl Incremented version number
123 dnl
124 dnl Revision 1.27  2002/01/10 12:35:18  oes
125 dnl Added cross-compile defaults to the AC_CHECK_SIZEOF macros
126 dnl to silence autoconf warnings. Numbers are for Intel/Linux.
127 dnl Is there a better way?
128 dnl
129 dnl Revision 1.26  2002/01/09 14:29:49  oes
130 dnl - Added AC_CHECK_FUNC tests for the availability of
131 dnl   gethostbyname_r, gethostbyaddr_r, gmtime_r and
132 dnl   localtime_r, as well as AC_TRY_COMPILE tests to
133 dnl   determine their signatures.
134 dnl
135 dnl - Fixed a bug with the init of CFLAGS that was
136 dnl   reported by barsnick
137 dnl
138 dnl Revision 1.25  2002/01/04 15:27:18  oes
139 dnl Changed quoting of CODE_STATUS for use in make
140 dnl
141 dnl Revision 1.24  2001/12/30 14:07:31  steudten
142 dnl - Add signal handling (unix)
143 dnl - Add SIGHUP handler (unix)
144 dnl - Add creation of pidfile (unix)
145 dnl - Add action 'top' in rc file (RH)
146 dnl - Add entry 'SIGNALS' to manpage
147 dnl - Add exit message to logfile (unix)
148 dnl
149 dnl Revision 1.23  2001/12/09 20:24:42  david__schmidt
150 dnl Change from "alpha" to "beta" in configure.in
151 dnl
152 dnl Revision 1.22  2001/12/01 11:24:01  jongfoster
153 dnl Renaming Makefile.in to GNUmakefile.in so that non-GNU versions of
154 dnl make break in a more obvious way.
155 dnl
156 dnl Revision 1.21  2001/11/30 21:35:54  jongfoster
157 dnl Bumping version number to 2.9.10
158 dnl
159 dnl Revision 1.20  2001/10/23 21:24:09  jongfoster
160 dnl Support for FEATURE_CGI_EDIT_ACTIONS
161 dnl
162 dnl Revision 1.19  2001/10/07 15:33:14  oes
163 dnl Removed FEATURE_DENY_GZIP
164 dnl Bumped up version number
165 dnl
166 dnl Revision 1.18  2001/09/13 13:10:24  steudten
167 dnl
168 dnl PreWork for Debug Interface.
169 dnl Add new option "--with-debug" to enable debugging (flags aso.)
170 dnl
171 dnl Revision 1.17  2001/09/12 23:44:55  david__schmidt
172 dnl Mac OSX (Darwin) support added.
173 dnl
174 dnl Revision 1.16  2001/09/12 22:55:45  joergs
175 dnl AmigaOS support added.
176 dnl
177 dnl Revision 1.15  2001/09/12 17:28:59  david__schmidt
178 dnl
179 dnl OS/2 port: update autoconf'd support for the platform.
180 dnl
181 dnl Revision 1.14  2001/07/30 22:12:11  jongfoster
182 dnl Fixing Solaris build (I hope) and tidying up #defines:
183 dnl - All feature #defines are now of the form FEATURE_xxx
184 dnl - Permanently turned off WIN_GUI_EDIT
185 dnl - Permanently turned on WEBDAV and SPLIT_PROXY_ARGS
186 dnl
187 dnl Revision 1.13  2001/07/29 17:09:17  jongfoster
188 dnl Major changes to build system in order to fix these bugs:
189 dnl - pthreads under Linux was broken - changed -lpthread to -pthread
190 dnl - Compiling in MinGW32 mode under CygWin now correctly detects
191 dnl   which shared libraries are available
192 dnl - Solaris support (?) (Not tested under Solaris yet)
193 dnl
194 dnl Revision 1.12  2001/07/25 19:16:27  oes
195 dnl Bumping version number to 2.9.8
196 dnl
197 dnl Revision 1.11  2001/07/21 18:00:07  jongfoster
198 dnl Bumping version number to 2.9.7
199 dnl
200 dnl Revision 1.10  2001/07/18 17:25:04  oes
201 dnl Fixed a typo
202 dnl
203 dnl Revision 1.9  2001/07/15 19:45:13  jongfoster
204 dnl Added support for linking with POSIX threads library
205 dnl
206 dnl Revision 1.8  2001/07/15 17:54:29  jongfoster
207 dnl Renaming #define STATIC to STATIC_PCRE
208 dnl Adding new #define FEATURE_PTHREAD that will be used to enable
209 dnl POSIX threads support.
210 dnl
211 dnl Revision 1.7  2001/07/13 13:58:05  oes
212 dnl    Completely reorganized the selection scheme for
213 dnl    pcre, pcreposix, pcrs and gnu_regex:
214 dnl
215 dnl    The presence of shared pcre, pcreposix or pcrs
216 dnl    libraried is now autodetected. Additionally, the
217 dnl    user can enforce using the built-in static variants
218 dnl    by specifying --disable-dynamic-(pcre|pcrs).
219 dnl    Care is taken to avoid that pcre is dyn, while pcreposix
220 dnl    is static, if both are used and that pcrs is static if
221 dnl    pcrs is.
222 dnl
223 dnl    The choice between pcre, gnu or no regex for actionsfile
224 dnl    URL matching is now via
225 dnl    --(enable|disable)-regex-matching[=(gnu|pcre|no)] with the
226 dnl    default being pcre.
227 dnl
228 dnl Revision 1.6  2001/06/29 21:56:40  oes
229 dnl Version -> 2.9.5
230 dnl
231 dnl Revision 1.5  2001/06/29 13:26:27  oes
232 dnl Introduced #define CODE_STATUS
233 dnl
234 dnl Revision 1.4  2001/05/29 09:50:24  jongfoster
235 dnl Unified blocklist/imagelist/permissionslist.
236 dnl File format is still under discussion, but the internal changes
237 dnl are (mostly) done.
238 dnl
239 dnl Also modified interceptor behaviour:
240 dnl - We now intercept all URLs beginning with one of the following
241 dnl   prefixes (and *only* these prefixes):
242 dnl     * http://i.j.b/
243 dnl     * http://ijbswa.sf.net/config/
244 dnl     * http://ijbswa.sourceforge.net/config/
245 dnl - New interceptors "home page" - go to http://i.j.b/ to see it.
246 dnl - Internal changes so that intercepted and fast redirect pages
247 dnl   are not replaced with an image.
248 dnl - Interceptors now have the option to send a binary page direct
249 dnl   to the client. (i.e. ijb-send-banner uses this)
250 dnl - Implemented show-url-info interceptor.  (Which is why I needed
251 dnl   the above interceptors changes - a typical URL is
252 dnl   "http://i.j.b/show-url-info?url=www.somesite.com/banner.gif".
253 dnl   The previous mechanism would not have intercepted that, and
254 dnl   if it had been intercepted then it then it would have replaced
255 dnl   it with an image.)
256 dnl
257 dnl Revision 1.3  2001/05/22 18:46:04  oes
258 dnl
259 dnl - Enabled filtering banners by size rather than URL
260 dnl   by adding patterns that replace all standard banner
261 dnl   sizes with the "Junkbuster" gif to the re_filterfile
262 dnl
263 dnl - Enabled filtering WebBugs by providing a pattern
264 dnl   which kills all 1x1 images
265 dnl
266 dnl - Added support for PCRE_UNGREEDY behaviour to pcrs,
267 dnl   which is selected by the (nonstandard and therefore
268 dnl   capital) letter 'U' in the option string.
269 dnl   It causes the quantifiers to be ungreedy by default.
270 dnl   Appending a ? turns back to greedy (!).
271 dnl
272 dnl - Added a new interceptor ijb-send-banner, which
273 dnl   sends back the "Junkbuster" gif. Without imagelist or
274 dnl   MSIE detection support, or if tinygif = 1, or the
275 dnl   URL isn't recognized as an imageurl, a lame HTML
276 dnl   explanation is sent instead.
277 dnl
278 dnl - Added new feature, which permits blocking remote
279 dnl   script redirects and firing back a local redirect
280 dnl   to the browser.
281 dnl   The feature is conditionally compiled, i.e. it
282 dnl   can be disabled with --disable-fast-redirects,
283 dnl   plus it must be activated by a "fast-redirects"
284 dnl   line in the config file, has its own log level
285 dnl   and of course wants to be displayed by show-proxy-args
286 dnl   Note: Boy, all the #ifdefs in 1001 locations and
287 dnl   all the fumbling with configure.in and acconfig.h
288 dnl   were *way* more work than the feature itself :-(
289 dnl
290 dnl - Because a generic redirect template was needed for
291 dnl   this, tinygif = 3 now uses the same.
292 dnl
293 dnl - Moved GIFs, and other static HTTP response templates
294 dnl   to project.h
295 dnl
296 dnl - Some minor fixes
297 dnl
298 dnl - Removed some >400 CRs again (Jon, you really worked
299 dnl   a lot! ;-)
300 dnl
301 dnl Revision 1.2  2001/05/20 01:21:20  jongfoster
302 dnl Version 2.9.4 checkin.
303 dnl - Merged popupfile and cookiefile, and added control over PCRS
304 dnl   filtering, in new "permissionsfile".
305 dnl - Implemented LOG_LEVEL_FATAL, so that if there is a configuration
306 dnl   file error you now get a message box (in the Win32 GUI) rather
307 dnl   than the program exiting with no explanation.
308 dnl - Made killpopup use the PCRS MIME-type checking and HTTP-header
309 dnl   skipping.
310 dnl - Removed tabs from "config"
311 dnl - Moved duplicated url parsing code in "loaders.c" to a new funcition.
312 dnl - Bumped up version number.
313 dnl
314 dnl Revision 1.1.1.1  2001/05/15 13:58:50  oes
315 dnl Initial import of version 2.9.3 source tree
316 dnl
317 dnl 
318
319
320 dnl =================================================================
321 dnl AutoConf Initialization
322 dnl =================================================================
323
324 AC_REVISION($Revision: 1.55 $)
325 AC_INIT(jcc.c)
326 AC_CONFIG_HEADER([config.h])
327 AC_CANONICAL_HOST
328
329 dodk=auto
330 DKPREFIX=none
331 AC_ARG_WITH(docbook, dnl
332   --with-docbook=[[yes|no|directory]]   
333                            Enable docbook documentation creation 
334                            (default = yes, for gnu and linux),[dnl
335 case "$with_docbook" in
336 yes) dodk=yes;;
337 no) dodk=no;;
338 *) 
339         dodk=no
340         DKPREFIX=$withval
341         ;;
342 esac
343 ])
344 DB2HTML=false
345 AC_ARG_WITH(db2html, dnl
346   --with-db2html=<path/executable>
347                           Set the location of the docbook to html converter
348                           (default = search),[dnl
349 DB2HTML=$withval
350 ])
351
352 dnl =================================================================
353 dnl Application version number
354 dnl =================================================================
355
356 VERSION_MAJOR=2
357 VERSION_MINOR=9
358 VERSION_POINT=13
359 VERSION_RPM_PACKAGE=3
360 CODE_STATUS="beta"
361
362 dnl CODE_STATUS can be "alpha", "beta", or "stable", and will be
363 dnl used for CGI output
364
365 dnl =================================================================
366 dnl Substitute the version numbers
367 dnl =================================================================
368
369 AC_SUBST(VERSION_MAJOR)
370 AC_SUBST(VERSION_MINOR)
371 AC_SUBST(VERSION_POINT)
372 AC_SUBST(VERSION_RPM_PACKAGE)
373 AC_SUBST(CODE_STATUS)
374
375 dnl
376 AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR})
377 AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR})
378 AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT})
379 AC_DEFINE_UNQUOTED(VERSION_RPM_PACKAGE,${VERSION_RPM_PACKAGE})
380 AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}")
381 AC_DEFINE_UNQUOTED(CODE_STATUS,"${CODE_STATUS}")
382
383 dnl =================================================================
384 dnl Checks for programs needed to build.
385 dnl =================================================================
386 AC_PROG_CC
387 AC_PROG_CPP
388 AC_PROG_CXX
389 AC_PROG_INSTALL
390 AC_PROG_LN_S
391 AC_PROG_MAKE_SET
392 dnl RANLIB is for PCRE:
393 AC_PROG_RANLIB
394
395 AC_CHECK_PROG(GDB,gdb,yes,no)
396
397 dnl =================================================================
398 dnl debug, gcc and gdb support 
399 dnl =================================================================
400
401 AC_ARG_WITH(debug,
402         [  --with-debug            Enable debug mode],
403         [
404                 if test "x$withval" != "xno" ; then
405                     if test $ac_cv_prog_cc_g = yes; then
406                       if test "$GCC" = yes; then
407                         if test "$GDB"; then
408                           CFLAGS="-ggdb"
409                         else
410                           CFLAGS="-g"
411                         fi
412                         CFLAGS="$CFLAGS -Wshadow  -Wconversion"
413                       else
414                         CFLAGS="-g"
415                       fi
416                    fi
417                 fi
418         ],
419         [
420             if test "X$CFLAGS" = "X"; then # if CFLAGS are unset
421               if test "$GCC" = yes; then
422                 CFLAGS="-O2"
423               else
424                 CFLAGS=
425               fi
426             fi
427         ]
428 )
429
430 AC_ARG_WITH(user,
431         [  --with-user=privoxy            Set user under which privoxy run],
432         [
433                 if test "x$withval" != "xyes"; then
434                     USER=$with_user;
435                   else
436                    AC_MSG_ERROR(We need a user if you give me this parameter)
437                 fi
438         ],
439         [
440           USER=privoxy;
441         ]
442 )
443 AC_SUBST(USER)
444
445 AC_ARG_WITH(group,
446         [  --with-group=privoxy         Set group for privoxy],
447         [
448                 if test "x$withval" != "xyes"; then
449                     GROUP=$with_group;
450                   else
451                    AC_MSG_ERROR(We need a group if you give me this parameter)
452                 fi
453         ],
454         [
455           GROUP=privoxy;
456         ]
457 )
458 AC_SUBST(GROUP)
459 dnl =================================================================
460 dnl additional gcc flags
461 dnl =================================================================
462 dnl 
463 if test "$GCC"; then
464   CFLAGS="-pipe $CFLAGS"
465 fi
466
467
468 dnl =================================================================
469 dnl Build type
470 dnl =================================================================
471 dnl
472 dnl Must do this first.
473 dnl
474 dnl Reason: This sets CFLAGS in order to switch the Cygwin compiler
475 dnl into Cygwin or MinGW32 modes.  Depending on the mode selected,
476 dnl the compiler will use completely different sets of library
477 dnl and include files.
478 dnl 
479 dnl =================================================================
480
481 AC_MINGW32
482 AC_CYGWIN
483
484 if test "$MINGW32" = "yes"; then
485   target_type=mingw
486 else
487   if test "$CYGWIN" = "yes"; then
488     target_type=cygwin
489   else
490     target_type=unix
491   fi
492 fi
493
494 if test $dodk = auto; then
495         dodk=no
496         if test $target_type = unix; then
497                 case "$host_os" in
498                 linux* | gnu*)
499                         dodk=yes
500                 ;;
501                 esac
502         fi
503 fi
504
505 dnl Decide what to do based on target_type
506 dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
507 dnl This is because we don't know yet whether pthread is enabled.
508
509 AC_ARG_ENABLE(mingw32,
510 [  --enable-mingw32        Use mingw32 for a Windows GUI],
511 [if test $enableval = yes; then
512   target_type=mingw
513 fi])
514
515 if test $target_type = mingw; then
516   WIN_ONLY=
517   SPECIAL_CFLAGS="-mwindows -mno-cygwin"
518   PTHREAD_LIB=-lpthreadGC
519   echo "Using mingw32 (Win32 GUI)"
520 else
521   WIN_ONLY=#
522   if test $target_type = cygwin; then
523     SPECIAL_CFLAGS="-mno-win32"
524     PTHREAD_LIB=
525     echo "Using Cygnus (Win32 command line)"
526   else
527     SPECIAL_CFLAGS=
528     PTHREAD_LIB=-lpthread
529   fi
530 fi
531 AC_SUBST(WIN_ONLY)
532
533 dnl Checking which text html browser we have avaliable
534 if test $dodk != no; then
535         AC_CHECK_PROGS(WDUMP,w3m lynx links,false)
536         if test "$WDUMP" = false; then
537                 AC_MSG_ERROR(You need some kind of text browser to continue \(w3m, lynx and links are supported\))
538         fi
539         if test $DB2HTML = false; then
540                 dnl We need to clean the variable, otherwise AC_CHECK_PROGS
541                 dnl will fail   
542                 DB2HTML=""
543                 AC_CHECK_PROGS(DB2HTML,db2html docbook2html,false)
544         fi
545 fi
546 AC_SUBST(WDUMP)
547 AC_SUBST(DB2HTML)
548
549 dnl If we use rpm, we need to check where %_topdir is
550 AC_CHECK_PROGS(RPMBIN,rpm,false)
551 if test $RPMBIN != false; then
552                 RPM_BASE=`rpm --eval "%{_topdir}"`
553                 if test "$RPM_BASE" = ""; then
554                         RPM_BASE=/usr/src/redhat
555                 fi
556 fi
557 AC_SUBST(RPM_BASE)
558
559 dnl Check for jade, so we can build the documentation
560 AC_CHECK_PROGS(JADEBIN,jade openjade,false)
561 AC_SUBST(JADEBIN)
562
563 dnl Check for man2html for docs.
564 AC_CHECK_PROGS(MAN2HTML,man2html,false)
565 AC_SUBST(MAN2HTML)
566
567 dnl Checking for the docbook.dsl stylesheet file
568 dnl It is still not portable (directory slash)
569 if test $dodk = yes; then
570   if test $DKPREFIX = none; then
571     for i in /usr/share/sgml/docbook/dsssl-stylesheets /usr/share/sgml/docbkdsl /usr/share/sgml/docbook-dsssl; do
572       echo -n "checking for $i/html/docbook.dsl..."
573       if test -f $i/html/docbook.dsl; then
574         echo "yes"
575         DKPREFIX=$i
576         break
577       else
578         echo "no"
579       fi
580     done
581   fi
582 fi
583 AC_SUBST(DKPREFIX)
584
585 dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
586 old_CFLAGS_nospecial=$CFLAGS
587 CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
588
589 # Hack to force AutoConf to use the CFLAGS we just set
590 dnl Warning: This may break with a future version of Autoconf
591 dnl          Tested with autoconf 2.13
592 ac_cpp='$CPP $CPPFLAGS $SPECIAL_CFLAGS'
593 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
594 ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
595
596
597 dnl =================================================================
598 dnl Thread support
599 dnl =================================================================
600
601 AC_CHECK_HEADER(pthread.h, [have_pthread=yes], [have_pthread=no])
602
603 AC_ARG_ENABLE(pthread,
604 [  --disable-pthread       Don't use POSIX threads (pthreads)],
605 [if test $enableval = no; then
606   # Disable pthreads
607   have_pthread=no
608 fi])
609
610 if test $have_pthread = yes; then
611   PTHREAD_ONLY=
612   AC_DEFINE(FEATURE_PTHREAD)
613   echo Using POSIX threads
614   if test "$GCC" = "yes"; then
615     # Set a GCC specific switch:
616     if test "$target_type" = "unix"; then
617       # This compiler switch makes Linux thread-safe
618       # Don't know about other OS's?  Is this switch
619       # supported?
620       PTHREAD_LIB=
621       SPECIAL_CFLAGS="-pthread"
622     fi
623   fi
624 else
625   PTHREAD_ONLY=#
626   echo Using native threads
627 fi
628
629 AC_SUBST(PTHREAD_ONLY)
630
631 dnl =================================================================
632 dnl Support for thread-safe versions of gethostbyaddr, gethostbyname,
633 dnl gmtime and localtime
634 dnl =================================================================
635
636 dnl Next line needed to find the gethost*_r functions on Solaris
637 AC_CHECK_LIB(nsl, gethostbyname)
638
639 AC_CHECK_FUNC(gethostbyaddr_r, [
640   AC_MSG_CHECKING([signature of gethostbyaddr_r])
641   AC_TRY_COMPILE([
642 #   include <netdb.h>
643   ], [
644     struct hostent *h, *hp;
645     char *a, *b;
646     int l, bl, t, e;
647     (void) gethostbyaddr_r(a, l, t, h, b, bl, &hp, &e)
648   ], [
649     AC_DEFINE(HAVE_GETHOSTBYADDR_R_8_ARGS)
650     AC_MSG_RESULT([8 args])
651   ], [
652     AC_TRY_COMPILE([
653 #     include <netdb.h>
654     ], [
655       struct hostent *h;
656       char *a, *b;
657       int l, bl, t, e;
658       (void) gethostbyaddr_r(a, l, t, h, b, bl, &e)
659     ], [
660       AC_DEFINE(HAVE_GETHOSTBYADDR_R_7_ARGS)
661       AC_MSG_RESULT([7 args])
662     ], [
663       AC_TRY_COMPILE([
664 #       include <netdb.h>
665       ], [
666         struct hostent_data *d;
667         struct hostent *h;
668         char a,
669         int l, t;
670         (void) gethostbyaddr_r(a, l, t, h, d)
671       ], [
672         AC_DEFINE(HAVE_GETHOSTBYADDR_R_5_ARGS)
673         AC_MSG_RESULT([5 args])
674       ], [
675         AC_MSG_RESULT(unrecognised)
676       ])
677     ])
678   ])
679 ], [
680   AC_MSG_RESULT(no)
681 ])
682
683 AC_CHECK_FUNC(gethostbyname_r, [
684   AC_MSG_CHECKING([signature of gethostbyname_r])
685   AC_TRY_COMPILE([
686 #   include <netdb.h>
687   ], [
688     struct hostent *h, *r;
689     char *n, *b;
690     int bl, e;
691     (void) gethostbyname_r(n, h, b, bl, &r, &e)
692   ], [
693     AC_DEFINE(HAVE_GETHOSTBYNAME_R_6_ARGS)
694     AC_MSG_RESULT([6 args])
695   ], [
696     AC_TRY_COMPILE([
697 #     include <netdb.h>
698     ], [
699       struct hostent *h;
700       char *n, *b;
701       int bl, e;
702       (void) gethostbyname_r(n, h, b, bl, &e)
703     ], [
704       AC_DEFINE(HAVE_GETHOSTBYNAME_R_5_ARGS)
705       AC_MSG_RESULT([5 args])
706     ], [
707       AC_TRY_COMPILE([
708 #       include <netdb.h>
709       ], [
710         struct hostent_data *d;
711         struct hostent *h;
712         char *n,
713         (void) gethostbyname_r(n, h, d)
714       ], [
715         AC_DEFINE(HAVE_GETHOSTBYNAME_R_3_ARGS)
716         AC_MSG_RESULT([3 args])
717       ], [
718         AC_MSG_RESULT(unrecognised)
719       ])
720     ])
721   ])
722 ], [
723   AC_MSG_RESULT(no)
724 ])
725
726 AC_CHECK_FUNC(gmtime_r, [
727   AC_MSG_CHECKING([signature of gmtime_r])
728   AC_TRY_COMPILE([
729 #   include <time.h>
730   ], [
731     struct time *t;
732     struct tm *tm;
733     (void) gmtime_r(t, tm)
734   ], [
735     AC_MSG_RESULT(ok)
736     AC_DEFINE(HAVE_GMTIME_R)
737   ], [
738     AC_MSG_RESULT(unrecognised)
739   ])
740 ], [
741   AC_MSG_RESULT(no)
742 ])
743
744 AC_CHECK_FUNC(localtime_r, [
745   AC_MSG_CHECKING([signature of localtime_r])
746   AC_TRY_COMPILE([
747 #   include <time.h>
748   ], [
749     struct time *t;
750     struct tm *tm;
751     (void) localtime_r(t, tm)
752   ], [
753     AC_MSG_RESULT(ok)
754     AC_DEFINE(HAVE_LOCALTIME_R)
755   ], [
756     AC_MSG_RESULT(unrecognised)
757   ])
758 ], [
759   AC_MSG_RESULT(no)
760 ])
761
762 dnl =================================================================
763 dnl Solaris specific
764 dnl FIXME: Not tested on Solaris yet...
765 dnl =================================================================
766
767
768 SOCKET_LIB=
769
770 case "$host" in
771 *-solaris*) SOCKET_LIB="-lsocket -lnsl"
772             AC_DEFINE(__EXTENSIONS__)
773             if test "$GCC" = "yes"; then
774               # Set a GCC specific switch:
775               # This compiler switch makes Solaris thread-safe
776               PTHREAD_LIB=
777               SPECIAL_CFLAGS="-pthreads"
778             else
779               # What do we do without GCC? Guess this:
780               SPECIAL_CFLAGS="-D_REENTRANT"
781             fi
782 ;;
783 esac
784
785 AC_SUBST(SOCKET_LIB)
786
787 dnl =================================================================
788 dnl OS/2 specific
789 dnl =================================================================
790
791 case "$host" in
792 *-os2-emx*) SOCKET_LIB=-lsocket
793 ;;
794 esac
795
796 AC_SUBST(SOCKET_LIB)
797
798 dnl =================================================================
799 dnl Mac OSX specific
800 dnl =================================================================
801     
802 case "$host" in
803 *-apple-darwin*) SPECIAL_CFLAGS="-Dunix"
804 ;;  
805 esac
806
807 dnl =================================================================
808 dnl AmigaOS specific
809 dnl =================================================================
810
811 AMIGAOS_ONLY=#
812
813 case "$host" in
814 *-amigaos) AMIGAOS_ONLY=
815 ;;
816 esac
817
818 AC_SUBST(AMIGAOS_ONLY)
819
820 dnl =================================================================
821 dnl Check for standard compiler stuff
822 dnl =================================================================
823
824 AC_EXEEXT
825 AC_OBJEXT
826 AC_HEADER_STDC
827 AC_HEADER_DIRENT
828 AC_C_CONST
829 AC_TYPE_SIZE_T
830 AC_TYPE_PID_T
831 AC_HEADER_TIME
832 AC_STRUCT_TM
833 AC_CHECK_SIZEOF(int, 4)
834 AC_CHECK_SIZEOF(char *, 4)
835 AC_CHECK_SIZEOF(long, 4)
836 AC_CHECK_SIZEOF(long long, 8)
837 AC_CHECK_SIZEOF(size_t, 4)
838
839 dnl Checks for header files.
840 dnl AC_HEADER_SYS_WAIT
841 dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h)
842 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])
843
844 dnl Checks for library functions.
845 dnl AC_TYPE_SIGNAL
846 dnl AC_CHECK_FUNC(strstr)
847 dnl bcopy and memmove are for PCRE
848 AC_CHECK_FUNCS([strerror bcopy memmove])
849 AC_PROG_GCC_TRADITIONAL
850 dnl uncommenting does not work for swa. suse linux
851 dnl AC_FUNC_MALLOC
852 AC_FUNC_SETPGRP
853 AC_TYPE_SIGNAL
854 dnl uncommenting does not work for swa. suse linux
855 dnl AC_FUNC_STAT
856 AC_CHECK_FUNCS([atexit getcwd gethostbyaddr gethostbyname inet_ntoa localtime_r memchr memmove memset regcomp select setlocale socket strchr strdup strerror strftime strstr strtoul])
857
858
859 dnl =================================================================
860 dnl Checks for libraries.
861 dnl =================================================================
862 dnl Note: Some systems may have the library but not the system header
863 dnl       file, so we must check for both.
864 dnl       Also check for correct version
865 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])
866 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)
867 AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no])
868
869
870 dnl =================================================================
871 dnl Always defined
872 dnl =================================================================
873
874 AC_DEFINE(__MT__)
875
876 dnl =================================================================
877 dnl Features
878 dnl =================================================================
879
880 AC_ARG_ENABLE(toggle,
881 [  --disable-toggle         Don't support temporary disable],
882 [if test $enableval = yes; then
883   AC_DEFINE(FEATURE_TOGGLE)
884 fi],AC_DEFINE(FEATURE_TOGGLE))
885
886 AC_ARG_ENABLE(force,
887 [  --disable-force          Don't allow single-page disable],
888 [if test $enableval = yes; then
889   AC_DEFINE(FEATURE_FORCE_LOAD)
890 fi],AC_DEFINE(FEATURE_FORCE_LOAD))
891
892 AC_ARG_ENABLE(fast-redirects,
893 [  --disable-fast-redirects Don't support fast redirects],
894 [if test $enableval = yes; then
895   AC_DEFINE(FEATURE_FAST_REDIRECTS)
896 fi], AC_DEFINE(FEATURE_FAST_REDIRECTS))
897
898 AC_ARG_ENABLE(killpopup,
899 [  --disable-killpopup      Never block popups],
900 [if test $enableval = yes; then
901   AC_DEFINE(FEATURE_KILL_POPUPS)
902 fi],AC_DEFINE(FEATURE_KILL_POPUPS))
903
904 AC_ARG_ENABLE(stats,
905 [  --disable-stats          Don't keep statistics],
906 [if test $enableval = yes; then
907   AC_DEFINE(FEATURE_STATISTICS)
908 fi],AC_DEFINE(FEATURE_STATISTICS))
909
910 AC_ARG_ENABLE(ie-images,
911 [  --disable-ie-images      Don't auto-detect whether a request from MS Internet
912                            Explorer is for an image or HTML.],
913 [if test $enableval = yes; then
914   AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE)
915 fi],
916 AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE))
917
918 AC_ARG_ENABLE(image-blocking,
919 [  --disable-image-blocking Don't try to figure out whether a request is 
920                            for an image or HTML - assume HTML.],
921 [if test $enableval = yes; then
922   AC_DEFINE(FEATURE_IMAGE_BLOCKING)
923 fi],
924 AC_DEFINE(FEATURE_IMAGE_BLOCKING))
925
926 AC_ARG_ENABLE(acl-files,
927 [  --disable-acl-files      Prevents the use of ACL files to control access to
928                            the proxy by IP address.],
929 [if test $enableval = yes; then
930   AC_DEFINE(FEATURE_ACL)
931 fi],
932 AC_DEFINE(FEATURE_ACL))
933
934 AC_ARG_ENABLE(trust-files,
935 [  --disable-trust-files    Prevents the use of trust files.],
936 [if test $enableval = yes; then
937   AC_DEFINE(FEATURE_TRUST)
938 fi],
939 AC_DEFINE(FEATURE_TRUST))
940
941 AC_ARG_ENABLE(jar-files,
942 [  --disable-jar-files      Prevents the use of jar files to capture cookies.],
943 [if test $enableval = yes; then
944   AC_DEFINE(FEATURE_COOKIE_JAR)
945 fi],
946 AC_DEFINE(FEATURE_COOKIE_JAR))
947
948 AC_ARG_ENABLE(editor,
949 [  --disable-editor         Prevents the use of the web-based actions file
950                            editor and web-based temporary disable setting.],
951 [if test $enableval = yes; then
952   AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS)
953 fi],
954 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS))
955
956 AC_ARG_ENABLE(no-gifs,
957 [  --enable-no-gifs         Use politically correct PNG format instead of GIF
958                            for built-in images. May not work with all browsers.],
959 [if test $enableval = yes; then
960   AC_DEFINE(FEATURE_NO_GIFS)
961 fi])
962
963
964 dnl pcre/pcrs is needed for CGI anyway, so
965 dnl the choice is only between static and
966 dnl dynamic:
967
968 AC_ARG_ENABLE(regex-matching,
969 [  --enable-regex-matching=pcre  Use perl-compatible regex for actionsfile
970                                 pattern matching (default)
971   --disable-regex-matching      Don't use regex matching, compare URL
972                                 prefix instead (won't shrink birary)],
973 [ regex_matching=$enableval ],
974 [ regex_matching=pcre ])
975
976 AC_ARG_ENABLE(dynamic-pcre,
977 [  --disable-dynamic-pcre        Use the built-in, static pcre, even if
978                                 libpcre is available],
979 [ if test $enableval = "no"; then have_pcre=no; fi ])
980
981 AC_ARG_ENABLE(dynamic-pcrs,
982 [  --disable-dynamic-pcrs        Use the built-in, static pcrs, even if
983                                 libpcrs is available],
984 [ if test $enableval = "no"; then have_pcrs=no; fi ])
985
986
987 # Is the regex URL matching based on libpcreposix, but we
988 # don't have that library?
989 #
990 if test $have_pcreposix = "yes" -o $regex_matching != "pcre"; then
991   dont_miss_pcreposix=yes
992 else
993   dont_miss_pcreposix=no
994 fi
995
996 # If we have libpcre and either we also have pcreposix or
997 # we don't need pcreposix, then link pcre dynamically; else
998 # build it and link statically
999 #
1000 if test $have_pcre = "yes" -a $dont_miss_pcreposix = "yes"; then
1001   echo "using libpcre"
1002   pcre_dyn=yes
1003   STATIC_PCRE_ONLY=#
1004   LIBS="$LIBS -lpcre"
1005 else
1006   echo "using built-in static pcre"
1007   pcre_dyn=no
1008   AC_DEFINE(STATIC_PCRE)
1009   STATIC_PCRE_ONLY=
1010 fi
1011
1012 # If we have libpcrs and pcre is linked dynamically
1013 # then also link pcrs dynamically, else build and link
1014 # pcrs statically
1015 #
1016 if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
1017   echo "using libpcrs"
1018   STATIC_PCRS_ONLY=#
1019   LIBS="$LIBS -lpcrs"
1020 else
1021   echo "using built-in static pcrs"
1022   AC_DEFINE(STATIC_PCRS)
1023   STATIC_PCRS_ONLY=
1024 fi
1025
1026 # Which method should be used for URL matching?
1027 # pcre or prefix matching?
1028 #
1029 if test $regex_matching = "pcre"; then
1030   echo "using pcre regex for URL matching"
1031   AC_DEFINE(REGEX_PCRE)
1032   PCRE_REGEX_ONLY=
1033   if test $pcre_dyn = "yes"; then
1034     LIBS="$LIBS -lpcreposix"
1035   fi
1036 else
1037   echo -e "using prefix matching for URLs\nHint: This does NOT make the executable any smaller!"
1038   PCRE_REGEX_ONLY=#
1039 fi
1040
1041 AC_SUBST(PCRE_REGEX_ONLY)
1042 AC_SUBST(STATIC_PCRE_ONLY)
1043 AC_SUBST(STATIC_PCRS_ONLY)
1044
1045 dnl =================================================================
1046 dnl Final cleanup and output
1047 dnl =================================================================
1048
1049 dnl Remove the SPECIAL_CFLAGS stuff from CFLAGS, and add it seperately
1050 dnl in the Makefile
1051 CFLAGS=$old_CFLAGS_nospecial
1052 AC_SUBST(SPECIAL_CFLAGS)
1053
1054 AC_SUBST(PTHREAD_LIB)
1055
1056 AC_OUTPUT(GNUmakefile)