1 dnl Process this file with autoconf to produce a configure script.
3 dnl $Id: configure.in,v 1.16 2001/09/12 22:55:45 joergs 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.16 2001/09/12 22:55:45 joergs
32 dnl AmigaOS support added.
34 dnl Revision 1.15 2001/09/12 17:28:59 david__schmidt
36 dnl OS/2 port: update autoconf'd support for the platform.
38 dnl Revision 1.14 2001/07/30 22:12:11 jongfoster
39 dnl Fixing Solaris build (I hope) and tidying up #defines:
40 dnl - All feature #defines are now of the form FEATURE_xxx
41 dnl - Permanently turned off WIN_GUI_EDIT
42 dnl - Permanently turned on WEBDAV and SPLIT_PROXY_ARGS
44 dnl Revision 1.13 2001/07/29 17:09:17 jongfoster
45 dnl Major changes to build system in order to fix these bugs:
46 dnl - pthreads under Linux was broken - changed -lpthread to -pthread
47 dnl - Compiling in MinGW32 mode under CygWin now correctly detects
48 dnl which shared libraries are available
49 dnl - Solaris support (?) (Not tested under Solaris yet)
51 dnl Revision 1.12 2001/07/25 19:16:27 oes
52 dnl Bumping version number to 2.9.8
54 dnl Revision 1.11 2001/07/21 18:00:07 jongfoster
55 dnl Bumping version number to 2.9.7
57 dnl Revision 1.10 2001/07/18 17:25:04 oes
60 dnl Revision 1.9 2001/07/15 19:45:13 jongfoster
61 dnl Added support for linking with POSIX threads library
63 dnl Revision 1.8 2001/07/15 17:54:29 jongfoster
64 dnl Renaming #define STATIC to STATIC_PCRE
65 dnl Adding new #define FEATURE_PTHREAD that will be used to enable
66 dnl POSIX threads support.
68 dnl Revision 1.7 2001/07/13 13:58:05 oes
69 dnl Completely reorganized the selection scheme for
70 dnl pcre, pcreposix, pcrs and gnu_regex:
72 dnl The presence of shared pcre, pcreposix or pcrs
73 dnl libraried is now autodetected. Additionally, the
74 dnl user can enforce using the built-in static variants
75 dnl by specifying --disable-dynamic-(pcre|pcrs).
76 dnl Care is taken to avoid that pcre is dyn, while pcreposix
77 dnl is static, if both are used and that pcrs is static if
80 dnl The choice between pcre, gnu or no regex for actionsfile
81 dnl URL matching is now via
82 dnl --(enable|disable)-regex-matching[=(gnu|pcre|no)] with the
83 dnl default being pcre.
85 dnl Revision 1.6 2001/06/29 21:56:40 oes
88 dnl Revision 1.5 2001/06/29 13:26:27 oes
89 dnl Introduced #define CODE_STATUS
91 dnl Revision 1.4 2001/05/29 09:50:24 jongfoster
92 dnl Unified blocklist/imagelist/permissionslist.
93 dnl File format is still under discussion, but the internal changes
94 dnl are (mostly) done.
96 dnl Also modified interceptor behaviour:
97 dnl - We now intercept all URLs beginning with one of the following
98 dnl prefixes (and *only* these prefixes):
100 dnl * http://ijbswa.sf.net/config/
101 dnl * http://ijbswa.sourceforge.net/config/
102 dnl - New interceptors "home page" - go to http://i.j.b/ to see it.
103 dnl - Internal changes so that intercepted and fast redirect pages
104 dnl are not replaced with an image.
105 dnl - Interceptors now have the option to send a binary page direct
106 dnl to the client. (i.e. ijb-send-banner uses this)
107 dnl - Implemented show-url-info interceptor. (Which is why I needed
108 dnl the above interceptors changes - a typical URL is
109 dnl "http://i.j.b/show-url-info?url=www.somesite.com/banner.gif".
110 dnl The previous mechanism would not have intercepted that, and
111 dnl if it had been intercepted then it then it would have replaced
112 dnl it with an image.)
114 dnl Revision 1.3 2001/05/22 18:46:04 oes
116 dnl - Enabled filtering banners by size rather than URL
117 dnl by adding patterns that replace all standard banner
118 dnl sizes with the "Junkbuster" gif to the re_filterfile
120 dnl - Enabled filtering WebBugs by providing a pattern
121 dnl which kills all 1x1 images
123 dnl - Added support for PCRE_UNGREEDY behaviour to pcrs,
124 dnl which is selected by the (nonstandard and therefore
125 dnl capital) letter 'U' in the option string.
126 dnl It causes the quantifiers to be ungreedy by default.
127 dnl Appending a ? turns back to greedy (!).
129 dnl - Added a new interceptor ijb-send-banner, which
130 dnl sends back the "Junkbuster" gif. Without imagelist or
131 dnl MSIE detection support, or if tinygif = 1, or the
132 dnl URL isn't recognized as an imageurl, a lame HTML
133 dnl explanation is sent instead.
135 dnl - Added new feature, which permits blocking remote
136 dnl script redirects and firing back a local redirect
138 dnl The feature is conditionally compiled, i.e. it
139 dnl can be disabled with --disable-fast-redirects,
140 dnl plus it must be activated by a "fast-redirects"
141 dnl line in the config file, has its own log level
142 dnl and of course wants to be displayed by show-proxy-args
143 dnl Note: Boy, all the #ifdefs in 1001 locations and
144 dnl all the fumbling with configure.in and acconfig.h
145 dnl were *way* more work than the feature itself :-(
147 dnl - Because a generic redirect template was needed for
148 dnl this, tinygif = 3 now uses the same.
150 dnl - Moved GIFs, and other static HTTP response templates
153 dnl - Some minor fixes
155 dnl - Removed some >400 CRs again (Jon, you really worked
158 dnl Revision 1.2 2001/05/20 01:21:20 jongfoster
159 dnl Version 2.9.4 checkin.
160 dnl - Merged popupfile and cookiefile, and added control over PCRS
161 dnl filtering, in new "permissionsfile".
162 dnl - Implemented LOG_LEVEL_FATAL, so that if there is a configuration
163 dnl file error you now get a message box (in the Win32 GUI) rather
164 dnl than the program exiting with no explanation.
165 dnl - Made killpopup use the PCRS MIME-type checking and HTTP-header
167 dnl - Removed tabs from "config"
168 dnl - Moved duplicated url parsing code in "loaders.c" to a new funcition.
169 dnl - Bumped up version number.
171 dnl Revision 1.1.1.1 2001/05/15 13:58:50 oes
172 dnl Initial import of version 2.9.3 source tree
177 dnl =================================================================
178 dnl AutoConf Initialization
179 dnl =================================================================
181 AC_REVISION($Revision: 1.16 $)
183 AC_CONFIG_HEADER(config.h)
186 dnl =================================================================
187 dnl Application version number
188 dnl =================================================================
193 CODE_STATUS="\"alpha\""
195 dnl CODE_STATUS can be "alpha", "beta", or "stable", and will be
196 dnl used for CGI output
198 dnl =================================================================
199 dnl Substitute the version numbers
200 dnl =================================================================
202 AC_SUBST(VERSION_MAJOR)
203 AC_SUBST(VERSION_MINOR)
204 AC_SUBST(VERSION_POINT)
207 AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR})
208 AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR})
209 AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT})
210 AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}")
211 AC_DEFINE_UNQUOTED(CODE_STATUS,${CODE_STATUS})
214 dnl =================================================================
215 dnl Checks for programs needed to build.
216 dnl =================================================================
223 dnl RANLIB is for PCRE:
227 dnl =================================================================
229 dnl =================================================================
231 dnl Must do this first.
233 dnl Reason: This sets CFLAGS in order to switch the Cygwin compiler
234 dnl into Cygwin or MinGW32 modes. Depending on the mode selected,
235 dnl the compiler will use completely different sets of library
236 dnl and include files.
238 dnl =================================================================
243 if test "$MINGW32" = "yes"; then
246 if test "$CYGWIN" = "yes"; then
253 dnl Decide what to do based on target_type
254 dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
255 dnl This is because we don't know yet whether pthread is enabled.
257 AC_ARG_ENABLE(mingw32,
258 [ --enable-mingw32 Use mingw32 for a Windows GUI],
259 [if test $enableval = yes; then
263 if test $target_type = mingw; then
265 SPECIAL_CFLAGS="-mwindows -mno-cygwin"
266 PTHREAD_LIB=-lpthreadGC
267 echo "Using mingw32 (Win32 GUI)"
270 if test $target_type = cygwin; then
271 SPECIAL_CFLAGS="-mno-win32"
273 echo "Using Cygnus (Win32 command line)"
276 PTHREAD_LIB=-lpthread
281 dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
282 old_CFLAGS_nospecial=$CFLAGS
283 CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
285 # Hack to force AutoConf to use the CFLAGS we just set
286 dnl Warning: This may break with a future version of Autoconf
287 dnl Tested with autoconf 2.13
288 ac_cpp='$CPP $CPPFLAGS $SPECIAL_CFLAGS'
289 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
290 ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
293 dnl =================================================================
295 dnl =================================================================
297 AC_CHECK_HEADER(pthread.h, [have_pthread=yes], [have_pthread=no])
299 AC_ARG_ENABLE(pthread,
300 [ --disable-pthread Don't use POSIX threads (pthreads)],
301 [if test $enableval = no; then
306 if test $have_pthread = yes; then
308 AC_DEFINE(FEATURE_PTHREAD)
309 echo Using POSIX threads
310 if test "$GCC" = "yes"; then
311 # Set a GCC specific switch:
312 if test "$target_type" = "unix"; then
313 # This compiler switch makes Linux thread-safe
314 # Don't know about other OS's? Is this switch
317 SPECIAL_CFLAGS="-pthread"
322 echo Using native threads
325 AC_SUBST(PTHREAD_ONLY)
328 dnl =================================================================
330 dnl FIXME: Not tested on Solaris yet...
331 dnl =================================================================
338 *-solaris*) SOCKET_LIB="-lsocket -lnsl"
339 AC_DEFINE(__EXTENSIONS__)
340 if test "$GCC" = "yes"; then
341 # Set a GCC specific switch:
342 # This compiler switch makes Solaris thread-safe
344 SPECIAL_CFLAGS="-pthreads"
346 # What do we do without GCC? Guess this:
347 SPECIAL_CFLAGS="-D_REENTRANT"
354 dnl =================================================================
356 dnl =================================================================
359 *-os2-emx*) SOCKET_LIB=-lsocket
365 dnl =================================================================
367 dnl =================================================================
372 *-amigaos) AMIGAOS_ONLY=
376 AC_SUBST(AMIGAOS_ONLY)
378 dnl =================================================================
379 dnl Check for standard compiler stuff
380 dnl =================================================================
388 dnl Checks for header files.
389 dnl AC_HEADER_SYS_WAIT
390 dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h)
392 dnl Checks for library functions.
394 dnl AC_CHECK_FUNC(strstr)
395 dnl bcopy and memmove are for PCRE
396 AC_CHECK_FUNCS(strerror bcopy memmove)
399 dnl =================================================================
400 dnl Checks for libraries.
401 dnl =================================================================
402 dnl Note: Some systems may have the library but not the system header
403 dnl file, so we must check for both.
404 AC_CHECK_LIB(pcre, pcre_compile, [AC_CHECK_HEADER(pcre.h, [have_pcre=yes], [have_pcre=no])], [have_pcre=no])
405 AC_CHECK_LIB(pcreposix, regcomp, [AC_CHECK_HEADER(pcreposix.h, [have_pcreposix=yes], [have_pcreposix=no])], [have_pcreposix=no], -lpcre)
406 AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no])
409 dnl =================================================================
411 dnl =================================================================
415 dnl =================================================================
417 dnl =================================================================
419 AC_ARG_ENABLE(toggle,
420 [ --disable-toggle Don't support temporary disable],
421 [if test $enableval = yes; then
422 AC_DEFINE(FEATURE_TOGGLE)
423 fi],AC_DEFINE(FEATURE_TOGGLE))
426 [ --disable-gzip Block gzip'ed transfer of documents. Note that
427 this is required if you want content modification
428 even with gzip-supporting servers.],
429 [if test $enableval = "no"; then
430 AC_DEFINE(FEATURE_DENY_GZIP)
434 [ --disable-force Don't allow blockfile to be bypassed],
435 [if test $enableval = yes; then
436 AC_DEFINE(FEATURE_FORCE_LOAD)
437 fi],AC_DEFINE(FEATURE_FORCE_LOAD))
439 AC_ARG_ENABLE(fast-redirects,
440 [ --disable-fast-redirects Don't support fast redirects],
441 [if test $enableval = yes; then
442 AC_DEFINE(FEATURE_FAST_REDIRECTS)
443 fi], AC_DEFINE(FEATURE_FAST_REDIRECTS))
445 AC_ARG_ENABLE(killpopup,
446 [ --disable-killpopup Never block popups],
447 [if test $enableval = yes; then
448 AC_DEFINE(FEATURE_KILL_POPUPS)
449 fi],AC_DEFINE(FEATURE_KILL_POPUPS))
452 [ --disable-stats Don't keep statistics],
453 [if test $enableval = yes; then
454 AC_DEFINE(FEATURE_STATISTICS)
455 fi],AC_DEFINE(FEATURE_STATISTICS))
457 AC_ARG_ENABLE(ie-images,
458 [ --disable-ie-images Don't auto-detect whether a request from MS Internet
459 Explorer is for an image or HTML.],
460 [if test $enableval = yes; then
461 AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE)
463 AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE))
465 AC_ARG_ENABLE(image-blocking,
466 [ --disable-image-blocking Don't try to figure out whether a request is
467 for an image or HTML - assume HTML.],
468 [if test $enableval = yes; then
469 AC_DEFINE(FEATURE_IMAGE_BLOCKING)
471 AC_DEFINE(FEATURE_IMAGE_BLOCKING))
473 AC_ARG_ENABLE(acl-files,
474 [ --disable-acl-files Prevents the use of ACL files to control access to
475 the proxy by IP address.],
476 [if test $enableval = yes; then
477 AC_DEFINE(FEATURE_ACL)
479 AC_DEFINE(FEATURE_ACL))
481 AC_ARG_ENABLE(trust-files,
482 [ --disable-trust-files Prevents the use of trust files.],
483 [if test $enableval = yes; then
484 AC_DEFINE(FEATURE_TRUST)
486 AC_DEFINE(FEATURE_TRUST))
488 AC_ARG_ENABLE(jar-files,
489 [ --disable-jar-files Prevents the use of jar files to capture cookies.],
490 [if test $enableval = yes; then
491 AC_DEFINE(FEATURE_COOKIE_JAR)
493 AC_DEFINE(FEATURE_COOKIE_JAR))
495 dnl pcre/pcrs is needed for CGI anyway, so
496 dnl the choice is only between static and
499 AC_ARG_ENABLE(regex-matching,
500 [ --enable-regex-matching=pcre Use perl-compatible regex for actionsfile
501 pattern matching (default)
502 --enable-regex-matching=gnu Use gnu style regex for actionsfile pattern
503 matching (-> bigger binary)
504 --disable-regex-matching Don't use regex matching, compare URL
505 prefix instead (won't shrink birary)],
506 [ regex_matching=$enableval ],
507 [ regex_matching=pcre ])
509 AC_ARG_ENABLE(dynamic-pcre,
510 [ --disable-dynamic-pcre Use the built-in, static pcre, even if
511 libpcre is available],
512 [ if test $enableval = "no"; then have_pcre=no; fi ])
514 AC_ARG_ENABLE(dynamic-pcrs,
515 [ --disable-dynamic-pcrs Use the built-in, static pcrs, even if
516 libpcrs is available],
517 [ if test $enableval = "no"; then have_pcrs=no; fi ])
520 # Is the regex URL matching based on libpcreposix, but we
521 # don't have that library?
523 if test $have_pcreposix = "yes" -o $regex_matching != "pcre"; then
524 dont_miss_pcreposix=yes
526 dont_miss_pcreposix=no
529 # If we have libpcre and either we also have pcreposix or
530 # we don't need pcreposix, then link pcre dynamically; else
531 # build it and link statically
533 if test $have_pcre = "yes" -a $dont_miss_pcreposix = "yes"; then
539 echo "using built-in static pcre"
541 AC_DEFINE(STATIC_PCRE)
545 # If we have libpcrs and pcre is linked dynamically
546 # then also link pcrs dynamically, else build and link
549 if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
554 echo "using built-in static pcrs"
555 AC_DEFINE(STATIC_PCRS)
559 # Which method should be used for URL matching?
560 # pcre, gnu regex or prefix matching?
562 if test $regex_matching = "gnu"; then
563 echo "using gnu regex for URL matching"
567 elif test $regex_matching = "pcre"; then
568 echo "using pcre regex for URL matching"
569 AC_DEFINE(REGEX_PCRE)
572 if test $pcre_dyn = "yes"; then
573 LIBS="$LIBS -lpcreposix"
576 echo -e "using prefix matching for URLs\nHint: This does NOT make the executable any smaller!"
581 AC_SUBST(GNU_REGEX_ONLY)
582 AC_SUBST(PCRE_REGEX_ONLY)
583 AC_SUBST(STATIC_PCRE_ONLY)
584 AC_SUBST(STATIC_PCRS_ONLY)
586 dnl =================================================================
587 dnl Final cleanup and output
588 dnl =================================================================
590 dnl Remove the SPECIAL_CFLAGS stuff from CFLAGS, and add it seperately
592 CFLAGS=$old_CFLAGS_nospecial
593 AC_SUBST(SPECIAL_CFLAGS)
595 AC_SUBST(PTHREAD_LIB)