1 dnl Process this file with autoconf to produce a configure script.
3 dnl $Id: configure.in,v 1.14 2001/07/30 22:12:11 jongfoster 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.14 2001/07/30 22:12:11 jongfoster
32 dnl Fixing Solaris build (I hope) and tidying up #defines:
33 dnl - All feature #defines are now of the form FEATURE_xxx
34 dnl - Permanently turned off WIN_GUI_EDIT
35 dnl - Permanently turned on WEBDAV and SPLIT_PROXY_ARGS
37 dnl Revision 1.13 2001/07/29 17:09:17 jongfoster
38 dnl Major changes to build system in order to fix these bugs:
39 dnl - pthreads under Linux was broken - changed -lpthread to -pthread
40 dnl - Compiling in MinGW32 mode under CygWin now correctly detects
41 dnl which shared libraries are available
42 dnl - Solaris support (?) (Not tested under Solaris yet)
44 dnl Revision 1.12 2001/07/25 19:16:27 oes
45 dnl Bumping version number to 2.9.8
47 dnl Revision 1.11 2001/07/21 18:00:07 jongfoster
48 dnl Bumping version number to 2.9.7
50 dnl Revision 1.10 2001/07/18 17:25:04 oes
53 dnl Revision 1.9 2001/07/15 19:45:13 jongfoster
54 dnl Added support for linking with POSIX threads library
56 dnl Revision 1.8 2001/07/15 17:54:29 jongfoster
57 dnl Renaming #define STATIC to STATIC_PCRE
58 dnl Adding new #define FEATURE_PTHREAD that will be used to enable
59 dnl POSIX threads support.
61 dnl Revision 1.7 2001/07/13 13:58:05 oes
62 dnl Completely reorganized the selection scheme for
63 dnl pcre, pcreposix, pcrs and gnu_regex:
65 dnl The presence of shared pcre, pcreposix or pcrs
66 dnl libraried is now autodetected. Additionally, the
67 dnl user can enforce using the built-in static variants
68 dnl by specifying --disable-dynamic-(pcre|pcrs).
69 dnl Care is taken to avoid that pcre is dyn, while pcreposix
70 dnl is static, if both are used and that pcrs is static if
73 dnl The choice between pcre, gnu or no regex for actionsfile
74 dnl URL matching is now via
75 dnl --(enable|disable)-regex-matching[=(gnu|pcre|no)] with the
76 dnl default being pcre.
78 dnl Revision 1.6 2001/06/29 21:56:40 oes
81 dnl Revision 1.5 2001/06/29 13:26:27 oes
82 dnl Introduced #define CODE_STATUS
84 dnl Revision 1.4 2001/05/29 09:50:24 jongfoster
85 dnl Unified blocklist/imagelist/permissionslist.
86 dnl File format is still under discussion, but the internal changes
87 dnl are (mostly) done.
89 dnl Also modified interceptor behaviour:
90 dnl - We now intercept all URLs beginning with one of the following
91 dnl prefixes (and *only* these prefixes):
93 dnl * http://ijbswa.sf.net/config/
94 dnl * http://ijbswa.sourceforge.net/config/
95 dnl - New interceptors "home page" - go to http://i.j.b/ to see it.
96 dnl - Internal changes so that intercepted and fast redirect pages
97 dnl are not replaced with an image.
98 dnl - Interceptors now have the option to send a binary page direct
99 dnl to the client. (i.e. ijb-send-banner uses this)
100 dnl - Implemented show-url-info interceptor. (Which is why I needed
101 dnl the above interceptors changes - a typical URL is
102 dnl "http://i.j.b/show-url-info?url=www.somesite.com/banner.gif".
103 dnl The previous mechanism would not have intercepted that, and
104 dnl if it had been intercepted then it then it would have replaced
105 dnl it with an image.)
107 dnl Revision 1.3 2001/05/22 18:46:04 oes
109 dnl - Enabled filtering banners by size rather than URL
110 dnl by adding patterns that replace all standard banner
111 dnl sizes with the "Junkbuster" gif to the re_filterfile
113 dnl - Enabled filtering WebBugs by providing a pattern
114 dnl which kills all 1x1 images
116 dnl - Added support for PCRE_UNGREEDY behaviour to pcrs,
117 dnl which is selected by the (nonstandard and therefore
118 dnl capital) letter 'U' in the option string.
119 dnl It causes the quantifiers to be ungreedy by default.
120 dnl Appending a ? turns back to greedy (!).
122 dnl - Added a new interceptor ijb-send-banner, which
123 dnl sends back the "Junkbuster" gif. Without imagelist or
124 dnl MSIE detection support, or if tinygif = 1, or the
125 dnl URL isn't recognized as an imageurl, a lame HTML
126 dnl explanation is sent instead.
128 dnl - Added new feature, which permits blocking remote
129 dnl script redirects and firing back a local redirect
131 dnl The feature is conditionally compiled, i.e. it
132 dnl can be disabled with --disable-fast-redirects,
133 dnl plus it must be activated by a "fast-redirects"
134 dnl line in the config file, has its own log level
135 dnl and of course wants to be displayed by show-proxy-args
136 dnl Note: Boy, all the #ifdefs in 1001 locations and
137 dnl all the fumbling with configure.in and acconfig.h
138 dnl were *way* more work than the feature itself :-(
140 dnl - Because a generic redirect template was needed for
141 dnl this, tinygif = 3 now uses the same.
143 dnl - Moved GIFs, and other static HTTP response templates
146 dnl - Some minor fixes
148 dnl - Removed some >400 CRs again (Jon, you really worked
151 dnl Revision 1.2 2001/05/20 01:21:20 jongfoster
152 dnl Version 2.9.4 checkin.
153 dnl - Merged popupfile and cookiefile, and added control over PCRS
154 dnl filtering, in new "permissionsfile".
155 dnl - Implemented LOG_LEVEL_FATAL, so that if there is a configuration
156 dnl file error you now get a message box (in the Win32 GUI) rather
157 dnl than the program exiting with no explanation.
158 dnl - Made killpopup use the PCRS MIME-type checking and HTTP-header
160 dnl - Removed tabs from "config"
161 dnl - Moved duplicated url parsing code in "loaders.c" to a new funcition.
162 dnl - Bumped up version number.
164 dnl Revision 1.1.1.1 2001/05/15 13:58:50 oes
165 dnl Initial import of version 2.9.3 source tree
170 dnl =================================================================
171 dnl AutoConf Initialization
172 dnl =================================================================
174 AC_REVISION($Revision: 1.14 $)
176 AC_CONFIG_HEADER(config.h)
179 dnl =================================================================
180 dnl Application version number
181 dnl =================================================================
186 CODE_STATUS="\"alpha\""
188 dnl CODE_STATUS can be "alpha", "beta", or "stable", and will be
189 dnl used for CGI output
191 dnl =================================================================
192 dnl Substitute the version numbers
193 dnl =================================================================
195 AC_SUBST(VERSION_MAJOR)
196 AC_SUBST(VERSION_MINOR)
197 AC_SUBST(VERSION_POINT)
200 AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR})
201 AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR})
202 AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT})
203 AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}")
204 AC_DEFINE_UNQUOTED(CODE_STATUS,${CODE_STATUS})
207 dnl =================================================================
208 dnl Checks for programs needed to build.
209 dnl =================================================================
216 dnl RANLIB is for PCRE:
220 dnl =================================================================
222 dnl =================================================================
224 dnl Must do this first.
226 dnl Reason: This sets CFLAGS in order to switch the Cygwin compiler
227 dnl into Cygwin or MinGW32 modes. Depending on the mode selected,
228 dnl the compiler will use completely different sets of library
229 dnl and include files.
231 dnl =================================================================
236 if test "$MINGW32" = "yes"; then
239 if test "$CYGWIN" = "yes"; then
246 dnl Decide what to do based on target_type
247 dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
248 dnl This is because we don't know yet whether pthread is enabled.
250 AC_ARG_ENABLE(mingw32,
251 [ --enable-mingw32 Use mingw32 for a Windows GUI],
252 [if test $enableval = yes; then
256 if test $target_type = mingw; then
258 SPECIAL_CFLAGS="-mwindows -mno-cygwin"
259 PTHREAD_LIB=-lpthreadGC
260 echo "Using mingw32 (Win32 GUI)"
263 if test $target_type = cygwin; then
264 SPECIAL_CFLAGS="-mno-win32"
266 echo "Using Cygnus (Win32 command line)"
269 PTHREAD_LIB=-lpthread
274 dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
275 old_CFLAGS_nospecial=$CFLAGS
276 CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
278 # Hack to force AutoConf to use the CFLAGS we just set
279 dnl Warning: This may break with a future version of Autoconf
280 dnl Tested with autoconf 2.13
281 ac_cpp='$CPP $CPPFLAGS $SPECIAL_CFLAGS'
282 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
283 ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
286 dnl =================================================================
288 dnl =================================================================
290 AC_CHECK_HEADER(pthread.h, [have_pthread=yes], [have_pthread=no])
292 AC_ARG_ENABLE(pthread,
293 [ --disable-pthread Don't use POSIX threads (pthreads)],
294 [if test $enableval = no; then
299 if test $have_pthread = yes; then
301 AC_DEFINE(FEATURE_PTHREAD)
302 echo Using POSIX threads
303 if test "$GCC" = "yes"; then
304 # Set a GCC specific switch:
305 if test "$target_type" = "unix"; then
306 # This compiler switch makes Linux thread-safe
307 # Don't know about other OS's? Is this switch
310 SPECIAL_CFLAGS="-pthread"
315 echo Using native threads
318 AC_SUBST(PTHREAD_ONLY)
321 dnl =================================================================
323 dnl FIXME: Not tested on Solaris yet...
324 dnl =================================================================
331 *-solaris*) SOCKET_LIB=-lsocket -lnsl
332 AC_DEFINE(__EXTENSIONS__)
333 if test "$GCC" = "yes"; then
334 # Set a GCC specific switch:
335 # This compiler switch makes Solaris thread-safe
337 SPECIAL_CFLAGS="-pthreads"
339 # What do we do without GCC? Guess this:
340 SPECIAL_CFLAGS="-D_REENTRANT"
347 dnl =================================================================
349 dnl =================================================================
352 *-os2-emx*) SOCKET_LIB=-lsocket
358 dnl =================================================================
359 dnl Check for standard compiler stuff
360 dnl =================================================================
368 dnl Checks for header files.
369 dnl AC_HEADER_SYS_WAIT
370 dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h)
372 dnl Checks for library functions.
374 dnl AC_CHECK_FUNC(strstr)
375 dnl bcopy and memmove are for PCRE
376 AC_CHECK_FUNCS(strerror bcopy memmove)
379 dnl =================================================================
380 dnl Checks for libraries.
381 dnl =================================================================
382 dnl Note: Some systems may have the library but not the system header
383 dnl file, so we must check for both.
384 AC_CHECK_LIB(pcre, pcre_compile, [AC_CHECK_HEADER(pcre.h, [have_pcre=yes], [have_pcre=no])], [have_pcre=no])
385 AC_CHECK_LIB(pcreposix, regcomp, [AC_CHECK_HEADER(pcreposix.h, [have_pcreposix=yes], [have_pcreposix=no])], [have_pcreposix=no], -lpcre)
386 AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no])
389 dnl =================================================================
391 dnl =================================================================
395 dnl =================================================================
397 dnl =================================================================
399 AC_ARG_ENABLE(toggle,
400 [ --disable-toggle Don't support temporary disable],
401 [if test $enableval = yes; then
402 AC_DEFINE(FEATURE_TOGGLE)
403 fi],AC_DEFINE(FEATURE_TOGGLE))
406 [ --disable-gzip Block gzip'ed transfer of documents. Note that
407 this is required if you want content modification
408 even with gzip-supporting servers.],
409 [if test $enableval = "no"; then
410 AC_DEFINE(FEATURE_DENY_GZIP)
414 [ --disable-force Don't allow blockfile to be bypassed],
415 [if test $enableval = yes; then
416 AC_DEFINE(FEATURE_FORCE_LOAD)
417 fi],AC_DEFINE(FEATURE_FORCE_LOAD))
419 AC_ARG_ENABLE(fast-redirects,
420 [ --disable-fast-redirects Don't support fast redirects],
421 [if test $enableval = yes; then
422 AC_DEFINE(FEATURE_FAST_REDIRECTS)
423 fi], AC_DEFINE(FEATURE_FAST_REDIRECTS))
425 AC_ARG_ENABLE(killpopup,
426 [ --disable-killpopup Never block popups],
427 [if test $enableval = yes; then
428 AC_DEFINE(FEATURE_KILL_POPUPS)
429 fi],AC_DEFINE(FEATURE_KILL_POPUPS))
432 [ --disable-stats Don't keep statistics],
433 [if test $enableval = yes; then
434 AC_DEFINE(FEATURE_STATISTICS)
435 fi],AC_DEFINE(FEATURE_STATISTICS))
437 AC_ARG_ENABLE(ie-images,
438 [ --disable-ie-images Don't auto-detect whether a request from MS Internet
439 Explorer is for an image or HTML.],
440 [if test $enableval = yes; then
441 AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE)
443 AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE))
445 AC_ARG_ENABLE(image-blocking,
446 [ --disable-image-blocking Don't try to figure out whether a request is
447 for an image or HTML - assume HTML.],
448 [if test $enableval = yes; then
449 AC_DEFINE(FEATURE_IMAGE_BLOCKING)
451 AC_DEFINE(FEATURE_IMAGE_BLOCKING))
453 AC_ARG_ENABLE(acl-files,
454 [ --disable-acl-files Prevents the use of ACL files to control access to
455 the proxy by IP address.],
456 [if test $enableval = yes; then
457 AC_DEFINE(FEATURE_ACL)
459 AC_DEFINE(FEATURE_ACL))
461 AC_ARG_ENABLE(trust-files,
462 [ --disable-trust-files Prevents the use of trust files.],
463 [if test $enableval = yes; then
464 AC_DEFINE(FEATURE_TRUST)
466 AC_DEFINE(FEATURE_TRUST))
468 AC_ARG_ENABLE(jar-files,
469 [ --disable-jar-files Prevents the use of jar files to capture cookies.],
470 [if test $enableval = yes; then
471 AC_DEFINE(FEATURE_COOKIE_JAR)
473 AC_DEFINE(FEATURE_COOKIE_JAR))
475 dnl pcre/pcrs is needed for CGI anyway, so
476 dnl the choice is only between static and
479 AC_ARG_ENABLE(regex-matching,
480 [ --enable-regex-matching=pcre Use perl-compatible regex for actionsfile
481 pattern matching (default)
482 --enable-regex-matching=gnu Use gnu style regex for actionsfile pattern
483 matching (-> bigger binary)
484 --disable-regex-matching Don't use regex matching, compare URL
485 prefix instead (won't shrink birary)],
486 [ regex_matching=$enableval ],
487 [ regex_matching=pcre ])
489 AC_ARG_ENABLE(dynamic-pcre,
490 [ --disable-dynamic-pcre Use the built-in, static pcre, even if
491 libpcre is available],
492 [ if test $enableval = "no"; then have_pcre=no; fi ])
494 AC_ARG_ENABLE(dynamic-pcrs,
495 [ --disable-dynamic-pcrs Use the built-in, static pcrs, even if
496 libpcrs is available],
497 [ if test $enableval = "no"; then have_pcrs=no; fi ])
500 # Is the regex URL matching based on libpcreposix, but we
501 # don't have that library?
503 if test $have_pcreposix = "yes" -o $regex_matching != "pcre"; then
504 dont_miss_pcreposix=yes
506 dont_miss_pcreposix=no
509 # If we have libpcre and either we also have pcreposix or
510 # we don't need pcreposix, then link pcre dynamically; else
511 # build it and link statically
513 if test $have_pcre = "yes" -a $dont_miss_pcreposix = "yes"; then
519 echo "using built-in static pcre"
521 AC_DEFINE(STATIC_PCRE)
525 # If we have libpcrs and pcre is linked dynamically
526 # then also link pcrs dynamically, else build and link
529 if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
534 echo "using built-in static pcrs"
535 AC_DEFINE(STATIC_PCRS)
539 # Which method should be used for URL matching?
540 # pcre, gnu regex or prefix matching?
542 if test $regex_matching = "gnu"; then
543 echo "using gnu regex for URL matching"
547 elif test $regex_matching = "pcre"; then
548 echo "using pcre regex for URL matching"
549 AC_DEFINE(REGEX_PCRE)
552 if test $pcre_dyn = "yes"; then
553 LIBS="$LIBS -lpcreposix"
556 echo -e "using prefix matching for URLs\nHint: This does NOT make the executable any smaller!"
561 AC_SUBST(GNU_REGEX_ONLY)
562 AC_SUBST(PCRE_REGEX_ONLY)
563 AC_SUBST(STATIC_PCRE_ONLY)
564 AC_SUBST(STATIC_PCRS_ONLY)
566 dnl =================================================================
567 dnl Final cleanup and output
568 dnl =================================================================
570 dnl Remove the SPECIAL_CFLAGS stuff from CFLAGS, and add it seperately
572 CFLAGS=$old_CFLAGS_nospecial
573 AC_SUBST(SPECIAL_CFLAGS)
575 AC_SUBST(PTHREAD_LIB)