1 |
dnl Process this file with autoconf to produce a configure script. |
dnl Process this file with autoconf to produce a configure script. |
2 |
|
|
3 |
dnl NOTE FOR MAINTAINERS: Do not use major or minor version numbers with |
dnl NOTE FOR MAINTAINERS: Do not use minor version numbers 08 or 09 because |
4 |
dnl leading zeros, because they may be treated as octal constants. The |
dnl the leading zeros may cause them to be treated as invalid octal constants |
5 |
dnl PCRE_PRERELEASE feature is for identifying release candidates. It might |
dnl if a PCRE user writes code that uses PCRE_MINOR as a number. There is now |
6 |
dnl be defined as -RC2, for example. For real releases, it should be defined |
dnl a check further down that throws an error if 08 or 09 are used. |
7 |
dnl empty. |
|
8 |
|
dnl The PCRE_PRERELEASE feature is for identifying release candidates. It might |
9 |
|
dnl be defined as -RC2, for example. For real releases, it should be empty. |
10 |
|
|
11 |
m4_define(pcre_major, [8]) |
m4_define(pcre_major, [8]) |
12 |
m4_define(pcre_minor, [00]) |
m4_define(pcre_minor, [02]) |
13 |
m4_define(pcre_prerelease, [-RC1]) |
m4_define(pcre_prerelease, []) |
14 |
m4_define(pcre_date, [2009-04-23]) |
m4_define(pcre_date, [2010-03-19]) |
15 |
|
|
16 |
# Libtool shared library interface versions (current:revision:age) |
# Libtool shared library interface versions (current:revision:age) |
17 |
m4_define(libpcre_version, [0:1:0]) |
m4_define(libpcre_version, [0:1:0]) |
24 |
AM_INIT_AUTOMAKE([dist-bzip2 dist-zip]) |
AM_INIT_AUTOMAKE([dist-bzip2 dist-zip]) |
25 |
AC_CONFIG_HEADERS(config.h) |
AC_CONFIG_HEADERS(config.h) |
26 |
|
|
27 |
|
# This was added at the suggestion of libtoolize (03-Jan-10) |
28 |
|
AC_CONFIG_MACRO_DIR([m4]) |
29 |
|
|
30 |
# The default CFLAGS and CXXFLAGS in Autoconf are "-g -O2" for gcc and just |
# The default CFLAGS and CXXFLAGS in Autoconf are "-g -O2" for gcc and just |
31 |
# "-g" for any other compiler. There doesn't seem to be a standard way of |
# "-g" for any other compiler. There doesn't seem to be a standard way of |
32 |
# getting rid of the -g (which I don't think is needed for a production |
# getting rid of the -g (which I don't think is needed for a production |
71 |
AC_COMPILE_IFELSE(AC_LANG_PROGRAM([],[]),, CXX=""; CXXCP=""; CXXFLAGS="") |
AC_COMPILE_IFELSE(AC_LANG_PROGRAM([],[]),, CXX=""; CXXCP=""; CXXFLAGS="") |
72 |
AC_LANG_POP |
AC_LANG_POP |
73 |
|
|
74 |
|
# Check for a 64-bit integer type |
75 |
|
AC_TYPE_INT64_T |
76 |
|
|
77 |
AC_PROG_INSTALL |
AC_PROG_INSTALL |
78 |
AC_LIBTOOL_WIN32_DLL |
AC_LIBTOOL_WIN32_DLL |
79 |
AC_PROG_LIBTOOL |
AC_PROG_LIBTOOL |
84 |
PCRE_PRERELEASE="pcre_prerelease" |
PCRE_PRERELEASE="pcre_prerelease" |
85 |
PCRE_DATE="pcre_date" |
PCRE_DATE="pcre_date" |
86 |
|
|
87 |
|
if test "$PCRE_MINOR" = "08" -o "$PCRE_MINOR" = "09" |
88 |
|
then |
89 |
|
echo "***" |
90 |
|
echo "*** Minor version number $PCRE_MINOR must not be used. ***" |
91 |
|
echo "*** Use only 01 to 07 or 10 onwards, to avoid octal issues. ***" |
92 |
|
echo "***" |
93 |
|
exit 1 |
94 |
|
fi |
95 |
|
|
96 |
AC_SUBST(PCRE_MAJOR) |
AC_SUBST(PCRE_MAJOR) |
97 |
AC_SUBST(PCRE_MINOR) |
AC_SUBST(PCRE_MINOR) |
98 |
AC_SUBST(PCRE_PRERELEASE) |
AC_SUBST(PCRE_PRERELEASE) |
104 |
htmldir='${docdir}/html' |
htmldir='${docdir}/html' |
105 |
fi |
fi |
106 |
|
|
107 |
# Handle --disable-cpp |
# Handle --disable-cpp. The substitution of enable_cpp is needed for use in |
108 |
|
# pcre-config. |
109 |
AC_ARG_ENABLE(cpp, |
AC_ARG_ENABLE(cpp, |
110 |
AS_HELP_STRING([--disable-cpp], |
AS_HELP_STRING([--disable-cpp], |
111 |
[disable C++ support]), |
[disable C++ support]), |
112 |
, enable_cpp=yes) |
, enable_cpp=yes) |
113 |
|
AC_SUBST(enable_cpp) |
114 |
|
|
115 |
# Handle --enable-rebuild-chartables |
# Handle --enable-rebuild-chartables |
116 |
AC_ARG_ENABLE(rebuild-chartables, |
AC_ARG_ENABLE(rebuild-chartables, |
342 |
AC_CHECK_HEADERS(type_traits.h, [pcre_have_type_traits="1"], |
AC_CHECK_HEADERS(type_traits.h, [pcre_have_type_traits="1"], |
343 |
[pcre_have_type_traits="0"]) |
[pcre_have_type_traits="0"]) |
344 |
|
|
345 |
|
# (This isn't c++-specific, but is only used in pcrecpp.cc, so try this |
346 |
|
# in a c++ context. This matters becuase strtoimax is C99 and may not |
347 |
|
# be supported by the C++ compiler.) |
348 |
|
# Figure out how to create a longlong from a string: strtoll and |
349 |
|
# equiv. It's not enough to call AC_CHECK_FUNCS: hpux has a |
350 |
|
# strtoll, for instance, but it only takes 2 args instead of 3! |
351 |
|
# We have to call AH_TEMPLATE since AC_DEFINE_UNQUOTED below is complex. |
352 |
|
AH_TEMPLATE(HAVE_STRTOQ, [Define to 1 if you have `strtoq'.]) |
353 |
|
AH_TEMPLATE(HAVE_STRTOLL, [Define to 1 if you have `strtoll'.]) |
354 |
|
AH_TEMPLATE(HAVE__STRTOI64, [Define to 1 if you have `_strtoi64'.]) |
355 |
|
AH_TEMPLATE(HAVE_STRTOIMAX, [Define to 1 if you have `strtoimax'.]) |
356 |
|
have_strto_fn=0 |
357 |
|
for fn in strtoq strtoll _strtoi64 strtoimax; do |
358 |
|
AC_MSG_CHECKING([for $fn]) |
359 |
|
if test "$fn" = strtoimax; then |
360 |
|
include=stdint.h |
361 |
|
else |
362 |
|
include=stdlib.h |
363 |
|
fi |
364 |
|
AC_COMPILE_IFELSE(AC_LANG_PROGRAM([#include <$include>], |
365 |
|
[char* e; return $fn("100", &e, 10)]), |
366 |
|
[AC_MSG_RESULT(yes) |
367 |
|
AC_DEFINE_UNQUOTED(HAVE_`echo $fn | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ`, 1, |
368 |
|
[Define to 1 if you have `$fn'.]) |
369 |
|
have_strto_fn=1 |
370 |
|
break], |
371 |
|
[AC_MSG_RESULT(no)]) |
372 |
|
done |
373 |
|
|
374 |
|
if test "$have_strto_fn" = 1; then |
375 |
|
AC_CHECK_TYPES([long long], |
376 |
|
[pcre_have_long_long="1"], |
377 |
|
[pcre_have_long_long="0"]) |
378 |
|
AC_CHECK_TYPES([unsigned long long], |
379 |
|
[pcre_have_ulong_long="1"], |
380 |
|
[pcre_have_ulong_long="0"]) |
381 |
|
else |
382 |
|
pcre_have_long_long="0" |
383 |
|
pcre_have_ulong_long="0" |
384 |
|
fi |
385 |
|
AC_SUBST(pcre_have_long_long) |
386 |
|
AC_SUBST(pcre_have_ulong_long) |
387 |
|
|
388 |
AC_LANG_POP |
AC_LANG_POP |
389 |
fi |
fi |
390 |
# Using AC_SUBST eliminates the need to include config.h in a public .h file |
# Using AC_SUBST eliminates the need to include config.h in a public .h file |
400 |
AC_C_CONST |
AC_C_CONST |
401 |
AC_TYPE_SIZE_T |
AC_TYPE_SIZE_T |
402 |
|
|
|
pcre_have_strotolonglong=0 |
|
|
AC_CHECK_FUNCS(strtoq strtoll _strtoi64, [pcre_have_strotolonglong="1"; break]) |
|
|
# If we can't convert a string to a long long, pretend we don't even |
|
|
# have a long long. |
|
|
if test $pcre_have_strotolonglong = "0"; then |
|
|
pcre_have_long_long="0" |
|
|
pcre_have_ulong_long="0" |
|
|
else |
|
|
AC_CHECK_TYPES([long long], |
|
|
[pcre_have_long_long="1"], |
|
|
[pcre_have_long_long="0"]) |
|
|
AC_CHECK_TYPES([unsigned long long], |
|
|
[pcre_have_ulong_long="1"], |
|
|
[pcre_have_ulong_long="0"]) |
|
|
fi |
|
|
AC_SUBST(pcre_have_long_long) |
|
|
AC_SUBST(pcre_have_ulong_long) |
|
|
|
|
403 |
# Checks for library functions. |
# Checks for library functions. |
404 |
|
|
405 |
AC_CHECK_FUNCS(bcopy memmove strerror) |
AC_CHECK_FUNCS(bcopy memmove strerror) |
409 |
AC_CHECK_HEADERS([zlib.h], [HAVE_ZLIB_H=1]) |
AC_CHECK_HEADERS([zlib.h], [HAVE_ZLIB_H=1]) |
410 |
AC_CHECK_LIB([z], [gzopen], [HAVE_LIBZ=1]) |
AC_CHECK_LIB([z], [gzopen], [HAVE_LIBZ=1]) |
411 |
|
|
412 |
# Check for the availability of libbz2 |
# Check for the availability of libbz2. Originally we just used AC_CHECK_LIB, |
413 |
|
# as for libz. However, this had the following problem, diagnosed and fixed by |
414 |
|
# a user: |
415 |
|
# |
416 |
|
# - libbz2 uses the Pascal calling convention (WINAPI) for the functions |
417 |
|
# under Win32. |
418 |
|
# - The standard autoconf AC_CHECK_LIB fails to include "bzlib.h", |
419 |
|
# therefore missing the function definition. |
420 |
|
# - The compiler thus generates a "C" signature for the test function. |
421 |
|
# - The linker fails to find the "C" function. |
422 |
|
# - PCRE fails to configure if asked to do so against libbz2. |
423 |
|
# |
424 |
|
# Solution: |
425 |
|
# |
426 |
|
# - Replace the AC_CHECK_LIB test with a custom test. |
427 |
|
|
428 |
AC_CHECK_HEADERS([bzlib.h], [HAVE_BZLIB_H=1]) |
AC_CHECK_HEADERS([bzlib.h], [HAVE_BZLIB_H=1]) |
429 |
AC_CHECK_LIB([bz2], [BZ2_bzopen], [HAVE_LIBBZ2=1]) |
# Original test |
430 |
|
# AC_CHECK_LIB([bz2], [BZ2_bzopen], [HAVE_LIBBZ2=1]) |
431 |
|
# |
432 |
|
# Custom test follows |
433 |
|
|
434 |
|
AC_MSG_CHECKING([for libbz2]) |
435 |
|
OLD_LIBS="$LIBS" |
436 |
|
LIBS="$LIBS -lbz2" |
437 |
|
AC_LINK_IFELSE( AC_LANG_PROGRAM([[ |
438 |
|
#ifdef HAVE_BZLIB_H |
439 |
|
#include <bzlib.h> |
440 |
|
#endif]], |
441 |
|
[[return (int)BZ2_bzopen("conftest", "rb");]]), |
442 |
|
[AC_MSG_RESULT([yes]);HAVE_LIBBZ2=1; break;], |
443 |
|
AC_MSG_RESULT([no])) |
444 |
|
LIBS="$OLD_LIBS" |
445 |
|
|
446 |
# Check for the availabiity of libreadline |
# Check for the availabiity of libreadline |
447 |
|
|
452 |
# This facilitates -ansi builds under Linux |
# This facilitates -ansi builds under Linux |
453 |
dnl AC_DEFINE([_GNU_SOURCE], [], [Enable GNU extensions in glibc]) |
dnl AC_DEFINE([_GNU_SOURCE], [], [Enable GNU extensions in glibc]) |
454 |
|
|
455 |
|
PCRE_STATIC_CFLAG="" |
456 |
if test "x$enable_shared" = "xno" ; then |
if test "x$enable_shared" = "xno" ; then |
457 |
AC_DEFINE([PCRE_STATIC], [1], [ |
AC_DEFINE([PCRE_STATIC], [1], [ |
458 |
Define if linking statically (TODO: make nice with Libtool)]) |
Define if linking statically (TODO: make nice with Libtool)]) |
459 |
|
PCRE_STATIC_CFLAG="-DPCRE_STATIC" |
460 |
fi |
fi |
461 |
|
AC_SUBST(PCRE_STATIC_CFLAG) |
462 |
|
|
463 |
# Here is where pcre specific defines are handled |
# Here is where pcre specific defines are handled |
464 |
|
|
676 |
AC_CONFIG_FILES( |
AC_CONFIG_FILES( |
677 |
Makefile |
Makefile |
678 |
libpcre.pc |
libpcre.pc |
679 |
|
libpcreposix.pc |
680 |
libpcrecpp.pc |
libpcrecpp.pc |
681 |
pcre-config |
pcre-config |
682 |
pcre.h |
pcre.h |