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