1 dnl Process this file with autoconf to produce a configure script.
3 dnl $Id: configure.in,v 1.22 2001/12/01 11:24:01 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.22 2001/12/01 11:24:01 jongfoster
32 dnl Renaming Makefile.in to GNUmakefile.in so that non-GNU versions of
33 dnl make break in a more obvious way.
35 dnl Revision 1.21 2001/11/30 21:35:54 jongfoster
36 dnl Bumping version number to 2.9.10
38 dnl Revision 1.20 2001/10/23 21:24:09 jongfoster
39 dnl Support for FEATURE_CGI_EDIT_ACTIONS
41 dnl Revision 1.19 2001/10/07 15:33:14 oes
42 dnl Removed FEATURE_DENY_GZIP
43 dnl Bumped up version number
45 dnl Revision 1.18 2001/09/13 13:10:24 steudten
47 dnl PreWork for Debug Interface.
48 dnl Add new option "--with-debug" to enable debugging (flags aso.)
50 dnl Revision 1.17 2001/09/12 23:44:55 david__schmidt
51 dnl Mac OSX (Darwin) support added.
53 dnl Revision 1.16 2001/09/12 22:55:45 joergs
54 dnl AmigaOS support added.
56 dnl Revision 1.15 2001/09/12 17:28:59 david__schmidt
58 dnl OS/2 port: update autoconf'd support for the platform.
60 dnl Revision 1.14 2001/07/30 22:12:11 jongfoster
61 dnl Fixing Solaris build (I hope) and tidying up #defines:
62 dnl - All feature #defines are now of the form FEATURE_xxx
63 dnl - Permanently turned off WIN_GUI_EDIT
64 dnl - Permanently turned on WEBDAV and SPLIT_PROXY_ARGS
66 dnl Revision 1.13 2001/07/29 17:09:17 jongfoster
67 dnl Major changes to build system in order to fix these bugs:
68 dnl - pthreads under Linux was broken - changed -lpthread to -pthread
69 dnl - Compiling in MinGW32 mode under CygWin now correctly detects
70 dnl which shared libraries are available
71 dnl - Solaris support (?) (Not tested under Solaris yet)
73 dnl Revision 1.12 2001/07/25 19:16:27 oes
74 dnl Bumping version number to 2.9.8
76 dnl Revision 1.11 2001/07/21 18:00:07 jongfoster
77 dnl Bumping version number to 2.9.7
79 dnl Revision 1.10 2001/07/18 17:25:04 oes
82 dnl Revision 1.9 2001/07/15 19:45:13 jongfoster
83 dnl Added support for linking with POSIX threads library
85 dnl Revision 1.8 2001/07/15 17:54:29 jongfoster
86 dnl Renaming #define STATIC to STATIC_PCRE
87 dnl Adding new #define FEATURE_PTHREAD that will be used to enable
88 dnl POSIX threads support.
90 dnl Revision 1.7 2001/07/13 13:58:05 oes
91 dnl Completely reorganized the selection scheme for
92 dnl pcre, pcreposix, pcrs and gnu_regex:
94 dnl The presence of shared pcre, pcreposix or pcrs
95 dnl libraried is now autodetected. Additionally, the
96 dnl user can enforce using the built-in static variants
97 dnl by specifying --disable-dynamic-(pcre|pcrs).
98 dnl Care is taken to avoid that pcre is dyn, while pcreposix
99 dnl is static, if both are used and that pcrs is static if
102 dnl The choice between pcre, gnu or no regex for actionsfile
103 dnl URL matching is now via
104 dnl --(enable|disable)-regex-matching[=(gnu|pcre|no)] with the
105 dnl default being pcre.
107 dnl Revision 1.6 2001/06/29 21:56:40 oes
110 dnl Revision 1.5 2001/06/29 13:26:27 oes
111 dnl Introduced #define CODE_STATUS
113 dnl Revision 1.4 2001/05/29 09:50:24 jongfoster
114 dnl Unified blocklist/imagelist/permissionslist.
115 dnl File format is still under discussion, but the internal changes
116 dnl are (mostly) done.
118 dnl Also modified interceptor behaviour:
119 dnl - We now intercept all URLs beginning with one of the following
120 dnl prefixes (and *only* these prefixes):
122 dnl * http://ijbswa.sf.net/config/
123 dnl * http://ijbswa.sourceforge.net/config/
124 dnl - New interceptors "home page" - go to http://i.j.b/ to see it.
125 dnl - Internal changes so that intercepted and fast redirect pages
126 dnl are not replaced with an image.
127 dnl - Interceptors now have the option to send a binary page direct
128 dnl to the client. (i.e. ijb-send-banner uses this)
129 dnl - Implemented show-url-info interceptor. (Which is why I needed
130 dnl the above interceptors changes - a typical URL is
131 dnl "http://i.j.b/show-url-info?url=www.somesite.com/banner.gif".
132 dnl The previous mechanism would not have intercepted that, and
133 dnl if it had been intercepted then it then it would have replaced
134 dnl it with an image.)
136 dnl Revision 1.3 2001/05/22 18:46:04 oes
138 dnl - Enabled filtering banners by size rather than URL
139 dnl by adding patterns that replace all standard banner
140 dnl sizes with the "Junkbuster" gif to the re_filterfile
142 dnl - Enabled filtering WebBugs by providing a pattern
143 dnl which kills all 1x1 images
145 dnl - Added support for PCRE_UNGREEDY behaviour to pcrs,
146 dnl which is selected by the (nonstandard and therefore
147 dnl capital) letter 'U' in the option string.
148 dnl It causes the quantifiers to be ungreedy by default.
149 dnl Appending a ? turns back to greedy (!).
151 dnl - Added a new interceptor ijb-send-banner, which
152 dnl sends back the "Junkbuster" gif. Without imagelist or
153 dnl MSIE detection support, or if tinygif = 1, or the
154 dnl URL isn't recognized as an imageurl, a lame HTML
155 dnl explanation is sent instead.
157 dnl - Added new feature, which permits blocking remote
158 dnl script redirects and firing back a local redirect
160 dnl The feature is conditionally compiled, i.e. it
161 dnl can be disabled with --disable-fast-redirects,
162 dnl plus it must be activated by a "fast-redirects"
163 dnl line in the config file, has its own log level
164 dnl and of course wants to be displayed by show-proxy-args
165 dnl Note: Boy, all the #ifdefs in 1001 locations and
166 dnl all the fumbling with configure.in and acconfig.h
167 dnl were *way* more work than the feature itself :-(
169 dnl - Because a generic redirect template was needed for
170 dnl this, tinygif = 3 now uses the same.
172 dnl - Moved GIFs, and other static HTTP response templates
175 dnl - Some minor fixes
177 dnl - Removed some >400 CRs again (Jon, you really worked
180 dnl Revision 1.2 2001/05/20 01:21:20 jongfoster
181 dnl Version 2.9.4 checkin.
182 dnl - Merged popupfile and cookiefile, and added control over PCRS
183 dnl filtering, in new "permissionsfile".
184 dnl - Implemented LOG_LEVEL_FATAL, so that if there is a configuration
185 dnl file error you now get a message box (in the Win32 GUI) rather
186 dnl than the program exiting with no explanation.
187 dnl - Made killpopup use the PCRS MIME-type checking and HTTP-header
189 dnl - Removed tabs from "config"
190 dnl - Moved duplicated url parsing code in "loaders.c" to a new funcition.
191 dnl - Bumped up version number.
193 dnl Revision 1.1.1.1 2001/05/15 13:58:50 oes
194 dnl Initial import of version 2.9.3 source tree
199 dnl =================================================================
200 dnl AutoConf Initialization
201 dnl =================================================================
203 AC_REVISION($Revision: 1.22 $)
205 AC_CONFIG_HEADER(config.h)
209 dnl =================================================================
210 dnl Application version number
211 dnl =================================================================
216 CODE_STATUS="\"beta\""
218 dnl CODE_STATUS can be "alpha", "beta", or "stable", and will be
219 dnl used for CGI output
221 dnl =================================================================
222 dnl Substitute the version numbers
223 dnl =================================================================
225 AC_SUBST(VERSION_MAJOR)
226 AC_SUBST(VERSION_MINOR)
227 AC_SUBST(VERSION_POINT)
230 AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR})
231 AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR})
232 AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT})
233 AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}")
234 AC_DEFINE_UNQUOTED(CODE_STATUS,${CODE_STATUS})
237 dnl =================================================================
238 dnl Checks for programs needed to build.
239 dnl =================================================================
246 dnl RANLIB is for PCRE:
249 AC_CHECK_PROG(GDB,gdb,yes,no)
251 dnl =================================================================
252 dnl debug, gcc and gdb support
253 dnl =================================================================
256 [ --with-debug Enable debug mode],
258 if test "x$withval" != "$xno" ; then
259 if test $ac_cv_prog_cc_g = yes; then
260 if test "$GCC" = yes; then
266 CFLAGS="$CFLAGS -Wshadow -Wconversion"
271 CFLAGS="$CFLAGS -D_DEBUG"
275 if test "$GCC" = yes; then
283 dnl =================================================================
284 dnl additional gcc flags
285 dnl =================================================================
288 CFLAGS="-pipe $CFLAGS"
292 dnl =================================================================
294 dnl =================================================================
296 dnl Must do this first.
298 dnl Reason: This sets CFLAGS in order to switch the Cygwin compiler
299 dnl into Cygwin or MinGW32 modes. Depending on the mode selected,
300 dnl the compiler will use completely different sets of library
301 dnl and include files.
303 dnl =================================================================
308 if test "$MINGW32" = "yes"; then
311 if test "$CYGWIN" = "yes"; then
318 dnl Decide what to do based on target_type
319 dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
320 dnl This is because we don't know yet whether pthread is enabled.
322 AC_ARG_ENABLE(mingw32,
323 [ --enable-mingw32 Use mingw32 for a Windows GUI],
324 [if test $enableval = yes; then
328 if test $target_type = mingw; then
330 SPECIAL_CFLAGS="-mwindows -mno-cygwin"
331 PTHREAD_LIB=-lpthreadGC
332 echo "Using mingw32 (Win32 GUI)"
335 if test $target_type = cygwin; then
336 SPECIAL_CFLAGS="-mno-win32"
338 echo "Using Cygnus (Win32 command line)"
341 PTHREAD_LIB=-lpthread
347 dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
348 old_CFLAGS_nospecial=$CFLAGS
349 CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
351 # Hack to force AutoConf to use the CFLAGS we just set
352 dnl Warning: This may break with a future version of Autoconf
353 dnl Tested with autoconf 2.13
354 ac_cpp='$CPP $CPPFLAGS $SPECIAL_CFLAGS'
355 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
356 ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
359 dnl =================================================================
361 dnl =================================================================
363 AC_CHECK_HEADER(pthread.h, [have_pthread=yes], [have_pthread=no])
365 AC_ARG_ENABLE(pthread,
366 [ --disable-pthread Don't use POSIX threads (pthreads)],
367 [if test $enableval = no; then
372 if test $have_pthread = yes; then
374 AC_DEFINE(FEATURE_PTHREAD)
375 echo Using POSIX threads
376 if test "$GCC" = "yes"; then
377 # Set a GCC specific switch:
378 if test "$target_type" = "unix"; then
379 # This compiler switch makes Linux thread-safe
380 # Don't know about other OS's? Is this switch
383 SPECIAL_CFLAGS="-pthread"
388 echo Using native threads
391 AC_SUBST(PTHREAD_ONLY)
394 dnl =================================================================
396 dnl FIXME: Not tested on Solaris yet...
397 dnl =================================================================
403 *-solaris*) SOCKET_LIB="-lsocket -lnsl"
404 AC_DEFINE(__EXTENSIONS__)
405 if test "$GCC" = "yes"; then
406 # Set a GCC specific switch:
407 # This compiler switch makes Solaris thread-safe
409 SPECIAL_CFLAGS="-pthreads"
411 # What do we do without GCC? Guess this:
412 SPECIAL_CFLAGS="-D_REENTRANT"
419 dnl =================================================================
421 dnl =================================================================
424 *-os2-emx*) SOCKET_LIB=-lsocket
430 dnl =================================================================
432 dnl =================================================================
437 *-amigaos) AMIGAOS_ONLY=
441 AC_SUBST(AMIGAOS_ONLY)
443 dnl =================================================================
444 dnl Check for standard compiler stuff
445 dnl =================================================================
453 AC_CHECK_SIZEOF(char *)
454 AC_CHECK_SIZEOF(long)
455 AC_CHECK_SIZEOF(long long)
456 AC_CHECK_SIZEOF(size_t)
458 dnl Checks for header files.
459 dnl AC_HEADER_SYS_WAIT
460 dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h)
462 dnl Checks for library functions.
464 dnl AC_CHECK_FUNC(strstr)
465 dnl bcopy and memmove are for PCRE
466 AC_CHECK_FUNCS(strerror bcopy memmove)
469 dnl =================================================================
470 dnl Checks for libraries.
471 dnl =================================================================
472 dnl Note: Some systems may have the library but not the system header
473 dnl file, so we must check for both.
474 AC_CHECK_LIB(pcre, pcre_compile, [AC_CHECK_HEADER(pcre.h, [have_pcre=yes], [have_pcre=no])], [have_pcre=no])
475 AC_CHECK_LIB(pcreposix, regcomp, [AC_CHECK_HEADER(pcreposix.h, [have_pcreposix=yes], [have_pcreposix=no])], [have_pcreposix=no], -lpcre)
476 AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no])
479 dnl =================================================================
481 dnl =================================================================
485 dnl =================================================================
487 dnl =================================================================
489 AC_ARG_ENABLE(toggle,
490 [ --disable-toggle Don't support temporary disable],
491 [if test $enableval = yes; then
492 AC_DEFINE(FEATURE_TOGGLE)
493 fi],AC_DEFINE(FEATURE_TOGGLE))
496 [ --disable-force Don't allow single-page disable],
497 [if test $enableval = yes; then
498 AC_DEFINE(FEATURE_FORCE_LOAD)
499 fi],AC_DEFINE(FEATURE_FORCE_LOAD))
501 AC_ARG_ENABLE(fast-redirects,
502 [ --disable-fast-redirects Don't support fast redirects],
503 [if test $enableval = yes; then
504 AC_DEFINE(FEATURE_FAST_REDIRECTS)
505 fi], AC_DEFINE(FEATURE_FAST_REDIRECTS))
507 AC_ARG_ENABLE(killpopup,
508 [ --disable-killpopup Never block popups],
509 [if test $enableval = yes; then
510 AC_DEFINE(FEATURE_KILL_POPUPS)
511 fi],AC_DEFINE(FEATURE_KILL_POPUPS))
514 [ --disable-stats Don't keep statistics],
515 [if test $enableval = yes; then
516 AC_DEFINE(FEATURE_STATISTICS)
517 fi],AC_DEFINE(FEATURE_STATISTICS))
519 AC_ARG_ENABLE(ie-images,
520 [ --disable-ie-images Don't auto-detect whether a request from MS Internet
521 Explorer is for an image or HTML.],
522 [if test $enableval = yes; then
523 AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE)
525 AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE))
527 AC_ARG_ENABLE(image-blocking,
528 [ --disable-image-blocking Don't try to figure out whether a request is
529 for an image or HTML - assume HTML.],
530 [if test $enableval = yes; then
531 AC_DEFINE(FEATURE_IMAGE_BLOCKING)
533 AC_DEFINE(FEATURE_IMAGE_BLOCKING))
535 AC_ARG_ENABLE(acl-files,
536 [ --disable-acl-files Prevents the use of ACL files to control access to
537 the proxy by IP address.],
538 [if test $enableval = yes; then
539 AC_DEFINE(FEATURE_ACL)
541 AC_DEFINE(FEATURE_ACL))
543 AC_ARG_ENABLE(trust-files,
544 [ --disable-trust-files Prevents the use of trust files.],
545 [if test $enableval = yes; then
546 AC_DEFINE(FEATURE_TRUST)
548 AC_DEFINE(FEATURE_TRUST))
550 AC_ARG_ENABLE(jar-files,
551 [ --disable-jar-files Prevents the use of jar files to capture cookies.],
552 [if test $enableval = yes; then
553 AC_DEFINE(FEATURE_COOKIE_JAR)
555 AC_DEFINE(FEATURE_COOKIE_JAR))
557 AC_ARG_ENABLE(editor,
558 [ --disable-editor Prevents the use of the web-based actions file
559 editor and web-based temporary disable setting.],
560 [if test $enableval = yes; then
561 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS)
563 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS))
565 dnl pcre/pcrs is needed for CGI anyway, so
566 dnl the choice is only between static and
569 AC_ARG_ENABLE(regex-matching,
570 [ --enable-regex-matching=pcre Use perl-compatible regex for actionsfile
571 pattern matching (default)
572 --enable-regex-matching=gnu Use gnu style regex for actionsfile pattern
573 matching (-> bigger binary)
574 --disable-regex-matching Don't use regex matching, compare URL
575 prefix instead (won't shrink birary)],
576 [ regex_matching=$enableval ],
577 [ regex_matching=pcre ])
579 AC_ARG_ENABLE(dynamic-pcre,
580 [ --disable-dynamic-pcre Use the built-in, static pcre, even if
581 libpcre is available],
582 [ if test $enableval = "no"; then have_pcre=no; fi ])
584 AC_ARG_ENABLE(dynamic-pcrs,
585 [ --disable-dynamic-pcrs Use the built-in, static pcrs, even if
586 libpcrs is available],
587 [ if test $enableval = "no"; then have_pcrs=no; fi ])
590 # Is the regex URL matching based on libpcreposix, but we
591 # don't have that library?
593 if test $have_pcreposix = "yes" -o $regex_matching != "pcre"; then
594 dont_miss_pcreposix=yes
596 dont_miss_pcreposix=no
599 # If we have libpcre and either we also have pcreposix or
600 # we don't need pcreposix, then link pcre dynamically; else
601 # build it and link statically
603 if test $have_pcre = "yes" -a $dont_miss_pcreposix = "yes"; then
609 echo "using built-in static pcre"
611 AC_DEFINE(STATIC_PCRE)
615 # If we have libpcrs and pcre is linked dynamically
616 # then also link pcrs dynamically, else build and link
619 if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
624 echo "using built-in static pcrs"
625 AC_DEFINE(STATIC_PCRS)
629 # Which method should be used for URL matching?
630 # pcre, gnu regex or prefix matching?
632 if test $regex_matching = "gnu"; then
633 echo "using gnu regex for URL matching"
637 elif test $regex_matching = "pcre"; then
638 echo "using pcre regex for URL matching"
639 AC_DEFINE(REGEX_PCRE)
642 if test $pcre_dyn = "yes"; then
643 LIBS="$LIBS -lpcreposix"
646 echo -e "using prefix matching for URLs\nHint: This does NOT make the executable any smaller!"
651 AC_SUBST(GNU_REGEX_ONLY)
652 AC_SUBST(PCRE_REGEX_ONLY)
653 AC_SUBST(STATIC_PCRE_ONLY)
654 AC_SUBST(STATIC_PCRS_ONLY)
656 dnl =================================================================
657 dnl Final cleanup and output
658 dnl =================================================================
660 dnl Remove the SPECIAL_CFLAGS stuff from CFLAGS, and add it seperately
662 CFLAGS=$old_CFLAGS_nospecial
663 AC_SUBST(SPECIAL_CFLAGS)
665 AC_SUBST(PTHREAD_LIB)
667 AC_OUTPUT(GNUmakefile)