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