/[pcre]/code/trunk/configure.ac
ViewVC logotype

Contents of /code/trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 842 - (hide annotations) (download)
Sat Dec 31 15:19:04 2011 UTC (16 months, 2 weeks ago) by ph10
File size: 32058 byte(s)
Typos in PrepareRelease; include 16-bit in make distcheck; fix RunTest and 
RunGrepTest when building in non-source directory; problem in pcretest when no 
UTF or 16-bit support; other tidies consequent on building a tarball.

1 nigel 87 dnl Process this file with autoconf to produce a configure script.
2    
3 ph10 481 dnl NOTE FOR MAINTAINERS: Do not use minor version numbers 08 or 09 because
4     dnl the leading zeros may cause them to be treated as invalid octal constants
5     dnl if a PCRE user writes code that uses PCRE_MINOR as a number. There is now
6     dnl a check further down that throws an error if 08 or 09 are used.
7 ph10 99
8 ph10 481 dnl The PCRE_PRERELEASE feature is for identifying release candidates. It might
9     dnl be defined as -RC2, for example. For real releases, it should be empty.
10    
11 ph10 418 m4_define(pcre_major, [8])
12 ph10 836 m4_define(pcre_minor, [30])
13     m4_define(pcre_prerelease, [-PT1])
14     m4_define(pcre_date, [2012-01-01])
15 nigel 87
16 ph10 97 # Libtool shared library interface versions (current:revision:age)
17     m4_define(libpcre_version, [0:1:0])
18     m4_define(libpcreposix_version, [0:0:0])
19     m4_define(libpcrecpp_version, [0:0:0])
20 nigel 87
21 ph10 97 AC_PREREQ(2.57)
22     AC_INIT(PCRE, pcre_major.pcre_minor[]pcre_prerelease, , pcre)
23     AC_CONFIG_SRCDIR([pcre.h.in])
24     AM_INIT_AUTOMAKE([dist-bzip2 dist-zip])
25     AC_CONFIG_HEADERS(config.h)
26 ph10 159
27 ph10 479 # This was added at the suggestion of libtoolize (03-Jan-10)
28     AC_CONFIG_MACRO_DIR([m4])
29    
30 ph10 159 # The default CFLAGS and CXXFLAGS in Autoconf are "-g -O2" for gcc and just
31     # "-g" for any other compiler. There doesn't seem to be a standard way of
32     # getting rid of the -g (which I don't think is needed for a production
33     # library). This fudge seems to achieve the necessary. First, we remember the
34     # externally set values of CFLAGS and CXXFLAGS. Then call the AC_PROG_CC and
35     # AC_PROG_CXX macros to find the compilers - if CFLAGS and CXXFLAGS are not
36     # set, they will be set to Autoconf's defaults. Afterwards, if the original
37     # values were not set, remove the -g from the Autoconf defaults.
38     # (PH 02-May-07)
39    
40     remember_set_CFLAGS="$CFLAGS"
41     remember_set_CXXFLAGS="$CXXFLAGS"
42    
43 ph10 97 AC_PROG_CC
44     AC_PROG_CXX
45 ph10 159
46     if test "x$remember_set_CFLAGS" = "x"
47     then
48     if test "$CFLAGS" = "-g -O2"
49     then
50     CFLAGS="-O2"
51     elif test "$CFLAGS" = "-g"
52     then
53     CFLAGS=""
54     fi
55     fi
56    
57     if test "x$remember_set_CXXFLAGS" = "x"
58     then
59     if test "$CXXFLAGS" = "-g -O2"
60     then
61     CXXFLAGS="-O2"
62     elif test "$CXXFLAGS" = "-g"
63     then
64     CXXFLAGS=""
65     fi
66     fi
67    
68 ph10 330 # AC_PROG_CXX will return "g++" even if no c++ compiler is installed.
69     # Check for that case, and just disable c++ code if g++ doesn't run.
70     AC_LANG_PUSH(C++)
71 ph10 644 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],, CXX=""; CXXCP=""; CXXFLAGS="")
72 ph10 330 AC_LANG_POP
73 ph10 159
74 ph10 475 # Check for a 64-bit integer type
75     AC_TYPE_INT64_T
76    
77 ph10 97 AC_PROG_INSTALL
78     AC_LIBTOOL_WIN32_DLL
79 ph10 644 LT_INIT
80 ph10 137 AC_PROG_LN_S
81 nigel 87
82 ph10 97 PCRE_MAJOR="pcre_major"
83     PCRE_MINOR="pcre_minor"
84     PCRE_PRERELEASE="pcre_prerelease"
85     PCRE_DATE="pcre_date"
86 nigel 87
87 ph10 481 if test "$PCRE_MINOR" = "08" -o "$PCRE_MINOR" = "09"
88     then
89     echo "***"
90     echo "*** Minor version number $PCRE_MINOR must not be used. ***"
91 ph10 487 echo "*** Use only 01 to 07 or 10 onwards, to avoid octal issues. ***"
92     echo "***"
93 ph10 481 exit 1
94 ph10 487 fi
95 ph10 481
96 ph10 97 AC_SUBST(PCRE_MAJOR)
97     AC_SUBST(PCRE_MINOR)
98     AC_SUBST(PCRE_PRERELEASE)
99     AC_SUBST(PCRE_DATE)
100 nigel 87
101 ph10 97 # Set a more sensible default value for $(htmldir).
102     if test "x$htmldir" = 'x${docdir}'
103     then
104     htmldir='${docdir}/html'
105     fi
106 nigel 87
107 ph10 836 # Handle --disable-pcre8 (enabled by default)
108     AC_ARG_ENABLE(pcre8,
109     AS_HELP_STRING([--disable-pcre8],
110     [enable 8 bit character support]),
111     , enable_pcre8=unset)
112    
113     # Handle --enable-pcre16 (disabled by default)
114     AC_ARG_ENABLE(pcre16,
115     AS_HELP_STRING([--enable-pcre16],
116     [enable 16 bit character support]),
117     , enable_pcre16=unset)
118    
119 ph10 492 # Handle --disable-cpp. The substitution of enable_cpp is needed for use in
120     # pcre-config.
121 ph10 97 AC_ARG_ENABLE(cpp,
122     AS_HELP_STRING([--disable-cpp],
123     [disable C++ support]),
124 ph10 836 , enable_cpp=unset)
125 ph10 507 AC_SUBST(enable_cpp)
126 nigel 87
127 ph10 666 # Handle --enable-jit (disabled by default)
128     AC_ARG_ENABLE(jit,
129     AS_HELP_STRING([--enable-jit],
130     [enable Just-In-Time compiling support]),
131     , enable_jit=no)
132    
133 ph10 685 # Handle --disable-pcregrep-jit (enabled by default)
134     AC_ARG_ENABLE(pcregrep-jit,
135     AS_HELP_STRING([--disable-pcregrep-jit],
136     [disable JIT support in pcregrep]),
137     , enable_pcregrep_jit=yes)
138    
139 ph10 128 # Handle --enable-rebuild-chartables
140     AC_ARG_ENABLE(rebuild-chartables,
141     AS_HELP_STRING([--enable-rebuild-chartables],
142     [rebuild character tables in current locale]),
143     , enable_rebuild_chartables=no)
144    
145 ph10 97 # Handle --enable-utf8 (disabled by default)
146     AC_ARG_ENABLE(utf8,
147     AS_HELP_STRING([--enable-utf8],
148 ph10 836 [another name for --enable-utf. Kept only for compatibility reasons]),
149 ph10 97 , enable_utf8=unset)
150 nigel 87
151 ph10 836 # Handle --enable-utf (disabled by default)
152     AC_ARG_ENABLE(utf,
153     AS_HELP_STRING([--enable-utf],
154     [enable UTF-8/16 support (incompatible with --enable-ebcdic)]),
155     , enable_utf=unset)
156    
157 ph10 97 # Handle --enable-unicode-properties
158     AC_ARG_ENABLE(unicode-properties,
159     AS_HELP_STRING([--enable-unicode-properties],
160 ph10 836 [enable Unicode properties support (implies --enable-utf)]),
161 ph10 97 , enable_unicode_properties=no)
162 nigel 87
163 ph10 97 # Handle --enable-newline=NL
164     dnl AC_ARG_ENABLE(newline,
165     dnl AS_HELP_STRING([--enable-newline=NL],
166 ph10 149 dnl [use NL as newline (lf, cr, crlf, anycrlf, any; default=lf)]),
167 ph10 97 dnl , enable_newline=lf)
168 nigel 87
169 ph10 97 # Separate newline options
170     ac_pcre_newline=lf
171     AC_ARG_ENABLE(newline-is-cr,
172     AS_HELP_STRING([--enable-newline-is-cr],
173     [use CR as newline character]),
174     ac_pcre_newline=cr)
175     AC_ARG_ENABLE(newline-is-lf,
176     AS_HELP_STRING([--enable-newline-is-lf],
177     [use LF as newline character (default)]),
178     ac_pcre_newline=lf)
179     AC_ARG_ENABLE(newline-is-crlf,
180     AS_HELP_STRING([--enable-newline-is-crlf],
181     [use CRLF as newline sequence]),
182     ac_pcre_newline=crlf)
183 ph10 149 AC_ARG_ENABLE(newline-is-anycrlf,
184     AS_HELP_STRING([--enable-newline-is-anycrlf],
185     [use CR, LF, or CRLF as newline sequence]),
186     ac_pcre_newline=anycrlf)
187 ph10 97 AC_ARG_ENABLE(newline-is-any,
188     AS_HELP_STRING([--enable-newline-is-any],
189     [use any valid Unicode newline sequence]),
190     ac_pcre_newline=any)
191     enable_newline="$ac_pcre_newline"
192 nigel 87
193 ph10 231 # Handle --enable-bsr-anycrlf
194     AC_ARG_ENABLE(bsr-anycrlf,
195     AS_HELP_STRING([--enable-bsr-anycrlf],
196     [\R matches only CR, LF, CRLF by default]),
197     , enable_bsr_anycrlf=no)
198    
199 ph10 97 # Handle --enable-ebcdic
200     AC_ARG_ENABLE(ebcdic,
201     AS_HELP_STRING([--enable-ebcdic],
202 ph10 836 [assume EBCDIC coding rather than ASCII; incompatible with --enable-utf; use only in (uncommon) EBCDIC environments; it implies --enable-rebuild-chartables]),
203 ph10 97 , enable_ebcdic=no)
204 nigel 87
205 ph10 97 # Handle --disable-stack-for-recursion
206     AC_ARG_ENABLE(stack-for-recursion,
207     AS_HELP_STRING([--disable-stack-for-recursion],
208     [don't use stack recursion when matching]),
209     , enable_stack_for_recursion=yes)
210 nigel 87
211 ph10 286 # Handle --enable-pcregrep-libz
212     AC_ARG_ENABLE(pcregrep-libz,
213     AS_HELP_STRING([--enable-pcregrep-libz],
214     [link pcregrep with libz to handle .gz files]),
215     , enable_pcregrep_libz=no)
216    
217     # Handle --enable-pcregrep-libbz2
218     AC_ARG_ENABLE(pcregrep-libbz2,
219     AS_HELP_STRING([--enable-pcregrep-libbz2],
220     [link pcregrep with libbz2 to handle .bz2 files]),
221     , enable_pcregrep_libbz2=no)
222    
223 ph10 644 # Handle --with-pcregrep-bufsize=N
224     AC_ARG_WITH(pcregrep-bufsize,
225     AS_HELP_STRING([--with-pcregrep-bufsize=N],
226     [pcregrep buffer size (default=20480)]),
227     , with_pcregrep_bufsize=20480)
228    
229 ph10 287 # Handle --enable-pcretest-libreadline
230     AC_ARG_ENABLE(pcretest-libreadline,
231     AS_HELP_STRING([--enable-pcretest-libreadline],
232     [link pcretest with libreadline]),
233     , enable_pcretest_libreadline=no)
234    
235 ph10 97 # Handle --with-posix-malloc-threshold=NBYTES
236     AC_ARG_WITH(posix-malloc-threshold,
237     AS_HELP_STRING([--with-posix-malloc-threshold=NBYTES],
238     [threshold for POSIX malloc usage (default=10)]),
239     , with_posix_malloc_threshold=10)
240 nigel 87
241 ph10 97 # Handle --with-link-size=N
242     AC_ARG_WITH(link-size,
243     AS_HELP_STRING([--with-link-size=N],
244     [internal link size (2, 3, or 4 allowed; default=2)]),
245     , with_link_size=2)
246 nigel 87
247 ph10 97 # Handle --with-match-limit=N
248     AC_ARG_WITH(match-limit,
249     AS_HELP_STRING([--with-match-limit=N],
250     [default limit on internal looping (default=10000000)]),
251     , with_match_limit=10000000)
252 nigel 87
253 ph10 97 # Handle --with-match-limit_recursion=N
254     #
255     # Note: In config.h, the default is to define MATCH_LIMIT_RECURSION
256     # symbolically as MATCH_LIMIT, which in turn is defined to be some numeric
257     # value (e.g. 10000000). MATCH_LIMIT_RECURSION can otherwise be set to some
258     # different numeric value (or even the same numeric value as MATCH_LIMIT,
259     # though no longer defined in terms of the latter).
260     #
261     AC_ARG_WITH(match-limit-recursion,
262     AS_HELP_STRING([--with-match-limit-recursion=N],
263     [default limit on internal recursion (default=MATCH_LIMIT)]),
264     , with_match_limit_recursion=MATCH_LIMIT)
265 nigel 87
266 ph10 836 # Copy enable_utf8 value to enable_utf for compatibility reasons
267     if test "x$enable_utf8" != "xunset"
268     then
269     if test "x$enable_utf" != "xunset"
270     then
271     AC_MSG_ERROR([--enable/disable-utf8 is kept only for compatibility reasons and its value is copied to --enable/disable-utf. Newer code must use --enable/disable-utf alone.])
272     fi
273     enable_utf=$enable_utf8
274     fi
275    
276     # Set the default value for pcre8
277     if test "x$enable_pcre8" = "xunset"
278     then
279     enable_pcre8=yes
280     fi
281    
282     # Set the default value for pcre16
283     if test "x$enable_pcre16" = "xunset"
284     then
285     enable_pcre16=no
286     fi
287    
288     # Make sure enable_pcre8 or enable_pcre16 was set
289     if test "x$enable_pcre8$enable_pcre16" = "xnono"
290     then
291     AC_MSG_ERROR([Either 8 or 16 bit (or both) pcre library must be enabled])
292     fi
293    
294     # Make sure that if enable_unicode_properties was set, that UTF support is enabled.
295 ph10 97 if test "x$enable_unicode_properties" = "xyes"
296     then
297 ph10 836 if test "x$enable_utf" = "xno"
298 ph10 97 then
299 ph10 836 AC_MSG_ERROR([support for Unicode properties requires UTF-8/16 support])
300 ph10 97 fi
301 ph10 836 enable_utf=yes
302 ph10 97 fi
303 nigel 87
304 ph10 836 # enable_utf is disabled by default.
305     if test "x$enable_utf" = "xunset"
306 ph10 97 then
307 ph10 836 enable_utf=no
308 ph10 97 fi
309 nigel 87
310 ph10 836 # enable_cpp copies the value of enable_pcre8 by default
311     if test "x$enable_cpp" = "xunset"
312     then
313     enable_cpp=$enable_pcre8
314     fi
315    
316     # Make sure that if enable_cpp was set, that enable_pcre8 support is enabled
317     if test "x$enable_cpp" = "xyes"
318     then
319     if test "x$enable_pcre8" = "xno"
320     then
321     AC_MSG_ERROR([C++ library requires pcre library with 8 bit characters])
322     fi
323     fi
324    
325 ph10 128 # Make sure that if enable_ebcdic is set, rebuild_chartables is also enabled.
326 ph10 836 # Also check that UTF support is not requested, because PCRE cannot handle
327     # EBCDIC and UTF in the same build. To do so it would need to use different
328 ph10 391 # character constants depending on the mode.
329 ph10 128 #
330 ph10 137 if test "x$enable_ebcdic" = "xyes"
331 ph10 128 then
332     enable_rebuild_chartables=yes
333 ph10 836 if test "x$enable_utf" = "xyes"
334 ph10 391 then
335 ph10 836 AC_MSG_ERROR([support for EBCDIC and UTF-8/16 cannot be enabled at the same time])
336 ph10 391 fi
337 ph10 128 fi
338    
339 ph10 97 # Convert the newline identifier into the appropriate integer value.
340     case "$enable_newline" in
341 ph10 149 lf) ac_pcre_newline_value=10 ;;
342     cr) ac_pcre_newline_value=13 ;;
343     crlf) ac_pcre_newline_value=3338 ;;
344 ph10 150 anycrlf) ac_pcre_newline_value=-2 ;;
345 ph10 149 any) ac_pcre_newline_value=-1 ;;
346 ph10 97 *)
347     AC_MSG_ERROR([invalid argument \"$enable_newline\" to --enable-newline option])
348     ;;
349     esac
350 nigel 87
351 ph10 97 # Check argument to --with-link-size
352     case "$with_link_size" in
353     2|3|4) ;;
354     *)
355     AC_MSG_ERROR([invalid argument \"$with_link_size\" to --with-link-size option])
356     ;;
357     esac
358 nigel 87
359 ph10 97 AH_TOP([
360 ph10 100 /* On Unix-like systems config.h.in is converted by "configure" into config.h.
361     Some other environments also support the use of "configure". PCRE is written in
362     Standard C, but there are a few non-standard things it can cope with, allowing
363     it to run on SunOS4 and other "close to standard" systems.
364 nigel 87
365 ph10 111 If you are going to build PCRE "by hand" on a system without "configure" you
366     should copy the distributed config.h.generic to config.h, and then set up the
367 ph10 237 macro definitions the way you need them. You must then add -DHAVE_CONFIG_H to
368     all of your compile commands, so that config.h is included at the start of
369     every source.
370 nigel 87
371 ph10 237 Alternatively, you can avoid editing by using -D on the compiler command line
372     to set the macro values. In this case, you do not have to set -DHAVE_CONFIG_H.
373    
374 ph10 111 PCRE uses memmove() if HAVE_MEMMOVE is set to 1; otherwise it uses bcopy() if
375     HAVE_BCOPY is set to 1. If your system has neither bcopy() nor memmove(), set
376     them both to 0; an emulation function will be used. */])
377 ph10 100
378 ph10 97 # Checks for header files.
379 nigel 87 AC_HEADER_STDC
380 ph10 97 AC_CHECK_HEADERS(limits.h sys/types.h sys/stat.h dirent.h windows.h)
381 nigel 87
382 ph10 97 # The files below are C++ header files.
383     pcre_have_type_traits="0"
384     pcre_have_bits_type_traits="0"
385     if test "x$enable_cpp" = "xyes" -a -n "$CXX"
386 nigel 87 then
387 ph10 97 AC_LANG_PUSH(C++)
388 nigel 87
389 ph10 330 # Older versions of pcre defined pcrecpp::no_arg, but in new versions
390     # it's called pcrecpp::RE::no_arg. For backwards ABI compatibility,
391     # we want to make one an alias for the other. Different systems do
392     # this in different ways. Some systems, for instance, can do it via
393     # a linker flag: -alias (for os x 10.5) or -i (for os x <=10.4).
394     OLD_LDFLAGS="$LDFLAGS"
395     for flag in "-alias,__ZN7pcrecpp2RE6no_argE,__ZN7pcrecpp6no_argE" \
396     "-i__ZN7pcrecpp6no_argE:__ZN7pcrecpp2RE6no_argE"; do
397     AC_MSG_CHECKING([for alias support in the linker])
398     LDFLAGS="$OLD_LDFLAGS -Wl,$flag"
399     # We try to run the linker with this new ld flag. If the link fails,
400     # we give up and remove the new flag from LDFLAGS.
401 ph10 644 AC_LINK_IFELSE([AC_LANG_PROGRAM([namespace pcrecpp {
402 ph10 330 class RE { static int no_arg; };
403     int RE::no_arg;
404     }],
405 ph10 644 [])],
406 ph10 330 [AC_MSG_RESULT([yes]);
407     EXTRA_LIBPCRECPP_LDFLAGS="$EXTRA_LIBPCRECPP_LDFLAGS -Wl,$flag";
408     break;],
409     AC_MSG_RESULT([no]))
410     done
411     LDFLAGS="$OLD_LDFLAGS"
412    
413 ph10 97 # We could be more clever here, given we're doing AC_SUBST with this
414 ph10 127 # (eg set a var to be the name of the include file we want). But we're not
415 ph10 97 # so it's easy to change back to 'regular' autoconf vars if we needed to.
416 nigel 87 AC_CHECK_HEADERS(string, [pcre_have_cpp_headers="1"],
417     [pcre_have_cpp_headers="0"])
418     AC_CHECK_HEADERS(bits/type_traits.h, [pcre_have_bits_type_traits="1"],
419     [pcre_have_bits_type_traits="0"])
420     AC_CHECK_HEADERS(type_traits.h, [pcre_have_type_traits="1"],
421     [pcre_have_type_traits="0"])
422 ph10 330
423 ph10 486 # (This isn't c++-specific, but is only used in pcrecpp.cc, so try this
424     # in a c++ context. This matters becuase strtoimax is C99 and may not
425     # be supported by the C++ compiler.)
426     # Figure out how to create a longlong from a string: strtoll and
427     # equiv. It's not enough to call AC_CHECK_FUNCS: hpux has a
428     # strtoll, for instance, but it only takes 2 args instead of 3!
429     # We have to call AH_TEMPLATE since AC_DEFINE_UNQUOTED below is complex.
430     AH_TEMPLATE(HAVE_STRTOQ, [Define to 1 if you have `strtoq'.])
431     AH_TEMPLATE(HAVE_STRTOLL, [Define to 1 if you have `strtoll'.])
432     AH_TEMPLATE(HAVE__STRTOI64, [Define to 1 if you have `_strtoi64'.])
433     AH_TEMPLATE(HAVE_STRTOIMAX, [Define to 1 if you have `strtoimax'.])
434     have_strto_fn=0
435 ph10 506 for fn in strtoq strtoll _strtoi64 strtoimax; do
436 ph10 486 AC_MSG_CHECKING([for $fn])
437     if test "$fn" = strtoimax; then
438     include=stdint.h
439     else
440     include=stdlib.h
441     fi
442 ph10 644 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <$include>],
443     [char* e; return $fn("100", &e, 10)])],
444 ph10 486 [AC_MSG_RESULT(yes)
445     AC_DEFINE_UNQUOTED(HAVE_`echo $fn | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ`, 1,
446     [Define to 1 if you have `$fn'.])
447     have_strto_fn=1
448     break],
449     [AC_MSG_RESULT(no)])
450     done
451    
452     if test "$have_strto_fn" = 1; then
453     AC_CHECK_TYPES([long long],
454     [pcre_have_long_long="1"],
455     [pcre_have_long_long="0"])
456     AC_CHECK_TYPES([unsigned long long],
457     [pcre_have_ulong_long="1"],
458     [pcre_have_ulong_long="0"])
459     else
460     pcre_have_long_long="0"
461     pcre_have_ulong_long="0"
462     fi
463     AC_SUBST(pcre_have_long_long)
464     AC_SUBST(pcre_have_ulong_long)
465    
466 ph10 97 AC_LANG_POP
467     fi
468     # Using AC_SUBST eliminates the need to include config.h in a public .h file
469     AC_SUBST(pcre_have_type_traits)
470 nigel 87 AC_SUBST(pcre_have_bits_type_traits)
471    
472 ph10 97 # Conditional compilation
473 ph10 836 AM_CONDITIONAL(WITH_PCRE8, test "x$enable_pcre8" = "xyes")
474     AM_CONDITIONAL(WITH_PCRE16, test "x$enable_pcre16" = "xyes")
475 ph10 97 AM_CONDITIONAL(WITH_PCRE_CPP, test "x$enable_cpp" = "xyes")
476 ph10 128 AM_CONDITIONAL(WITH_REBUILD_CHARTABLES, test "x$enable_rebuild_chartables" = "xyes")
477 ph10 666 AM_CONDITIONAL(WITH_JIT, test "x$enable_jit" = "xyes")
478 ph10 836 AM_CONDITIONAL(WITH_UTF, test "x$enable_utf" = "xyes")
479 nigel 87
480 ph10 97 # Checks for typedefs, structures, and compiler characteristics.
481 nigel 87
482     AC_C_CONST
483     AC_TYPE_SIZE_T
484    
485 ph10 97 # Checks for library functions.
486 nigel 87
487 ph10 321 AC_CHECK_FUNCS(bcopy memmove strerror)
488 nigel 87
489 ph10 286 # Check for the availability of libz (aka zlib)
490    
491     AC_CHECK_HEADERS([zlib.h], [HAVE_ZLIB_H=1])
492     AC_CHECK_LIB([z], [gzopen], [HAVE_LIBZ=1])
493    
494 ph10 478 # Check for the availability of libbz2. Originally we just used AC_CHECK_LIB,
495     # as for libz. However, this had the following problem, diagnosed and fixed by
496     # a user:
497     #
498     # - libbz2 uses the Pascal calling convention (WINAPI) for the functions
499     # under Win32.
500     # - The standard autoconf AC_CHECK_LIB fails to include "bzlib.h",
501     # therefore missing the function definition.
502     # - The compiler thus generates a "C" signature for the test function.
503     # - The linker fails to find the "C" function.
504     # - PCRE fails to configure if asked to do so against libbz2.
505     #
506     # Solution:
507     #
508     # - Replace the AC_CHECK_LIB test with a custom test.
509 ph10 286
510     AC_CHECK_HEADERS([bzlib.h], [HAVE_BZLIB_H=1])
511 ph10 478 # Original test
512     # AC_CHECK_LIB([bz2], [BZ2_bzopen], [HAVE_LIBBZ2=1])
513     #
514     # Custom test follows
515 ph10 286
516 ph10 478 AC_MSG_CHECKING([for libbz2])
517     OLD_LIBS="$LIBS"
518     LIBS="$LIBS -lbz2"
519 ph10 644 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
520 ph10 478 #ifdef HAVE_BZLIB_H
521     #include <bzlib.h>
522     #endif]],
523 ph10 644 [[return (int)BZ2_bzopen("conftest", "rb");]])],
524 ph10 478 [AC_MSG_RESULT([yes]);HAVE_LIBBZ2=1; break;],
525     AC_MSG_RESULT([no]))
526     LIBS="$OLD_LIBS"
527    
528 ph10 287 # Check for the availabiity of libreadline
529    
530     AC_CHECK_HEADERS([readline/readline.h], [HAVE_READLINE_H=1])
531     AC_CHECK_HEADERS([readline/history.h], [HAVE_HISTORY_H=1])
532     AC_CHECK_LIB([readline], [readline], [HAVE_LIB_READLINE=1])
533    
534 ph10 97 # This facilitates -ansi builds under Linux
535     dnl AC_DEFINE([_GNU_SOURCE], [], [Enable GNU extensions in glibc])
536 nigel 87
537 ph10 430 PCRE_STATIC_CFLAG=""
538 ph10 97 if test "x$enable_shared" = "xno" ; then
539     AC_DEFINE([PCRE_STATIC], [1], [
540     Define if linking statically (TODO: make nice with Libtool)])
541 ph10 430 PCRE_STATIC_CFLAG="-DPCRE_STATIC"
542 nigel 87 fi
543 ph10 430 AC_SUBST(PCRE_STATIC_CFLAG)
544 nigel 87
545 ph10 97 # Here is where pcre specific defines are handled
546 nigel 87
547 ph10 836 if test "$enable_pcre8" = "yes"; then
548     AC_DEFINE([SUPPORT_PCRE8], [], [
549     Define to enable the 8 bit PCRE library.])
550     fi
551    
552     if test "$enable_pcre16" = "yes"; then
553     AC_DEFINE([SUPPORT_PCRE16], [], [
554     Define to enable the 16 bit PCRE library.])
555     fi
556    
557 ph10 666 if test "$enable_jit" = "yes"; then
558     AC_DEFINE([SUPPORT_JIT], [], [
559     Define to enable support for Just-In-Time compiling.])
560 ph10 685 else
561     enable_pcregrep_jit="no"
562 ph10 666 fi
563    
564 ph10 685 if test "$enable_pcregrep_jit" = "yes"; then
565     AC_DEFINE([SUPPORT_PCREGREP_JIT], [], [
566 ph10 691 Define to enable JIT support in pcregrep.])
567 ph10 685 fi
568    
569 ph10 836 if test "$enable_utf" = "yes"; then
570     AC_DEFINE([SUPPORT_UTF], [], [
571     Define to enable support for the UTF-8/16 Unicode encoding. This
572     will work even in an EBCDIC environment, but it is incompatible
573     with the EBCDIC macro. That is, PCRE can support *either* EBCDIC
574     code *or* ASCII/UTF-8/16, but not both at once.])
575 nigel 87 fi
576    
577 ph10 97 if test "$enable_unicode_properties" = "yes"; then
578     AC_DEFINE([SUPPORT_UCP], [], [
579 ph10 666 Define to enable support for Unicode properties.])
580 ph10 97 fi
581 nigel 87
582 ph10 97 if test "$enable_stack_for_recursion" = "no"; then
583     AC_DEFINE([NO_RECURSE], [], [
584     PCRE uses recursive function calls to handle backtracking while
585 ph10 127 matching. This can sometimes be a problem on systems that have
586 ph10 100 stacks of limited size. Define NO_RECURSE to get a version that
587 ph10 97 doesn't use recursion in the match() function; instead it creates
588     its own stack by steam using pcre_recurse_malloc() to obtain memory
589     from the heap. For more detail, see the comments and other stuff
590     just above the match() function. On systems that support it,
591     "configure" can be used to set this in the Makefile
592     (use --disable-stack-for-recursion).])
593 nigel 87 fi
594    
595 ph10 286 if test "$enable_pcregrep_libz" = "yes"; then
596     AC_DEFINE([SUPPORT_LIBZ], [], [
597     Define to allow pcregrep to be linked with libz, so that it is
598     able to handle .gz files.])
599     fi
600    
601     if test "$enable_pcregrep_libbz2" = "yes"; then
602     AC_DEFINE([SUPPORT_LIBBZ2], [], [
603     Define to allow pcregrep to be linked with libbz2, so that it is
604     able to handle .bz2 files.])
605     fi
606    
607 ph10 644 if test $with_pcregrep_bufsize -lt 8192 ; then
608     with_pcregrep_bufsize="8192"
609     fi
610 ph10 654
611 ph10 644 AC_DEFINE_UNQUOTED([PCREGREP_BUFSIZE], [$with_pcregrep_bufsize], [
612     The value of PCREGREP_BUFSIZE determines the size of buffer used by
613     pcregrep to hold parts of the file it is searching. On systems that
614     support it, "configure" can be used to override the default, which is
615     8192. This is also the minimum value. The actual amount of memory used by
616     pcregrep is three times this number, because it allows for the buffering of
617     "before" and "after" lines.])
618    
619 ph10 287 if test "$enable_pcretest_libreadline" = "yes"; then
620     AC_DEFINE([SUPPORT_LIBREADLINE], [], [
621     Define to allow pcretest to be linked with libreadline.])
622 ph10 289 fi
623 ph10 287
624 ph10 97 AC_DEFINE_UNQUOTED([NEWLINE], [$ac_pcre_newline_value], [
625 ph10 111 The value of NEWLINE determines the newline character sequence. On
626 ph10 231 systems that support it, "configure" can be used to override the
627     default, which is 10. The possible values are 10 (LF), 13 (CR),
628     3338 (CRLF), -1 (ANY), or -2 (ANYCRLF).])
629 nigel 87
630 ph10 231 if test "$enable_bsr_anycrlf" = "yes"; then
631     AC_DEFINE([BSR_ANYCRLF], [], [
632     By default, the \R escape sequence matches any Unicode line ending
633     character or sequence of characters. If BSR_ANYCRLF is defined, this is
634     changed so that backslash-R matches only CR, LF, or CRLF. The build-
635     time default can be overridden by the user of PCRE at runtime. On
636     systems that support it, "configure" can be used to override the
637     default.])
638     fi
639    
640 ph10 97 AC_DEFINE_UNQUOTED([LINK_SIZE], [$with_link_size], [
641     The value of LINK_SIZE determines the number of bytes used to store
642     links as offsets within the compiled regex. The default is 2, which
643     allows for compiled patterns up to 64K long. This covers the vast
644     majority of cases. However, PCRE can also be compiled to use 3 or 4
645     bytes instead. This allows for longer patterns in extreme cases. On
646     systems that support it, "configure" can be used to override this default.])
647 nigel 87
648 ph10 97 AC_DEFINE_UNQUOTED([POSIX_MALLOC_THRESHOLD], [$with_posix_malloc_threshold], [
649     When calling PCRE via the POSIX interface, additional working storage
650     is required for holding the pointers to capturing substrings because
651     PCRE requires three integers per substring, whereas the POSIX
652     interface provides only two. If the number of expected substrings is
653     small, the wrapper function uses space on the stack, because this is
654     faster than using malloc() for each call. The threshold above which
655     the stack is no longer used is defined by POSIX_MALLOC_THRESHOLD. On
656     systems that support it, "configure" can be used to override this
657     default.])
658 nigel 91
659 ph10 97 AC_DEFINE_UNQUOTED([MATCH_LIMIT], [$with_match_limit], [
660     The value of MATCH_LIMIT determines the default number of times the
661     internal match() function can be called during a single execution of
662 ph10 100 pcre_exec(). There is a runtime interface for setting a different
663 ph10 97 limit. The limit exists in order to catch runaway regular
664     expressions that take for ever to determine that they do not match.
665     The default is set very large so that it does not accidentally catch
666     legitimate cases. On systems that support it, "configure" can be
667     used to override this default default.])
668 nigel 91
669 ph10 97 AC_DEFINE_UNQUOTED([MATCH_LIMIT_RECURSION], [$with_match_limit_recursion], [
670     The above limit applies to all calls of match(), whether or not they
671     increase the recursion depth. In some environments it is desirable
672     to limit the depth of recursive calls of match() more strictly, in
673     order to restrict the maximum amount of stack (or heap, if
674     NO_RECURSE is defined) that is used. The value of
675     MATCH_LIMIT_RECURSION applies only to recursive calls of match(). To
676     have any useful effect, it must be less than the value of
677 ph10 111 MATCH_LIMIT. The default is to use the same value as MATCH_LIMIT.
678     There is a runtime method for setting a different limit. On systems
679 ph10 100 that support it, "configure" can be used to override the default.])
680 nigel 93
681 ph10 97 AC_DEFINE([MAX_NAME_SIZE], [32], [
682     This limit is parameterized just in case anybody ever wants to
683     change it. Care must be taken if it is increased, because it guards
684     against integer overflow caused by enormously large patterns.])
685 nigel 93
686 ph10 97 AC_DEFINE([MAX_NAME_COUNT], [10000], [
687     This limit is parameterized just in case anybody ever wants to
688     change it. Care must be taken if it is increased, because it guards
689     against integer overflow caused by enormously large patterns.])
690 nigel 87
691 ph10 145 AH_VERBATIM([PCRE_EXP_DEFN], [
692 ph10 97 /* If you are compiling for a system other than a Unix-like system or
693     Win32, and it needs some magic to be inserted before the definition
694     of a function that is exported by the library, define this macro to
695     contain the relevant magic. If you do not define this macro, it
696     defaults to "extern" for a C compiler and "extern C" for a C++
697     compiler on non-Win32 systems. This macro apears at the start of
698     every exported function that is part of the external API. It does
699     not appear on functions that are "external" in the C sense, but
700     which are internal to the library. */
701 ph10 145 #undef PCRE_EXP_DEFN])
702 nigel 87
703 ph10 97 if test "$enable_ebcdic" = "yes"; then
704     AC_DEFINE_UNQUOTED([EBCDIC], [], [
705     If you are compiling for a system that uses EBCDIC instead of ASCII
706     character codes, define this macro as 1. On systems that can use
707 ph10 391 "configure", this can be done via --enable-ebcdic. PCRE will then
708 ph10 392 assume that all input strings are in EBCDIC. If you do not define
709 ph10 836 this macro, PCRE will assume input strings are ASCII or UTF-8/16
710     Unicode. It is not possible to build a version of PCRE that
711     supports both EBCDIC and UTF-8/16.])
712 nigel 87 fi
713    
714 ph10 97 # Platform specific issues
715     NO_UNDEFINED=
716     EXPORT_ALL_SYMBOLS=
717     case $host_os in
718     cygwin* | mingw* )
719     if test X"$enable_shared" = Xyes; then
720     NO_UNDEFINED="-no-undefined"
721     EXPORT_ALL_SYMBOLS="-Wl,--export-all-symbols"
722     fi
723     ;;
724     esac
725 nigel 87
726 ph10 97 # The extra LDFLAGS for each particular library
727     # (Note: The libpcre*_version bits are m4 variables, assigned above)
728 nigel 87
729 ph10 330 EXTRA_LIBPCRE_LDFLAGS="$EXTRA_LIBPCRE_LDFLAGS \
730     $NO_UNDEFINED -version-info libpcre_version"
731 nigel 87
732 ph10 330 EXTRA_LIBPCREPOSIX_LDFLAGS="$EXTRA_LIBPCREPOSIX_LDFLAGS \
733     $NO_UNDEFINED -version-info libpcreposix_version"
734 nigel 87
735 ph10 330 EXTRA_LIBPCRECPP_LDFLAGS="$EXTRA_LIBPCRECPP_LDFLAGS \
736     $NO_UNDEFINED -version-info libpcrecpp_version \
737     $EXPORT_ALL_SYMBOLS"
738 nigel 87
739 ph10 97 AC_SUBST(EXTRA_LIBPCRE_LDFLAGS)
740     AC_SUBST(EXTRA_LIBPCREPOSIX_LDFLAGS)
741     AC_SUBST(EXTRA_LIBPCRECPP_LDFLAGS)
742 nigel 87
743 ph10 97 # When we run 'make distcheck', use these arguments.
744 ph10 842 DISTCHECK_CONFIGURE_FLAGS="--enable-pcre16 --enable-jit --enable-cpp --enable-unicode-properties"
745 ph10 97 AC_SUBST(DISTCHECK_CONFIGURE_FLAGS)
746 nigel 87
747 ph10 286 # Check that, if --enable-pcregrep-libz or --enable-pcregrep-libbz2 is
748 ph10 376 # specified, the relevant library is available.
749 ph10 286
750     if test "$enable_pcregrep_libz" = "yes"; then
751     if test "$HAVE_ZLIB_H" != "1"; then
752     echo "** Cannot --enable-pcregrep-libz because zlib.h was not found"
753     exit 1
754     fi
755     if test "$HAVE_LIBZ" != "1"; then
756     echo "** Cannot --enable-pcregrep-libz because libz was not found"
757     exit 1
758     fi
759 ph10 376 LIBZ="-lz"
760 ph10 286 fi
761 ph10 376 AC_SUBST(LIBZ)
762 ph10 286
763     if test "$enable_pcregrep_libbz2" = "yes"; then
764     if test "$HAVE_BZLIB_H" != "1"; then
765     echo "** Cannot --enable-pcregrep-libbz2 because bzlib.h was not found"
766     exit 1
767     fi
768     if test "$HAVE_LIBBZ2" != "1"; then
769     echo "** Cannot --enable-pcregrep-libbz2 because libbz2 was not found"
770     exit 1
771     fi
772 ph10 376 LIBBZ2="-lbz2"
773 ph10 286 fi
774 ph10 376 AC_SUBST(LIBBZ2)
775 ph10 286
776 ph10 287 # Similarly for --enable-pcretest-readline
777    
778     if test "$enable_pcretest_libreadline" = "yes"; then
779     if test "$HAVE_READLINE_H" != "1"; then
780     echo "** Cannot --enable-pcretest-readline because readline/readline.h was not found."
781     exit 1
782     fi
783     if test "$HAVE_HISTORY_H" != "1"; then
784     echo "** Cannot --enable-pcretest-readline because readline/history.h was not found."
785     exit 1
786     fi
787 ph10 376 LIBREADLINE="-lreadline"
788 ph10 289 fi
789 ph10 376 AC_SUBST(LIBREADLINE)
790 ph10 287
791 ph10 97 # Produce these files, in addition to config.h.
792     AC_CONFIG_FILES(
793     Makefile
794     libpcre.pc
795 ph10 836 libpcre16.pc
796     libpcreposix.pc
797 ph10 97 libpcrecpp.pc
798     pcre-config
799     pcre.h
800     pcre_stringpiece.h
801     pcrecpparg.h
802 nigel 87 )
803    
804 ph10 97 # Make the generated script files executable.
805 ph10 137 AC_CONFIG_COMMANDS([script-chmod], [chmod a+x pcre-config])
806 nigel 87
807 ph10 128 # Make sure that pcre_chartables.c is removed in case the method for
808     # creating it was changed by reconfiguration.
809 ph10 137 AC_CONFIG_COMMANDS([delete-old-chartables], [rm -f pcre_chartables.c])
810 ph10 128
811 ph10 137 AC_OUTPUT
812 ph10 128
813 ph10 97 # Print out a nice little message after configure is run displaying your
814     # chosen options.
815 ph10 286
816 ph10 97 cat <<EOF
817 nigel 87
818 ph10 97 $PACKAGE-$VERSION configuration summary:
819 nigel 87
820 ph10 287 Install prefix .................. : ${prefix}
821     C preprocessor .................. : ${CPP}
822     C compiler ...................... : ${CC}
823     C++ preprocessor ................ : ${CXXCPP}
824     C++ compiler .................... : ${CXX}
825     Linker .......................... : ${LD}
826     C preprocessor flags ............ : ${CPPFLAGS}
827     C compiler flags ................ : ${CFLAGS}
828     C++ compiler flags .............. : ${CXXFLAGS}
829     Linker flags .................... : ${LDFLAGS}
830     Extra libraries ................. : ${LIBS}
831 ph10 289
832 ph10 836 Build 8 bit pcre library ........ : ${enable_pcre8}
833     Build 16 bit pcre library ....... : ${enable_pcre16}
834 ph10 287 Build C++ library ............... : ${enable_cpp}
835 ph10 666 Enable JIT compiling support .... : ${enable_jit}
836 ph10 836 Enable UTF-8/16 support ......... : ${enable_utf}
837 ph10 287 Unicode properties .............. : ${enable_unicode_properties}
838     Newline char/sequence ........... : ${enable_newline}
839     \R matches only ANYCRLF ......... : ${enable_bsr_anycrlf}
840     EBCDIC coding ................... : ${enable_ebcdic}
841     Rebuild char tables ............. : ${enable_rebuild_chartables}
842     Use stack recursion ............. : ${enable_stack_for_recursion}
843     POSIX mem threshold ............. : ${with_posix_malloc_threshold}
844     Internal link size .............. : ${with_link_size}
845     Match limit ..................... : ${with_match_limit}
846     Match limit recursion ........... : ${with_match_limit_recursion}
847     Build shared libs ............... : ${enable_shared}
848     Build static libs ............... : ${enable_static}
849 ph10 691 Use JIT in pcregrep ............. : ${enable_pcregrep_jit}
850 ph10 654 Buffer size for pcregrep ........ : ${with_pcregrep_bufsize}
851 ph10 287 Link pcregrep with libz ......... : ${enable_pcregrep_libz}
852     Link pcregrep with libbz2 ....... : ${enable_pcregrep_libbz2}
853 ph10 289 Link pcretest with libreadline .. : ${enable_pcretest_libreadline}
854 nigel 87
855 ph10 97 EOF
856 nigel 87
857 ph10 97 dnl end configure.ac

Properties

Name Value
svn:eol-style native
svn:keywords "Author Date Id Revision Url"

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12