1 dnl Process this file with autoconf to produce a configure script.
3 dnl $Id: configure.in,v 1.18 2001/09/13 13:10:24 steudten 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.18 2001/09/13 13:10:24 steudten
33 dnl PreWork for Debug Interface.
34 dnl Add new option "--with-debug" to enable debugging (flags aso.)
36 dnl Revision 1.17 2001/09/12 23:44:55 david__schmidt
37 dnl Mac OSX (Darwin) support added.
39 dnl Revision 1.16 2001/09/12 22:55:45 joergs
40 dnl AmigaOS support added.
42 dnl Revision 1.15 2001/09/12 17:28:59 david__schmidt
44 dnl OS/2 port: update autoconf'd support for the platform.
46 dnl Revision 1.14 2001/07/30 22:12:11 jongfoster
47 dnl Fixing Solaris build (I hope) and tidying up #defines:
48 dnl - All feature #defines are now of the form FEATURE_xxx
49 dnl - Permanently turned off WIN_GUI_EDIT
50 dnl - Permanently turned on WEBDAV and SPLIT_PROXY_ARGS
52 dnl Revision 1.13 2001/07/29 17:09:17 jongfoster
53 dnl Major changes to build system in order to fix these bugs:
54 dnl - pthreads under Linux was broken - changed -lpthread to -pthread
55 dnl - Compiling in MinGW32 mode under CygWin now correctly detects
56 dnl which shared libraries are available
57 dnl - Solaris support (?) (Not tested under Solaris yet)
59 dnl Revision 1.12 2001/07/25 19:16:27 oes
60 dnl Bumping version number to 2.9.8
62 dnl Revision 1.11 2001/07/21 18:00:07 jongfoster
63 dnl Bumping version number to 2.9.7
65 dnl Revision 1.10 2001/07/18 17:25:04 oes
68 dnl Revision 1.9 2001/07/15 19:45:13 jongfoster
69 dnl Added support for linking with POSIX threads library
71 dnl Revision 1.8 2001/07/15 17:54:29 jongfoster
72 dnl Renaming #define STATIC to STATIC_PCRE
73 dnl Adding new #define FEATURE_PTHREAD that will be used to enable
74 dnl POSIX threads support.
76 dnl Revision 1.7 2001/07/13 13:58:05 oes
77 dnl Completely reorganized the selection scheme for
78 dnl pcre, pcreposix, pcrs and gnu_regex:
80 dnl The presence of shared pcre, pcreposix or pcrs
81 dnl libraried is now autodetected. Additionally, the
82 dnl user can enforce using the built-in static variants
83 dnl by specifying --disable-dynamic-(pcre|pcrs).
84 dnl Care is taken to avoid that pcre is dyn, while pcreposix
85 dnl is static, if both are used and that pcrs is static if
88 dnl The choice between pcre, gnu or no regex for actionsfile
89 dnl URL matching is now via
90 dnl --(enable|disable)-regex-matching[=(gnu|pcre|no)] with the
91 dnl default being pcre.
93 dnl Revision 1.6 2001/06/29 21:56:40 oes
96 dnl Revision 1.5 2001/06/29 13:26:27 oes
97 dnl Introduced #define CODE_STATUS
99 dnl Revision 1.4 2001/05/29 09:50:24 jongfoster
100 dnl Unified blocklist/imagelist/permissionslist.
101 dnl File format is still under discussion, but the internal changes
102 dnl are (mostly) done.
104 dnl Also modified interceptor behaviour:
105 dnl - We now intercept all URLs beginning with one of the following
106 dnl prefixes (and *only* these prefixes):
108 dnl * http://ijbswa.sf.net/config/
109 dnl * http://ijbswa.sourceforge.net/config/
110 dnl - New interceptors "home page" - go to http://i.j.b/ to see it.
111 dnl - Internal changes so that intercepted and fast redirect pages
112 dnl are not replaced with an image.
113 dnl - Interceptors now have the option to send a binary page direct
114 dnl to the client. (i.e. ijb-send-banner uses this)
115 dnl - Implemented show-url-info interceptor. (Which is why I needed
116 dnl the above interceptors changes - a typical URL is
117 dnl "http://i.j.b/show-url-info?url=www.somesite.com/banner.gif".
118 dnl The previous mechanism would not have intercepted that, and
119 dnl if it had been intercepted then it then it would have replaced
120 dnl it with an image.)
122 dnl Revision 1.3 2001/05/22 18:46:04 oes
124 dnl - Enabled filtering banners by size rather than URL
125 dnl by adding patterns that replace all standard banner
126 dnl sizes with the "Junkbuster" gif to the re_filterfile
128 dnl - Enabled filtering WebBugs by providing a pattern
129 dnl which kills all 1x1 images
131 dnl - Added support for PCRE_UNGREEDY behaviour to pcrs,
132 dnl which is selected by the (nonstandard and therefore
133 dnl capital) letter 'U' in the option string.
134 dnl It causes the quantifiers to be ungreedy by default.
135 dnl Appending a ? turns back to greedy (!).
137 dnl - Added a new interceptor ijb-send-banner, which
138 dnl sends back the "Junkbuster" gif. Without imagelist or
139 dnl MSIE detection support, or if tinygif = 1, or the
140 dnl URL isn't recognized as an imageurl, a lame HTML
141 dnl explanation is sent instead.
143 dnl - Added new feature, which permits blocking remote
144 dnl script redirects and firing back a local redirect
146 dnl The feature is conditionally compiled, i.e. it
147 dnl can be disabled with --disable-fast-redirects,
148 dnl plus it must be activated by a "fast-redirects"
149 dnl line in the config file, has its own log level
150 dnl and of course wants to be displayed by show-proxy-args
151 dnl Note: Boy, all the #ifdefs in 1001 locations and
152 dnl all the fumbling with configure.in and acconfig.h
153 dnl were *way* more work than the feature itself :-(
155 dnl - Because a generic redirect template was needed for
156 dnl this, tinygif = 3 now uses the same.
158 dnl - Moved GIFs, and other static HTTP response templates
161 dnl - Some minor fixes
163 dnl - Removed some >400 CRs again (Jon, you really worked
166 dnl Revision 1.2 2001/05/20 01:21:20 jongfoster
167 dnl Version 2.9.4 checkin.
168 dnl - Merged popupfile and cookiefile, and added control over PCRS
169 dnl filtering, in new "permissionsfile".
170 dnl - Implemented LOG_LEVEL_FATAL, so that if there is a configuration
171 dnl file error you now get a message box (in the Win32 GUI) rather
172 dnl than the program exiting with no explanation.
173 dnl - Made killpopup use the PCRS MIME-type checking and HTTP-header
175 dnl - Removed tabs from "config"
176 dnl - Moved duplicated url parsing code in "loaders.c" to a new funcition.
177 dnl - Bumped up version number.
179 dnl Revision 1.1.1.1 2001/05/15 13:58:50 oes
180 dnl Initial import of version 2.9.3 source tree
185 dnl =================================================================
186 dnl AutoConf Initialization
187 dnl =================================================================
189 AC_REVISION($Revision: 1.18 $)
191 AC_CONFIG_HEADER(config.h)
195 dnl =================================================================
196 dnl Application version number
197 dnl =================================================================
202 CODE_STATUS="\"alpha\""
204 dnl CODE_STATUS can be "alpha", "beta", or "stable", and will be
205 dnl used for CGI output
207 dnl =================================================================
208 dnl Substitute the version numbers
209 dnl =================================================================
211 AC_SUBST(VERSION_MAJOR)
212 AC_SUBST(VERSION_MINOR)
213 AC_SUBST(VERSION_POINT)
216 AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR})
217 AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR})
218 AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT})
219 AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}")
220 AC_DEFINE_UNQUOTED(CODE_STATUS,${CODE_STATUS})
223 dnl =================================================================
224 dnl Checks for programs needed to build.
225 dnl =================================================================
232 dnl RANLIB is for PCRE:
235 AC_CHECK_PROG(GDB,gdb,yes,no)
237 dnl =================================================================
238 dnl debug, gcc and gdb support
239 dnl =================================================================
242 [ --with-debug Enable debug mode],
244 if test "x$withval" != "$xno" ; then
245 if test $ac_cv_prog_cc_g = yes; then
246 if test "$GCC" = yes; then
252 CFLAGS="$CFLAGS -Wshadow -Wconversion"
257 CFLAGS="$CFLAGS -D_DEBUG"
261 if test "$GCC" = yes; then
269 dnl =================================================================
270 dnl additional gcc flags
271 dnl =================================================================
274 CFLAGS="-pipe $CFLAGS"
278 dnl =================================================================
280 dnl =================================================================
282 dnl Must do this first.
284 dnl Reason: This sets CFLAGS in order to switch the Cygwin compiler
285 dnl into Cygwin or MinGW32 modes. Depending on the mode selected,
286 dnl the compiler will use completely different sets of library
287 dnl and include files.
289 dnl =================================================================
294 if test "$MINGW32" = "yes"; then
297 if test "$CYGWIN" = "yes"; then
304 dnl Decide what to do based on target_type
305 dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
306 dnl This is because we don't know yet whether pthread is enabled.
308 AC_ARG_ENABLE(mingw32,
309 [ --enable-mingw32 Use mingw32 for a Windows GUI],
310 [if test $enableval = yes; then
314 if test $target_type = mingw; then
316 SPECIAL_CFLAGS="-mwindows -mno-cygwin"
317 PTHREAD_LIB=-lpthreadGC
318 echo "Using mingw32 (Win32 GUI)"
321 if test $target_type = cygwin; then
322 SPECIAL_CFLAGS="-mno-win32"
324 echo "Using Cygnus (Win32 command line)"
327 PTHREAD_LIB=-lpthread
333 dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
334 old_CFLAGS_nospecial=$CFLAGS
335 CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
337 # Hack to force AutoConf to use the CFLAGS we just set
338 dnl Warning: This may break with a future version of Autoconf
339 dnl Tested with autoconf 2.13
340 ac_cpp='$CPP $CPPFLAGS $SPECIAL_CFLAGS'
341 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
342 ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
345 dnl =================================================================
347 dnl =================================================================
349 AC_CHECK_HEADER(pthread.h, [have_pthread=yes], [have_pthread=no])
351 AC_ARG_ENABLE(pthread,
352 [ --disable-pthread Don't use POSIX threads (pthreads)],
353 [if test $enableval = no; then
358 if test $have_pthread = yes; then
360 AC_DEFINE(FEATURE_PTHREAD)
361 echo Using POSIX threads
362 if test "$GCC" = "yes"; then
363 # Set a GCC specific switch:
364 if test "$target_type" = "unix"; then
365 # This compiler switch makes Linux thread-safe
366 # Don't know about other OS's? Is this switch
369 SPECIAL_CFLAGS="-pthread"
374 echo Using native threads
377 AC_SUBST(PTHREAD_ONLY)
380 dnl =================================================================
382 dnl FIXME: Not tested on Solaris yet...
383 dnl =================================================================
389 *-solaris*) SOCKET_LIB="-lsocket -lnsl"
390 AC_DEFINE(__EXTENSIONS__)
391 if test "$GCC" = "yes"; then
392 # Set a GCC specific switch:
393 # This compiler switch makes Solaris thread-safe
395 SPECIAL_CFLAGS="-pthreads"
397 # What do we do without GCC? Guess this:
398 SPECIAL_CFLAGS="-D_REENTRANT"
405 dnl =================================================================
407 dnl =================================================================
410 *-os2-emx*) SOCKET_LIB=-lsocket
416 dnl =================================================================
418 dnl =================================================================
423 *-amigaos) AMIGAOS_ONLY=
427 AC_SUBST(AMIGAOS_ONLY)
429 dnl =================================================================
430 dnl Check for standard compiler stuff
431 dnl =================================================================
439 AC_CHECK_SIZEOF(char *)
440 AC_CHECK_SIZEOF(long)
441 AC_CHECK_SIZEOF(long long)
442 AC_CHECK_SIZEOF(size_t)
444 dnl Checks for header files.
445 dnl AC_HEADER_SYS_WAIT
446 dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h)
448 dnl Checks for library functions.
450 dnl AC_CHECK_FUNC(strstr)
451 dnl bcopy and memmove are for PCRE
452 AC_CHECK_FUNCS(strerror bcopy memmove)
455 dnl =================================================================
456 dnl Checks for libraries.
457 dnl =================================================================
458 dnl Note: Some systems may have the library but not the system header
459 dnl file, so we must check for both.
460 AC_CHECK_LIB(pcre, pcre_compile, [AC_CHECK_HEADER(pcre.h, [have_pcre=yes], [have_pcre=no])], [have_pcre=no])
461 AC_CHECK_LIB(pcreposix, regcomp, [AC_CHECK_HEADER(pcreposix.h, [have_pcreposix=yes], [have_pcreposix=no])], [have_pcreposix=no], -lpcre)
462 AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no])
465 dnl =================================================================
467 dnl =================================================================
471 dnl =================================================================
473 dnl =================================================================
475 AC_ARG_ENABLE(toggle,
476 [ --disable-toggle Don't support temporary disable],
477 [if test $enableval = yes; then
478 AC_DEFINE(FEATURE_TOGGLE)
479 fi],AC_DEFINE(FEATURE_TOGGLE))
482 [ --disable-force Don't allow blockfile to be bypassed],
483 [if test $enableval = yes; then
484 AC_DEFINE(FEATURE_FORCE_LOAD)
485 fi],AC_DEFINE(FEATURE_FORCE_LOAD))
487 AC_ARG_ENABLE(fast-redirects,
488 [ --disable-fast-redirects Don't support fast redirects],
489 [if test $enableval = yes; then
490 AC_DEFINE(FEATURE_FAST_REDIRECTS)
491 fi], AC_DEFINE(FEATURE_FAST_REDIRECTS))
493 AC_ARG_ENABLE(killpopup,
494 [ --disable-killpopup Never block popups],
495 [if test $enableval = yes; then
496 AC_DEFINE(FEATURE_KILL_POPUPS)
497 fi],AC_DEFINE(FEATURE_KILL_POPUPS))
500 [ --disable-stats Don't keep statistics],
501 [if test $enableval = yes; then
502 AC_DEFINE(FEATURE_STATISTICS)
503 fi],AC_DEFINE(FEATURE_STATISTICS))
505 AC_ARG_ENABLE(ie-images,
506 [ --disable-ie-images Don't auto-detect whether a request from MS Internet
507 Explorer is for an image or HTML.],
508 [if test $enableval = yes; then
509 AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE)
511 AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE))
513 AC_ARG_ENABLE(image-blocking,
514 [ --disable-image-blocking Don't try to figure out whether a request is
515 for an image or HTML - assume HTML.],
516 [if test $enableval = yes; then
517 AC_DEFINE(FEATURE_IMAGE_BLOCKING)
519 AC_DEFINE(FEATURE_IMAGE_BLOCKING))
521 AC_ARG_ENABLE(acl-files,
522 [ --disable-acl-files Prevents the use of ACL files to control access to
523 the proxy by IP address.],
524 [if test $enableval = yes; then
525 AC_DEFINE(FEATURE_ACL)
527 AC_DEFINE(FEATURE_ACL))
529 AC_ARG_ENABLE(trust-files,
530 [ --disable-trust-files Prevents the use of trust files.],
531 [if test $enableval = yes; then
532 AC_DEFINE(FEATURE_TRUST)
534 AC_DEFINE(FEATURE_TRUST))
536 AC_ARG_ENABLE(jar-files,
537 [ --disable-jar-files Prevents the use of jar files to capture cookies.],
538 [if test $enableval = yes; then
539 AC_DEFINE(FEATURE_COOKIE_JAR)
541 AC_DEFINE(FEATURE_COOKIE_JAR))
543 dnl pcre/pcrs is needed for CGI anyway, so
544 dnl the choice is only between static and
547 AC_ARG_ENABLE(regex-matching,
548 [ --enable-regex-matching=pcre Use perl-compatible regex for actionsfile
549 pattern matching (default)
550 --enable-regex-matching=gnu Use gnu style regex for actionsfile pattern
551 matching (-> bigger binary)
552 --disable-regex-matching Don't use regex matching, compare URL
553 prefix instead (won't shrink birary)],
554 [ regex_matching=$enableval ],
555 [ regex_matching=pcre ])
557 AC_ARG_ENABLE(dynamic-pcre,
558 [ --disable-dynamic-pcre Use the built-in, static pcre, even if
559 libpcre is available],
560 [ if test $enableval = "no"; then have_pcre=no; fi ])
562 AC_ARG_ENABLE(dynamic-pcrs,
563 [ --disable-dynamic-pcrs Use the built-in, static pcrs, even if
564 libpcrs is available],
565 [ if test $enableval = "no"; then have_pcrs=no; fi ])
568 # Is the regex URL matching based on libpcreposix, but we
569 # don't have that library?
571 if test $have_pcreposix = "yes" -o $regex_matching != "pcre"; then
572 dont_miss_pcreposix=yes
574 dont_miss_pcreposix=no
577 # If we have libpcre and either we also have pcreposix or
578 # we don't need pcreposix, then link pcre dynamically; else
579 # build it and link statically
581 if test $have_pcre = "yes" -a $dont_miss_pcreposix = "yes"; then
587 echo "using built-in static pcre"
589 AC_DEFINE(STATIC_PCRE)
593 # If we have libpcrs and pcre is linked dynamically
594 # then also link pcrs dynamically, else build and link
597 if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
602 echo "using built-in static pcrs"
603 AC_DEFINE(STATIC_PCRS)
607 # Which method should be used for URL matching?
608 # pcre, gnu regex or prefix matching?
610 if test $regex_matching = "gnu"; then
611 echo "using gnu regex for URL matching"
615 elif test $regex_matching = "pcre"; then
616 echo "using pcre regex for URL matching"
617 AC_DEFINE(REGEX_PCRE)
620 if test $pcre_dyn = "yes"; then
621 LIBS="$LIBS -lpcreposix"
624 echo -e "using prefix matching for URLs\nHint: This does NOT make the executable any smaller!"
629 AC_SUBST(GNU_REGEX_ONLY)
630 AC_SUBST(PCRE_REGEX_ONLY)
631 AC_SUBST(STATIC_PCRE_ONLY)
632 AC_SUBST(STATIC_PCRS_ONLY)
634 dnl =================================================================
635 dnl Final cleanup and output
636 dnl =================================================================
638 dnl Remove the SPECIAL_CFLAGS stuff from CFLAGS, and add it seperately
640 CFLAGS=$old_CFLAGS_nospecial
641 AC_SUBST(SPECIAL_CFLAGS)
643 AC_SUBST(PTHREAD_LIB)