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