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

Contents of /code/trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 651 - (show annotations) (download)
Mon Aug 1 16:32:40 2011 UTC (3 years, 3 months ago) by ph10
File size: 28725 byte(s)
Test updates.

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