1 dnl Process this file with autoconf to produce a configure script.
3 dnl $Id: configure.in,v 1.24 2001/12/30 14:07:31 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.24 2001/12/30 14:07:31 steudten
32 dnl - Add signal handling (unix)
33 dnl - Add SIGHUP handler (unix)
34 dnl - Add creation of pidfile (unix)
35 dnl - Add action 'top' in rc file (RH)
36 dnl - Add entry 'SIGNALS' to manpage
37 dnl - Add exit message to logfile (unix)
39 dnl Revision 1.23 2001/12/09 20:24:42 david__schmidt
40 dnl Change from "alpha" to "beta" in configure.in
42 dnl Revision 1.22 2001/12/01 11:24:01 jongfoster
43 dnl Renaming Makefile.in to GNUmakefile.in so that non-GNU versions of
44 dnl make break in a more obvious way.
46 dnl Revision 1.21 2001/11/30 21:35:54 jongfoster
47 dnl Bumping version number to 2.9.10
49 dnl Revision 1.20 2001/10/23 21:24:09 jongfoster
50 dnl Support for FEATURE_CGI_EDIT_ACTIONS
52 dnl Revision 1.19 2001/10/07 15:33:14 oes
53 dnl Removed FEATURE_DENY_GZIP
54 dnl Bumped up version number
56 dnl Revision 1.18 2001/09/13 13:10:24 steudten
58 dnl PreWork for Debug Interface.
59 dnl Add new option "--with-debug" to enable debugging (flags aso.)
61 dnl Revision 1.17 2001/09/12 23:44:55 david__schmidt
62 dnl Mac OSX (Darwin) support added.
64 dnl Revision 1.16 2001/09/12 22:55:45 joergs
65 dnl AmigaOS support added.
67 dnl Revision 1.15 2001/09/12 17:28:59 david__schmidt
69 dnl OS/2 port: update autoconf'd support for the platform.
71 dnl Revision 1.14 2001/07/30 22:12:11 jongfoster
72 dnl Fixing Solaris build (I hope) and tidying up #defines:
73 dnl - All feature #defines are now of the form FEATURE_xxx
74 dnl - Permanently turned off WIN_GUI_EDIT
75 dnl - Permanently turned on WEBDAV and SPLIT_PROXY_ARGS
77 dnl Revision 1.13 2001/07/29 17:09:17 jongfoster
78 dnl Major changes to build system in order to fix these bugs:
79 dnl - pthreads under Linux was broken - changed -lpthread to -pthread
80 dnl - Compiling in MinGW32 mode under CygWin now correctly detects
81 dnl which shared libraries are available
82 dnl - Solaris support (?) (Not tested under Solaris yet)
84 dnl Revision 1.12 2001/07/25 19:16:27 oes
85 dnl Bumping version number to 2.9.8
87 dnl Revision 1.11 2001/07/21 18:00:07 jongfoster
88 dnl Bumping version number to 2.9.7
90 dnl Revision 1.10 2001/07/18 17:25:04 oes
93 dnl Revision 1.9 2001/07/15 19:45:13 jongfoster
94 dnl Added support for linking with POSIX threads library
96 dnl Revision 1.8 2001/07/15 17:54:29 jongfoster
97 dnl Renaming #define STATIC to STATIC_PCRE
98 dnl Adding new #define FEATURE_PTHREAD that will be used to enable
99 dnl POSIX threads support.
101 dnl Revision 1.7 2001/07/13 13:58:05 oes
102 dnl Completely reorganized the selection scheme for
103 dnl pcre, pcreposix, pcrs and gnu_regex:
105 dnl The presence of shared pcre, pcreposix or pcrs
106 dnl libraried is now autodetected. Additionally, the
107 dnl user can enforce using the built-in static variants
108 dnl by specifying --disable-dynamic-(pcre|pcrs).
109 dnl Care is taken to avoid that pcre is dyn, while pcreposix
110 dnl is static, if both are used and that pcrs is static if
113 dnl The choice between pcre, gnu or no regex for actionsfile
114 dnl URL matching is now via
115 dnl --(enable|disable)-regex-matching[=(gnu|pcre|no)] with the
116 dnl default being pcre.
118 dnl Revision 1.6 2001/06/29 21:56:40 oes
121 dnl Revision 1.5 2001/06/29 13:26:27 oes
122 dnl Introduced #define CODE_STATUS
124 dnl Revision 1.4 2001/05/29 09:50:24 jongfoster
125 dnl Unified blocklist/imagelist/permissionslist.
126 dnl File format is still under discussion, but the internal changes
127 dnl are (mostly) done.
129 dnl Also modified interceptor behaviour:
130 dnl - We now intercept all URLs beginning with one of the following
131 dnl prefixes (and *only* these prefixes):
133 dnl * http://ijbswa.sf.net/config/
134 dnl * http://ijbswa.sourceforge.net/config/
135 dnl - New interceptors "home page" - go to http://i.j.b/ to see it.
136 dnl - Internal changes so that intercepted and fast redirect pages
137 dnl are not replaced with an image.
138 dnl - Interceptors now have the option to send a binary page direct
139 dnl to the client. (i.e. ijb-send-banner uses this)
140 dnl - Implemented show-url-info interceptor. (Which is why I needed
141 dnl the above interceptors changes - a typical URL is
142 dnl "http://i.j.b/show-url-info?url=www.somesite.com/banner.gif".
143 dnl The previous mechanism would not have intercepted that, and
144 dnl if it had been intercepted then it then it would have replaced
145 dnl it with an image.)
147 dnl Revision 1.3 2001/05/22 18:46:04 oes
149 dnl - Enabled filtering banners by size rather than URL
150 dnl by adding patterns that replace all standard banner
151 dnl sizes with the "Junkbuster" gif to the re_filterfile
153 dnl - Enabled filtering WebBugs by providing a pattern
154 dnl which kills all 1x1 images
156 dnl - Added support for PCRE_UNGREEDY behaviour to pcrs,
157 dnl which is selected by the (nonstandard and therefore
158 dnl capital) letter 'U' in the option string.
159 dnl It causes the quantifiers to be ungreedy by default.
160 dnl Appending a ? turns back to greedy (!).
162 dnl - Added a new interceptor ijb-send-banner, which
163 dnl sends back the "Junkbuster" gif. Without imagelist or
164 dnl MSIE detection support, or if tinygif = 1, or the
165 dnl URL isn't recognized as an imageurl, a lame HTML
166 dnl explanation is sent instead.
168 dnl - Added new feature, which permits blocking remote
169 dnl script redirects and firing back a local redirect
171 dnl The feature is conditionally compiled, i.e. it
172 dnl can be disabled with --disable-fast-redirects,
173 dnl plus it must be activated by a "fast-redirects"
174 dnl line in the config file, has its own log level
175 dnl and of course wants to be displayed by show-proxy-args
176 dnl Note: Boy, all the #ifdefs in 1001 locations and
177 dnl all the fumbling with configure.in and acconfig.h
178 dnl were *way* more work than the feature itself :-(
180 dnl - Because a generic redirect template was needed for
181 dnl this, tinygif = 3 now uses the same.
183 dnl - Moved GIFs, and other static HTTP response templates
186 dnl - Some minor fixes
188 dnl - Removed some >400 CRs again (Jon, you really worked
191 dnl Revision 1.2 2001/05/20 01:21:20 jongfoster
192 dnl Version 2.9.4 checkin.
193 dnl - Merged popupfile and cookiefile, and added control over PCRS
194 dnl filtering, in new "permissionsfile".
195 dnl - Implemented LOG_LEVEL_FATAL, so that if there is a configuration
196 dnl file error you now get a message box (in the Win32 GUI) rather
197 dnl than the program exiting with no explanation.
198 dnl - Made killpopup use the PCRS MIME-type checking and HTTP-header
200 dnl - Removed tabs from "config"
201 dnl - Moved duplicated url parsing code in "loaders.c" to a new funcition.
202 dnl - Bumped up version number.
204 dnl Revision 1.1.1.1 2001/05/15 13:58:50 oes
205 dnl Initial import of version 2.9.3 source tree
210 dnl =================================================================
211 dnl AutoConf Initialization
212 dnl =================================================================
214 AC_REVISION($Revision: 1.24 $)
216 AC_CONFIG_HEADER(config.h)
220 dnl =================================================================
221 dnl Application version number
222 dnl =================================================================
229 dnl CODE_STATUS can be "alpha", "beta", or "stable", and will be
230 dnl used for CGI output
232 dnl =================================================================
233 dnl Substitute the version numbers
234 dnl =================================================================
236 AC_SUBST(VERSION_MAJOR)
237 AC_SUBST(VERSION_MINOR)
238 AC_SUBST(VERSION_POINT)
239 AC_SUBST(CODE_STATUS)
242 AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR})
243 AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR})
244 AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT})
245 AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}")
246 AC_DEFINE_UNQUOTED(CODE_STATUS,"${CODE_STATUS}")
248 dnl =================================================================
249 dnl pid file only for unix
250 dnl =================================================================
252 PID_FILE_PATH="\"/etc/junkbuster"\"
254 dnl =================================================================
255 dnl Checks for programs needed to build.
256 dnl =================================================================
263 dnl RANLIB is for PCRE:
266 AC_CHECK_PROG(GDB,gdb,yes,no)
268 dnl =================================================================
269 dnl debug, gcc and gdb support
270 dnl =================================================================
273 [ --with-debug Enable debug mode],
275 if test "x$withval" != "$xno" ; then
276 if test $ac_cv_prog_cc_g = yes; then
277 if test "$GCC" = yes; then
283 CFLAGS="$CFLAGS -Wshadow -Wconversion"
288 CFLAGS="$CFLAGS -D_DEBUG"
292 if test "$GCC" = yes; then
300 dnl =================================================================
301 dnl additional gcc flags
302 dnl =================================================================
305 CFLAGS="-pipe $CFLAGS"
309 dnl =================================================================
311 dnl =================================================================
313 dnl Must do this first.
315 dnl Reason: This sets CFLAGS in order to switch the Cygwin compiler
316 dnl into Cygwin or MinGW32 modes. Depending on the mode selected,
317 dnl the compiler will use completely different sets of library
318 dnl and include files.
320 dnl =================================================================
325 if test "$MINGW32" = "yes"; then
328 if test "$CYGWIN" = "yes"; then
335 dnl Decide what to do based on target_type
336 dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
337 dnl This is because we don't know yet whether pthread is enabled.
339 AC_ARG_ENABLE(mingw32,
340 [ --enable-mingw32 Use mingw32 for a Windows GUI],
341 [if test $enableval = yes; then
345 if test $target_type = mingw; then
347 SPECIAL_CFLAGS="-mwindows -mno-cygwin"
348 PTHREAD_LIB=-lpthreadGC
349 echo "Using mingw32 (Win32 GUI)"
352 if test $target_type = cygwin; then
353 SPECIAL_CFLAGS="-mno-win32"
355 echo "Using Cygnus (Win32 command line)"
358 PTHREAD_LIB=-lpthread
364 dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
365 old_CFLAGS_nospecial=$CFLAGS
366 CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
368 # Hack to force AutoConf to use the CFLAGS we just set
369 dnl Warning: This may break with a future version of Autoconf
370 dnl Tested with autoconf 2.13
371 ac_cpp='$CPP $CPPFLAGS $SPECIAL_CFLAGS'
372 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
373 ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
376 dnl =================================================================
378 dnl =================================================================
380 AC_CHECK_HEADER(pthread.h, [have_pthread=yes], [have_pthread=no])
382 AC_ARG_ENABLE(pthread,
383 [ --disable-pthread Don't use POSIX threads (pthreads)],
384 [if test $enableval = no; then
389 if test $have_pthread = yes; then
391 AC_DEFINE(FEATURE_PTHREAD)
392 echo Using POSIX threads
393 if test "$GCC" = "yes"; then
394 # Set a GCC specific switch:
395 if test "$target_type" = "unix"; then
396 # This compiler switch makes Linux thread-safe
397 # Don't know about other OS's? Is this switch
400 SPECIAL_CFLAGS="-pthread"
405 echo Using native threads
408 AC_SUBST(PTHREAD_ONLY)
411 dnl =================================================================
413 dnl FIXME: Not tested on Solaris yet...
414 dnl =================================================================
420 *-solaris*) SOCKET_LIB="-lsocket -lnsl"
421 AC_DEFINE(__EXTENSIONS__)
422 if test "$GCC" = "yes"; then
423 # Set a GCC specific switch:
424 # This compiler switch makes Solaris thread-safe
426 SPECIAL_CFLAGS="-pthreads"
428 # What do we do without GCC? Guess this:
429 SPECIAL_CFLAGS="-D_REENTRANT"
436 dnl =================================================================
438 dnl =================================================================
441 *-os2-emx*) SOCKET_LIB=-lsocket
447 dnl =================================================================
449 dnl =================================================================
454 *-amigaos) AMIGAOS_ONLY=
458 AC_SUBST(AMIGAOS_ONLY)
460 dnl =================================================================
461 dnl Check for standard compiler stuff
462 dnl =================================================================
470 AC_CHECK_SIZEOF(char *)
471 AC_CHECK_SIZEOF(long)
472 AC_CHECK_SIZEOF(long long)
473 AC_CHECK_SIZEOF(size_t)
475 dnl Checks for header files.
476 dnl AC_HEADER_SYS_WAIT
477 dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h)
479 dnl Checks for library functions.
481 dnl AC_CHECK_FUNC(strstr)
482 dnl bcopy and memmove are for PCRE
483 AC_CHECK_FUNCS(strerror bcopy memmove)
486 dnl =================================================================
487 dnl Checks for libraries.
488 dnl =================================================================
489 dnl Note: Some systems may have the library but not the system header
490 dnl file, so we must check for both.
491 AC_CHECK_LIB(pcre, pcre_compile, [AC_CHECK_HEADER(pcre.h, [have_pcre=yes], [have_pcre=no])], [have_pcre=no])
492 AC_CHECK_LIB(pcreposix, regcomp, [AC_CHECK_HEADER(pcreposix.h, [have_pcreposix=yes], [have_pcreposix=no])], [have_pcreposix=no], -lpcre)
493 AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no])
496 dnl =================================================================
498 dnl =================================================================
502 dnl =================================================================
504 dnl =================================================================
506 AC_ARG_ENABLE(toggle,
507 [ --disable-toggle Don't support temporary disable],
508 [if test $enableval = yes; then
509 AC_DEFINE(FEATURE_TOGGLE)
510 fi],AC_DEFINE(FEATURE_TOGGLE))
513 [ --disable-force Don't allow single-page disable],
514 [if test $enableval = yes; then
515 AC_DEFINE(FEATURE_FORCE_LOAD)
516 fi],AC_DEFINE(FEATURE_FORCE_LOAD))
518 AC_ARG_ENABLE(fast-redirects,
519 [ --disable-fast-redirects Don't support fast redirects],
520 [if test $enableval = yes; then
521 AC_DEFINE(FEATURE_FAST_REDIRECTS)
522 fi], AC_DEFINE(FEATURE_FAST_REDIRECTS))
524 AC_ARG_ENABLE(killpopup,
525 [ --disable-killpopup Never block popups],
526 [if test $enableval = yes; then
527 AC_DEFINE(FEATURE_KILL_POPUPS)
528 fi],AC_DEFINE(FEATURE_KILL_POPUPS))
531 [ --disable-stats Don't keep statistics],
532 [if test $enableval = yes; then
533 AC_DEFINE(FEATURE_STATISTICS)
534 fi],AC_DEFINE(FEATURE_STATISTICS))
536 AC_ARG_ENABLE(ie-images,
537 [ --disable-ie-images Don't auto-detect whether a request from MS Internet
538 Explorer is for an image or HTML.],
539 [if test $enableval = yes; then
540 AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE)
542 AC_DEFINE(FEATURE_IMAGE_DETECT_MSIE))
544 AC_ARG_ENABLE(image-blocking,
545 [ --disable-image-blocking Don't try to figure out whether a request is
546 for an image or HTML - assume HTML.],
547 [if test $enableval = yes; then
548 AC_DEFINE(FEATURE_IMAGE_BLOCKING)
550 AC_DEFINE(FEATURE_IMAGE_BLOCKING))
552 AC_ARG_ENABLE(acl-files,
553 [ --disable-acl-files Prevents the use of ACL files to control access to
554 the proxy by IP address.],
555 [if test $enableval = yes; then
556 AC_DEFINE(FEATURE_ACL)
558 AC_DEFINE(FEATURE_ACL))
560 AC_ARG_ENABLE(trust-files,
561 [ --disable-trust-files Prevents the use of trust files.],
562 [if test $enableval = yes; then
563 AC_DEFINE(FEATURE_TRUST)
565 AC_DEFINE(FEATURE_TRUST))
567 AC_ARG_ENABLE(jar-files,
568 [ --disable-jar-files Prevents the use of jar files to capture cookies.],
569 [if test $enableval = yes; then
570 AC_DEFINE(FEATURE_COOKIE_JAR)
572 AC_DEFINE(FEATURE_COOKIE_JAR))
574 AC_ARG_ENABLE(editor,
575 [ --disable-editor Prevents the use of the web-based actions file
576 editor and web-based temporary disable setting.],
577 [if test $enableval = yes; then
578 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS)
580 AC_DEFINE(FEATURE_CGI_EDIT_ACTIONS))
582 dnl pcre/pcrs is needed for CGI anyway, so
583 dnl the choice is only between static and
586 AC_ARG_ENABLE(regex-matching,
587 [ --enable-regex-matching=pcre Use perl-compatible regex for actionsfile
588 pattern matching (default)
589 --enable-regex-matching=gnu Use gnu style regex for actionsfile pattern
590 matching (-> bigger binary)
591 --disable-regex-matching Don't use regex matching, compare URL
592 prefix instead (won't shrink birary)],
593 [ regex_matching=$enableval ],
594 [ regex_matching=pcre ])
596 AC_ARG_ENABLE(dynamic-pcre,
597 [ --disable-dynamic-pcre Use the built-in, static pcre, even if
598 libpcre is available],
599 [ if test $enableval = "no"; then have_pcre=no; fi ])
601 AC_ARG_ENABLE(dynamic-pcrs,
602 [ --disable-dynamic-pcrs Use the built-in, static pcrs, even if
603 libpcrs is available],
604 [ if test $enableval = "no"; then have_pcrs=no; fi ])
607 # Is the regex URL matching based on libpcreposix, but we
608 # don't have that library?
610 if test $have_pcreposix = "yes" -o $regex_matching != "pcre"; then
611 dont_miss_pcreposix=yes
613 dont_miss_pcreposix=no
616 # If we have libpcre and either we also have pcreposix or
617 # we don't need pcreposix, then link pcre dynamically; else
618 # build it and link statically
620 if test $have_pcre = "yes" -a $dont_miss_pcreposix = "yes"; then
626 echo "using built-in static pcre"
628 AC_DEFINE(STATIC_PCRE)
632 # If we have libpcrs and pcre is linked dynamically
633 # then also link pcrs dynamically, else build and link
636 if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
641 echo "using built-in static pcrs"
642 AC_DEFINE(STATIC_PCRS)
646 # Which method should be used for URL matching?
647 # pcre, gnu regex or prefix matching?
649 if test $regex_matching = "gnu"; then
650 echo "using gnu regex for URL matching"
654 elif test $regex_matching = "pcre"; then
655 echo "using pcre regex for URL matching"
656 AC_DEFINE(REGEX_PCRE)
659 if test $pcre_dyn = "yes"; then
660 LIBS="$LIBS -lpcreposix"
663 echo -e "using prefix matching for URLs\nHint: This does NOT make the executable any smaller!"
668 AC_SUBST(GNU_REGEX_ONLY)
669 AC_SUBST(PCRE_REGEX_ONLY)
670 AC_SUBST(STATIC_PCRE_ONLY)
671 AC_SUBST(STATIC_PCRS_ONLY)
673 dnl =================================================================
674 dnl Final cleanup and output
675 dnl =================================================================
677 dnl Remove the SPECIAL_CFLAGS stuff from CFLAGS, and add it seperately
679 CFLAGS=$old_CFLAGS_nospecial
680 AC_SUBST(SPECIAL_CFLAGS)
682 AC_SUBST(PID_FILE_PATH)
683 AC_DEFINE_UNQUOTED(PID_FILE_PATH,${PID_FILE_PATH})
685 AC_SUBST(PTHREAD_LIB)
687 AC_OUTPUT(GNUmakefile)