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