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