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