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