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