165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdnl Process this file with autoconf to produce a configure script.
265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdnl NOTE FOR MAINTAINERS: Do not use minor version numbers 08 or 09 because
465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdnl the leading zeros may cause them to be treated as invalid octal constants
565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdnl if a PCRE user writes code that uses PCRE_MINOR as a number. There is now
665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdnl a check further down that throws an error if 08 or 09 are used.
765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdnl The PCRE_PRERELEASE feature is for identifying release candidates. It might
965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdnl be defined as -RC2, for example. For real releases, it should be empty.
1065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
1165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichm4_define(pcre_major, [8])
1265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichm4_define(pcre_minor, [36])
1365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichm4_define(pcre_prerelease, [])
1465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichm4_define(pcre_date, [2014-09-26])
1565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
1665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# NOTE: The CMakeLists.txt file searches for the above variables in the first
1765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 50 lines of this file. Please update that if the variables above are moved.
1865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
1965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Libtool shared library interface versions (current:revision:age)
2065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichm4_define(libpcre_version, [3:4:2])
2165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichm4_define(libpcre16_version, [2:4:2])
2265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichm4_define(libpcre32_version, [0:4:0])
2365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichm4_define(libpcreposix_version, [0:3:0])
2465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichm4_define(libpcrecpp_version, [0:1:0])
2565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
2665de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_PREREQ(2.57)
2765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_INIT(PCRE, pcre_major.pcre_minor[]pcre_prerelease, , pcre)
2865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_CONFIG_SRCDIR([pcre.h.in])
2965de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAM_INIT_AUTOMAKE([dist-bzip2 dist-zip])
3065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichm4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
3165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_CONFIG_HEADERS(config.h)
3265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
3365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This is a new thing required to stop a warning from automake 1.12
3465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichm4_ifdef([AM_PROG_AR], [AM_PROG_AR])
3565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
3665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This was added at the suggestion of libtoolize (03-Jan-10)
3765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_CONFIG_MACRO_DIR([m4])
3865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
3965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# The default CFLAGS and CXXFLAGS in Autoconf are "-g -O2" for gcc and just
4065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# "-g" for any other compiler. There doesn't seem to be a standard way of
4165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# getting rid of the -g (which I don't think is needed for a production
4265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# library). This fudge seems to achieve the necessary. First, we remember the
4365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# externally set values of CFLAGS and CXXFLAGS. Then call the AC_PROG_CC and
4465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# AC_PROG_CXX macros to find the compilers - if CFLAGS and CXXFLAGS are not
4565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# set, they will be set to Autoconf's defaults. Afterwards, if the original
4665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# values were not set, remove the -g from the Autoconf defaults.
4765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# (PH 02-May-07)
4865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
4965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichremember_set_CFLAGS="$CFLAGS"
5065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichremember_set_CXXFLAGS="$CXXFLAGS"
5165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
5265de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_PROG_CC
5365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_PROG_CXX
5465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAM_PROG_CC_C_O
5565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
5665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "x$remember_set_CFLAGS" = "x"
5765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichthen
5865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test "$CFLAGS" = "-g -O2"
5965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  then
6065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    CFLAGS="-O2"
6165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  elif test "$CFLAGS" = "-g"
6265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  then
6365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    CFLAGS=""
6465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
6565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
6665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
6765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "x$remember_set_CXXFLAGS" = "x"
6865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichthen
6965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test "$CXXFLAGS" = "-g -O2"
7065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  then
7165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    CXXFLAGS="-O2"
7265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  elif test "$CXXFLAGS" = "-g"
7365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  then
7465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    CXXFLAGS=""
7565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
7665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
7765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
7865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# AC_PROG_CXX will return "g++" even if no c++ compiler is installed.
7965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Check for that case, and just disable c++ code if g++ doesn't run.
8065de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_LANG_PUSH(C++)
8165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],, CXX=""; CXXCP=""; CXXFLAGS="")
8265de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_LANG_POP
8365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
8465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Check for a 64-bit integer type
8565de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_TYPE_INT64_T
8665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
8765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_PROG_INSTALL
8865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_LIBTOOL_WIN32_DLL
8965de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichLT_INIT
9065de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_PROG_LN_S
9165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
9265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Check for GCC visibility feature
9365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
9465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichPCRE_VISIBILITY
9565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
9665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Versioning
9765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
9865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichPCRE_MAJOR="pcre_major"
9965de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichPCRE_MINOR="pcre_minor"
10065de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichPCRE_PRERELEASE="pcre_prerelease"
10165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichPCRE_DATE="pcre_date"
10265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
10365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "$PCRE_MINOR" = "08" -o "$PCRE_MINOR" = "09"
10465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichthen
10565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  echo "***"
10665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  echo "*** Minor version number $PCRE_MINOR must not be used. ***"
10765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  echo "*** Use only 01 to 07 or 10 onwards, to avoid octal issues. ***"
10865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  echo "***"
10965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  exit 1
11065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
11165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
11265de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_SUBST(PCRE_MAJOR)
11365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_SUBST(PCRE_MINOR)
11465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_SUBST(PCRE_PRERELEASE)
11565de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_SUBST(PCRE_DATE)
11665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
11765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Set a more sensible default value for $(htmldir).
11865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "x$htmldir" = 'x${docdir}'
11965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichthen
12065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  htmldir='${docdir}/html'
12165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
12265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
12365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Handle --disable-pcre8 (enabled by default)
12465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_ARG_ENABLE(pcre8,
12565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              AS_HELP_STRING([--disable-pcre8],
12665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                             [disable 8 bit character support]),
12765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              , enable_pcre8=unset)
12865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_SUBST(enable_pcre8)
12965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
13065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Handle --enable-pcre16 (disabled by default)
13165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_ARG_ENABLE(pcre16,
13265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              AS_HELP_STRING([--enable-pcre16],
13365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                             [enable 16 bit character support]),
13465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              , enable_pcre16=unset)
13565de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_SUBST(enable_pcre16)
13665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
13765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Handle --enable-pcre32 (disabled by default)
13865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_ARG_ENABLE(pcre32,
13965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              AS_HELP_STRING([--enable-pcre32],
14065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                             [enable 32 bit character support]),
14165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              , enable_pcre32=unset)
14265de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_SUBST(enable_pcre32)
14365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
14465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Handle --disable-cpp. The substitution of enable_cpp is needed for use in
14565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# pcre-config.
14665de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_ARG_ENABLE(cpp,
14765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              AS_HELP_STRING([--disable-cpp],
14865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                             [disable C++ support]),
14965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              , enable_cpp=unset)
15065de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_SUBST(enable_cpp)
15165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
15265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Handle --enable-jit (disabled by default)
15365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_ARG_ENABLE(jit,
15465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              AS_HELP_STRING([--enable-jit],
15565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                             [enable Just-In-Time compiling support]),
15665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              , enable_jit=no)
15765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
15865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Handle --disable-pcregrep-jit (enabled by default)
15965de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_ARG_ENABLE(pcregrep-jit,
16065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              AS_HELP_STRING([--disable-pcregrep-jit],
16165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                             [disable JIT support in pcregrep]),
16265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              , enable_pcregrep_jit=yes)
16365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
16465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Handle --enable-rebuild-chartables
16565de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_ARG_ENABLE(rebuild-chartables,
16665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              AS_HELP_STRING([--enable-rebuild-chartables],
16765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                             [rebuild character tables in current locale]),
16865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              , enable_rebuild_chartables=no)
16965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
17065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Handle --enable-utf8 (disabled by default)
17165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_ARG_ENABLE(utf8,
17265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              AS_HELP_STRING([--enable-utf8],
17365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                             [another name for --enable-utf. Kept only for compatibility reasons]),
17465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              , enable_utf8=unset)
17565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
17665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Handle --enable-utf (disabled by default)
17765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_ARG_ENABLE(utf,
17865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              AS_HELP_STRING([--enable-utf],
17965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                             [enable UTF-8/16/32 support (incompatible with --enable-ebcdic)]),
18065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              , enable_utf=unset)
18165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
18265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Handle --enable-unicode-properties
18365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_ARG_ENABLE(unicode-properties,
18465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              AS_HELP_STRING([--enable-unicode-properties],
18565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                             [enable Unicode properties support (implies --enable-utf)]),
18665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              , enable_unicode_properties=no)
18765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
18865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Handle newline options
18965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichac_pcre_newline=lf
19065de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_ARG_ENABLE(newline-is-cr,
19165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              AS_HELP_STRING([--enable-newline-is-cr],
19265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                             [use CR as newline character]),
19365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              ac_pcre_newline=cr)
19465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_ARG_ENABLE(newline-is-lf,
19565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              AS_HELP_STRING([--enable-newline-is-lf],
19665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                             [use LF as newline character (default)]),
19765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              ac_pcre_newline=lf)
19865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_ARG_ENABLE(newline-is-crlf,
19965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              AS_HELP_STRING([--enable-newline-is-crlf],
20065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                             [use CRLF as newline sequence]),
20165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              ac_pcre_newline=crlf)
20265de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_ARG_ENABLE(newline-is-anycrlf,
20365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              AS_HELP_STRING([--enable-newline-is-anycrlf],
20465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                             [use CR, LF, or CRLF as newline sequence]),
20565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              ac_pcre_newline=anycrlf)
20665de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_ARG_ENABLE(newline-is-any,
20765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              AS_HELP_STRING([--enable-newline-is-any],
20865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                             [use any valid Unicode newline sequence]),
20965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              ac_pcre_newline=any)
21065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichenable_newline="$ac_pcre_newline"
21165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
21265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Handle --enable-bsr-anycrlf
21365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_ARG_ENABLE(bsr-anycrlf,
21465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              AS_HELP_STRING([--enable-bsr-anycrlf],
21565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                             [\R matches only CR, LF, CRLF by default]),
21665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              , enable_bsr_anycrlf=no)
21765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
21865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Handle --enable-ebcdic
21965de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_ARG_ENABLE(ebcdic,
22065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              AS_HELP_STRING([--enable-ebcdic],
22165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                             [assume EBCDIC coding rather than ASCII; incompatible with --enable-utf; use only in (uncommon) EBCDIC environments; it implies --enable-rebuild-chartables]),
22265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              , enable_ebcdic=no)
22365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
22465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Handle --enable-ebcdic-nl25
22565de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_ARG_ENABLE(ebcdic-nl25,
22665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              AS_HELP_STRING([--enable-ebcdic-nl25],
22765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                             [set EBCDIC code for NL to 0x25 instead of 0x15; it implies --enable-ebcdic]),
22865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              , enable_ebcdic_nl25=no)
22965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
23065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Handle --disable-stack-for-recursion
23165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_ARG_ENABLE(stack-for-recursion,
23265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              AS_HELP_STRING([--disable-stack-for-recursion],
23365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                             [don't use stack recursion when matching]),
23465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              , enable_stack_for_recursion=yes)
23565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
23665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Handle --enable-pcregrep-libz
23765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_ARG_ENABLE(pcregrep-libz,
23865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              AS_HELP_STRING([--enable-pcregrep-libz],
23965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                             [link pcregrep with libz to handle .gz files]),
24065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              , enable_pcregrep_libz=no)
24165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
24265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Handle --enable-pcregrep-libbz2
24365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_ARG_ENABLE(pcregrep-libbz2,
24465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              AS_HELP_STRING([--enable-pcregrep-libbz2],
24565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                             [link pcregrep with libbz2 to handle .bz2 files]),
24665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              , enable_pcregrep_libbz2=no)
24765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
24865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Handle --with-pcregrep-bufsize=N
24965de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_ARG_WITH(pcregrep-bufsize,
25065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              AS_HELP_STRING([--with-pcregrep-bufsize=N],
25165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                             [pcregrep buffer size (default=20480, minimum=8192)]),
25265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              , with_pcregrep_bufsize=20480)
25365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
25465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Handle --enable-pcretest-libedit
25565de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_ARG_ENABLE(pcretest-libedit,
25665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              AS_HELP_STRING([--enable-pcretest-libedit],
25765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                             [link pcretest with libedit]),
25865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              , enable_pcretest_libedit=no)
25965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
26065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Handle --enable-pcretest-libreadline
26165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_ARG_ENABLE(pcretest-libreadline,
26265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              AS_HELP_STRING([--enable-pcretest-libreadline],
26365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                             [link pcretest with libreadline]),
26465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              , enable_pcretest_libreadline=no)
26565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
26665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Handle --with-posix-malloc-threshold=NBYTES
26765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_ARG_WITH(posix-malloc-threshold,
26865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich            AS_HELP_STRING([--with-posix-malloc-threshold=NBYTES],
26965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                           [threshold for POSIX malloc usage (default=10)]),
27065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich            , with_posix_malloc_threshold=10)
27165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
27265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Handle --with-link-size=N
27365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_ARG_WITH(link-size,
27465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich            AS_HELP_STRING([--with-link-size=N],
27565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                           [internal link size (2, 3, or 4 allowed; default=2)]),
27665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich            , with_link_size=2)
27765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
27865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Handle --with-parens-nest-limit=N
27965de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_ARG_WITH(parens-nest-limit,
28065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich            AS_HELP_STRING([--with-parens-nest-limit=N],
28165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                           [nested parentheses limit (default=250)]),
28265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich            , with_parens_nest_limit=250)
28365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
28465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Handle --with-match-limit=N
28565de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_ARG_WITH(match-limit,
28665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich            AS_HELP_STRING([--with-match-limit=N],
28765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                           [default limit on internal looping (default=10000000)]),
28865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich            , with_match_limit=10000000)
28965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
29065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Handle --with-match-limit_recursion=N
29165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
29265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Note: In config.h, the default is to define MATCH_LIMIT_RECURSION
29365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# symbolically as MATCH_LIMIT, which in turn is defined to be some numeric
29465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# value (e.g. 10000000). MATCH_LIMIT_RECURSION can otherwise be set to some
29565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# different numeric value (or even the same numeric value as MATCH_LIMIT,
29665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# though no longer defined in terms of the latter).
29765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
29865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_ARG_WITH(match-limit-recursion,
29965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich            AS_HELP_STRING([--with-match-limit-recursion=N],
30065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                           [default limit on internal recursion (default=MATCH_LIMIT)]),
30165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich            , with_match_limit_recursion=MATCH_LIMIT)
30265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
30365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Handle --enable-valgrind
30465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_ARG_ENABLE(valgrind,
30565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              AS_HELP_STRING([--enable-valgrind],
30665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                             [valgrind support]),
30765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              , enable_valgrind=no)
30865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
30965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Enable code coverage reports using gcov
31065de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_ARG_ENABLE(coverage,
31165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              AS_HELP_STRING([--enable-coverage],
31265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                             [enable code coverage reports using gcov]),
31365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich              , enable_coverage=no)
31465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
31565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Copy enable_utf8 value to enable_utf for compatibility reasons
31665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "x$enable_utf8" != "xunset"
31765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichthen
31865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test "x$enable_utf" != "xunset"
31965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  then
32065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    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.])
32165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
32265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  enable_utf=$enable_utf8
32365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
32465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
32565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Set the default value for pcre8
32665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "x$enable_pcre8" = "xunset"
32765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichthen
32865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  enable_pcre8=yes
32965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
33065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
33165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Set the default value for pcre16
33265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "x$enable_pcre16" = "xunset"
33365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichthen
33465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  enable_pcre16=no
33565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
33665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
33765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Set the default value for pcre32
33865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "x$enable_pcre32" = "xunset"
33965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichthen
34065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  enable_pcre32=no
34165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
34265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
34365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Make sure enable_pcre8 or enable_pcre16 was set
34465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "x$enable_pcre8$enable_pcre16$enable_pcre32" = "xnonono"
34565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichthen
34665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_MSG_ERROR([At least one of 8, 16 or 32 bit pcre library must be enabled])
34765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
34865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
34965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Make sure that if enable_unicode_properties was set, that UTF support is enabled.
35065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "x$enable_unicode_properties" = "xyes"
35165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichthen
35265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test "x$enable_utf" = "xno"
35365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  then
35465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    AC_MSG_ERROR([support for Unicode properties requires UTF-8/16/32 support])
35565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
35665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  enable_utf=yes
35765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
35865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
35965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# enable_utf is disabled by default.
36065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "x$enable_utf" = "xunset"
36165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichthen
36265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  enable_utf=no
36365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
36465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
36565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# enable_cpp copies the value of enable_pcre8 by default
36665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "x$enable_cpp" = "xunset"
36765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichthen
36865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  enable_cpp=$enable_pcre8
36965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
37065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
37165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Make sure that if enable_cpp was set, that enable_pcre8 support is enabled
37265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "x$enable_cpp" = "xyes"
37365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichthen
37465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test "x$enable_pcre8" = "xno"
37565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  then
37665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    AC_MSG_ERROR([C++ library requires pcre library with 8 bit characters])
37765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
37865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
37965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
38065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Convert the newline identifier into the appropriate integer value. The first
38165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# three are ASCII values 0x0a, 0x0d, and 0x0d0a, but if EBCDIC is enabled, they
38265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# are changed below.
38365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
38465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichcase "$enable_newline" in
38565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  lf)      ac_pcre_newline_value=10   ;;
38665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  cr)      ac_pcre_newline_value=13   ;;
38765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  crlf)    ac_pcre_newline_value=3338 ;;
38865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  anycrlf) ac_pcre_newline_value=-2   ;;
38965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  any)     ac_pcre_newline_value=-1   ;;
39065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  *)
39165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_MSG_ERROR([invalid argument \"$enable_newline\" to --enable-newline option])
39265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  ;;
39365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichesac
39465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
39565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# --enable-ebcdic-nl25 implies --enable-ebcdic
39665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "x$enable_ebcdic_nl25" = "xyes"; then
39765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  enable_ebcdic=yes
39865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
39965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
40065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Make sure that if enable_ebcdic is set, rebuild_chartables is also enabled,
40165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# and the newline value is adjusted appropriately (CR is still 13, but LF is
40265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# 21 or 37). Also check that UTF support is not requested, because PCRE cannot
40365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# handle EBCDIC and UTF in the same build. To do so it would need to use
40465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# different character constants depending on the mode.
40565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
40665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "x$enable_ebcdic" = "xyes"; then
40765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  enable_rebuild_chartables=yes
40865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
40965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test "x$enable_utf" = "xyes"; then
41065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    AC_MSG_ERROR([support for EBCDIC and UTF-8/16/32 cannot be enabled at the same time])
41165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
41265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
41365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test "x$enable_ebcdic_nl25" = "xno"; then
41465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    case "$ac_pcre_newline_value" in
41565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      10)   ac_pcre_newline_value=21 ;;
41665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      3338) ac_pcre_newline_value=3349 ;;
41765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    esac
41865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  else
41965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    case "$ac_pcre_newline_value" in
42065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      10)   ac_pcre_newline_value=37 ;;
42165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      3338) ac_pcre_newline_value=3365 ;;
42265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    esac
42365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
42465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
42565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
42665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Check argument to --with-link-size
42765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichcase "$with_link_size" in
42865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  2|3|4) ;;
42965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  *)
43065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_MSG_ERROR([invalid argument \"$with_link_size\" to --with-link-size option])
43165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  ;;
43265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichesac
43365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
43465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAH_TOP([
43565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* PCRE is written in Standard C, but there are a few non-standard things it
43665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichcan cope with, allowing it to run on SunOS4 and other "close to standard"
43765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichsystems.
43865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
43965de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichIn environments that support the GNU autotools, config.h.in is converted into
44065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichconfig.h by the "configure" script. In environments that use CMake,
44165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichconfig-cmake.in is converted into config.h. If you are going to build PCRE "by
44265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichhand" without using "configure" or CMake, you should copy the distributed
44365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichconfig.h.generic to config.h, and edit the macro definitions to be the way you
44465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichneed them. You must then add -DHAVE_CONFIG_H to all of your compile commands,
44565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichso that config.h is included at the start of every source.
44665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
44765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAlternatively, you can avoid editing by using -D on the compiler command line
44865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichto set the macro values. In this case, you do not have to set -DHAVE_CONFIG_H,
44965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichbut if you do, default values will be taken from config.h for non-boolean
45065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichmacros that are not defined on the command line.
45165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
45265de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichBoolean macros such as HAVE_STDLIB_H and SUPPORT_PCRE8 should either be defined
45365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich(conventionally to 1) for TRUE, and not defined at all for FALSE. All such
45465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichmacros are listed as a commented #undef in config.h.generic. Macros such as
45565de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichMATCH_LIMIT, whose actual value is relevant, have defaults defined, but are
45665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichsurrounded by #ifndef/#endif lines so that the value can be overridden by -D.
45765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
45865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichPCRE uses memmove() if HAVE_MEMMOVE is defined; otherwise it uses bcopy() if
45965de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichHAVE_BCOPY is defined. If your system has neither bcopy() nor memmove(), make
46065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichsure both macros are undefined; an emulation function will then be used. */])
46165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
46265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Checks for header files.
46365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_HEADER_STDC
46465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_CHECK_HEADERS(limits.h sys/types.h sys/stat.h dirent.h)
46565de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_CHECK_HEADERS([windows.h], [HAVE_WINDOWS_H=1])
46665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
46765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# The files below are C++ header files.
46865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichpcre_have_type_traits="0"
46965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichpcre_have_bits_type_traits="0"
47065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
47165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "x$enable_cpp" = "xyes" -a -z "$CXX"; then
47265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich   AC_MSG_ERROR([You need a C++ compiler for C++ support.])
47365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
47465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
47565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "x$enable_cpp" = "xyes" -a -n "$CXX"
47665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichthen
47765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_LANG_PUSH(C++)
47865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
47965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Older versions of pcre defined pcrecpp::no_arg, but in new versions
48065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# it's called pcrecpp::RE::no_arg.  For backwards ABI compatibility,
48165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# we want to make one an alias for the other.  Different systems do
48265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# this in different ways.  Some systems, for instance, can do it via
48365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# a linker flag: -alias (for os x 10.5) or -i (for os x <=10.4).
48465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichOLD_LDFLAGS="$LDFLAGS"
48565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfor flag in "-alias,__ZN7pcrecpp2RE6no_argE,__ZN7pcrecpp6no_argE" \
48665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich            "-i__ZN7pcrecpp6no_argE:__ZN7pcrecpp2RE6no_argE"; do
48765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_MSG_CHECKING([for alias support in the linker])
48865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  LDFLAGS="$OLD_LDFLAGS -Wl,$flag"
48965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # We try to run the linker with this new ld flag.  If the link fails,
49065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # we give up and remove the new flag from LDFLAGS.
49165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_LINK_IFELSE([AC_LANG_PROGRAM([namespace pcrecpp {
49265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                                    class RE { static int no_arg; };
49365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                                    int RE::no_arg;
49465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                                  }],
49565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                                 [])],
49665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                 [AC_MSG_RESULT([yes]);
49765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                  EXTRA_LIBPCRECPP_LDFLAGS="$EXTRA_LIBPCRECPP_LDFLAGS -Wl,$flag";
49865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                  break;],
49965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                 AC_MSG_RESULT([no]))
50065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdone
50165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichLDFLAGS="$OLD_LDFLAGS"
50265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
50365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# We could be more clever here, given we're doing AC_SUBST with this
50465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# (eg set a var to be the name of the include file we want). But we're not
50565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# so it's easy to change back to 'regular' autoconf vars if we needed to.
50665de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_CHECK_HEADERS(string, [pcre_have_cpp_headers="1"],
50765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                         [pcre_have_cpp_headers="0"])
50865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_CHECK_HEADERS(bits/type_traits.h, [pcre_have_bits_type_traits="1"],
50965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                                     [pcre_have_bits_type_traits="0"])
51065de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_CHECK_HEADERS(type_traits.h, [pcre_have_type_traits="1"],
51165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                                [pcre_have_type_traits="0"])
51265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
51365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# (This isn't c++-specific, but is only used in pcrecpp.cc, so try this
51465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# in a c++ context.  This matters becuase strtoimax is C99 and may not
51565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# be supported by the C++ compiler.)
51665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Figure out how to create a longlong from a string: strtoll and
51765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# equiv.  It's not enough to call AC_CHECK_FUNCS: hpux has a
51865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# strtoll, for instance, but it only takes 2 args instead of 3!
51965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# We have to call AH_TEMPLATE since AC_DEFINE_UNQUOTED below is complex.
52065de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAH_TEMPLATE(HAVE_STRTOQ, [Define to 1 if you have `strtoq'.])
52165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAH_TEMPLATE(HAVE_STRTOLL, [Define to 1 if you have `strtoll'.])
52265de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAH_TEMPLATE(HAVE__STRTOI64, [Define to 1 if you have `_strtoi64'.])
52365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAH_TEMPLATE(HAVE_STRTOIMAX, [Define to 1 if you have `strtoimax'.])
52465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichhave_strto_fn=0
52565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfor fn in strtoq strtoll _strtoi64 strtoimax; do
52665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_MSG_CHECKING([for $fn])
52765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test "$fn" = strtoimax; then
52865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    include=stdint.h
52965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  else
53065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    include=stdlib.h
53165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
53265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <$include>],
53365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                                    [char* e; return $fn("100", &e, 10)])],
53465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                    [AC_MSG_RESULT(yes)
53565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                     AC_DEFINE_UNQUOTED(HAVE_`echo $fn | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ`, 1,
53665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                                        [Define to 1 if you have `$fn'.])
53765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                     have_strto_fn=1
53865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                     break],
53965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                    [AC_MSG_RESULT(no)])
54065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdone
54165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
54265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "$have_strto_fn" = 1; then
54365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_CHECK_TYPES([long long],
54465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                 [pcre_have_long_long="1"],
54565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                 [pcre_have_long_long="0"])
54665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_CHECK_TYPES([unsigned long long],
54765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                 [pcre_have_ulong_long="1"],
54865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                 [pcre_have_ulong_long="0"])
54965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichelse
55065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  pcre_have_long_long="0"
55165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  pcre_have_ulong_long="0"
55265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
55365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_SUBST(pcre_have_long_long)
55465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_SUBST(pcre_have_ulong_long)
55565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
55665de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_LANG_POP
55765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
55865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Using AC_SUBST eliminates the need to include config.h in a public .h file
55965de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_SUBST(pcre_have_type_traits)
56065de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_SUBST(pcre_have_bits_type_traits)
56165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
56265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Conditional compilation
56365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAM_CONDITIONAL(WITH_PCRE8, test "x$enable_pcre8" = "xyes")
56465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAM_CONDITIONAL(WITH_PCRE16, test "x$enable_pcre16" = "xyes")
56565de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAM_CONDITIONAL(WITH_PCRE32, test "x$enable_pcre32" = "xyes")
56665de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAM_CONDITIONAL(WITH_PCRE_CPP, test "x$enable_cpp" = "xyes")
56765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAM_CONDITIONAL(WITH_REBUILD_CHARTABLES, test "x$enable_rebuild_chartables" = "xyes")
56865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAM_CONDITIONAL(WITH_JIT, test "x$enable_jit" = "xyes")
56965de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAM_CONDITIONAL(WITH_UTF, test "x$enable_utf" = "xyes")
57065de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAM_CONDITIONAL(WITH_VALGRIND, test "x$enable_valgrind" = "xyes")
57165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
57265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Checks for typedefs, structures, and compiler characteristics.
57365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
57465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_C_CONST
57565de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_TYPE_SIZE_T
57665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
57765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Checks for library functions.
57865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
57965de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_CHECK_FUNCS(bcopy memmove strerror)
58065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
58165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Check for the availability of libz (aka zlib)
58265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
58365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_CHECK_HEADERS([zlib.h], [HAVE_ZLIB_H=1])
58465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_CHECK_LIB([z], [gzopen], [HAVE_LIBZ=1])
58565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
58665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Check for the availability of libbz2. Originally we just used AC_CHECK_LIB,
58765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# as for libz. However, this had the following problem, diagnosed and fixed by
58865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# a user:
58965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
59065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#   - libbz2 uses the Pascal calling convention (WINAPI) for the functions
59165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#     under Win32.
59265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#   - The standard autoconf AC_CHECK_LIB fails to include "bzlib.h",
59365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#     therefore missing the function definition.
59465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#   - The compiler thus generates a "C" signature for the test function.
59565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#   - The linker fails to find the "C" function.
59665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#   - PCRE fails to configure if asked to do so against libbz2.
59765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
59865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Solution:
59965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
60065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#   - Replace the AC_CHECK_LIB test with a custom test.
60165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
60265de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_CHECK_HEADERS([bzlib.h], [HAVE_BZLIB_H=1])
60365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Original test
60465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# AC_CHECK_LIB([bz2], [BZ2_bzopen], [HAVE_LIBBZ2=1])
60565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#
60665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Custom test follows
60765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
60865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_MSG_CHECKING([for libbz2])
60965de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichOLD_LIBS="$LIBS"
61065de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichLIBS="$LIBS -lbz2"
61165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_LINK_IFELSE([AC_LANG_PROGRAM([[
61265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#ifdef HAVE_BZLIB_H
61365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#include <bzlib.h>
61465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#endif]],
61565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich[[return (int)BZ2_bzopen("conftest", "rb");]])],
61665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich[AC_MSG_RESULT([yes]);HAVE_LIBBZ2=1; break;],
61765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_MSG_RESULT([no]))
61865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichLIBS="$OLD_LIBS"
61965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
62065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Check for the availabiity of libreadline
62165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
62265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "$enable_pcretest_libreadline" = "yes"; then
62365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich AC_CHECK_HEADERS([readline/readline.h], [HAVE_READLINE_H=1])
62465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich AC_CHECK_HEADERS([readline/history.h], [HAVE_HISTORY_H=1])
62565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich AC_CHECK_LIB([readline], [readline], [LIBREADLINE="-lreadline"],
62665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich   [unset ac_cv_lib_readline_readline;
62765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    AC_CHECK_LIB([readline], [readline], [LIBREADLINE="-ltinfo"],
62865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     [unset ac_cv_lib_readline_readline;
62965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      AC_CHECK_LIB([readline], [readline], [LIBREADLINE="-lcurses"],
63065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich       [unset ac_cv_lib_readline_readline;
63165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich        AC_CHECK_LIB([readline], [readline], [LIBREADLINE="-lncurses"],
63265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich         [unset ac_cv_lib_readline_readline;
63365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	  AC_CHECK_LIB([readline], [readline], [LIBREADLINE="-lncursesw"],
63465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich           [unset ac_cv_lib_readline_readline;
63565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	    AC_CHECK_LIB([readline], [readline], [LIBREADLINE="-ltermcap"],
63665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich             [LIBREADLINE=""],
63765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich             [-ltermcap])],
63865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich           [-lncursesw])],
63965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich         [-lncurses])],
64065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich       [-lcurses])],
64165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     [-ltinfo])])
64265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich AC_SUBST(LIBREADLINE)
64365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich if test -n "$LIBREADLINE"; then
64465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich   if test "$LIBREADLINE" != "-lreadline"; then
64565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     echo "-lreadline needs $LIBREADLINE"
64665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     LIBREADLINE="-lreadline $LIBREADLINE"
64765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich   fi
64865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich fi
64965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
65065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
65165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
65265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Check for the availability of libedit. Different distributions put its
65365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# headers in different places. Try to cover the most common ones.
65465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
65565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "$enable_pcretest_libedit" = "yes"; then
65665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_CHECK_HEADERS([editline/readline.h], [HAVE_EDITLINE_READLINE_H=1],
65765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    [AC_CHECK_HEADERS([edit/readline/readline.h], [HAVE_READLINE_READLINE_H=1],
65865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      [AC_CHECK_HEADERS([readline/readline.h], [HAVE_READLINE_READLINE_H=1])])])
65965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_CHECK_LIB([edit], [readline], [LIBEDIT="-ledit"])
66065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
66165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
66265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# This facilitates -ansi builds under Linux
66365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdnl AC_DEFINE([_GNU_SOURCE], [], [Enable GNU extensions in glibc])
66465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
66565de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichPCRE_STATIC_CFLAG=""
66665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "x$enable_shared" = "xno" ; then
66765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_DEFINE([PCRE_STATIC], [1], [
66865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Define to any value if linking statically (TODO: make nice with Libtool)])
66965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  PCRE_STATIC_CFLAG="-DPCRE_STATIC"
67065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
67165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_SUBST(PCRE_STATIC_CFLAG)
67265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
67365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Here is where pcre specific defines are handled
67465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
67565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "$enable_pcre8" = "yes"; then
67665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_DEFINE([SUPPORT_PCRE8], [], [
67765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Define to any value to enable the 8 bit PCRE library.])
67865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
67965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
68065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "$enable_pcre16" = "yes"; then
68165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_DEFINE([SUPPORT_PCRE16], [], [
68265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Define to any value to enable the 16 bit PCRE library.])
68365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
68465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
68565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "$enable_pcre32" = "yes"; then
68665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_DEFINE([SUPPORT_PCRE32], [], [
68765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Define to any value to enable the 32 bit PCRE library.])
68865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
68965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
69065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Unless running under Windows, JIT support requires pthreads.
69165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
69265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "$enable_jit" = "yes"; then
69365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test "$HAVE_WINDOWS_H" != "1"; then
69465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    AX_PTHREAD([], [AC_MSG_ERROR([JIT support requires pthreads])])
69565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    CC="$PTHREAD_CC"
69665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    CFLAGS="$PTHREAD_CFLAGS $CFLAGS"
69765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    LIBS="$PTHREAD_LIBS $LIBS"
69865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
69965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_DEFINE([SUPPORT_JIT], [], [
70065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Define to any value to enable support for Just-In-Time compiling.])
70165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichelse
70265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  enable_pcregrep_jit="no"
70365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
70465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
70565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "$enable_pcregrep_jit" = "yes"; then
70665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_DEFINE([SUPPORT_PCREGREP_JIT], [], [
70765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Define to any value to enable JIT support in pcregrep.])
70865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
70965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
71065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "$enable_utf" = "yes"; then
71165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_DEFINE([SUPPORT_UTF], [], [
71265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Define to any value to enable support for the UTF-8/16/32 Unicode encoding.
71365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    This will work even in an EBCDIC environment, but it is incompatible
71465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    with the EBCDIC macro. That is, PCRE can support *either* EBCDIC
71565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    code *or* ASCII/UTF-8/16/32, but not both at once.])
71665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
71765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
71865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "$enable_unicode_properties" = "yes"; then
71965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_DEFINE([SUPPORT_UCP], [], [
72065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Define to any value to enable support for Unicode properties.])
72165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
72265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
72365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "$enable_stack_for_recursion" = "no"; then
72465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_DEFINE([NO_RECURSE], [], [
72565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    PCRE uses recursive function calls to handle backtracking while
72665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    matching. This can sometimes be a problem on systems that have
72765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    stacks of limited size. Define NO_RECURSE to any value to get a
72865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    version that doesn't use recursion in the match() function; instead
72965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    it creates its own stack by steam using pcre_recurse_malloc() to obtain
73065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    memory from the heap. For more detail, see the comments and other stuff
73165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    just above the match() function.])
73265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
73365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
73465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "$enable_pcregrep_libz" = "yes"; then
73565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_DEFINE([SUPPORT_LIBZ], [], [
73665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Define to any value to allow pcregrep to be linked with libz, so that it is
73765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    able to handle .gz files.])
73865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
73965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
74065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "$enable_pcregrep_libbz2" = "yes"; then
74165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_DEFINE([SUPPORT_LIBBZ2], [], [
74265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Define to any value to allow pcregrep to be linked with libbz2, so that it
74365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    is able to handle .bz2 files.])
74465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
74565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
74665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test $with_pcregrep_bufsize -lt 8192 ; then
74765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_MSG_WARN([$with_pcregrep_bufsize is too small for --with-pcregrep-bufsize; using 8192])
74865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  with_pcregrep_bufsize="8192"
74965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichelse
75065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test $? -gt 1 ; then
75165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_MSG_ERROR([Bad value for  --with-pcregrep-bufsize])
75265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
75365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
75465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
75565de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_DEFINE_UNQUOTED([PCREGREP_BUFSIZE], [$with_pcregrep_bufsize], [
75665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  The value of PCREGREP_BUFSIZE determines the size of buffer used by pcregrep
75765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  to hold parts of the file it is searching. This is also the minimum value.
75865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  The actual amount of memory used by pcregrep is three times this number,
75965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  because it allows for the buffering of "before" and "after" lines.])
76065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
76165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "$enable_pcretest_libedit" = "yes"; then
76265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_DEFINE([SUPPORT_LIBEDIT], [], [
76365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Define to any value to allow pcretest to be linked with libedit.])
76465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  LIBREADLINE="$LIBEDIT"
76565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichelif test "$enable_pcretest_libreadline" = "yes"; then
76665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_DEFINE([SUPPORT_LIBREADLINE], [], [
76765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Define to any value to allow pcretest to be linked with libreadline.])
76865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
76965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
77065de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_DEFINE_UNQUOTED([NEWLINE], [$ac_pcre_newline_value], [
77165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  The value of NEWLINE determines the default newline character sequence. PCRE
77265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  client programs can override this by selecting other values at run time. In
77365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  ASCII environments, the value can be 10 (LF), 13 (CR), or 3338 (CRLF); in
77465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  EBCDIC environments the value can be 21 or 37 (LF), 13 (CR), or 3349 or 3365
77565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  (CRLF) because there are two alternative codepoints (0x15 and 0x25) that are
77665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  used as the NL line terminator that is equivalent to ASCII LF. In both ASCII
77765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  and EBCDIC environments the value can also be -1 (ANY), or -2 (ANYCRLF).])
77865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
77965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "$enable_bsr_anycrlf" = "yes"; then
78065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_DEFINE([BSR_ANYCRLF], [], [
78165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    By default, the \R escape sequence matches any Unicode line ending
78265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    character or sequence of characters. If BSR_ANYCRLF is defined (to any
78365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    value), this is changed so that backslash-R matches only CR, LF, or CRLF.
78465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    The build-time default can be overridden by the user of PCRE at runtime.])
78565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
78665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
78765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_DEFINE_UNQUOTED([LINK_SIZE], [$with_link_size], [
78865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  The value of LINK_SIZE determines the number of bytes used to store
78965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  links as offsets within the compiled regex. The default is 2, which
79065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  allows for compiled patterns up to 64K long. This covers the vast
79165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  majority of cases. However, PCRE can also be compiled to use 3 or 4
79265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  bytes instead. This allows for longer patterns in extreme cases.])
79365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
79465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_DEFINE_UNQUOTED([POSIX_MALLOC_THRESHOLD], [$with_posix_malloc_threshold], [
79565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  When calling PCRE via the POSIX interface, additional working storage
79665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  is required for holding the pointers to capturing substrings because
79765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  PCRE requires three integers per substring, whereas the POSIX
79865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  interface provides only two. If the number of expected substrings is
79965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  small, the wrapper function uses space on the stack, because this is
80065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  faster than using malloc() for each call. The threshold above which
80165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  the stack is no longer used is defined by POSIX_MALLOC_THRESHOLD.])
80265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
80365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_DEFINE_UNQUOTED([PARENS_NEST_LIMIT], [$with_parens_nest_limit], [
80465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  The value of PARENS_NEST_LIMIT specifies the maximum depth of nested
80565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  parentheses (of any kind) in a pattern. This limits the amount of system
80665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  stack that is used while compiling a pattern.])
80765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
80865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_DEFINE_UNQUOTED([MATCH_LIMIT], [$with_match_limit], [
80965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  The value of MATCH_LIMIT determines the default number of times the
81065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  internal match() function can be called during a single execution of
81165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  pcre_exec(). There is a runtime interface for setting a different
81265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  limit. The limit exists in order to catch runaway regular
81365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  expressions that take for ever to determine that they do not match.
81465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  The default is set very large so that it does not accidentally catch
81565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  legitimate cases.])
81665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
81765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_DEFINE_UNQUOTED([MATCH_LIMIT_RECURSION], [$with_match_limit_recursion], [
81865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  The above limit applies to all calls of match(), whether or not they
81965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  increase the recursion depth. In some environments it is desirable
82065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  to limit the depth of recursive calls of match() more strictly, in
82165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  order to restrict the maximum amount of stack (or heap, if
82265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  NO_RECURSE is defined) that is used. The value of
82365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  MATCH_LIMIT_RECURSION applies only to recursive calls of match(). To
82465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  have any useful effect, it must be less than the value of
82565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  MATCH_LIMIT. The default is to use the same value as MATCH_LIMIT.
82665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  There is a runtime method for setting a different limit.])
82765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
82865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_DEFINE([MAX_NAME_SIZE], [32], [
82965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  This limit is parameterized just in case anybody ever wants to
83065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  change it. Care must be taken if it is increased, because it guards
83165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  against integer overflow caused by enormously large patterns.])
83265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
83365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_DEFINE([MAX_NAME_COUNT], [10000], [
83465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  This limit is parameterized just in case anybody ever wants to
83565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  change it. Care must be taken if it is increased, because it guards
83665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  against integer overflow caused by enormously large patterns.])
83765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
83865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAH_VERBATIM([PCRE_EXP_DEFN], [
83965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich/* If you are compiling for a system other than a Unix-like system or
84065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich   Win32, and it needs some magic to be inserted before the definition
84165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich   of a function that is exported by the library, define this macro to
84265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich   contain the relevant magic. If you do not define this macro, a suitable
84365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    __declspec value is used for Windows systems; in other environments
84465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich   "extern" is used for a C compiler and "extern C" for a C++ compiler.
84565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich   This macro apears at the start of every exported function that is part
84665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich   of the external API. It does not appear on functions that are "external"
84765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich   in the C sense, but which are internal to the library. */
84865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich#undef PCRE_EXP_DEFN])
84965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
85065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "$enable_ebcdic" = "yes"; then
85165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_DEFINE_UNQUOTED([EBCDIC], [], [
85265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    If you are compiling for a system that uses EBCDIC instead of ASCII
85365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    character codes, define this macro to any value. You must also edit the
85465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    NEWLINE macro below to set a suitable EBCDIC newline, commonly 21 (0x15).
85565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    On systems that can use "configure" or CMake to set EBCDIC, NEWLINE is
85665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    automatically adjusted. When EBCDIC is set, PCRE assumes that all input
85765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    strings are in EBCDIC. If you do not define this macro, PCRE will assume
85865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    input strings are ASCII or UTF-8/16/32 Unicode. It is not possible to build
85965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    a version of PCRE that supports both EBCDIC and UTF-8/16/32.])
86065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
86165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
86265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "$enable_ebcdic_nl25" = "yes"; then
86365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_DEFINE_UNQUOTED([EBCDIC_NL25], [], [
86465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    In an EBCDIC environment, define this macro to any value to arrange for
86565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    the NL character to be 0x25 instead of the default 0x15. NL plays the role
86665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    that LF does in an ASCII/Unicode environment. The value must also be set in
86765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    the NEWLINE macro below. On systems that can use "configure" or CMake to
86865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    set EBCDIC_NL25, the adjustment of NEWLINE is automatic.])
86965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
87065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
87165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "$enable_valgrind" = "yes"; then
87265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_DEFINE_UNQUOTED([SUPPORT_VALGRIND], [], [
87365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich     Define to any value for valgrind support to find invalid memory reads.])
87465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
87565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
87665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Platform specific issues
87765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichNO_UNDEFINED=
87865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEXPORT_ALL_SYMBOLS=
87965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichcase $host_os in
88065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  cygwin* | mingw* )
88165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test X"$enable_shared" = Xyes; then
88265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      NO_UNDEFINED="-no-undefined"
88365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      EXPORT_ALL_SYMBOLS="-Wl,--export-all-symbols"
88465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
88565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    ;;
88665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichesac
88765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
88865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# The extra LDFLAGS for each particular library
88965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# (Note: The libpcre*_version bits are m4 variables, assigned above)
89065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
89165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEXTRA_LIBPCRE_LDFLAGS="$EXTRA_LIBPCRE_LDFLAGS \
89265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                       $NO_UNDEFINED -version-info libpcre_version"
89365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
89465de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEXTRA_LIBPCRE16_LDFLAGS="$EXTRA_LIBPCRE16_LDFLAGS \
89565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                       $NO_UNDEFINED -version-info libpcre16_version"
89665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
89765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEXTRA_LIBPCRE32_LDFLAGS="$EXTRA_LIBPCRE32_LDFLAGS \
89865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                       $NO_UNDEFINED -version-info libpcre32_version"
89965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
90065de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEXTRA_LIBPCREPOSIX_LDFLAGS="$EXTRA_LIBPCREPOSIX_LDFLAGS \
90165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                            $NO_UNDEFINED -version-info libpcreposix_version"
90265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
90365de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEXTRA_LIBPCRECPP_LDFLAGS="$EXTRA_LIBPCRECPP_LDFLAGS \
90465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                          $NO_UNDEFINED -version-info libpcrecpp_version \
90565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich                          $EXPORT_ALL_SYMBOLS"
90665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
90765de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_SUBST(EXTRA_LIBPCRE_LDFLAGS)
90865de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_SUBST(EXTRA_LIBPCRE16_LDFLAGS)
90965de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_SUBST(EXTRA_LIBPCRE32_LDFLAGS)
91065de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_SUBST(EXTRA_LIBPCREPOSIX_LDFLAGS)
91165de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_SUBST(EXTRA_LIBPCRECPP_LDFLAGS)
91265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
91365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# When we run 'make distcheck', use these arguments. Turning off compiler
91465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# optimization makes it run faster.
91565de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichDISTCHECK_CONFIGURE_FLAGS="CFLAGS='' CXXFLAGS='' --enable-pcre16 --enable-pcre32 --enable-jit --enable-cpp --enable-unicode-properties"
91665de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_SUBST(DISTCHECK_CONFIGURE_FLAGS)
91765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
91865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Check that, if --enable-pcregrep-libz or --enable-pcregrep-libbz2 is
91965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# specified, the relevant library is available.
92065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
92165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "$enable_pcregrep_libz" = "yes"; then
92265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test "$HAVE_ZLIB_H" != "1"; then
92365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    echo "** Cannot --enable-pcregrep-libz because zlib.h was not found"
92465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    exit 1
92565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
92665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test "$HAVE_LIBZ" != "1"; then
92765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    echo "** Cannot --enable-pcregrep-libz because libz was not found"
92865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    exit 1
92965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
93065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  LIBZ="-lz"
93165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
93265de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_SUBST(LIBZ)
93365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
93465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "$enable_pcregrep_libbz2" = "yes"; then
93565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test "$HAVE_BZLIB_H" != "1"; then
93665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    echo "** Cannot --enable-pcregrep-libbz2 because bzlib.h was not found"
93765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    exit 1
93865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
93965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test "$HAVE_LIBBZ2" != "1"; then
94065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    echo "** Cannot --enable-pcregrep-libbz2 because libbz2 was not found"
94165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    exit 1
94265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
94365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  LIBBZ2="-lbz2"
94465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
94565de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_SUBST(LIBBZ2)
94665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
94765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Similarly for --enable-pcretest-readline
94865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
94965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "$enable_pcretest_libedit" = "yes"; then
95065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test "$enable_pcretest_libreadline" = "yes"; then
95165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    echo "** Cannot use both --enable-pcretest-libedit and --enable-pcretest-readline"
95265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    exit 1
95365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
95465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test "$HAVE_EDITLINE_READLINE_H" != "1" -a \
95565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich          "$HAVE_READLINE_READLINE_H" != "1"; then
95665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    echo "** Cannot --enable-pcretest-libedit because neither editline/readline.h"
95765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    echo "** nor readline/readline.h was found."
95865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    exit 1
95965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
96065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test -z "$LIBEDIT"; then
96165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    echo "** Cannot --enable-pcretest-libedit because libedit library was not found."
96265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    exit 1
96365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
96465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
96565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
96665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "$enable_pcretest_libreadline" = "yes"; then
96765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test "$HAVE_READLINE_H" != "1"; then
96865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    echo "** Cannot --enable-pcretest-readline because readline/readline.h was not found."
96965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    exit 1
97065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
97165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test "$HAVE_HISTORY_H" != "1"; then
97265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    echo "** Cannot --enable-pcretest-readline because readline/history.h was not found."
97365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    exit 1
97465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
97565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test -z "$LIBREADLINE"; then
97665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    echo "** Cannot --enable-pcretest-readline because readline library was not found."
97765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    exit 1
97865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
97965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
98065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
98165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Handle valgrind support
98265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
98365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "$enable_valgrind" = "yes"; then
98465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  m4_ifdef([PKG_CHECK_MODULES],
98565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich           [PKG_CHECK_MODULES([VALGRIND],[valgrind])],
98665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich           [AC_MSG_ERROR([pkg-config not supported])])
98765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
98865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
98965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Handle code coverage reporting support
99065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "$enable_coverage" = "yes"; then
99165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test "x$GCC" != "xyes"; then
99265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    AC_MSG_ERROR([Code coverage reports can only be generated when using GCC])
99365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
99465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
99565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # ccache is incompatible with gcov
99665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_PATH_PROG([SHTOOL],[shtool],[false])
99765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  case `$SHTOOL path $CC` in
99865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *ccache*) cc_ccache=yes;;
99965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    *) cc_ccache=no;;
100065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  esac
100165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
100265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test "$cc_ccache" = "yes"; then
100365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    if test -z "$CCACHE_DISABLE" -o "$CCACHE_DISABLE" != "1"; then
100465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich      AC_MSG_ERROR([must export CCACHE_DISABLE=1 to disable ccache for code coverage])
100565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    fi
100665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
100765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
100865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_ARG_VAR([LCOV],[the ltp lcov program])
100965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_PATH_PROG([LCOV],[lcov],[false])
101065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test "x$LCOV" = "xfalse"; then
101165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    AC_MSG_ERROR([lcov not found])
101265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
101365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
101465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_ARG_VAR([GENHTML],[the ltp genhtml program])
101565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_PATH_PROG([GENHTML],[genhtml],[false])
101665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  if test "x$GENHTML" = "xfalse"; then
101765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    AC_MSG_ERROR([genhtml not found])
101865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  fi
101965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
102065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  # Set flags needed for gcov
102165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  GCOV_CFLAGS="-O0 -ggdb3 -fprofile-arcs -ftest-coverage"
102265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  GCOV_CXXFLAGS="-O0 -ggdb3 -fprofile-arcs -ftest-coverage"
102365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  GCOV_LIBS="-lgcov"
102465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_SUBST([GCOV_CFLAGS])
102565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_SUBST([GCOV_CXXFLAGS])
102665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  AC_SUBST([GCOV_LIBS])
102765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi # enable_coverage
102865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
102965de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAM_CONDITIONAL([WITH_GCOV],[test "x$enable_coverage" = "xyes"])
103065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
103165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Produce these files, in addition to config.h.
103265de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_CONFIG_FILES(
103365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	Makefile
103465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	libpcre.pc
103565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	libpcre16.pc
103665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	libpcre32.pc
103765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	libpcreposix.pc
103865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	libpcrecpp.pc
103965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	pcre-config
104065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	pcre.h
104165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	pcre_stringpiece.h
104265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich	pcrecpparg.h
104365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich)
104465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
104565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Make the generated script files executable.
104665de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_CONFIG_COMMANDS([script-chmod], [chmod a+x pcre-config])
104765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
104865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Make sure that pcre_chartables.c is removed in case the method for
104965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# creating it was changed by reconfiguration.
105065de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_CONFIG_COMMANDS([delete-old-chartables], [rm -f pcre_chartables.c])
105165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
105265de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichAC_OUTPUT
105365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
105465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# Print out a nice little message after configure is run displaying the
105565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich# chosen options.
105665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
105765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichebcdic_nl_code=n/a
105865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichif test "$enable_ebcdic_nl25" = "yes"; then
105965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  ebcdic_nl_code=0x25
106065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichelif test "$enable_ebcdic" = "yes"; then
106165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich  ebcdic_nl_code=0x15
106265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichfi
106365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
106465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichcat <<EOF
106565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
106665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich$PACKAGE-$VERSION configuration summary:
106765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
106865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Install prefix .................. : ${prefix}
106965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    C preprocessor .................. : ${CPP}
107065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    C compiler ...................... : ${CC}
107165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    C++ preprocessor ................ : ${CXXCPP}
107265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    C++ compiler .................... : ${CXX}
107365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Linker .......................... : ${LD}
107465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    C preprocessor flags ............ : ${CPPFLAGS}
107565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    C compiler flags ................ : ${CFLAGS} ${VISIBILITY_CFLAGS}
107665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    C++ compiler flags .............. : ${CXXFLAGS} ${VISIBILITY_CXXFLAGS}
107765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Linker flags .................... : ${LDFLAGS}
107865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Extra libraries ................. : ${LIBS}
107965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
108065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Build 8 bit pcre library ........ : ${enable_pcre8}
108165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Build 16 bit pcre library ....... : ${enable_pcre16}
108265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Build 32 bit pcre library ....... : ${enable_pcre32}
108365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Build C++ library ............... : ${enable_cpp}
108465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Enable JIT compiling support .... : ${enable_jit}
108565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Enable UTF-8/16/32 support ...... : ${enable_utf}
108665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Unicode properties .............. : ${enable_unicode_properties}
108765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Newline char/sequence ........... : ${enable_newline}
108865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    \R matches only ANYCRLF ......... : ${enable_bsr_anycrlf}
108965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    EBCDIC coding ................... : ${enable_ebcdic}
109065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    EBCDIC code for NL .............. : ${ebcdic_nl_code}
109165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Rebuild char tables ............. : ${enable_rebuild_chartables}
109265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Use stack recursion ............. : ${enable_stack_for_recursion}
109365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    POSIX mem threshold ............. : ${with_posix_malloc_threshold}
109465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Internal link size .............. : ${with_link_size}
109565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Nested parentheses limit ........ : ${with_parens_nest_limit}
109665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Match limit ..................... : ${with_match_limit}
109765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Match limit recursion ........... : ${with_match_limit_recursion}
109865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Build shared libs ............... : ${enable_shared}
109965de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Build static libs ............... : ${enable_static}
110065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Use JIT in pcregrep ............. : ${enable_pcregrep_jit}
110165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Buffer size for pcregrep ........ : ${with_pcregrep_bufsize}
110265de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Link pcregrep with libz ......... : ${enable_pcregrep_libz}
110365de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Link pcregrep with libbz2 ....... : ${enable_pcregrep_libbz2}
110465de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Link pcretest with libedit ...... : ${enable_pcretest_libedit}
110565de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Link pcretest with libreadline .. : ${enable_pcretest_libreadline}
110665de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Valgrind support ................ : ${enable_valgrind}
110765de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich    Code coverage ................... : ${enable_coverage}
110865de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
110965de34233da93a3d65c00b8aad3ff9aad44c57deNick KralevichEOF
111065de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevich
111165de34233da93a3d65c00b8aad3ff9aad44c57deNick Kralevichdnl end configure.ac
1112