Adding editor control block, and renaming _SHOWARGS_H
[privoxy.git] / configure.in
1 dnl Process this file with autoconf to produce a configure script.
2 dnl 
3 dnl $Id: configure.in,v 1.12 2001/07/25 19:16:27 oes Exp $
4 dnl 
5 dnl Written by and Copyright (C) 2001 the SourceForge
6 dnl IJBSWA team.  http://ijbswa.sourceforge.net
7 dnl
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
11 dnl
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.
17 dnl 
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.
23 dnl 
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.
29 dnl 
30 dnl $Log: configure.in,v $
31 dnl Revision 1.12  2001/07/25 19:16:27  oes
32 dnl Bumping version number to 2.9.8
33 dnl
34 dnl Revision 1.11  2001/07/21 18:00:07  jongfoster
35 dnl Bumping version number to 2.9.7
36 dnl
37 dnl Revision 1.10  2001/07/18 17:25:04  oes
38 dnl Fixed a typo
39 dnl
40 dnl Revision 1.9  2001/07/15 19:45:13  jongfoster
41 dnl Added support for linking with POSIX threads library
42 dnl
43 dnl Revision 1.8  2001/07/15 17:54:29  jongfoster
44 dnl Renaming #define STATIC to STATIC_PCRE
45 dnl Adding new #define FEATURE_PTHREAD that will be used to enable
46 dnl POSIX threads support.
47 dnl
48 dnl Revision 1.7  2001/07/13 13:58:05  oes
49 dnl    Completely reorganized the selection scheme for
50 dnl    pcre, pcreposix, pcrs and gnu_regex:
51 dnl
52 dnl    The presence of shared pcre, pcreposix or pcrs
53 dnl    libraried is now autodetected. Additionally, the
54 dnl    user can enforce using the built-in static variants
55 dnl    by specifying --disable-dynamic-(pcre|pcrs).
56 dnl    Care is taken to avoid that pcre is dyn, while pcreposix
57 dnl    is static, if both are used and that pcrs is static if
58 dnl    pcrs is.
59 dnl
60 dnl    The choice between pcre, gnu or no regex for actionsfile
61 dnl    URL matching is now via
62 dnl    --(enable|disable)-regex-matching[=(gnu|pcre|no)] with the
63 dnl    default being pcre.
64 dnl
65 dnl Revision 1.6  2001/06/29 21:56:40  oes
66 dnl Version -> 2.9.5
67 dnl
68 dnl Revision 1.5  2001/06/29 13:26:27  oes
69 dnl Introduced #define CODE_STATUS
70 dnl
71 dnl Revision 1.4  2001/05/29 09:50:24  jongfoster
72 dnl Unified blocklist/imagelist/permissionslist.
73 dnl File format is still under discussion, but the internal changes
74 dnl are (mostly) done.
75 dnl
76 dnl Also modified interceptor behaviour:
77 dnl - We now intercept all URLs beginning with one of the following
78 dnl   prefixes (and *only* these prefixes):
79 dnl     * http://i.j.b/
80 dnl     * http://ijbswa.sf.net/config/
81 dnl     * http://ijbswa.sourceforge.net/config/
82 dnl - New interceptors "home page" - go to http://i.j.b/ to see it.
83 dnl - Internal changes so that intercepted and fast redirect pages
84 dnl   are not replaced with an image.
85 dnl - Interceptors now have the option to send a binary page direct
86 dnl   to the client. (i.e. ijb-send-banner uses this)
87 dnl - Implemented show-url-info interceptor.  (Which is why I needed
88 dnl   the above interceptors changes - a typical URL is
89 dnl   "http://i.j.b/show-url-info?url=www.somesite.com/banner.gif".
90 dnl   The previous mechanism would not have intercepted that, and
91 dnl   if it had been intercepted then it then it would have replaced
92 dnl   it with an image.)
93 dnl
94 dnl Revision 1.3  2001/05/22 18:46:04  oes
95 dnl
96 dnl - Enabled filtering banners by size rather than URL
97 dnl   by adding patterns that replace all standard banner
98 dnl   sizes with the "Junkbuster" gif to the re_filterfile
99 dnl
100 dnl - Enabled filtering WebBugs by providing a pattern
101 dnl   which kills all 1x1 images
102 dnl
103 dnl - Added support for PCRE_UNGREEDY behaviour to pcrs,
104 dnl   which is selected by the (nonstandard and therefore
105 dnl   capital) letter 'U' in the option string.
106 dnl   It causes the quantifiers to be ungreedy by default.
107 dnl   Appending a ? turns back to greedy (!).
108 dnl
109 dnl - Added a new interceptor ijb-send-banner, which
110 dnl   sends back the "Junkbuster" gif. Without imagelist or
111 dnl   MSIE detection support, or if tinygif = 1, or the
112 dnl   URL isn't recognized as an imageurl, a lame HTML
113 dnl   explanation is sent instead.
114 dnl
115 dnl - Added new feature, which permits blocking remote
116 dnl   script redirects and firing back a local redirect
117 dnl   to the browser.
118 dnl   The feature is conditionally compiled, i.e. it
119 dnl   can be disabled with --disable-fast-redirects,
120 dnl   plus it must be activated by a "fast-redirects"
121 dnl   line in the config file, has its own log level
122 dnl   and of course wants to be displayed by show-proxy-args
123 dnl   Note: Boy, all the #ifdefs in 1001 locations and
124 dnl   all the fumbling with configure.in and acconfig.h
125 dnl   were *way* more work than the feature itself :-(
126 dnl
127 dnl - Because a generic redirect template was needed for
128 dnl   this, tinygif = 3 now uses the same.
129 dnl
130 dnl - Moved GIFs, and other static HTTP response templates
131 dnl   to project.h
132 dnl
133 dnl - Some minor fixes
134 dnl
135 dnl - Removed some >400 CRs again (Jon, you really worked
136 dnl   a lot! ;-)
137 dnl
138 dnl Revision 1.2  2001/05/20 01:21:20  jongfoster
139 dnl Version 2.9.4 checkin.
140 dnl - Merged popupfile and cookiefile, and added control over PCRS
141 dnl   filtering, in new "permissionsfile".
142 dnl - Implemented LOG_LEVEL_FATAL, so that if there is a configuration
143 dnl   file error you now get a message box (in the Win32 GUI) rather
144 dnl   than the program exiting with no explanation.
145 dnl - Made killpopup use the PCRS MIME-type checking and HTTP-header
146 dnl   skipping.
147 dnl - Removed tabs from "config"
148 dnl - Moved duplicated url parsing code in "loaders.c" to a new funcition.
149 dnl - Bumped up version number.
150 dnl
151 dnl Revision 1.1.1.1  2001/05/15 13:58:50  oes
152 dnl Initial import of version 2.9.3 source tree
153 dnl
154 dnl 
155
156
157 dnl =================================================================
158 dnl AutoConf Initialization
159 dnl =================================================================
160
161 AC_REVISION($Revision: 1.11 $)
162 AC_INIT(jcc.c)
163 AC_CONFIG_HEADER(config.h)
164
165
166 dnl =================================================================
167 dnl Application version number
168 dnl =================================================================
169
170 VERSION_MAJOR=2
171 VERSION_MINOR=9
172 VERSION_POINT=8
173 CODE_STATUS="\"alpha\""
174
175 dnl CODE_STATUS can be "alpha", "beta", or "stable", and will be
176 dnl used for CGI output
177
178 dnl =================================================================
179 dnl Substitute the version numbers
180 dnl =================================================================
181
182 AC_SUBST(VERSION_MAJOR)
183 AC_SUBST(VERSION_MINOR)
184 AC_SUBST(VERSION_POINT)
185
186 dnl
187 AC_DEFINE_UNQUOTED(VERSION_MAJOR,${VERSION_MAJOR})
188 AC_DEFINE_UNQUOTED(VERSION_MINOR,${VERSION_MINOR})
189 AC_DEFINE_UNQUOTED(VERSION_POINT,${VERSION_POINT})
190 AC_DEFINE_UNQUOTED(VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_POINT}")
191 AC_DEFINE_UNQUOTED(CODE_STATUS,${CODE_STATUS})
192
193
194 dnl =================================================================
195 dnl Checks for programs needed to build.
196 dnl =================================================================
197 AC_PROG_CC
198 AC_PROG_CPP
199 dnl AC_PROG_CXX
200 dnl AC_PROG_INSTALL
201 dnl AC_PROG_LN_S
202 dnl AC_PROG_MAKE_SET
203 dnl RANLIB is for PCRE:
204 dnl AC_PROG_RANLIB
205
206
207 dnl =================================================================
208 dnl Build type
209 dnl =================================================================
210 dnl
211 dnl Must do this first.
212 dnl
213 dnl Reason: This sets CFLAGS in order to switch the Cygwin compiler
214 dnl into Cygwin or MinGW32 modes.  Depending on the mode selected,
215 dnl the compiler will use completely different sets of library
216 dnl and include files.
217 dnl 
218 dnl =================================================================
219
220 AC_MINGW32
221 AC_CYGWIN
222
223 if test "$MINGW32" = "yes"; then
224   target_type=mingw
225 else
226   if test "$CYGWIN" = "yes"; then
227     target_type=cygwin
228   else
229     target_type=unix
230   fi
231 fi
232
233 dnl Decide what to do based on target_type
234 dnl Note: PTHREAD_LIB is always set, even if pthread is disabled.
235 dnl This is because we don't know yet whether pthread is enabled.
236
237 AC_ARG_ENABLE(mingw32,
238 [  --enable-mingw32        Use mingw32 for a Windows GUI],
239 [if test $enableval = yes; then
240   target_type=mingw
241 fi])
242
243 if test $target_type = mingw; then
244   WIN_ONLY=
245   SPECIAL_CFLAGS="-mwindows -mno-cygwin"
246   PTHREAD_LIB=-lpthreadGC
247   echo "Using mingw32 (Win32 GUI)"
248 else
249   WIN_ONLY=#
250   if test $target_type = cygwin; then
251     SPECIAL_CFLAGS="-mno-win32"
252     PTHREAD_LIB=
253     echo "Using Cygnus (Win32 command line)"
254   else
255     SPECIAL_CFLAGS=
256     PTHREAD_LIB=-lpthread
257   fi
258 fi
259 AC_SUBST(WIN_ONLY)
260
261 dnl Save old CFLAGS so we can restore them later, then add SPECIAL_CFLAGS
262 old_CFLAGS_nospecial=$CFLAGS
263 CFLAGS="$CFLAGS $SPECIAL_CFLAGS"
264
265 # Hack to force AutoConf to use the CFLAGS we just set
266 dnl Warning: This may break with a future version of Autoconf
267 dnl          Tested with autoconf 2.13
268 ac_cpp='$CPP $CPPFLAGS $SPECIAL_CFLAGS'
269 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
270 ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
271
272
273 dnl =================================================================
274 dnl Thread support
275 dnl =================================================================
276
277 AC_CHECK_HEADER(pthread.h, [have_pthread=yes], [have_pthread=no])
278
279 AC_ARG_ENABLE(pthread,
280 [  --disable-pthread       Don't use POSIX threads (pthreads)],
281 [if test $enableval = no; then
282   # Disable pthreads
283   have_pthread=no
284 fi])
285
286 if test $have_pthread = yes; then
287   PTHREAD_ONLY=
288   AC_DEFINE(FEATURE_PTHREAD)
289   echo Using POSIX threads
290   if test "$GCC" = "yes"; then
291     # Set a GCC specific switch:
292     if test "$target_type" = "unix"; then
293       # This compiler switch makes Linux thread-safe
294       # Don't know about other OS's?  Is this switch
295       # supported?
296       PTHREAD_LIB=
297       SPECIAL_CFLAGS="-pthread"
298     fi
299   fi
300 else
301   PTHREAD_ONLY=#
302   echo Using native threads
303 fi
304
305 AC_SUBST(PTHREAD_LIB)
306 AC_SUBST(PTHREAD_ONLY)
307
308
309 dnl =================================================================
310 dnl Check for standard compiler stuff
311 dnl =================================================================
312
313 AC_EXEEXT
314 AC_OBJEXT
315 AC_HEADER_STDC
316 AC_C_CONST
317 AC_TYPE_SIZE_T
318
319 dnl Checks for header files.
320 dnl AC_HEADER_SYS_WAIT
321 dnl AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/time.h unistd.h)
322
323 dnl Checks for library functions.
324 dnl AC_TYPE_SIGNAL
325 dnl AC_CHECK_FUNC(strstr)
326 dnl bcopy and memmove are for PCRE
327 AC_CHECK_FUNCS(strerror bcopy memmove)
328
329
330 dnl =================================================================
331 dnl Checks for libraries.
332 dnl =================================================================
333 dnl Note: Some systems may have the library but not the system header
334 dnl       file, so we must check for both.
335 AC_CHECK_LIB(pcre, pcre_compile, [AC_CHECK_HEADER(pcre.h, [have_pcre=yes], [have_pcre=no])], [have_pcre=no])
336 AC_CHECK_LIB(pcreposix, regcomp, [AC_CHECK_HEADER(pcreposix.h, [have_pcreposix=yes], [have_pcreposix=no])], [have_pcreposix=no], -lpcre)
337 AC_CHECK_LIB(pcrs, pcrs_compile, [AC_CHECK_HEADER(pcrs.h, [have_pcrs=yes], [have_pcrs=no])], [have_pcrs=no])
338
339
340 dnl =================================================================
341 dnl Solaris specific
342 dnl FIXME: Not tested on Solaris yet...
343 dnl =================================================================
344
345 AC_CANONICAL_HOST
346
347 SOLARIS_ONLY=#
348
349 case "$target" in
350 *-solaris*) AC_DEFINE(_REENTRANT)
351             AC_DEFINE(__EXTENSIONS__)
352             SOLARIS_ONLY=
353 ;;
354 esac
355
356 AC_SUBST(SOLARIS_ONLY)
357
358 dnl =================================================================
359 dnl Always defined
360 dnl =================================================================
361
362 AC_DEFINE(__MT__)
363
364 dnl =================================================================
365 dnl Features
366 dnl =================================================================
367
368 AC_ARG_ENABLE(toggle,
369 [  --disable-toggle        Don't support temporary disable],
370 [if test $enableval = yes; then
371   AC_DEFINE(TOGGLE)
372 fi],AC_DEFINE(TOGGLE))
373
374 AC_ARG_ENABLE(gzip,
375 [  --disable-gzip          Block gzip'ed transfer of documents.  Note that
376                           this is required if you want content modification
377                           even with gzip-supporting servers.],
378 [if test $enableval = "no"; then
379   AC_DEFINE(DENY_GZIP)
380 fi])
381
382 AC_ARG_ENABLE(force,
383 [  --disable-force         Don't allow blockfile to be bypassed],
384 [if test $enableval = yes; then
385   AC_DEFINE(FORCE_LOAD)
386 fi],AC_DEFINE(FORCE_LOAD))
387
388 AC_ARG_ENABLE(fast-redirects,
389 [  --disable-fast-redirects Don't support fast redirects],
390 [if test $enableval = yes; then
391   AC_DEFINE(FAST_REDIRECTS)
392 fi], AC_DEFINE(FAST_REDIRECTS))
393
394 AC_ARG_ENABLE(killpopup,
395 [  --disable-killpopup     Never block popups],
396 [if test $enableval = yes; then
397   AC_DEFINE(KILLPOPUPS)
398 fi],AC_DEFINE(KILLPOPUPS))
399
400 AC_ARG_ENABLE(stats,
401 [  --disable-stats         Don't keep statistics],
402 [if test $enableval = yes; then
403   AC_DEFINE(STATISTICS)
404 fi],AC_DEFINE(STATISTICS))
405
406 AC_ARG_ENABLE(split-proxy-args,
407 [  --disable-split-proxy-args  One big show-proxy-args page, not one per file.],
408 [if test $enableval = yes; then
409   AC_DEFINE(SPLIT_PROXY_ARGS)
410 fi],AC_DEFINE(SPLIT_PROXY_ARGS))
411
412 AC_ARG_ENABLE(webdav,
413 [  --disable-webdav        Don't support WebDAV.  This option breaks MS
414                           Outlook Express when accessing HotMail e-mail.],
415 [if test $enableval = yes; then
416   AC_DEFINE(WEBDAV)
417 fi],
418 AC_DEFINE(WEBDAV))
419
420 AC_ARG_ENABLE(ie-images,
421 [  --disable-ie-images     Don't auto-detect whether a request from MS Internet
422                           Explorer is for an image or HTML.],
423 [if test $enableval = yes; then
424   AC_DEFINE(DETECT_MSIE_IMAGES)
425 fi],
426 AC_DEFINE(DETECT_MSIE_IMAGES))
427
428 AC_ARG_ENABLE(image-blocking,
429 [  --disable-image-blocking  Don't try to figure out whether a request is 
430                             for an image or HTML - assume HTML.],
431 [if test $enableval = yes; then
432   AC_DEFINE(IMAGE_BLOCKING)
433 fi],
434 AC_DEFINE(IMAGE_BLOCKING))
435
436 AC_ARG_ENABLE(acl-files,
437 [  --disable-acl-files     Prevents the use of ACL files to control access to
438                           the proxy by IP address.],
439 [if test $enableval = yes; then
440   AC_DEFINE(ACL_FILES)
441 fi],
442 AC_DEFINE(ACL_FILES))
443
444 AC_ARG_ENABLE(trust-files,
445 [  --disable-trust-files   Prevents the use of trust files.],
446 [if test $enableval = yes; then
447   AC_DEFINE(TRUST_FILES)
448 fi],
449 AC_DEFINE(TRUST_FILES))
450
451 AC_ARG_ENABLE(jar-files,
452 [  --disable-jar-files     Prevents the use of jar files to capture cookies.],
453 [if test $enableval = yes; then
454   AC_DEFINE(JAR_FILES)
455 fi],
456 AC_DEFINE(JAR_FILES))
457
458 dnl pcre/pcrs is needed for CGI anyway, so
459 dnl the choice is only between static and
460 dnl dynamic:
461
462 AC_ARG_ENABLE(regex-matching,
463 [  --enable-regex-matching=pcre     Use perl-compatible regex for actionsfile
464                                    pattern matching (default)
465   --enable-regex-matching=gnu      Use gnu style regex for actionsfile pattern
466                                    matching (-> bigger binary)
467   --disable-regex-matching         Don't use regex matching, compare URL
468                                    prefix instead (won't shrink birary)],
469 [ regex_matching=$enableval ],
470 [ regex_matching=pcre ])
471
472 AC_ARG_ENABLE(dynamic-pcre,
473 [  --disable-dynamic-pcre           Use the built-in, static pcre, even if
474                                    libpcre is available],
475 [ if test $enableval = "no"; then have_pcre=no; fi ])
476
477 AC_ARG_ENABLE(dynamic-pcrs,
478 [  --disable-dynamic-pcrs           Use the built-in, static pcrs, even if
479                                    libpcrs is available],
480 [ if test $enableval = "no"; then have_pcrs=no; fi ])
481
482
483 # Is the regex URL matching based on libpcreposix, but we
484 # don't have that library?
485 #
486 if test $have_pcreposix = "yes" -o $regex_matching != "pcre"; then
487   dont_miss_pcreposix=yes
488 else
489   dont_miss_pcreposix=no
490 fi
491
492 # If we have libpcre and either we also have pcreposix or
493 # we don't need pcreposix, then link pcre dynamically; else
494 # build it and link statically
495 #
496 if test $have_pcre = "yes" -a $dont_miss_pcreposix = "yes"; then
497   echo "using libpcre"
498   pcre_dyn=yes
499   STATIC_PCRE_ONLY=#
500   LIBS="$LIBS -lpcre"
501 else
502   echo "using built-in static pcre"
503   pcre_dyn=no
504   AC_DEFINE(STATIC_PCRE)
505   STATIC_PCRE_ONLY=
506 fi
507
508 # If we have libpcrs and pcre is linked dynamically
509 # then also link pcrs dynamically, else build and link
510 # pcrs statically
511 #
512 if test $have_pcrs = "yes" -a $pcre_dyn = "yes"; then
513   echo "using libpcrs"
514   STATIC_PCRS_ONLY=#
515   LIBS="$LIBS -lpcrs"
516 else
517   echo "using built-in static pcrs"
518   AC_DEFINE(STATIC_PCRS)
519   STATIC_PCRS_ONLY=
520 fi
521
522 # Which method should be used for URL matching?
523 # pcre, gnu regex or prefix matching?
524 #
525 if test $regex_matching = "gnu"; then
526   echo "using gnu regex for URL matching"
527   AC_DEFINE(REGEX_GNU)
528   GNU_REGEX_ONLY=
529   PCRE_REGEX_ONLY=#
530 elif test $regex_matching = "pcre"; then
531   echo "using pcre regex for URL matching"
532   AC_DEFINE(REGEX_PCRE)
533   GNU_REGEX_ONLY=#
534   PCRE_REGEX_ONLY=
535   if test $pcre_dyn = "yes"; then
536     LIBS="$LIBS -lpcreposix"
537   fi
538 else
539   echo -e "using prefix matching for URLs\nHint: This does NOT make the executable any smaller!"
540   GNU_REGEX_ONLY=#
541   PCRE_REGEX_ONLY=#
542 fi
543
544 AC_SUBST(GNU_REGEX_ONLY)
545 AC_SUBST(PCRE_REGEX_ONLY)
546 AC_SUBST(STATIC_PCRE_ONLY)
547 AC_SUBST(STATIC_PCRS_ONLY)
548
549 dnl =================================================================
550 dnl Final cleanup and output
551 dnl =================================================================
552
553 dnl Remove the SPECIAL_CFLAGS stuff from CFLAGS, and add it seperately
554 dnl in the Makefile
555 CFLAGS=$old_CFLAGS_nospecial
556 AC_SUBST(SPECIAL_CFLAGS)
557
558 AC_OUTPUT(Makefile)
559