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