1 dnl Process this file with autoconf to produce a configure script.
3 dnl $Id: configure.in,v 1.19 2001/10/07 15:33:14 oes 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.19 2001/10/07 15:33:14 oes
32 dnl Removed FEATURE_DENY_GZIP
33 dnl Bumped up version number
35 dnl Revision 1.18 2001/09/13 13:10:24 steudten
37 dnl PreWork for Debug Interface.
38 dnl Add new option "--with-debug" to enable debugging (flags aso.)
40 dnl Revision 1.17 2001/09/12 23:44:55 david__schmidt
41 dnl Mac OSX (Darwin) support added.
43 dnl Revision 1.16 2001/09/12 22:55:45 joergs
44 dnl AmigaOS support added.
46 dnl Revision 1.15 2001/09/12 17:28:59 david__schmidt
48 dnl OS/2 port: update autoconf'd support for the platform.
50 dnl Revision 1.14 2001/07/30 22:12:11 jongfoster
51 dnl Fixing Solaris build (I hope) and tidying up #defines:
52 dnl - All feature #defines are now of the form FEATURE_xxx
53 dnl - Permanently turned off WIN_GUI_EDIT
54 dnl - Permanently turned on WEBDAV and SPLIT_PROXY_ARGS
56 dnl Revision 1.13 2001/07/29 17:09:17 jongfoster
57 dnl Major changes to build system in order to fix these bugs:
58 dnl - pthreads under Linux was broken - changed -lpthread to -pthread
59 dnl - Compiling in MinGW32 mode under CygWin now correctly detects
60 dnl which shared libraries are available
61 dnl - Solaris support (?) (Not tested under Solaris yet)
63 dnl Revision 1.12 2001/07/25 19:16:27 oes
64 dnl Bumping version number to 2.9.8
66 dnl Revision 1.11 2001/07/21 18:00:07 jongfoster
67 dnl Bumping version number to 2.9.7
69 dnl Revision 1.10 2001/07/18 17:25:04 oes
72 dnl Revision 1.9 2001/07/15 19:45:13 jongfoster
73 dnl Added support for linking with POSIX threads library
75 dnl Revision 1.8 2001/07/15 17:54:29 jongfoster
76 dnl Renaming #define STATIC to STATIC_PCRE
77 dnl Adding new #define FEATURE_PTHREAD that will be used to enable
78 dnl POSIX threads support.
80 dnl Revision 1.7 2001/07/13 13:58:05 oes
81 dnl Completely reorganized the selection scheme for
82 dnl pcre, pcreposix, pcrs and gnu_regex:
84 dnl The presence of shared pcre, pcreposix or pcrs
85 dnl libraried is now autodetected. Additionally, the
86 dnl user can enforce using the built-in static variants
87 dnl by specifying --disable-dynamic-(pcre|pcrs).
88 dnl Care is taken to avoid that pcre is dyn, while pcreposix
89 dnl is static, if both are used and that pcrs is static if
92 dnl The choice between pcre, gnu or no regex for actionsfile
93 dnl URL matching is now via
94 dnl --(enable|disable)-regex-matching[=(gnu|pcre|no)] with the
95 dnl default being pcre.
97 dnl Revision 1.6 2001/06/29 21:56:40 oes
100 dnl Revision 1.5 2001/06/29 13:26:27 oes
101 dnl Introduced #define CODE_STATUS
103 dnl Revision 1.4 2001/05/29 09:50:24 jongfoster
104 dnl Unified blocklist/imagelist/permissionslist.
105 dnl File format is still under discussion, but the internal changes
106 dnl are (mostly) done.
108 dnl Also modified interceptor behaviour:
109 dnl - We now intercept all URLs beginning with one of the following
110 dnl prefixes (and *only* these prefixes):
112 dnl * http://ijbswa.sf.net/config/
113 dnl * http://ijbswa.sourceforge.net/config/
114 dnl - New interceptors "home page" - go to http://i.j.b/ to see it.
115 dnl - Internal changes so that intercepted and fast redirect pages
116 dnl are not replaced with an image.
117 dnl - Interceptors now have the option to send a binary page direct
118 dnl to the client. (i.e. ijb-send-banner uses this)
119 dnl - Implemented show-url-info interceptor. (Which is why I needed
120 dnl the above interceptors changes - a typical URL is
121 dnl "http://i.j.b/show-url-info?url=www.somesite.com/banner.gif".
122 dnl The previous mechanism would not have intercepted that, and
123 dnl if it had been intercepted then it then it would have replaced
124 dnl it with an image.)
126 dnl Revision 1.3 2001/05/22 18:46:04 oes
128 dnl - Enabled filtering banners by size rather than URL
129 dnl by adding patterns that replace all standard banner
130 dnl sizes with the "Junkbuster" gif to the re_filterfile
132 dnl - Enabled filtering WebBugs by providing a pattern
133 dnl which kills all 1x1 images
135 dnl - Added support for PCRE_UNGREEDY behaviour to pcrs,
136 dnl which is selected by the (nonstandard and therefore
137 dnl capital) letter 'U' in the option string.
138 dnl It causes the quantifiers to be ungreedy by default.
139 dnl Appending a ? turns back to greedy (!).
141 dnl - Added a new interceptor ijb-send-banner, which
142 dnl sends back the "Junkbuster" gif. Without imagelist or
143 dnl MSIE detection support, or if tinygif = 1, or the
144 dnl URL isn't recognized as an imageurl, a lame HTML
145 dnl explanation is sent instead.
147 dnl - Added new feature, which permits blocking remote
148 dnl script redirects and firing back a local redirect
150 dnl The feature is conditionally compiled, i.e. it
151 dnl can be disabled with --disable-fast-redirects,
152 dnl plus it must be activated by a "fast-redirects"
153 dnl line in the config file, has its own log level
154 dnl and of course wants to be displayed by show-proxy-args
155 dnl Note: Boy, all the #ifdefs in 1001 locations and
156 dnl all the fumbling with configure.in and acconfig.h
157 dnl were *way* more work than the feature itself :-(
159 dnl - Because a generic redirect template was needed for
160 dnl this, tinygif = 3 now uses the same.
162 dnl - Moved GIFs, and other static HTTP response templates
165 dnl - Some minor fixes
167 dnl - Removed some >400 CRs again (Jon, you really worked
170 dnl Revision 1.2 2001/05/20 01:21:20 jongfoster
171 dnl Version 2.9.4 checkin.
172 dnl - Merged popupfile and cookiefile, and added control over PCRS
173 dnl filtering, in new "permissionsfile".
174 dnl - Implemented LOG_LEVEL_FATAL, so that if there is a configuration
175 dnl file error you now get a message box (in the Win32 GUI) rather
176 dnl than the program exiting with no explanation.
177 dnl - Made killpopup use the PCRS MIME-type checking and HTTP-header
179 dnl - Removed tabs from "config"
180 dnl - Moved duplicated url parsing code in "loaders.c" to a new funcition.
181 dnl - Bumped up version number.
183 dnl Revision 1.1.1.1 2001/05/15 13:58:50 oes
184 dnl Initial import of version 2.9.3 source tree
189 dnl =================================================================
190 dnl AutoConf Initialization
191 dnl =================================================================
193 AC_REVISION($Revision: 1.19 $)
195 AC_CONFIG_HEADER(config.h)
199 dnl =================================================================
200 dnl Application version number
201 dnl =================================================================
206 CODE_STATUS="\"alpha\""
208 dnl CODE_STATUS can be "alpha", "beta", or "stable", and will be
209 dnl used for CGI output
211 dnl =================================================================
212 dnl Substitute the version numbers
213 dnl =================================================================
215 AC_SUBST(VERSION_MAJOR)
216 AC_SUBST(VERSION_MINOR)
217 AC_SUBST(VERSION_POINT)
220 AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR})
221 AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR})
222 AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT})
223 AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}")
224 AC_DEFINE_UNQUOTED(CODE_STATUS,${CODE_STATUS})
227 dnl =================================================================
228 dnl Checks for programs needed to build.
229 dnl =================================================================
236 dnl RANLIB is for PCRE:
239 AC_CHECK_PROG(GDB,gdb,yes,no)
241 dnl =================================================================
242 dnl debug, gcc and gdb support
243 dnl =================================================================
246 [ --with-debug Enable debug mode],
248 if test "x$withval" != "$xno" ; then
249 if test $ac_cv_prog_cc_g = yes; then
250 if test "$GCC" = yes; then
256 CFLAGS="$CFLAGS -Wshadow -Wconversion"
261 CFLAGS="$CFLAGS -D_DEBUG"
265 if test "$GCC" = yes; then
273 dnl =================================================================
274 dnl additional gcc flags
275 dnl =================================================================
278 CFLAGS="-pipe $CFLAGS"
282 dnl =================================================================
284 dnl =================================================================
286 dnl Must do this first.
288 dnl Reason: This sets CFLAGS in order to switch the Cygwin compiler
289 dnl into Cygwin or MinGW32 modes. Depending on the mode selected,
290 dnl the compiler will use completely different sets of library
291 dnl and include files.
293 dnl =================================================================
298 if test "$MINGW32" = "yes"; then
301 if test "$CYGWIN" = "yes"; then
308 dnl Decide what to do based on target_type
309 dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
310 dnl This is because we don't know yet whether pthread is enabled.
312 AC_ARG_ENABLE(mingw32,
313 [ --enable-mingw32 Use mingw32 for a Windows GUI],
314 [if test $enableval = yes; then
318 if test $target_type = mingw; then
320 SPECIAL_CFLAGS="-mwindows -mno-cygwin"
321 PTHREAD_LIB=-lpthreadGC
322 echo "Using mingw32 (Win32 GUI)"
325 if test $target_type = cygwin; then
326 SPECIAL_CFLAGS="-mno-win32"
328 echo "Using Cygnus (Win32 command line)"
331 PTHREAD_LIB=-lpthread
337 dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
338 old_CFLAGS_nospecial=$CFLAGS
339 CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
341 # Hack to force AutoConf to use the CFLAGS we just set
342 dnl Warning: This may break with a future version of Autoconf
343 dnl Tested with autoconf 2.13
344 ac_cpp='$CPP $CPPFLAGS $SPECIAL_CFLAGS'
345 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
346 ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
349 dnl =================================================================
351 dnl =================================================================
353 AC_CHECK_HEADER(pthread.h, [have_pthread=yes], [have_pthread=no])
355 AC_ARG_ENABLE(pthread,
356 [ --disable-pthread Don't use POSIX threads (pthreads)],
357 [if test $enableval = no; then
362 if test $have_pthread = yes; then
364 AC_DEFINE(FEATURE_PTHREAD)
365 echo Using POSIX threads
366 if test "$GCC" = "yes"; then
367 # Set a GCC specific switch:
368 if test "$target_type" = "unix"; then
369 # This compiler switch makes Linux thread-safe
370 # Don't know about other OS's? Is this switch
373 SPECIAL_CFLAGS="-pthread"
378 echo Using native threads
381 AC_SUBST(PTHREAD_ONLY)
384 dnl =================================================================
386 dnl FIXME: Not tested on Solaris yet...
387 dnl =================================================================
393 *-solaris*) SOCKET_LIB="-lsocket -lnsl"
394 AC_DEFINE(__EXTENSIONS__)
395 if test "$GCC" = "yes"; then
396 # Set a GCC specific switch:
397 # This compiler switch makes Solaris thread-safe
399 SPECIAL_CFLAGS="-pthreads"
401 # What do we do without GCC? Guess this:
402 SPECIAL_CFLAGS="-D_REENTRANT"
409 dnl =================================================================
411 dnl =================================================================
414 *-os2-emx*) SOCKET_LIB=-lsocket
420 dnl =================================================================
422 dnl =================================================================
427 *-amigaos) AMIGAOS_ONLY=
431 AC_SUBST(AMIGAOS_ONLY)
433 dnl =================================================================
434 dnl Check for standard compiler stuff
435 dnl =================================================================
443 AC_CHECK_SIZEOF(char *)
444 AC_CHECK_SIZEOF(long)
445 AC_CHECK_SIZEOF(long long)
446 AC_CHECK_SIZEOF(size_t)
448 dnl Checks for header files.
449 dnl AC_HEADER_SYS_WAIT
450 dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h)
452 dnl Checks for library functions.
454 dnl AC_CHECK_FUNC(strstr)
455 dnl bcopy and memmove are for PCRE
456 AC_CHECK_FUNCS(strerror bcopy memmove)
459 dnl =================================================================
460 dnl Checks for libraries.
461 dnl =================================================================
462 dnl Note: Some systems may have the library but not the system header
463 dnl file, so we must check for both.
464 AC_CHECK_LIB(pcre, pcre_compile, [AC_CHECK_HEADER(pcre.h, [have_pcre=yes], [have_pcre=no])], [have_pcre=no])
465 AC_CHECK_LIB(pcreposix, regcomp, [AC_CHECK_HEADER(pcreposix.h, [have_pcreposix=yes], [have_pcreposix=no])], [have_pcreposix=no], -lpcre)
466 AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no])
469 dnl =================================================================
471 dnl =================================================================
475 dnl =================================================================
477 dnl =================================================================
479 AC_ARG_ENABLE(toggle,
480 [ --disable-toggle Don't support temporary disable],
481 [if test $enableval = yes; then
482 AC_DEFINE(FEATURE_TOGGLE)
483 fi],AC_DEFINE(FEATURE_TOGGLE))
486 [ --disable-force Don't allow single-page disable],
487 [if test $enableval = yes; then
488 AC_DEFINE(FEATURE_FORCE_LOAD)
489 fi],AC_DEFINE(FEATURE_FORCE_LOAD))
491 AC_ARG_ENABLE(fast-redirects,
492 [ --disable-fast-redirects Don't support fast redirects],
493 [if test $enableval = yes; then
494 AC_DEFINE(FEATURE_FAST_REDIRECTS)
495 fi], AC_DEFINE(FEATURE_FAST_REDIRECTS))
497 AC_ARG_ENABLE(killpopup,
498 [ --disable-killpopup Never block popups],
499 [if test $enableval = yes; then
500 AC_DEFINE(FEATURE_KILL_POPUPS)
501 fi],AC_DEFINE(FEATURE_KILL_POPUPS))
504 [ --disable-stats Don't keep statistics],
505 [if test $enableval = yes; then
506 AC_DEFINE(FEATURE_STATISTICS)
507 fi],AC_DEFINE(FEATURE_STATISTICS))
509 AC_ARG_ENABLE(ie-images,
510 [ --disable-ie-images Don't auto-detect whether a request from MS Internet
511 Explorer is for an image or HTML.],
512 [if test $enableval = yes; then
513 AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE)
515 AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE))
517 AC_ARG_ENABLE(image-blocking,
518 [ --disable-image-blocking Don't try to figure out whether a request is
519 for an image or HTML - assume HTML.],
520 [if test $enableval = yes; then
521 AC_DEFINE(FEATURE_IMAGE_BLOCKING)
523 AC_DEFINE(FEATURE_IMAGE_BLOCKING))
525 AC_ARG_ENABLE(acl-files,
526 [ --disable-acl-files Prevents the use of ACL files to control access to
527 the proxy by IP address.],
528 [if test $enableval = yes; then
529 AC_DEFINE(FEATURE_ACL)
531 AC_DEFINE(FEATURE_ACL))
533 AC_ARG_ENABLE(trust-files,
534 [ --disable-trust-files Prevents the use of trust files.],
535 [if test $enableval = yes; then
536 AC_DEFINE(FEATURE_TRUST)
538 AC_DEFINE(FEATURE_TRUST))
540 AC_ARG_ENABLE(jar-files,
541 [ --disable-jar-files Prevents the use of jar files to capture cookies.],
542 [if test $enableval = yes; then
543 AC_DEFINE(FEATURE_COOKIE_JAR)
545 AC_DEFINE(FEATURE_COOKIE_JAR))
547 AC_ARG_ENABLE(editor,
548 [ --disable-editor Prevents the use of the web-based actions file
549 editor and web-based temporary disable setting.],
550 [if test $enableval = yes; then
551 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS)
553 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS))
555 dnl pcre/pcrs is needed for CGI anyway, so
556 dnl the choice is only between static and
559 AC_ARG_ENABLE(regex-matching,
560 [ --enable-regex-matching=pcre Use perl-compatible regex for actionsfile
561 pattern matching (default)
562 --enable-regex-matching=gnu Use gnu style regex for actionsfile pattern
563 matching (-> bigger binary)
564 --disable-regex-matching Don't use regex matching, compare URL
565 prefix instead (won't shrink birary)],
566 [ regex_matching=$enableval ],
567 [ regex_matching=pcre ])
569 AC_ARG_ENABLE(dynamic-pcre,
570 [ --disable-dynamic-pcre Use the built-in, static pcre, even if
571 libpcre is available],
572 [ if test $enableval = "no"; then have_pcre=no; fi ])
574 AC_ARG_ENABLE(dynamic-pcrs,
575 [ --disable-dynamic-pcrs Use the built-in, static pcrs, even if
576 libpcrs is available],
577 [ if test $enableval = "no"; then have_pcrs=no; fi ])
580 # Is the regex URL matching based on libpcreposix, but we
581 # don't have that library?
583 if test $have_pcreposix = "yes" -o $regex_matching != "pcre"; then
584 dont_miss_pcreposix=yes
586 dont_miss_pcreposix=no
589 # If we have libpcre and either we also have pcreposix or
590 # we don't need pcreposix, then link pcre dynamically; else
591 # build it and link statically
593 if test $have_pcre = "yes" -a $dont_miss_pcreposix = "yes"; then
599 echo "using built-in static pcre"
601 AC_DEFINE(STATIC_PCRE)
605 # If we have libpcrs and pcre is linked dynamically
606 # then also link pcrs dynamically, else build and link
609 if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
614 echo "using built-in static pcrs"
615 AC_DEFINE(STATIC_PCRS)
619 # Which method should be used for URL matching?
620 # pcre, gnu regex or prefix matching?
622 if test $regex_matching = "gnu"; then
623 echo "using gnu regex for URL matching"
627 elif test $regex_matching = "pcre"; then
628 echo "using pcre regex for URL matching"
629 AC_DEFINE(REGEX_PCRE)
632 if test $pcre_dyn = "yes"; then
633 LIBS="$LIBS -lpcreposix"
636 echo -e "using prefix matching for URLs\nHint: This does NOT make the executable any smaller!"
641 AC_SUBST(GNU_REGEX_ONLY)
642 AC_SUBST(PCRE_REGEX_ONLY)
643 AC_SUBST(STATIC_PCRE_ONLY)
644 AC_SUBST(STATIC_PCRS_ONLY)
646 dnl =================================================================
647 dnl Final cleanup and output
648 dnl =================================================================
650 dnl Remove the SPECIAL_CFLAGS stuff from CFLAGS, and add it seperately
652 CFLAGS=$old_CFLAGS_nospecial
653 AC_SUBST(SPECIAL_CFLAGS)
655 AC_SUBST(PTHREAD_LIB)