1 dnl Process this file with autoconf to produce a configure script.
3 dnl $Id: configure.in,v 1.15 2001/09/12 17:28:59 david__schmidt Exp $
5 dnl Written by and Copyright (C) 2001 the SourceForge
6 dnl IJBSWA team. http://ijbswa.sourceforge.net
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
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.
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.
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.
30 dnl $Log: configure.in,v $
31 dnl Revision 1.15 2001/09/12 17:28:59 david__schmidt
33 dnl OS/2 port: update autoconf'd support for the platform.
35 dnl Revision 1.14 2001/07/30 22:12:11 jongfoster
36 dnl Fixing Solaris build (I hope) and tidying up #defines:
37 dnl - All feature #defines are now of the form FEATURE_xxx
38 dnl - Permanently turned off WIN_GUI_EDIT
39 dnl - Permanently turned on WEBDAV and SPLIT_PROXY_ARGS
41 dnl Revision 1.13 2001/07/29 17:09:17 jongfoster
42 dnl Major changes to build system in order to fix these bugs:
43 dnl - pthreads under Linux was broken - changed -lpthread to -pthread
44 dnl - Compiling in MinGW32 mode under CygWin now correctly detects
45 dnl which shared libraries are available
46 dnl - Solaris support (?) (Not tested under Solaris yet)
48 dnl Revision 1.12 2001/07/25 19:16:27 oes
49 dnl Bumping version number to 2.9.8
51 dnl Revision 1.11 2001/07/21 18:00:07 jongfoster
52 dnl Bumping version number to 2.9.7
54 dnl Revision 1.10 2001/07/18 17:25:04 oes
57 dnl Revision 1.9 2001/07/15 19:45:13 jongfoster
58 dnl Added support for linking with POSIX threads library
60 dnl Revision 1.8 2001/07/15 17:54:29 jongfoster
61 dnl Renaming #define STATIC to STATIC_PCRE
62 dnl Adding new #define FEATURE_PTHREAD that will be used to enable
63 dnl POSIX threads support.
65 dnl Revision 1.7 2001/07/13 13:58:05 oes
66 dnl Completely reorganized the selection scheme for
67 dnl pcre, pcreposix, pcrs and gnu_regex:
69 dnl The presence of shared pcre, pcreposix or pcrs
70 dnl libraried is now autodetected. Additionally, the
71 dnl user can enforce using the built-in static variants
72 dnl by specifying --disable-dynamic-(pcre|pcrs).
73 dnl Care is taken to avoid that pcre is dyn, while pcreposix
74 dnl is static, if both are used and that pcrs is static if
77 dnl The choice between pcre, gnu or no regex for actionsfile
78 dnl URL matching is now via
79 dnl --(enable|disable)-regex-matching[=(gnu|pcre|no)] with the
80 dnl default being pcre.
82 dnl Revision 1.6 2001/06/29 21:56:40 oes
85 dnl Revision 1.5 2001/06/29 13:26:27 oes
86 dnl Introduced #define CODE_STATUS
88 dnl Revision 1.4 2001/05/29 09:50:24 jongfoster
89 dnl Unified blocklist/imagelist/permissionslist.
90 dnl File format is still under discussion, but the internal changes
91 dnl are (mostly) done.
93 dnl Also modified interceptor behaviour:
94 dnl - We now intercept all URLs beginning with one of the following
95 dnl prefixes (and *only* these prefixes):
97 dnl * http://ijbswa.sf.net/config/
98 dnl * http://ijbswa.sourceforge.net/config/
99 dnl - New interceptors "home page" - go to http://i.j.b/ to see it.
100 dnl - Internal changes so that intercepted and fast redirect pages
101 dnl are not replaced with an image.
102 dnl - Interceptors now have the option to send a binary page direct
103 dnl to the client. (i.e. ijb-send-banner uses this)
104 dnl - Implemented show-url-info interceptor. (Which is why I needed
105 dnl the above interceptors changes - a typical URL is
106 dnl "http://i.j.b/show-url-info?url=www.somesite.com/banner.gif".
107 dnl The previous mechanism would not have intercepted that, and
108 dnl if it had been intercepted then it then it would have replaced
109 dnl it with an image.)
111 dnl Revision 1.3 2001/05/22 18:46:04 oes
113 dnl - Enabled filtering banners by size rather than URL
114 dnl by adding patterns that replace all standard banner
115 dnl sizes with the "Junkbuster" gif to the re_filterfile
117 dnl - Enabled filtering WebBugs by providing a pattern
118 dnl which kills all 1x1 images
120 dnl - Added support for PCRE_UNGREEDY behaviour to pcrs,
121 dnl which is selected by the (nonstandard and therefore
122 dnl capital) letter 'U' in the option string.
123 dnl It causes the quantifiers to be ungreedy by default.
124 dnl Appending a ? turns back to greedy (!).
126 dnl - Added a new interceptor ijb-send-banner, which
127 dnl sends back the "Junkbuster" gif. Without imagelist or
128 dnl MSIE detection support, or if tinygif = 1, or the
129 dnl URL isn't recognized as an imageurl, a lame HTML
130 dnl explanation is sent instead.
132 dnl - Added new feature, which permits blocking remote
133 dnl script redirects and firing back a local redirect
135 dnl The feature is conditionally compiled, i.e. it
136 dnl can be disabled with --disable-fast-redirects,
137 dnl plus it must be activated by a "fast-redirects"
138 dnl line in the config file, has its own log level
139 dnl and of course wants to be displayed by show-proxy-args
140 dnl Note: Boy, all the #ifdefs in 1001 locations and
141 dnl all the fumbling with configure.in and acconfig.h
142 dnl were *way* more work than the feature itself :-(
144 dnl - Because a generic redirect template was needed for
145 dnl this, tinygif = 3 now uses the same.
147 dnl - Moved GIFs, and other static HTTP response templates
150 dnl - Some minor fixes
152 dnl - Removed some >400 CRs again (Jon, you really worked
155 dnl Revision 1.2 2001/05/20 01:21:20 jongfoster
156 dnl Version 2.9.4 checkin.
157 dnl - Merged popupfile and cookiefile, and added control over PCRS
158 dnl filtering, in new "permissionsfile".
159 dnl - Implemented LOG_LEVEL_FATAL, so that if there is a configuration
160 dnl file error you now get a message box (in the Win32 GUI) rather
161 dnl than the program exiting with no explanation.
162 dnl - Made killpopup use the PCRS MIME-type checking and HTTP-header
164 dnl - Removed tabs from "config"
165 dnl - Moved duplicated url parsing code in "loaders.c" to a new funcition.
166 dnl - Bumped up version number.
168 dnl Revision 1.1.1.1 2001/05/15 13:58:50 oes
169 dnl Initial import of version 2.9.3 source tree
174 dnl =================================================================
175 dnl AutoConf Initialization
176 dnl =================================================================
178 AC_REVISION($Revision: 1.15 $)
180 AC_CONFIG_HEADER(config.h)
183 dnl =================================================================
184 dnl Application version number
185 dnl =================================================================
190 CODE_STATUS="\"alpha\""
192 dnl CODE_STATUS can be "alpha", "beta", or "stable", and will be
193 dnl used for CGI output
195 dnl =================================================================
196 dnl Substitute the version numbers
197 dnl =================================================================
199 AC_SUBST(VERSION_MAJOR)
200 AC_SUBST(VERSION_MINOR)
201 AC_SUBST(VERSION_POINT)
204 AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR})
205 AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR})
206 AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT})
207 AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}")
208 AC_DEFINE_UNQUOTED(CODE_STATUS,${CODE_STATUS})
211 dnl =================================================================
212 dnl Checks for programs needed to build.
213 dnl =================================================================
220 dnl RANLIB is for PCRE:
224 dnl =================================================================
226 dnl =================================================================
228 dnl Must do this first.
230 dnl Reason: This sets CFLAGS in order to switch the Cygwin compiler
231 dnl into Cygwin or MinGW32 modes. Depending on the mode selected,
232 dnl the compiler will use completely different sets of library
233 dnl and include files.
235 dnl =================================================================
240 if test "$MINGW32" = "yes"; then
243 if test "$CYGWIN" = "yes"; then
250 dnl Decide what to do based on target_type
251 dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
252 dnl This is because we don't know yet whether pthread is enabled.
254 AC_ARG_ENABLE(mingw32,
255 [ --enable-mingw32 Use mingw32 for a Windows GUI],
256 [if test $enableval = yes; then
260 if test $target_type = mingw; then
262 SPECIAL_CFLAGS="-mwindows -mno-cygwin"
263 PTHREAD_LIB=-lpthreadGC
264 echo "Using mingw32 (Win32 GUI)"
267 if test $target_type = cygwin; then
268 SPECIAL_CFLAGS="-mno-win32"
270 echo "Using Cygnus (Win32 command line)"
273 PTHREAD_LIB=-lpthread
278 dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
279 old_CFLAGS_nospecial=$CFLAGS
280 CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
282 # Hack to force AutoConf to use the CFLAGS we just set
283 dnl Warning: This may break with a future version of Autoconf
284 dnl Tested with autoconf 2.13
285 ac_cpp='$CPP $CPPFLAGS $SPECIAL_CFLAGS'
286 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
287 ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
290 dnl =================================================================
292 dnl =================================================================
294 AC_CHECK_HEADER(pthread.h, [have_pthread=yes], [have_pthread=no])
296 AC_ARG_ENABLE(pthread,
297 [ --disable-pthread Don't use POSIX threads (pthreads)],
298 [if test $enableval = no; then
303 if test $have_pthread = yes; then
305 AC_DEFINE(FEATURE_PTHREAD)
306 echo Using POSIX threads
307 if test "$GCC" = "yes"; then
308 # Set a GCC specific switch:
309 if test "$target_type" = "unix"; then
310 # This compiler switch makes Linux thread-safe
311 # Don't know about other OS's? Is this switch
314 SPECIAL_CFLAGS="-pthread"
319 echo Using native threads
322 AC_SUBST(PTHREAD_ONLY)
325 dnl =================================================================
327 dnl FIXME: Not tested on Solaris yet...
328 dnl =================================================================
335 *-solaris*) SOCKET_LIB=-lsocket -lnsl
336 AC_DEFINE(__EXTENSIONS__)
337 if test "$GCC" = "yes"; then
338 # Set a GCC specific switch:
339 # This compiler switch makes Solaris thread-safe
341 SPECIAL_CFLAGS="-pthreads"
343 # What do we do without GCC? Guess this:
344 SPECIAL_CFLAGS="-D_REENTRANT"
351 dnl =================================================================
353 dnl =================================================================
356 *-os2-emx*) SOCKET_LIB=-lsocket
362 dnl =================================================================
364 dnl =================================================================
369 *-amigaos) AMIGAOS_ONLY=
373 AC_SUBST(AMIGAOS_ONLY)
375 dnl =================================================================
376 dnl Check for standard compiler stuff
377 dnl =================================================================
385 dnl Checks for header files.
386 dnl AC_HEADER_SYS_WAIT
387 dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h)
389 dnl Checks for library functions.
391 dnl AC_CHECK_FUNC(strstr)
392 dnl bcopy and memmove are for PCRE
393 AC_CHECK_FUNCS(strerror bcopy memmove)
396 dnl =================================================================
397 dnl Checks for libraries.
398 dnl =================================================================
399 dnl Note: Some systems may have the library but not the system header
400 dnl file, so we must check for both.
401 AC_CHECK_LIB(pcre, pcre_compile, [AC_CHECK_HEADER(pcre.h, [have_pcre=yes], [have_pcre=no])], [have_pcre=no])
402 AC_CHECK_LIB(pcreposix, regcomp, [AC_CHECK_HEADER(pcreposix.h, [have_pcreposix=yes], [have_pcreposix=no])], [have_pcreposix=no], -lpcre)
403 AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no])
406 dnl =================================================================
408 dnl =================================================================
412 dnl =================================================================
414 dnl =================================================================
416 AC_ARG_ENABLE(toggle,
417 [ --disable-toggle Don't support temporary disable],
418 [if test $enableval = yes; then
419 AC_DEFINE(FEATURE_TOGGLE)
420 fi],AC_DEFINE(FEATURE_TOGGLE))
423 [ --disable-gzip Block gzip'ed transfer of documents. Note that
424 this is required if you want content modification
425 even with gzip-supporting servers.],
426 [if test $enableval = "no"; then
427 AC_DEFINE(FEATURE_DENY_GZIP)
431 [ --disable-force Don't allow blockfile to be bypassed],
432 [if test $enableval = yes; then
433 AC_DEFINE(FEATURE_FORCE_LOAD)
434 fi],AC_DEFINE(FEATURE_FORCE_LOAD))
436 AC_ARG_ENABLE(fast-redirects,
437 [ --disable-fast-redirects Don't support fast redirects],
438 [if test $enableval = yes; then
439 AC_DEFINE(FEATURE_FAST_REDIRECTS)
440 fi], AC_DEFINE(FEATURE_FAST_REDIRECTS))
442 AC_ARG_ENABLE(killpopup,
443 [ --disable-killpopup Never block popups],
444 [if test $enableval = yes; then
445 AC_DEFINE(FEATURE_KILL_POPUPS)
446 fi],AC_DEFINE(FEATURE_KILL_POPUPS))
449 [ --disable-stats Don't keep statistics],
450 [if test $enableval = yes; then
451 AC_DEFINE(FEATURE_STATISTICS)
452 fi],AC_DEFINE(FEATURE_STATISTICS))
454 AC_ARG_ENABLE(ie-images,
455 [ --disable-ie-images Don't auto-detect whether a request from MS Internet
456 Explorer is for an image or HTML.],
457 [if test $enableval = yes; then
458 AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE)
460 AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE))
462 AC_ARG_ENABLE(image-blocking,
463 [ --disable-image-blocking Don't try to figure out whether a request is
464 for an image or HTML - assume HTML.],
465 [if test $enableval = yes; then
466 AC_DEFINE(FEATURE_IMAGE_BLOCKING)
468 AC_DEFINE(FEATURE_IMAGE_BLOCKING))
470 AC_ARG_ENABLE(acl-files,
471 [ --disable-acl-files Prevents the use of ACL files to control access to
472 the proxy by IP address.],
473 [if test $enableval = yes; then
474 AC_DEFINE(FEATURE_ACL)
476 AC_DEFINE(FEATURE_ACL))
478 AC_ARG_ENABLE(trust-files,
479 [ --disable-trust-files Prevents the use of trust files.],
480 [if test $enableval = yes; then
481 AC_DEFINE(FEATURE_TRUST)
483 AC_DEFINE(FEATURE_TRUST))
485 AC_ARG_ENABLE(jar-files,
486 [ --disable-jar-files Prevents the use of jar files to capture cookies.],
487 [if test $enableval = yes; then
488 AC_DEFINE(FEATURE_COOKIE_JAR)
490 AC_DEFINE(FEATURE_COOKIE_JAR))
492 dnl pcre/pcrs is needed for CGI anyway, so
493 dnl the choice is only between static and
496 AC_ARG_ENABLE(regex-matching,
497 [ --enable-regex-matching=pcre Use perl-compatible regex for actionsfile
498 pattern matching (default)
499 --enable-regex-matching=gnu Use gnu style regex for actionsfile pattern
500 matching (-> bigger binary)
501 --disable-regex-matching Don't use regex matching, compare URL
502 prefix instead (won't shrink birary)],
503 [ regex_matching=$enableval ],
504 [ regex_matching=pcre ])
506 AC_ARG_ENABLE(dynamic-pcre,
507 [ --disable-dynamic-pcre Use the built-in, static pcre, even if
508 libpcre is available],
509 [ if test $enableval = "no"; then have_pcre=no; fi ])
511 AC_ARG_ENABLE(dynamic-pcrs,
512 [ --disable-dynamic-pcrs Use the built-in, static pcrs, even if
513 libpcrs is available],
514 [ if test $enableval = "no"; then have_pcrs=no; fi ])
517 # Is the regex URL matching based on libpcreposix, but we
518 # don't have that library?
520 if test $have_pcreposix = "yes" -o $regex_matching != "pcre"; then
521 dont_miss_pcreposix=yes
523 dont_miss_pcreposix=no
526 # If we have libpcre and either we also have pcreposix or
527 # we don't need pcreposix, then link pcre dynamically; else
528 # build it and link statically
530 if test $have_pcre = "yes" -a $dont_miss_pcreposix = "yes"; then
536 echo "using built-in static pcre"
538 AC_DEFINE(STATIC_PCRE)
542 # If we have libpcrs and pcre is linked dynamically
543 # then also link pcrs dynamically, else build and link
546 if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
551 echo "using built-in static pcrs"
552 AC_DEFINE(STATIC_PCRS)
556 # Which method should be used for URL matching?
557 # pcre, gnu regex or prefix matching?
559 if test $regex_matching = "gnu"; then
560 echo "using gnu regex for URL matching"
564 elif test $regex_matching = "pcre"; then
565 echo "using pcre regex for URL matching"
566 AC_DEFINE(REGEX_PCRE)
569 if test $pcre_dyn = "yes"; then
570 LIBS="$LIBS -lpcreposix"
573 echo -e "using prefix matching for URLs\nHint: This does NOT make the executable any smaller!"
578 AC_SUBST(GNU_REGEX_ONLY)
579 AC_SUBST(PCRE_REGEX_ONLY)
580 AC_SUBST(STATIC_PCRE_ONLY)
581 AC_SUBST(STATIC_PCRS_ONLY)
583 dnl =================================================================
584 dnl Final cleanup and output
585 dnl =================================================================
587 dnl Remove the SPECIAL_CFLAGS stuff from CFLAGS, and add it seperately
589 CFLAGS=$old_CFLAGS_nospecial
590 AC_SUBST(SPECIAL_CFLAGS)
592 AC_SUBST(PTHREAD_LIB)