| 1 |
dnl Process this file with autoconf to produce a configure script. |
dnl Process this file with autoconf to produce a configure script. |
| 2 |
|
|
| 3 |
dnl NOTE FOR MAINTAINERS: Do not use major or minor version numbers with |
dnl NOTE FOR MAINTAINERS: Do not use minor version numbers 08 or 09 because |
| 4 |
dnl leading zeros, because they may be treated as octal constants. The |
dnl the leading zeros may cause them to be treated as invalid octal constants |
| 5 |
dnl PCRE_PRERELEASE feature is for identifying release candidates. It might |
dnl if a PCRE user writes code that uses PCRE_MINOR as a number. There is now |
| 6 |
dnl be defined as -RC2, for example. For real releases, it should be defined |
dnl a check further down that throws an error if 08 or 09 are used. |
| 7 |
dnl empty. |
|
| 8 |
|
dnl The PCRE_PRERELEASE feature is for identifying release candidates. It might |
| 9 |
m4_define(pcre_major, [7]) |
dnl be defined as -RC2, for example. For real releases, it should be empty. |
| 10 |
m4_define(pcre_minor, [7]) |
|
| 11 |
m4_define(pcre_prerelease, [-RC1]) |
m4_define(pcre_major, [8]) |
| 12 |
m4_define(pcre_date, [2008-03-05]) |
m4_define(pcre_minor, [01]) |
| 13 |
|
m4_define(pcre_prerelease, [-RC2]) |
| 14 |
|
m4_define(pcre_date, [2010-01-11]) |
| 15 |
|
|
| 16 |
# Libtool shared library interface versions (current:revision:age) |
# Libtool shared library interface versions (current:revision:age) |
| 17 |
m4_define(libpcre_version, [0:1:0]) |
m4_define(libpcre_version, [0:1:0]) |
| 24 |
AM_INIT_AUTOMAKE([dist-bzip2 dist-zip]) |
AM_INIT_AUTOMAKE([dist-bzip2 dist-zip]) |
| 25 |
AC_CONFIG_HEADERS(config.h) |
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 |
# 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 |
# "-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 |
# getting rid of the -g (which I don't think is needed for a production |
| 71 |
AC_COMPILE_IFELSE(AC_LANG_PROGRAM([],[]),, CXX=""; CXXCP=""; CXXFLAGS="") |
AC_COMPILE_IFELSE(AC_LANG_PROGRAM([],[]),, CXX=""; CXXCP=""; CXXFLAGS="") |
| 72 |
AC_LANG_POP |
AC_LANG_POP |
| 73 |
|
|
| 74 |
|
# Check for a 64-bit integer type |
| 75 |
|
AC_TYPE_INT64_T |
| 76 |
|
|
| 77 |
AC_PROG_INSTALL |
AC_PROG_INSTALL |
| 78 |
AC_LIBTOOL_WIN32_DLL |
AC_LIBTOOL_WIN32_DLL |
| 79 |
AC_PROG_LIBTOOL |
AC_PROG_LIBTOOL |
| 84 |
PCRE_PRERELEASE="pcre_prerelease" |
PCRE_PRERELEASE="pcre_prerelease" |
| 85 |
PCRE_DATE="pcre_date" |
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) |
AC_SUBST(PCRE_MAJOR) |
| 97 |
AC_SUBST(PCRE_MINOR) |
AC_SUBST(PCRE_MINOR) |
| 98 |
AC_SUBST(PCRE_PRERELEASE) |
AC_SUBST(PCRE_PRERELEASE) |
| 119 |
# Handle --enable-utf8 (disabled by default) |
# Handle --enable-utf8 (disabled by default) |
| 120 |
AC_ARG_ENABLE(utf8, |
AC_ARG_ENABLE(utf8, |
| 121 |
AS_HELP_STRING([--enable-utf8], |
AS_HELP_STRING([--enable-utf8], |
| 122 |
[enable UTF-8 support]), |
[enable UTF-8 support (incompatible with --enable-ebcdic)]), |
| 123 |
, enable_utf8=unset) |
, enable_utf8=unset) |
| 124 |
|
|
| 125 |
# Handle --enable-unicode-properties |
# Handle --enable-unicode-properties |
| 167 |
# Handle --enable-ebcdic |
# Handle --enable-ebcdic |
| 168 |
AC_ARG_ENABLE(ebcdic, |
AC_ARG_ENABLE(ebcdic, |
| 169 |
AS_HELP_STRING([--enable-ebcdic], |
AS_HELP_STRING([--enable-ebcdic], |
| 170 |
[assume EBCDIC coding rather than ASCII; use this only in (uncommon) EBCDIC environments; it implies --enable-rebuild-chartables]), |
[assume EBCDIC coding rather than ASCII; incompatible with --enable-utf8; use only in (uncommon) EBCDIC environments; it implies --enable-rebuild-chartables]), |
| 171 |
, enable_ebcdic=no) |
, enable_ebcdic=no) |
| 172 |
|
|
| 173 |
# Handle --disable-stack-for-recursion |
# Handle --disable-stack-for-recursion |
| 243 |
fi |
fi |
| 244 |
|
|
| 245 |
# Make sure that if enable_ebcdic is set, rebuild_chartables is also enabled. |
# Make sure that if enable_ebcdic is set, rebuild_chartables is also enabled. |
| 246 |
|
# Also check that UTF-8 support is not requested, because PCRE cannot handle |
| 247 |
|
# EBCDIC and UTF-8 in the same build. To do so it would need to use different |
| 248 |
|
# character constants depending on the mode. |
| 249 |
# |
# |
| 250 |
if test "x$enable_ebcdic" = "xyes" |
if test "x$enable_ebcdic" = "xyes" |
| 251 |
then |
then |
| 252 |
enable_rebuild_chartables=yes |
enable_rebuild_chartables=yes |
| 253 |
|
if test "x$enable_utf8" = "xyes" |
| 254 |
|
then |
| 255 |
|
AC_MSG_ERROR([support for EBCDIC and UTF-8 cannot be enabled at the same time]) |
| 256 |
|
fi |
| 257 |
fi |
fi |
| 258 |
|
|
| 259 |
# Convert the newline identifier into the appropriate integer value. |
# Convert the newline identifier into the appropriate integer value. |
| 340 |
AC_CHECK_HEADERS(type_traits.h, [pcre_have_type_traits="1"], |
AC_CHECK_HEADERS(type_traits.h, [pcre_have_type_traits="1"], |
| 341 |
[pcre_have_type_traits="0"]) |
[pcre_have_type_traits="0"]) |
| 342 |
|
|
| 343 |
|
# (This isn't c++-specific, but is only used in pcrecpp.cc, so try this |
| 344 |
|
# in a c++ context. This matters becuase strtoimax is C99 and may not |
| 345 |
|
# be supported by the C++ compiler.) |
| 346 |
|
# Figure out how to create a longlong from a string: strtoll and |
| 347 |
|
# equiv. It's not enough to call AC_CHECK_FUNCS: hpux has a |
| 348 |
|
# strtoll, for instance, but it only takes 2 args instead of 3! |
| 349 |
|
# We have to call AH_TEMPLATE since AC_DEFINE_UNQUOTED below is complex. |
| 350 |
|
AH_TEMPLATE(HAVE_STRTOQ, [Define to 1 if you have `strtoq'.]) |
| 351 |
|
AH_TEMPLATE(HAVE_STRTOLL, [Define to 1 if you have `strtoll'.]) |
| 352 |
|
AH_TEMPLATE(HAVE__STRTOI64, [Define to 1 if you have `_strtoi64'.]) |
| 353 |
|
AH_TEMPLATE(HAVE_STRTOIMAX, [Define to 1 if you have `strtoimax'.]) |
| 354 |
|
have_strto_fn=0 |
| 355 |
|
for fn in srtoq strtoll _strtoi64 strtoimax; do |
| 356 |
|
AC_MSG_CHECKING([for $fn]) |
| 357 |
|
if test "$fn" = strtoimax; then |
| 358 |
|
include=stdint.h |
| 359 |
|
else |
| 360 |
|
include=stdlib.h |
| 361 |
|
fi |
| 362 |
|
AC_COMPILE_IFELSE(AC_LANG_PROGRAM([#include <$include>], |
| 363 |
|
[char* e; return $fn("100", &e, 10)]), |
| 364 |
|
[AC_MSG_RESULT(yes) |
| 365 |
|
AC_DEFINE_UNQUOTED(HAVE_`echo $fn | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ`, 1, |
| 366 |
|
[Define to 1 if you have `$fn'.]) |
| 367 |
|
have_strto_fn=1 |
| 368 |
|
break], |
| 369 |
|
[AC_MSG_RESULT(no)]) |
| 370 |
|
done |
| 371 |
|
|
| 372 |
|
if test "$have_strto_fn" = 1; then |
| 373 |
|
AC_CHECK_TYPES([long long], |
| 374 |
|
[pcre_have_long_long="1"], |
| 375 |
|
[pcre_have_long_long="0"]) |
| 376 |
|
AC_CHECK_TYPES([unsigned long long], |
| 377 |
|
[pcre_have_ulong_long="1"], |
| 378 |
|
[pcre_have_ulong_long="0"]) |
| 379 |
|
else |
| 380 |
|
pcre_have_long_long="0" |
| 381 |
|
pcre_have_ulong_long="0" |
| 382 |
|
fi |
| 383 |
|
AC_SUBST(pcre_have_long_long) |
| 384 |
|
AC_SUBST(pcre_have_ulong_long) |
| 385 |
|
|
| 386 |
AC_LANG_POP |
AC_LANG_POP |
| 387 |
fi |
fi |
| 388 |
# Using AC_SUBST eliminates the need to include config.h in a public .h file |
# Using AC_SUBST eliminates the need to include config.h in a public .h file |
| 398 |
AC_C_CONST |
AC_C_CONST |
| 399 |
AC_TYPE_SIZE_T |
AC_TYPE_SIZE_T |
| 400 |
|
|
|
pcre_have_strotolonglong=0 |
|
|
AC_CHECK_FUNCS(strtoq strtoll _strtoi64, [pcre_have_strotolonglong="1"; break]) |
|
|
# If we can't convert a string to a long long, pretend we don't even |
|
|
# have a long long. |
|
|
if test $pcre_have_strotolonglong = "0"; then |
|
|
pcre_have_long_long="0" |
|
|
pcre_have_ulong_long="0" |
|
|
else |
|
|
AC_CHECK_TYPES([long long], |
|
|
[pcre_have_long_long="1"], |
|
|
[pcre_have_long_long="0"]) |
|
|
AC_CHECK_TYPES([unsigned long long], |
|
|
[pcre_have_ulong_long="1"], |
|
|
[pcre_have_ulong_long="0"]) |
|
|
fi |
|
|
AC_SUBST(pcre_have_long_long) |
|
|
AC_SUBST(pcre_have_ulong_long) |
|
|
|
|
| 401 |
# Checks for library functions. |
# Checks for library functions. |
| 402 |
|
|
| 403 |
AC_CHECK_FUNCS(bcopy memmove strerror) |
AC_CHECK_FUNCS(bcopy memmove strerror) |
| 407 |
AC_CHECK_HEADERS([zlib.h], [HAVE_ZLIB_H=1]) |
AC_CHECK_HEADERS([zlib.h], [HAVE_ZLIB_H=1]) |
| 408 |
AC_CHECK_LIB([z], [gzopen], [HAVE_LIBZ=1]) |
AC_CHECK_LIB([z], [gzopen], [HAVE_LIBZ=1]) |
| 409 |
|
|
| 410 |
# Check for the availability of libbz2 |
# Check for the availability of libbz2. Originally we just used AC_CHECK_LIB, |
| 411 |
|
# as for libz. However, this had the following problem, diagnosed and fixed by |
| 412 |
|
# a user: |
| 413 |
|
# |
| 414 |
|
# - libbz2 uses the Pascal calling convention (WINAPI) for the functions |
| 415 |
|
# under Win32. |
| 416 |
|
# - The standard autoconf AC_CHECK_LIB fails to include "bzlib.h", |
| 417 |
|
# therefore missing the function definition. |
| 418 |
|
# - The compiler thus generates a "C" signature for the test function. |
| 419 |
|
# - The linker fails to find the "C" function. |
| 420 |
|
# - PCRE fails to configure if asked to do so against libbz2. |
| 421 |
|
# |
| 422 |
|
# Solution: |
| 423 |
|
# |
| 424 |
|
# - Replace the AC_CHECK_LIB test with a custom test. |
| 425 |
|
|
| 426 |
AC_CHECK_HEADERS([bzlib.h], [HAVE_BZLIB_H=1]) |
AC_CHECK_HEADERS([bzlib.h], [HAVE_BZLIB_H=1]) |
| 427 |
AC_CHECK_LIB([bz2], [BZ2_bzopen], [HAVE_LIBBZ2=1]) |
# Original test |
| 428 |
|
# AC_CHECK_LIB([bz2], [BZ2_bzopen], [HAVE_LIBBZ2=1]) |
| 429 |
|
# |
| 430 |
|
# Custom test follows |
| 431 |
|
|
| 432 |
|
AC_MSG_CHECKING([for libbz2]) |
| 433 |
|
OLD_LIBS="$LIBS" |
| 434 |
|
LIBS="$LIBS -lbz2" |
| 435 |
|
AC_LINK_IFELSE( AC_LANG_PROGRAM([[ |
| 436 |
|
#ifdef HAVE_BZLIB_H |
| 437 |
|
#include <bzlib.h> |
| 438 |
|
#endif]], |
| 439 |
|
[[return (int)BZ2_bzopen("conftest", "rb");]]), |
| 440 |
|
[AC_MSG_RESULT([yes]);HAVE_LIBBZ2=1; break;], |
| 441 |
|
AC_MSG_RESULT([no])) |
| 442 |
|
LIBS="$OLD_LIBS" |
| 443 |
|
|
| 444 |
# Check for the availabiity of libreadline |
# Check for the availabiity of libreadline |
| 445 |
|
|
| 450 |
# This facilitates -ansi builds under Linux |
# This facilitates -ansi builds under Linux |
| 451 |
dnl AC_DEFINE([_GNU_SOURCE], [], [Enable GNU extensions in glibc]) |
dnl AC_DEFINE([_GNU_SOURCE], [], [Enable GNU extensions in glibc]) |
| 452 |
|
|
| 453 |
|
PCRE_STATIC_CFLAG="" |
| 454 |
if test "x$enable_shared" = "xno" ; then |
if test "x$enable_shared" = "xno" ; then |
| 455 |
AC_DEFINE([PCRE_STATIC], [1], [ |
AC_DEFINE([PCRE_STATIC], [1], [ |
| 456 |
Define if linking statically (TODO: make nice with Libtool)]) |
Define if linking statically (TODO: make nice with Libtool)]) |
| 457 |
|
PCRE_STATIC_CFLAG="-DPCRE_STATIC" |
| 458 |
fi |
fi |
| 459 |
|
AC_SUBST(PCRE_STATIC_CFLAG) |
| 460 |
|
|
| 461 |
# Here is where pcre specific defines are handled |
# Here is where pcre specific defines are handled |
| 462 |
|
|
| 463 |
if test "$enable_utf8" = "yes"; then |
if test "$enable_utf8" = "yes"; then |
| 464 |
AC_DEFINE([SUPPORT_UTF8], [], [ |
AC_DEFINE([SUPPORT_UTF8], [], [ |
| 465 |
Define to enable support for the UTF-8 Unicode encoding.]) |
Define to enable support for the UTF-8 Unicode encoding. This will |
| 466 |
|
work even in an EBCDIC environment, but it is incompatible with |
| 467 |
|
the EBCDIC macro. That is, PCRE can support *either* EBCDIC code |
| 468 |
|
*or* ASCII/UTF-8, but not both at once.]) |
| 469 |
fi |
fi |
| 470 |
|
|
| 471 |
if test "$enable_unicode_properties" = "yes"; then |
if test "$enable_unicode_properties" = "yes"; then |
| 586 |
AC_DEFINE_UNQUOTED([EBCDIC], [], [ |
AC_DEFINE_UNQUOTED([EBCDIC], [], [ |
| 587 |
If you are compiling for a system that uses EBCDIC instead of ASCII |
If you are compiling for a system that uses EBCDIC instead of ASCII |
| 588 |
character codes, define this macro as 1. On systems that can use |
character codes, define this macro as 1. On systems that can use |
| 589 |
"configure", this can be done via --enable-ebcdic.]) |
"configure", this can be done via --enable-ebcdic. PCRE will then |
| 590 |
|
assume that all input strings are in EBCDIC. If you do not define |
| 591 |
|
this macro, PCRE will assume input strings are ASCII or UTF-8 Unicode. |
| 592 |
|
It is not possible to build a version of PCRE that supports both |
| 593 |
|
EBCDIC and UTF-8.]) |
| 594 |
fi |
fi |
| 595 |
|
|
| 596 |
# Platform specific issues |
# Platform specific issues |
| 627 |
AC_SUBST(DISTCHECK_CONFIGURE_FLAGS) |
AC_SUBST(DISTCHECK_CONFIGURE_FLAGS) |
| 628 |
|
|
| 629 |
# Check that, if --enable-pcregrep-libz or --enable-pcregrep-libbz2 is |
# Check that, if --enable-pcregrep-libz or --enable-pcregrep-libbz2 is |
| 630 |
# specified, the relevant library is available. If so, add it to LIBS. |
# specified, the relevant library is available. |
| 631 |
|
|
| 632 |
if test "$enable_pcregrep_libz" = "yes"; then |
if test "$enable_pcregrep_libz" = "yes"; then |
| 633 |
if test "$HAVE_ZLIB_H" != "1"; then |
if test "$HAVE_ZLIB_H" != "1"; then |
| 638 |
echo "** Cannot --enable-pcregrep-libz because libz was not found" |
echo "** Cannot --enable-pcregrep-libz because libz was not found" |
| 639 |
exit 1 |
exit 1 |
| 640 |
fi |
fi |
| 641 |
if test "$LIBS" = ""; then LIBS=-lz; else LIBS="$LIBS -lz"; fi |
LIBZ="-lz" |
| 642 |
fi |
fi |
| 643 |
|
AC_SUBST(LIBZ) |
| 644 |
|
|
| 645 |
if test "$enable_pcregrep_libbz2" = "yes"; then |
if test "$enable_pcregrep_libbz2" = "yes"; then |
| 646 |
if test "$HAVE_BZLIB_H" != "1"; then |
if test "$HAVE_BZLIB_H" != "1"; then |
| 651 |
echo "** Cannot --enable-pcregrep-libbz2 because libbz2 was not found" |
echo "** Cannot --enable-pcregrep-libbz2 because libbz2 was not found" |
| 652 |
exit 1 |
exit 1 |
| 653 |
fi |
fi |
| 654 |
if test "$LIBS" = ""; then LIBS=-lbz2; else LIBS="$LIBS -lbz2"; fi |
LIBBZ2="-lbz2" |
| 655 |
fi |
fi |
| 656 |
|
AC_SUBST(LIBBZ2) |
| 657 |
|
|
| 658 |
# Similarly for --enable-pcretest-readline |
# Similarly for --enable-pcretest-readline |
| 659 |
|
|
| 666 |
echo "** Cannot --enable-pcretest-readline because readline/history.h was not found." |
echo "** Cannot --enable-pcretest-readline because readline/history.h was not found." |
| 667 |
exit 1 |
exit 1 |
| 668 |
fi |
fi |
| 669 |
if test "$LIBS" = ""; then LIBS=-lreadline; else LIBS="$LIBS -lreadline"; fi |
LIBREADLINE="-lreadline" |
| 670 |
fi |
fi |
| 671 |
|
AC_SUBST(LIBREADLINE) |
| 672 |
|
|
| 673 |
# Produce these files, in addition to config.h. |
# Produce these files, in addition to config.h. |
| 674 |
AC_CONFIG_FILES( |
AC_CONFIG_FILES( |
| 675 |
Makefile |
Makefile |
| 676 |
libpcre.pc |
libpcre.pc |
| 677 |
|
libpcreposix.pc |
| 678 |
libpcrecpp.pc |
libpcrecpp.pc |
| 679 |
pcre-config |
pcre-config |
| 680 |
pcre.h |
pcre.h |