1dnl Process this file with autoconf to produce a configure script. 2 3dnl NOTE FOR MAINTAINERS: Do not use minor version numbers 08 or 09 because 4dnl the leading zeros may cause them to be treated as invalid octal constants 5dnl if a PCRE2 user writes code that uses PCRE2_MINOR as a number. There is now 6dnl a check further down that throws an error if 08 or 09 are used. 7 8dnl The PCRE2_PRERELEASE feature is for identifying release candidates. It might 9dnl be defined as -RC2, for example. For real releases, it should be empty. 10 11m4_define(pcre2_major, [10]) 12m4_define(pcre2_minor, [22]) 13m4_define(pcre2_prerelease, []) 14m4_define(pcre2_date, [2016-07-29]) 15 16# NOTE: The CMakeLists.txt file searches for the above variables in the first 17# 50 lines of this file. Please update that if the variables above are moved. 18 19# Libtool shared library interface versions (current:revision:age) 20m4_define(libpcre2_8_version, [4:0:4]) 21m4_define(libpcre2_16_version, [4:0:4]) 22m4_define(libpcre2_32_version, [4:0:4]) 23m4_define(libpcre2_posix_version, [1:0:0]) 24 25AC_PREREQ(2.57) 26AC_INIT(PCRE2, pcre2_major.pcre2_minor[]pcre2_prerelease, , pcre2) 27AC_CONFIG_SRCDIR([src/pcre2.h.in]) 28AM_INIT_AUTOMAKE([dist-bzip2 dist-zip]) 29m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) 30AC_CONFIG_HEADERS(src/config.h) 31 32# This is a new thing required to stop a warning from automake 1.12 33m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) 34 35# This was added at the suggestion of libtoolize (03-Jan-10) 36AC_CONFIG_MACRO_DIR([m4]) 37 38# The default CFLAGS in Autoconf are "-g -O2" for gcc and just "-g" for any 39# other compiler. There doesn't seem to be a standard way of getting rid of the 40# -g (which I don't think is needed for a production library). This fudge seems 41# to achieve the necessary. First, we remember the externally set values of 42# CFLAGS. Then call the AC_PROG_CC macro to find the compiler - if CFLAGS is 43# not set, it will be set to Autoconf's defaults. Afterwards, if the original 44# values were not set, remove the -g from the Autoconf defaults. 45 46remember_set_CFLAGS="$CFLAGS" 47 48AC_PROG_CC 49AM_PROG_CC_C_O 50 51if test "x$remember_set_CFLAGS" = "x" 52then 53 if test "$CFLAGS" = "-g -O2" 54 then 55 CFLAGS="-O2" 56 elif test "$CFLAGS" = "-g" 57 then 58 CFLAGS="" 59 fi 60fi 61 62# Check for a 64-bit integer type 63AC_TYPE_INT64_T 64 65AC_PROG_INSTALL 66AC_LIBTOOL_WIN32_DLL 67LT_INIT 68AC_PROG_LN_S 69 70# Check for GCC visibility feature 71 72PCRE2_VISIBILITY 73 74# Versioning 75 76PCRE2_MAJOR="pcre2_major" 77PCRE2_MINOR="pcre2_minor" 78PCRE2_PRERELEASE="pcre2_prerelease" 79PCRE2_DATE="pcre2_date" 80 81if test "$PCRE2_MINOR" = "08" -o "$PCRE2_MINOR" = "09" 82then 83 echo "***" 84 echo "*** Minor version number $PCRE2_MINOR must not be used. ***" 85 echo "*** Use only 00 to 07 or 10 onwards, to avoid octal issues. ***" 86 echo "***" 87 exit 1 88fi 89 90AC_SUBST(PCRE2_MAJOR) 91AC_SUBST(PCRE2_MINOR) 92AC_SUBST(PCRE2_PRERELEASE) 93AC_SUBST(PCRE2_DATE) 94 95# Set a more sensible default value for $(htmldir). 96if test "x$htmldir" = 'x${docdir}' 97then 98 htmldir='${docdir}/html' 99fi 100 101# Force an error for PCRE1 size options 102AC_ARG_ENABLE(pcre8,,,enable_pcre8=no) 103AC_ARG_ENABLE(pcre16,,,enable_pcre16=no) 104AC_ARG_ENABLE(pcre32,,,enable_pcre32=no) 105 106if test "$enable_pcre8$enable_pcre16$enable_pcre32" != "nonono" 107then 108 echo "** ERROR: Use --[[en|dis]]able-pcre2-[[8|16|32]], not --[[en|dis]]able-pcre[[8|16|32]]" 109 exit 1 110fi 111 112# Handle --disable-pcre2-8 (enabled by default) 113AC_ARG_ENABLE(pcre2-8, 114 AS_HELP_STRING([--disable-pcre2-8], 115 [disable 8 bit character support]), 116 , enable_pcre2_8=unset) 117AC_SUBST(enable_pcre2_8) 118 119# Handle --enable-pcre2-16 (disabled by default) 120AC_ARG_ENABLE(pcre2-16, 121 AS_HELP_STRING([--enable-pcre2-16], 122 [enable 16 bit character support]), 123 , enable_pcre2_16=unset) 124AC_SUBST(enable_pcre2_16) 125 126# Handle --enable-pcre2-32 (disabled by default) 127AC_ARG_ENABLE(pcre2-32, 128 AS_HELP_STRING([--enable-pcre2-32], 129 [enable 32 bit character support]), 130 , enable_pcre2_32=unset) 131AC_SUBST(enable_pcre2_32) 132 133# Handle --dnable-debug (disabled by default) 134AC_ARG_ENABLE(debug, 135 AS_HELP_STRING([--enable-debug], 136 [enable debugging code]), 137 , enable_debug=no) 138 139# Handle --enable-jit (disabled by default) 140AC_ARG_ENABLE(jit, 141 AS_HELP_STRING([--enable-jit], 142 [enable Just-In-Time compiling support]), 143 , enable_jit=no) 144 145# Handle --disable-pcre2grep-jit (enabled by default) 146AC_ARG_ENABLE(pcre2grep-jit, 147 AS_HELP_STRING([--disable-pcre2grep-jit], 148 [disable JIT support in pcre2grep]), 149 , enable_pcre2grep_jit=yes) 150 151# Handle --disable-pcre2grep-callout (enabled by default) but not supported 152# for Windows. 153if test "$HAVE_WINDOWS_H" != "1"; then 154 AC_ARG_ENABLE(pcre2grep-callout, 155 AS_HELP_STRING([--disable-pcre2grep-callout], 156 [disable callout script support in pcre2grep]), 157 , enable_pcre2grep_callout=yes) 158else 159 enable_pcre2grep_callout=no 160fi 161 162# Handle --enable-rebuild-chartables 163AC_ARG_ENABLE(rebuild-chartables, 164 AS_HELP_STRING([--enable-rebuild-chartables], 165 [rebuild character tables in current locale]), 166 , enable_rebuild_chartables=no) 167 168# Handle --disable-unicode (enabled by default) 169AC_ARG_ENABLE(unicode, 170 AS_HELP_STRING([--disable-unicode], 171 [disable Unicode support]), 172 , enable_unicode=unset) 173 174# Handle newline options 175ac_pcre2_newline=lf 176AC_ARG_ENABLE(newline-is-cr, 177 AS_HELP_STRING([--enable-newline-is-cr], 178 [use CR as newline character]), 179 ac_pcre2_newline=cr) 180AC_ARG_ENABLE(newline-is-lf, 181 AS_HELP_STRING([--enable-newline-is-lf], 182 [use LF as newline character (default)]), 183 ac_pcre2_newline=lf) 184AC_ARG_ENABLE(newline-is-crlf, 185 AS_HELP_STRING([--enable-newline-is-crlf], 186 [use CRLF as newline sequence]), 187 ac_pcre2_newline=crlf) 188AC_ARG_ENABLE(newline-is-anycrlf, 189 AS_HELP_STRING([--enable-newline-is-anycrlf], 190 [use CR, LF, or CRLF as newline sequence]), 191 ac_pcre2_newline=anycrlf) 192AC_ARG_ENABLE(newline-is-any, 193 AS_HELP_STRING([--enable-newline-is-any], 194 [use any valid Unicode newline sequence]), 195 ac_pcre2_newline=any) 196enable_newline="$ac_pcre2_newline" 197 198# Handle --enable-bsr-anycrlf 199AC_ARG_ENABLE(bsr-anycrlf, 200 AS_HELP_STRING([--enable-bsr-anycrlf], 201 [\R matches only CR, LF, CRLF by default]), 202 , enable_bsr_anycrlf=no) 203 204# Handle --enable-never-backslash-C 205AC_ARG_ENABLE(never-backslash-C, 206 AS_HELP_STRING([--enable-never-backslash-C], 207 [use of \C causes an error]), 208 , enable_never_backslash_C=no) 209 210# Handle --enable-ebcdic 211AC_ARG_ENABLE(ebcdic, 212 AS_HELP_STRING([--enable-ebcdic], 213 [assume EBCDIC coding rather than ASCII; incompatible with --enable-utf; use only in (uncommon) EBCDIC environments; it implies --enable-rebuild-chartables]), 214 , enable_ebcdic=no) 215 216# Handle --enable-ebcdic-nl25 217AC_ARG_ENABLE(ebcdic-nl25, 218 AS_HELP_STRING([--enable-ebcdic-nl25], 219 [set EBCDIC code for NL to 0x25 instead of 0x15; it implies --enable-ebcdic]), 220 , enable_ebcdic_nl25=no) 221 222# Handle --disable-stack-for-recursion 223AC_ARG_ENABLE(stack-for-recursion, 224 AS_HELP_STRING([--disable-stack-for-recursion], 225 [don't use stack recursion when matching]), 226 , enable_stack_for_recursion=yes) 227 228# Handle --enable-pcre2grep-libz 229AC_ARG_ENABLE(pcre2grep-libz, 230 AS_HELP_STRING([--enable-pcre2grep-libz], 231 [link pcre2grep with libz to handle .gz files]), 232 , enable_pcre2grep_libz=no) 233 234# Handle --enable-pcre2grep-libbz2 235AC_ARG_ENABLE(pcre2grep-libbz2, 236 AS_HELP_STRING([--enable-pcre2grep-libbz2], 237 [link pcre2grep with libbz2 to handle .bz2 files]), 238 , enable_pcre2grep_libbz2=no) 239 240# Handle --with-pcre2grep-bufsize=N 241AC_ARG_WITH(pcre2grep-bufsize, 242 AS_HELP_STRING([--with-pcre2grep-bufsize=N], 243 [pcre2grep buffer size (default=20480, minimum=8192)]), 244 , with_pcre2grep_bufsize=20480) 245 246# Handle --enable-pcre2test-libedit 247AC_ARG_ENABLE(pcre2test-libedit, 248 AS_HELP_STRING([--enable-pcre2test-libedit], 249 [link pcre2test with libedit]), 250 , enable_pcre2test_libedit=no) 251 252# Handle --enable-pcre2test-libreadline 253AC_ARG_ENABLE(pcre2test-libreadline, 254 AS_HELP_STRING([--enable-pcre2test-libreadline], 255 [link pcre2test with libreadline]), 256 , enable_pcre2test_libreadline=no) 257 258# Handle --with-link-size=N 259AC_ARG_WITH(link-size, 260 AS_HELP_STRING([--with-link-size=N], 261 [internal link size (2, 3, or 4 allowed; default=2)]), 262 , with_link_size=2) 263 264# Handle --with-parens-nest-limit=N 265AC_ARG_WITH(parens-nest-limit, 266 AS_HELP_STRING([--with-parens-nest-limit=N], 267 [nested parentheses limit (default=250)]), 268 , with_parens_nest_limit=250) 269 270# Handle --with-match-limit=N 271AC_ARG_WITH(match-limit, 272 AS_HELP_STRING([--with-match-limit=N], 273 [default limit on internal looping (default=10000000)]), 274 , with_match_limit=10000000) 275 276# Handle --with-match-limit_recursion=N 277# 278# Note: In config.h, the default is to define MATCH_LIMIT_RECURSION 279# symbolically as MATCH_LIMIT, which in turn is defined to be some numeric 280# value (e.g. 10000000). MATCH_LIMIT_RECURSION can otherwise be set to some 281# different numeric value (or even the same numeric value as MATCH_LIMIT, 282# though no longer defined in terms of the latter). 283# 284AC_ARG_WITH(match-limit-recursion, 285 AS_HELP_STRING([--with-match-limit-recursion=N], 286 [default limit on internal recursion (default=MATCH_LIMIT)]), 287 , with_match_limit_recursion=MATCH_LIMIT) 288 289# Handle --enable-valgrind 290AC_ARG_ENABLE(valgrind, 291 AS_HELP_STRING([--enable-valgrind], 292 [valgrind support]), 293 , enable_valgrind=no) 294 295# Enable code coverage reports using gcov 296AC_ARG_ENABLE(coverage, 297 AS_HELP_STRING([--enable-coverage], 298 [enable code coverage reports using gcov]), 299 , enable_coverage=no) 300 301# Set the default value for pcre2-8 302if test "x$enable_pcre2_8" = "xunset" 303then 304 enable_pcre2_8=yes 305fi 306 307# Set the default value for pcre2-16 308if test "x$enable_pcre2_16" = "xunset" 309then 310 enable_pcre2_16=no 311fi 312 313# Set the default value for pcre2-32 314if test "x$enable_pcre2_32" = "xunset" 315then 316 enable_pcre2_32=no 317fi 318 319# Make sure at least one library is selected 320if test "x$enable_pcre2_8$enable_pcre2_16$enable_pcre2_32" = "xnonono" 321then 322 AC_MSG_ERROR([At least one of the 8, 16 or 32 bit libraries must be enabled]) 323fi 324 325# Unicode is enabled by default. 326if test "x$enable_unicode" = "xunset" 327then 328 enable_unicode=yes 329fi 330 331# Convert the newline identifier into the appropriate integer value. These must 332# agree with the PCRE2_NEWLINE_xxx values in pcre2.h. 333 334case "$enable_newline" in 335 cr) ac_pcre2_newline_value=1 ;; 336 lf) ac_pcre2_newline_value=2 ;; 337 crlf) ac_pcre2_newline_value=3 ;; 338 any) ac_pcre2_newline_value=4 ;; 339 anycrlf) ac_pcre2_newline_value=5 ;; 340 *) 341 AC_MSG_ERROR([invalid argument \"$enable_newline\" to --enable-newline option]) 342 ;; 343esac 344 345# --enable-ebcdic-nl25 implies --enable-ebcdic 346if test "x$enable_ebcdic_nl25" = "xyes"; then 347 enable_ebcdic=yes 348fi 349 350# Make sure that if enable_ebcdic is set, rebuild_chartables is also enabled. 351# Also check that UTF support is not requested, because PCRE2 cannot handle 352# EBCDIC and UTF in the same build. To do so it would need to use different 353# character constants depending on the mode. Also, EBCDIC cannot be used with 354# 16-bit and 32-bit libraries. 355# 356if test "x$enable_ebcdic" = "xyes"; then 357 enable_rebuild_chartables=yes 358 if test "x$enable_unicode" = "xyes"; then 359 AC_MSG_ERROR([support for EBCDIC and Unicode cannot be enabled at the same time]) 360 fi 361 if test "x$enable_pcre2_16" = "xyes" -o "x$enable_pcre2_32" = "xyes"; then 362 AC_MSG_ERROR([EBCDIC support is available only for the 8-bit library]) 363 fi 364fi 365 366# Check argument to --with-link-size 367case "$with_link_size" in 368 2|3|4) ;; 369 *) 370 AC_MSG_ERROR([invalid argument \"$with_link_size\" to --with-link-size option]) 371 ;; 372esac 373 374AH_TOP([ 375/* PCRE2 is written in Standard C, but there are a few non-standard things it 376can cope with, allowing it to run on SunOS4 and other "close to standard" 377systems. 378 379In environments that support the GNU autotools, config.h.in is converted into 380config.h by the "configure" script. In environments that use CMake, 381config-cmake.in is converted into config.h. If you are going to build PCRE2 "by 382hand" without using "configure" or CMake, you should copy the distributed 383config.h.generic to config.h, and edit the macro definitions to be the way you 384need them. You must then add -DHAVE_CONFIG_H to all of your compile commands, 385so that config.h is included at the start of every source. 386 387Alternatively, you can avoid editing by using -D on the compiler command line 388to set the macro values. In this case, you do not have to set -DHAVE_CONFIG_H, 389but if you do, default values will be taken from config.h for non-boolean 390macros that are not defined on the command line. 391 392Boolean macros such as HAVE_STDLIB_H and SUPPORT_PCRE2_8 should either be defined 393(conventionally to 1) for TRUE, and not defined at all for FALSE. All such 394macros are listed as a commented #undef in config.h.generic. Macros such as 395MATCH_LIMIT, whose actual value is relevant, have defaults defined, but are 396surrounded by #ifndef/#endif lines so that the value can be overridden by -D. 397 398PCRE2 uses memmove() if HAVE_MEMMOVE is defined; otherwise it uses bcopy() if 399HAVE_BCOPY is defined. If your system has neither bcopy() nor memmove(), make 400sure both macros are undefined; an emulation function will then be used. */]) 401 402# Checks for header files. 403AC_HEADER_STDC 404AC_CHECK_HEADERS(limits.h sys/types.h sys/stat.h dirent.h) 405AC_CHECK_HEADERS([windows.h], [HAVE_WINDOWS_H=1]) 406AC_CHECK_HEADERS([sys/wait.h], [HAVE_SYS_WAIT_H=1]) 407 408# Conditional compilation 409AM_CONDITIONAL(WITH_PCRE2_8, test "x$enable_pcre2_8" = "xyes") 410AM_CONDITIONAL(WITH_PCRE2_16, test "x$enable_pcre2_16" = "xyes") 411AM_CONDITIONAL(WITH_PCRE2_32, test "x$enable_pcre2_32" = "xyes") 412AM_CONDITIONAL(WITH_DEBUG, test "x$enable_debug" = "xyes") 413AM_CONDITIONAL(WITH_REBUILD_CHARTABLES, test "x$enable_rebuild_chartables" = "xyes") 414AM_CONDITIONAL(WITH_JIT, test "x$enable_jit" = "xyes") 415AM_CONDITIONAL(WITH_UNICODE, test "x$enable_unicode" = "xyes") 416AM_CONDITIONAL(WITH_VALGRIND, test "x$enable_valgrind" = "xyes") 417 418# Checks for typedefs, structures, and compiler characteristics. 419 420AC_C_CONST 421AC_TYPE_SIZE_T 422 423# Checks for library functions. 424 425AC_CHECK_FUNCS(bcopy memmove strerror) 426 427# Check for the availability of libz (aka zlib) 428 429AC_CHECK_HEADERS([zlib.h], [HAVE_ZLIB_H=1]) 430AC_CHECK_LIB([z], [gzopen], [HAVE_LIBZ=1]) 431 432# Check for the availability of libbz2. Originally we just used AC_CHECK_LIB, 433# as for libz. However, this had the following problem, diagnosed and fixed by 434# a user: 435# 436# - libbz2 uses the Pascal calling convention (WINAPI) for the functions 437# under Win32. 438# - The standard autoconf AC_CHECK_LIB fails to include "bzlib.h", 439# therefore missing the function definition. 440# - The compiler thus generates a "C" signature for the test function. 441# - The linker fails to find the "C" function. 442# - PCRE2 fails to configure if asked to do so against libbz2. 443# 444# Solution: 445# 446# - Replace the AC_CHECK_LIB test with a custom test. 447 448AC_CHECK_HEADERS([bzlib.h], [HAVE_BZLIB_H=1]) 449# Original test 450# AC_CHECK_LIB([bz2], [BZ2_bzopen], [HAVE_LIBBZ2=1]) 451# 452# Custom test follows 453 454AC_MSG_CHECKING([for libbz2]) 455OLD_LIBS="$LIBS" 456LIBS="$LIBS -lbz2" 457AC_LINK_IFELSE([AC_LANG_PROGRAM([[ 458#ifdef HAVE_BZLIB_H 459#include <bzlib.h> 460#endif]], 461[[return (int)BZ2_bzopen("conftest", "rb");]])], 462[AC_MSG_RESULT([yes]);HAVE_LIBBZ2=1; break;], 463AC_MSG_RESULT([no])) 464LIBS="$OLD_LIBS" 465 466# Check for the availabiity of libreadline 467 468if test "$enable_pcre2test_libreadline" = "yes"; then 469 AC_CHECK_HEADERS([readline/readline.h], [HAVE_READLINE_H=1]) 470 AC_CHECK_HEADERS([readline/history.h], [HAVE_HISTORY_H=1]) 471 AC_CHECK_LIB([readline], [readline], [LIBREADLINE="-lreadline"], 472 [unset ac_cv_lib_readline_readline; 473 AC_CHECK_LIB([readline], [readline], [LIBREADLINE="-ltinfo"], 474 [unset ac_cv_lib_readline_readline; 475 AC_CHECK_LIB([readline], [readline], [LIBREADLINE="-lcurses"], 476 [unset ac_cv_lib_readline_readline; 477 AC_CHECK_LIB([readline], [readline], [LIBREADLINE="-lncurses"], 478 [unset ac_cv_lib_readline_readline; 479 AC_CHECK_LIB([readline], [readline], [LIBREADLINE="-lncursesw"], 480 [unset ac_cv_lib_readline_readline; 481 AC_CHECK_LIB([readline], [readline], [LIBREADLINE="-ltermcap"], 482 [LIBREADLINE=""], 483 [-ltermcap])], 484 [-lncursesw])], 485 [-lncurses])], 486 [-lcurses])], 487 [-ltinfo])]) 488 AC_SUBST(LIBREADLINE) 489 if test -n "$LIBREADLINE"; then 490 if test "$LIBREADLINE" != "-lreadline"; then 491 echo "-lreadline needs $LIBREADLINE" 492 LIBREADLINE="-lreadline $LIBREADLINE" 493 fi 494 fi 495fi 496 497 498# Check for the availability of libedit. Different distributions put its 499# headers in different places. Try to cover the most common ones. 500 501if test "$enable_pcre2test_libedit" = "yes"; then 502 AC_CHECK_HEADERS([editline/readline.h], [HAVE_EDITLINE_READLINE_H=1], 503 [AC_CHECK_HEADERS([edit/readline/readline.h], [HAVE_READLINE_READLINE_H=1], 504 [AC_CHECK_HEADERS([readline/readline.h], [HAVE_READLINE_READLINE_H=1])])]) 505 AC_CHECK_LIB([edit], [readline], [LIBEDIT="-ledit"]) 506fi 507 508# This facilitates -ansi builds under Linux 509dnl AC_DEFINE([_GNU_SOURCE], [], [Enable GNU extensions in glibc]) 510 511PCRE2_STATIC_CFLAG="" 512if test "x$enable_shared" = "xno" ; then 513 AC_DEFINE([PCRE2_STATIC], [1], [ 514 Define to any value if linking statically (TODO: make nice with Libtool)]) 515 PCRE2_STATIC_CFLAG="-DPCRE2_STATIC" 516fi 517AC_SUBST(PCRE2_STATIC_CFLAG) 518 519# Here is where PCRE2-specific defines are handled 520 521if test "$enable_pcre2_8" = "yes"; then 522 AC_DEFINE([SUPPORT_PCRE2_8], [], [ 523 Define to any value to enable the 8 bit PCRE2 library.]) 524fi 525 526if test "$enable_pcre2_16" = "yes"; then 527 AC_DEFINE([SUPPORT_PCRE2_16], [], [ 528 Define to any value to enable the 16 bit PCRE2 library.]) 529fi 530 531if test "$enable_pcre2_32" = "yes"; then 532 AC_DEFINE([SUPPORT_PCRE2_32], [], [ 533 Define to any value to enable the 32 bit PCRE2 library.]) 534fi 535 536if test "$enable_debug" = "yes"; then 537 AC_DEFINE([PCRE2_DEBUG], [], [ 538 Define to any value to include debugging code.]) 539fi 540 541# Unless running under Windows, JIT support requires pthreads. 542 543if test "$enable_jit" = "yes"; then 544 if test "$HAVE_WINDOWS_H" != "1"; then 545 AX_PTHREAD([], [AC_MSG_ERROR([JIT support requires pthreads])]) 546 CC="$PTHREAD_CC" 547 CFLAGS="$PTHREAD_CFLAGS $CFLAGS" 548 LIBS="$PTHREAD_LIBS $LIBS" 549 fi 550 AC_DEFINE([SUPPORT_JIT], [], [ 551 Define to any value to enable support for Just-In-Time compiling.]) 552else 553 enable_pcre2grep_jit="no" 554fi 555 556if test "$enable_pcre2grep_jit" = "yes"; then 557 AC_DEFINE([SUPPORT_PCRE2GREP_JIT], [], [ 558 Define to any value to enable JIT support in pcre2grep.]) 559fi 560 561# Currently pcre2grep callout string is not supported under Windows. 562 563if test "$enable_pcre2grep_callout" = "yes"; then 564 if test "$HAVE_WINDOWS_H" != "1"; then 565 if test "$HAVE_SYS_WAIT_H" != "1"; then 566 AC_MSG_ERROR([Callout script support needs sys/wait.h.]) 567 fi 568 AC_DEFINE([SUPPORT_PCRE2GREP_CALLOUT], [], [ 569 Define to any value to enable callout script support in pcre2grep.]) 570 else 571 AC_MSG_WARN([Callout script support is not available for Windows: disabled]) 572 enable_pcre2grep_callout=no 573 fi 574fi 575 576if test "$enable_unicode" = "yes"; then 577 AC_DEFINE([SUPPORT_UNICODE], [], [ 578 Define to any value to enable support for Unicode and UTF encoding. 579 This will work even in an EBCDIC environment, but it is incompatible 580 with the EBCDIC macro. That is, PCRE2 can support *either* EBCDIC 581 code *or* ASCII/Unicode, but not both at once.]) 582fi 583 584if test "$enable_stack_for_recursion" = "no"; then 585 AC_DEFINE([HEAP_MATCH_RECURSE], [], [ 586 PCRE2 uses recursive function calls to handle backtracking while 587 matching. This can sometimes be a problem on systems that have 588 stacks of limited size. Define HEAP_MATCH_RECURSE to any value to get a 589 version that doesn't use recursion in the match() function; instead 590 it creates its own stack by steam using memory from the heap. For more 591 detail, see the comments and other stuff just above the match() function.]) 592fi 593 594if test "$enable_pcre2grep_libz" = "yes"; then 595 AC_DEFINE([SUPPORT_LIBZ], [], [ 596 Define to any value to allow pcre2grep to be linked with libz, so that it is 597 able to handle .gz files.]) 598fi 599 600if test "$enable_pcre2grep_libbz2" = "yes"; then 601 AC_DEFINE([SUPPORT_LIBBZ2], [], [ 602 Define to any value to allow pcre2grep to be linked with libbz2, so that it 603 is able to handle .bz2 files.]) 604fi 605 606if test $with_pcre2grep_bufsize -lt 8192 ; then 607 AC_MSG_WARN([$with_pcre2grep_bufsize is too small for --with-pcre2grep-bufsize; using 8192]) 608 with_pcre2grep_bufsize="8192" 609else 610 if test $? -gt 1 ; then 611 AC_MSG_ERROR([Bad value for --with-pcre2grep-bufsize]) 612 fi 613fi 614 615AC_DEFINE_UNQUOTED([PCRE2GREP_BUFSIZE], [$with_pcre2grep_bufsize], [ 616 The value of PCRE2GREP_BUFSIZE determines the size of buffer used by pcre2grep 617 to hold parts of the file it is searching. This is also the minimum value. 618 The actual amount of memory used by pcre2grep is three times this number, 619 because it allows for the buffering of "before" and "after" lines.]) 620 621if test "$enable_pcre2test_libedit" = "yes"; then 622 AC_DEFINE([SUPPORT_LIBEDIT], [], [ 623 Define to any value to allow pcre2test to be linked with libedit.]) 624 LIBREADLINE="$LIBEDIT" 625elif test "$enable_pcre2test_libreadline" = "yes"; then 626 AC_DEFINE([SUPPORT_LIBREADLINE], [], [ 627 Define to any value to allow pcre2test to be linked with libreadline.]) 628fi 629 630AC_DEFINE_UNQUOTED([NEWLINE_DEFAULT], [$ac_pcre2_newline_value], [ 631 The value of NEWLINE_DEFAULT determines the default newline character 632 sequence. PCRE2 client programs can override this by selecting other values 633 at run time. The valid values are 1 (CR), 2 (LF), 3 (CRLF), 4 (ANY), 634 and 5 (ANYCRLF).]) 635 636if test "$enable_bsr_anycrlf" = "yes"; then 637 AC_DEFINE([BSR_ANYCRLF], [], [ 638 By default, the \R escape sequence matches any Unicode line ending 639 character or sequence of characters. If BSR_ANYCRLF is defined (to any 640 value), this is changed so that backslash-R matches only CR, LF, or CRLF. 641 The build-time default can be overridden by the user of PCRE2 at runtime.]) 642fi 643 644if test "$enable_never_backslash_C" = "yes"; then 645 AC_DEFINE([NEVER_BACKSLASH_C], [], [ 646 Defining NEVER_BACKSLASH_C locks out the use of \C in all patterns.]) 647fi 648 649AC_DEFINE_UNQUOTED([LINK_SIZE], [$with_link_size], [ 650 The value of LINK_SIZE determines the number of bytes used to store 651 links as offsets within the compiled regex. The default is 2, which 652 allows for compiled patterns up to 64K long. This covers the vast 653 majority of cases. However, PCRE2 can also be compiled to use 3 or 4 654 bytes instead. This allows for longer patterns in extreme cases.]) 655 656AC_DEFINE_UNQUOTED([PARENS_NEST_LIMIT], [$with_parens_nest_limit], [ 657 The value of PARENS_NEST_LIMIT specifies the maximum depth of nested 658 parentheses (of any kind) in a pattern. This limits the amount of system 659 stack that is used while compiling a pattern.]) 660 661AC_DEFINE_UNQUOTED([MATCH_LIMIT], [$with_match_limit], [ 662 The value of MATCH_LIMIT determines the default number of times the 663 internal match() function can be called during a single execution of 664 pcre2_match(). There is a runtime interface for setting a different 665 limit. The limit exists in order to catch runaway regular 666 expressions that take for ever to determine that they do not match. 667 The default is set very large so that it does not accidentally catch 668 legitimate cases.]) 669 670AC_DEFINE_UNQUOTED([MATCH_LIMIT_RECURSION], [$with_match_limit_recursion], [ 671 The above limit applies to all calls of match(), whether or not they 672 increase the recursion depth. In some environments it is desirable 673 to limit the depth of recursive calls of match() more strictly, in 674 order to restrict the maximum amount of stack (or heap, if 675 HEAP_MATCH_RECURSE is defined) that is used. The value of 676 MATCH_LIMIT_RECURSION applies only to recursive calls of match(). To 677 have any useful effect, it must be less than the value of 678 MATCH_LIMIT. The default is to use the same value as MATCH_LIMIT. 679 There is a runtime method for setting a different limit.]) 680 681AC_DEFINE([MAX_NAME_SIZE], [32], [ 682 This limit is parameterized just in case anybody ever wants to 683 change it. Care must be taken if it is increased, because it guards 684 against integer overflow caused by enormously large patterns.]) 685 686AC_DEFINE([MAX_NAME_COUNT], [10000], [ 687 This limit is parameterized just in case anybody ever wants to 688 change it. Care must be taken if it is increased, because it guards 689 against integer overflow caused by enormously large patterns.]) 690 691AH_VERBATIM([PCRE2_EXP_DEFN], [ 692/* If you are compiling for a system other than a Unix-like system or 693 Win32, and it needs some magic to be inserted before the definition 694 of a function that is exported by the library, define this macro to 695 contain the relevant magic. If you do not define this macro, a suitable 696 __declspec value is used for Windows systems; in other environments 697 "extern" is used for a C compiler and "extern C" for a C++ compiler. 698 This macro apears at the start of every exported function that is part 699 of the external API. It does not appear on functions that are "external" 700 in the C sense, but which are internal to the library. */ 701#undef PCRE2_EXP_DEFN]) 702 703if test "$enable_ebcdic" = "yes"; then 704 AC_DEFINE_UNQUOTED([EBCDIC], [], [ 705 If you are compiling for a system that uses EBCDIC instead of ASCII 706 character codes, define this macro to any value. When EBCDIC is set, PCRE2 707 assumes that all input strings are in EBCDIC. If you do not define this 708 macro, PCRE2 will assume input strings are ASCII or UTF-8/16/32 Unicode. It 709 is not possible to build a version of PCRE2 that supports both EBCDIC and 710 UTF-8/16/32.]) 711fi 712 713if test "$enable_ebcdic_nl25" = "yes"; then 714 AC_DEFINE_UNQUOTED([EBCDIC_NL25], [], [ 715 In an EBCDIC environment, define this macro to any value to arrange for 716 the NL character to be 0x25 instead of the default 0x15. NL plays the role 717 that LF does in an ASCII/Unicode environment.]) 718fi 719 720if test "$enable_valgrind" = "yes"; then 721 AC_DEFINE_UNQUOTED([SUPPORT_VALGRIND], [], [ 722 Define to any value for valgrind support to find invalid memory reads.]) 723fi 724 725# Platform specific issues 726NO_UNDEFINED= 727EXPORT_ALL_SYMBOLS= 728case $host_os in 729 cygwin* | mingw* ) 730 if test X"$enable_shared" = Xyes; then 731 NO_UNDEFINED="-no-undefined" 732 EXPORT_ALL_SYMBOLS="-Wl,--export-all-symbols" 733 fi 734 ;; 735esac 736 737# The extra LDFLAGS for each particular library. The libpcre2*_version values 738# are m4 variables, assigned above. 739 740EXTRA_LIBPCRE2_8_LDFLAGS="$EXTRA_LIBPCRE2_8_LDFLAGS \ 741 $NO_UNDEFINED -version-info libpcre2_8_version" 742 743EXTRA_LIBPCRE2_16_LDFLAGS="$EXTRA_LIBPCRE2_16_LDFLAGS \ 744 $NO_UNDEFINED -version-info libpcre2_16_version" 745 746EXTRA_LIBPCRE2_32_LDFLAGS="$EXTRA_LIBPCRE2_32_LDFLAGS \ 747 $NO_UNDEFINED -version-info libpcre2_32_version" 748 749EXTRA_LIBPCRE2_POSIX_LDFLAGS="$EXTRA_LIBPCRE2_POSIX_LDFLAGS \ 750 $NO_UNDEFINED -version-info libpcre2_posix_version" 751 752AC_SUBST(EXTRA_LIBPCRE2_8_LDFLAGS) 753AC_SUBST(EXTRA_LIBPCRE2_16_LDFLAGS) 754AC_SUBST(EXTRA_LIBPCRE2_32_LDFLAGS) 755AC_SUBST(EXTRA_LIBPCRE2_POSIX_LDFLAGS) 756 757# When we run 'make distcheck', use these arguments. Turning off compiler 758# optimization makes it run faster. 759DISTCHECK_CONFIGURE_FLAGS="CFLAGS='' CXXFLAGS='' --enable-pcre2-16 --enable-pcre2-32 --enable-jit --enable-utf" 760AC_SUBST(DISTCHECK_CONFIGURE_FLAGS) 761 762# Check that, if --enable-pcre2grep-libz or --enable-pcre2grep-libbz2 is 763# specified, the relevant library is available. 764 765if test "$enable_pcre2grep_libz" = "yes"; then 766 if test "$HAVE_ZLIB_H" != "1"; then 767 echo "** Cannot --enable-pcre2grep-libz because zlib.h was not found" 768 exit 1 769 fi 770 if test "$HAVE_LIBZ" != "1"; then 771 echo "** Cannot --enable-pcre2grep-libz because libz was not found" 772 exit 1 773 fi 774 LIBZ="-lz" 775fi 776AC_SUBST(LIBZ) 777 778if test "$enable_pcre2grep_libbz2" = "yes"; then 779 if test "$HAVE_BZLIB_H" != "1"; then 780 echo "** Cannot --enable-pcre2grep-libbz2 because bzlib.h was not found" 781 exit 1 782 fi 783 if test "$HAVE_LIBBZ2" != "1"; then 784 echo "** Cannot --enable-pcre2grep-libbz2 because libbz2 was not found" 785 exit 1 786 fi 787 LIBBZ2="-lbz2" 788fi 789AC_SUBST(LIBBZ2) 790 791# Similarly for --enable-pcre2test-readline 792 793if test "$enable_pcre2test_libedit" = "yes"; then 794 if test "$enable_pcre2test_libreadline" = "yes"; then 795 echo "** Cannot use both --enable-pcre2test-libedit and --enable-pcre2test-readline" 796 exit 1 797 fi 798 if test "$HAVE_EDITLINE_READLINE_H" != "1" -a \ 799 "$HAVE_READLINE_READLINE_H" != "1"; then 800 echo "** Cannot --enable-pcre2test-libedit because neither editline/readline.h" 801 echo "** nor readline/readline.h was found." 802 exit 1 803 fi 804 if test -z "$LIBEDIT"; then 805 echo "** Cannot --enable-pcre2test-libedit because libedit library was not found." 806 exit 1 807 fi 808fi 809 810if test "$enable_pcre2test_libreadline" = "yes"; then 811 if test "$HAVE_READLINE_H" != "1"; then 812 echo "** Cannot --enable-pcre2test-readline because readline/readline.h was not found." 813 exit 1 814 fi 815 if test "$HAVE_HISTORY_H" != "1"; then 816 echo "** Cannot --enable-pcre2test-readline because readline/history.h was not found." 817 exit 1 818 fi 819 if test -z "$LIBREADLINE"; then 820 echo "** Cannot --enable-pcre2test-readline because readline library was not found." 821 exit 1 822 fi 823fi 824 825# Handle valgrind support 826 827if test "$enable_valgrind" = "yes"; then 828 m4_ifdef([PKG_CHECK_MODULES], 829 [PKG_CHECK_MODULES([VALGRIND],[valgrind])], 830 [AC_MSG_ERROR([pkg-config not supported])]) 831fi 832 833# Handle code coverage reporting support 834if test "$enable_coverage" = "yes"; then 835 if test "x$GCC" != "xyes"; then 836 AC_MSG_ERROR([Code coverage reports can only be generated when using GCC]) 837 fi 838 839 # ccache is incompatible with gcov 840 AC_PATH_PROG([SHTOOL],[shtool],[false]) 841 case `$SHTOOL path $CC` in 842 *ccache*) cc_ccache=yes;; 843 *) cc_ccache=no;; 844 esac 845 846 if test "$cc_ccache" = "yes"; then 847 if test -z "$CCACHE_DISABLE" -o "$CCACHE_DISABLE" != "1"; then 848 AC_MSG_ERROR([must export CCACHE_DISABLE=1 to disable ccache for code coverage]) 849 fi 850 fi 851 852 AC_ARG_VAR([LCOV],[the ltp lcov program]) 853 AC_PATH_PROG([LCOV],[lcov],[false]) 854 if test "x$LCOV" = "xfalse"; then 855 AC_MSG_ERROR([lcov not found]) 856 fi 857 858 AC_ARG_VAR([GENHTML],[the ltp genhtml program]) 859 AC_PATH_PROG([GENHTML],[genhtml],[false]) 860 if test "x$GENHTML" = "xfalse"; then 861 AC_MSG_ERROR([genhtml not found]) 862 fi 863 864 # Set flags needed for gcov 865 GCOV_CFLAGS="-O0 -ggdb3 -fprofile-arcs -ftest-coverage" 866 GCOV_CXXFLAGS="-O0 -ggdb3 -fprofile-arcs -ftest-coverage" 867 GCOV_LIBS="-lgcov" 868 AC_SUBST([GCOV_CFLAGS]) 869 AC_SUBST([GCOV_CXXFLAGS]) 870 AC_SUBST([GCOV_LIBS]) 871fi # enable_coverage 872 873AM_CONDITIONAL([WITH_GCOV],[test "x$enable_coverage" = "xyes"]) 874 875# Produce these files, in addition to config.h. 876AC_CONFIG_FILES( 877 Makefile 878 libpcre2-8.pc 879 libpcre2-16.pc 880 libpcre2-32.pc 881 libpcre2-posix.pc 882 pcre2-config 883 src/pcre2.h 884) 885 886# Make the generated script files executable. 887AC_CONFIG_COMMANDS([script-chmod], [chmod a+x pcre2-config]) 888 889# Make sure that pcre2_chartables.c is removed in case the method for 890# creating it was changed by reconfiguration. 891AC_CONFIG_COMMANDS([delete-old-chartables], [rm -f pcre2_chartables.c]) 892 893AC_OUTPUT 894 895# Print out a nice little message after configure is run displaying the 896# chosen options. 897 898ebcdic_nl_code=n/a 899if test "$enable_ebcdic_nl25" = "yes"; then 900 ebcdic_nl_code=0x25 901elif test "$enable_ebcdic" = "yes"; then 902 ebcdic_nl_code=0x15 903fi 904 905cat <<EOF 906 907$PACKAGE-$VERSION configuration summary: 908 909 Install prefix .................. : ${prefix} 910 C preprocessor .................. : ${CPP} 911 C compiler ...................... : ${CC} 912 Linker .......................... : ${LD} 913 C preprocessor flags ............ : ${CPPFLAGS} 914 C compiler flags ................ : ${CFLAGS} ${VISIBILITY_CFLAGS} 915 Linker flags .................... : ${LDFLAGS} 916 Extra libraries ................. : ${LIBS} 917 918 Build 8-bit pcre2 library ....... : ${enable_pcre2_8} 919 Build 16-bit pcre2 library ...... : ${enable_pcre2_16} 920 Build 32-bit pcre2 library ...... : ${enable_pcre2_32} 921 Include debugging code .......... : ${enable_debug} 922 Enable JIT compiling support .... : ${enable_jit} 923 Enable Unicode support .......... : ${enable_unicode} 924 Newline char/sequence ........... : ${enable_newline} 925 \R matches only ANYCRLF ......... : ${enable_bsr_anycrlf} 926 \C is disabled .................. : ${enable_never_backslash_C} 927 EBCDIC coding ................... : ${enable_ebcdic} 928 EBCDIC code for NL .............. : ${ebcdic_nl_code} 929 Rebuild char tables ............. : ${enable_rebuild_chartables} 930 Use stack recursion ............. : ${enable_stack_for_recursion} 931 Internal link size .............. : ${with_link_size} 932 Nested parentheses limit ........ : ${with_parens_nest_limit} 933 Match limit ..................... : ${with_match_limit} 934 Match limit recursion ........... : ${with_match_limit_recursion} 935 Build shared libs ............... : ${enable_shared} 936 Build static libs ............... : ${enable_static} 937 Use JIT in pcre2grep ............ : ${enable_pcre2grep_jit} 938 Enable callouts in pcre2grep .... : ${enable_pcre2grep_callout} 939 Buffer size for pcre2grep ....... : ${with_pcre2grep_bufsize} 940 Link pcre2grep with libz ........ : ${enable_pcre2grep_libz} 941 Link pcre2grep with libbz2 ...... : ${enable_pcre2grep_libbz2} 942 Link pcre2test with libedit ..... : ${enable_pcre2test_libedit} 943 Link pcre2test with libreadline . : ${enable_pcre2test_libreadline} 944 Valgrind support ................ : ${enable_valgrind} 945 Code coverage ................... : ${enable_coverage} 946 947EOF 948 949dnl end configure.ac 950