/[pcre]/code/trunk/configure.ac
ViewVC logotype

Diff of /code/trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 319 by ph10, Mon Jan 28 15:27:45 2008 UTC revision 486 by ph10, Tue Jan 5 17:44:57 2010 UTC
# Line 1  Line 1 
1  dnl Process this file with autoconf to produce a configure script.  dnl Process this file with autoconf to produce a configure script.
2    
3  dnl NOTE FOR MAINTAINERS: Do not use major or minor version numbers with  dnl NOTE FOR MAINTAINERS: Do not use minor version numbers 08 or 09 because
4  dnl leading zeros, because they may be treated as octal constants. The  dnl the leading zeros may cause them to be treated as invalid octal constants
5  dnl PCRE_PRERELEASE feature is for identifying release candidates. It might  dnl if a PCRE user writes code that uses PCRE_MINOR as a number. There is now
6  dnl be defined as -RC2, for example. For real releases, it should be defined  dnl a check further down that throws an error if 08 or 09 are used.
7  dnl empty.  
8    dnl The PCRE_PRERELEASE feature is for identifying release candidates. It might
9  m4_define(pcre_major, [7])  dnl be defined as -RC2, for example. For real releases, it should be empty.
10  m4_define(pcre_minor, [6])  
11  m4_define(pcre_prerelease, [])  m4_define(pcre_major, [8])
12  m4_define(pcre_date, [2008-01-28])  m4_define(pcre_minor, [01])
13    m4_define(pcre_prerelease, [-RC1])
14    m4_define(pcre_date, [2010-01-06])
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])
# Line 22  AC_CONFIG_SRCDIR([pcre.h.in]) Line 24  AC_CONFIG_SRCDIR([pcre.h.in])
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
# Line 60  then Line 65  then
65    fi    fi
66  fi  fi
67    
68    # AC_PROG_CXX will return "g++" even if no c++ compiler is installed.
69    # Check for that case, and just disable c++ code if g++ doesn't run.
70    AC_LANG_PUSH(C++)
71    AC_COMPILE_IFELSE(AC_LANG_PROGRAM([],[]),, CXX=""; CXXCP=""; CXXFLAGS="")
72    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
# Line 71  PCRE_MINOR="pcre_minor" Line 84  PCRE_MINOR="pcre_minor"
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)
# Line 97  AC_ARG_ENABLE(rebuild-chartables, Line 119  AC_ARG_ENABLE(rebuild-chartables,
119  # Handle --enable-utf8 (disabled by default)  # Handle --enable-utf8 (disabled by default)
120  AC_ARG_ENABLE(utf8,  AC_ARG_ENABLE(utf8,
121                AS_HELP_STRING([--enable-utf8],                AS_HELP_STRING([--enable-utf8],
122                               [enable UTF-8 support]),                               [enable UTF-8 support (incompatible with --enable-ebcdic)]),
123                , enable_utf8=unset)                , enable_utf8=unset)
124    
125  # Handle --enable-unicode-properties  # Handle --enable-unicode-properties
# Line 145  AC_ARG_ENABLE(bsr-anycrlf, Line 167  AC_ARG_ENABLE(bsr-anycrlf,
167  # Handle --enable-ebcdic  # Handle --enable-ebcdic
168  AC_ARG_ENABLE(ebcdic,  AC_ARG_ENABLE(ebcdic,
169                AS_HELP_STRING([--enable-ebcdic],                AS_HELP_STRING([--enable-ebcdic],
170                               [assume EBCDIC coding rather than ASCII; use this only in (uncommon) EBCDIC environments; it implies --enable-rebuild-chartables]),                               [assume EBCDIC coding rather than ASCII; incompatible with --enable-utf8; use only in (uncommon) EBCDIC environments; it implies --enable-rebuild-chartables]),
171                , enable_ebcdic=no)                , enable_ebcdic=no)
172    
173  # Handle --disable-stack-for-recursion  # Handle --disable-stack-for-recursion
# Line 221  then Line 243  then
243  fi  fi
244    
245  # Make sure that if enable_ebcdic is set, rebuild_chartables is also enabled.  # Make sure that if enable_ebcdic is set, rebuild_chartables is also enabled.
246    # Also check that UTF-8 support is not requested, because PCRE cannot handle
247    # EBCDIC and UTF-8 in the same build. To do so it would need to use different
248    # character constants depending on the mode.
249  #  #
250  if test "x$enable_ebcdic" = "xyes"  if test "x$enable_ebcdic" = "xyes"
251  then  then
252    enable_rebuild_chartables=yes    enable_rebuild_chartables=yes
253      if test "x$enable_utf8" = "xyes"
254      then
255        AC_MSG_ERROR([support for EBCDIC and UTF-8 cannot be enabled at the same time])
256      fi
257  fi  fi
258    
259  # Convert the newline identifier into the appropriate integer value.  # Convert the newline identifier into the appropriate integer value.
# Line 277  if test "x$enable_cpp" = "xyes" -a -n "$ Line 306  if test "x$enable_cpp" = "xyes" -a -n "$
306  then  then
307  AC_LANG_PUSH(C++)  AC_LANG_PUSH(C++)
308    
309    # Older versions of pcre defined pcrecpp::no_arg, but in new versions
310    # it's called pcrecpp::RE::no_arg.  For backwards ABI compatibility,
311    # we want to make one an alias for the other.  Different systems do
312    # this in different ways.  Some systems, for instance, can do it via
313    # a linker flag: -alias (for os x 10.5) or -i (for os x <=10.4).
314    OLD_LDFLAGS="$LDFLAGS"
315    for flag in "-alias,__ZN7pcrecpp2RE6no_argE,__ZN7pcrecpp6no_argE" \
316                "-i__ZN7pcrecpp6no_argE:__ZN7pcrecpp2RE6no_argE"; do
317      AC_MSG_CHECKING([for alias support in the linker])
318      LDFLAGS="$OLD_LDFLAGS -Wl,$flag"
319      # We try to run the linker with this new ld flag.  If the link fails,
320      # we give up and remove the new flag from LDFLAGS.
321      AC_LINK_IFELSE(AC_LANG_PROGRAM([namespace pcrecpp {
322                                        class RE { static int no_arg; };
323                                        int RE::no_arg;
324                                      }],
325                                     []),
326                     [AC_MSG_RESULT([yes]);
327                      EXTRA_LIBPCRECPP_LDFLAGS="$EXTRA_LIBPCRECPP_LDFLAGS -Wl,$flag";
328                      break;],
329                     AC_MSG_RESULT([no]))
330    done
331    LDFLAGS="$OLD_LDFLAGS"
332    
333  # We could be more clever here, given we're doing AC_SUBST with this  # We could be more clever here, given we're doing AC_SUBST with this
334  # (eg set a var to be the name of the include file we want). But we're not  # (eg set a var to be the name of the include file we want). But we're not
335  # so it's easy to change back to 'regular' autoconf vars if we needed to.  # so it's easy to change back to 'regular' autoconf vars if we needed to.
# Line 286  AC_CHECK_HEADERS(bits/type_traits.h, [pc Line 339  AC_CHECK_HEADERS(bits/type_traits.h, [pc
339                                       [pcre_have_bits_type_traits="0"])                                       [pcre_have_bits_type_traits="0"])
340  AC_CHECK_HEADERS(type_traits.h, [pcre_have_type_traits="1"],  AC_CHECK_HEADERS(type_traits.h, [pcre_have_type_traits="1"],
341                                  [pcre_have_type_traits="0"])                                  [pcre_have_type_traits="0"])
342    
343    # (This isn't c++-specific, but is only used in pcrecpp.cc, so try this
344    # in a c++ context.  This matters becuase strtoimax is C99 and may not
345    # be supported by the C++ compiler.)
346    # Figure out how to create a longlong from a string: strtoll and
347    # equiv.  It's not enough to call AC_CHECK_FUNCS: hpux has a
348    # strtoll, for instance, but it only takes 2 args instead of 3!
349    # We have to call AH_TEMPLATE since AC_DEFINE_UNQUOTED below is complex.
350    AH_TEMPLATE(HAVE_STRTOQ, [Define to 1 if you have `strtoq'.])
351    AH_TEMPLATE(HAVE_STRTOLL, [Define to 1 if you have `strtoll'.])
352    AH_TEMPLATE(HAVE__STRTOI64, [Define to 1 if you have `_strtoi64'.])
353    AH_TEMPLATE(HAVE_STRTOIMAX, [Define to 1 if you have `strtoimax'.])
354    have_strto_fn=0
355    for fn in srtoq strtoll _strtoi64 strtoimax; do
356      AC_MSG_CHECKING([for $fn])
357      if test "$fn" = strtoimax; then
358        include=stdint.h
359      else
360        include=stdlib.h
361      fi
362      AC_COMPILE_IFELSE(AC_LANG_PROGRAM([#include <$include>],
363                                        [char* e; return $fn("100", &e, 10)]),
364                        [AC_MSG_RESULT(yes)
365                         AC_DEFINE_UNQUOTED(HAVE_`echo $fn | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ`, 1,
366                                            [Define to 1 if you have `$fn'.])
367                         have_strto_fn=1
368                         break],
369                        [AC_MSG_RESULT(no)])
370    done
371    
372    if test "$have_strto_fn" = 1; then
373      AC_CHECK_TYPES([long long],
374                     [pcre_have_long_long="1"],
375                     [pcre_have_long_long="0"])
376      AC_CHECK_TYPES([unsigned long long],
377                     [pcre_have_ulong_long="1"],
378                     [pcre_have_ulong_long="0"])
379    else
380      pcre_have_long_long="0"
381      pcre_have_ulong_long="0"
382    fi
383    AC_SUBST(pcre_have_long_long)
384    AC_SUBST(pcre_have_ulong_long)
385    
386  AC_LANG_POP  AC_LANG_POP
387  fi  fi
388  # Using AC_SUBST eliminates the need to include config.h in a public .h file  # Using AC_SUBST eliminates the need to include config.h in a public .h file
# Line 301  AM_CONDITIONAL(WITH_REBUILD_CHARTABLES, Line 398  AM_CONDITIONAL(WITH_REBUILD_CHARTABLES,
398  AC_C_CONST  AC_C_CONST
399  AC_TYPE_SIZE_T  AC_TYPE_SIZE_T
400    
 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"])  
 AC_SUBST(pcre_have_long_long)  
 AC_SUBST(pcre_have_ulong_long)  
   
401  # Checks for library functions.  # Checks for library functions.
402    
403  AC_CHECK_FUNCS(bcopy memmove strerror strtoq strtoll _strtoi64)  AC_CHECK_FUNCS(bcopy memmove strerror)
404    
405  # Check for the availability of libz (aka zlib)  # Check for the availability of libz (aka zlib)
406    
407  AC_CHECK_HEADERS([zlib.h], [HAVE_ZLIB_H=1])  AC_CHECK_HEADERS([zlib.h], [HAVE_ZLIB_H=1])
408  AC_CHECK_LIB([z], [gzopen], [HAVE_LIBZ=1])  AC_CHECK_LIB([z], [gzopen], [HAVE_LIBZ=1])
409    
410  # Check for the availability of libbz2  # Check for the availability of libbz2. Originally we just used AC_CHECK_LIB,
411    # as for libz. However, this had the following problem, diagnosed and fixed by
412    # a user:
413    #
414    #   - libbz2 uses the Pascal calling convention (WINAPI) for the functions
415    #     under Win32.
416    #   - The standard autoconf AC_CHECK_LIB fails to include "bzlib.h",
417    #     therefore missing the function definition.
418    #   - The compiler thus generates a "C" signature for the test function.
419    #   - The linker fails to find the "C" function.
420    #   - PCRE fails to configure if asked to do so against libbz2.
421    #
422    # Solution:
423    #
424    #   - Replace the AC_CHECK_LIB test with a custom test.
425    
426  AC_CHECK_HEADERS([bzlib.h], [HAVE_BZLIB_H=1])  AC_CHECK_HEADERS([bzlib.h], [HAVE_BZLIB_H=1])
427  AC_CHECK_LIB([bz2], [BZ2_bzopen], [HAVE_LIBBZ2=1])  # Original test
428    # AC_CHECK_LIB([bz2], [BZ2_bzopen], [HAVE_LIBBZ2=1])
429    #
430    # Custom test follows
431    
432    AC_MSG_CHECKING([for libbz2])
433    OLD_LIBS="$LIBS"
434    LIBS="$LIBS -lbz2"
435    AC_LINK_IFELSE( AC_LANG_PROGRAM([[
436    #ifdef HAVE_BZLIB_H
437    #include <bzlib.h>
438    #endif]],
439    [[return (int)BZ2_bzopen("conftest", "rb");]]),
440    [AC_MSG_RESULT([yes]);HAVE_LIBBZ2=1; break;],
441    AC_MSG_RESULT([no]))
442    LIBS="$OLD_LIBS"
443    
444  # Check for the availabiity of libreadline  # Check for the availabiity of libreadline
445    
# Line 333  AC_CHECK_LIB([readline], [readline], [HA Line 450  AC_CHECK_LIB([readline], [readline], [HA
450  # This facilitates -ansi builds under Linux  # This facilitates -ansi builds under Linux
451  dnl AC_DEFINE([_GNU_SOURCE], [], [Enable GNU extensions in glibc])  dnl AC_DEFINE([_GNU_SOURCE], [], [Enable GNU extensions in glibc])
452    
453    PCRE_STATIC_CFLAG=""
454  if test "x$enable_shared" = "xno" ; then  if test "x$enable_shared" = "xno" ; then
455    AC_DEFINE([PCRE_STATIC], [1], [    AC_DEFINE([PCRE_STATIC], [1], [
456      Define if linking statically (TODO: make nice with Libtool)])      Define if linking statically (TODO: make nice with Libtool)])
457      PCRE_STATIC_CFLAG="-DPCRE_STATIC"
458  fi  fi
459    AC_SUBST(PCRE_STATIC_CFLAG)
460    
461  # Here is where pcre specific defines are handled  # Here is where pcre specific defines are handled
462    
463  if test "$enable_utf8" = "yes"; then  if test "$enable_utf8" = "yes"; then
464    AC_DEFINE([SUPPORT_UTF8], [], [    AC_DEFINE([SUPPORT_UTF8], [], [
465      Define to enable support for the UTF-8 Unicode encoding.])      Define to enable support for the UTF-8 Unicode encoding. This will
466        work even in an EBCDIC environment, but it is incompatible with
467        the EBCDIC macro. That is, PCRE can support *either* EBCDIC code
468        *or* ASCII/UTF-8, but not both at once.])
469  fi  fi
470    
471  if test "$enable_unicode_properties" = "yes"; then  if test "$enable_unicode_properties" = "yes"; then
# Line 463  if test "$enable_ebcdic" = "yes"; then Line 586  if test "$enable_ebcdic" = "yes"; then
586    AC_DEFINE_UNQUOTED([EBCDIC], [], [    AC_DEFINE_UNQUOTED([EBCDIC], [], [
587      If you are compiling for a system that uses EBCDIC instead of ASCII      If you are compiling for a system that uses EBCDIC instead of ASCII
588      character codes, define this macro as 1. On systems that can use      character codes, define this macro as 1. On systems that can use
589      "configure", this can be done via --enable-ebcdic.])      "configure", this can be done via --enable-ebcdic. PCRE will then
590        assume that all input strings are in EBCDIC. If you do not define
591        this macro, PCRE will assume input strings are ASCII or UTF-8 Unicode.
592        It is not possible to build a version of PCRE that supports both
593        EBCDIC and UTF-8.])
594  fi  fi
595    
596  # Platform specific issues  # Platform specific issues
# Line 481  esac Line 608  esac
608  # The extra LDFLAGS for each particular library  # The extra LDFLAGS for each particular library
609  # (Note: The libpcre*_version bits are m4 variables, assigned above)  # (Note: The libpcre*_version bits are m4 variables, assigned above)
610    
611  EXTRA_LIBPCRE_LDFLAGS="$NO_UNDEFINED -version-info libpcre_version"  EXTRA_LIBPCRE_LDFLAGS="$EXTRA_LIBPCRE_LDFLAGS \
612                           $NO_UNDEFINED -version-info libpcre_version"
613    
614  EXTRA_LIBPCREPOSIX_LDFLAGS="$NO_UNDEFINED -version-info libpcreposix_version"  EXTRA_LIBPCREPOSIX_LDFLAGS="$EXTRA_LIBPCREPOSIX_LDFLAGS \
615                                $NO_UNDEFINED -version-info libpcreposix_version"
616    
617  EXTRA_LIBPCRECPP_LDFLAGS="$NO_UNDEFINED $EXPORT_ALL_SYMBOLS -version-info libpcrecpp_version"  EXTRA_LIBPCRECPP_LDFLAGS="$EXTRA_LIBPCRECPP_LDFLAGS \
618                              $NO_UNDEFINED -version-info libpcrecpp_version \
619                              $EXPORT_ALL_SYMBOLS"
620    
621  AC_SUBST(EXTRA_LIBPCRE_LDFLAGS)  AC_SUBST(EXTRA_LIBPCRE_LDFLAGS)
622  AC_SUBST(EXTRA_LIBPCREPOSIX_LDFLAGS)  AC_SUBST(EXTRA_LIBPCREPOSIX_LDFLAGS)
# Line 496  DISTCHECK_CONFIGURE_FLAGS="--enable-cpp Line 627  DISTCHECK_CONFIGURE_FLAGS="--enable-cpp
627  AC_SUBST(DISTCHECK_CONFIGURE_FLAGS)  AC_SUBST(DISTCHECK_CONFIGURE_FLAGS)
628    
629  # Check that, if --enable-pcregrep-libz or --enable-pcregrep-libbz2 is  # Check that, if --enable-pcregrep-libz or --enable-pcregrep-libbz2 is
630  # specified, the relevant library is available. If so, add it to LIBS.  # specified, the relevant library is available.
631    
632  if test "$enable_pcregrep_libz" = "yes"; then  if test "$enable_pcregrep_libz" = "yes"; then
633    if test "$HAVE_ZLIB_H" != "1"; then    if test "$HAVE_ZLIB_H" != "1"; then
# Line 507  if test "$enable_pcregrep_libz" = "yes"; Line 638  if test "$enable_pcregrep_libz" = "yes";
638      echo "** Cannot --enable-pcregrep-libz because libz was not found"      echo "** Cannot --enable-pcregrep-libz because libz was not found"
639      exit 1      exit 1
640    fi    fi
641    if test "$LIBS" = ""; then LIBS=-lz; else LIBS="$LIBS -lz"; fi    LIBZ="-lz"
642  fi  fi
643    AC_SUBST(LIBZ)
644    
645  if test "$enable_pcregrep_libbz2" = "yes"; then  if test "$enable_pcregrep_libbz2" = "yes"; then
646    if test "$HAVE_BZLIB_H" != "1"; then    if test "$HAVE_BZLIB_H" != "1"; then
# Line 519  if test "$enable_pcregrep_libbz2" = "yes Line 651  if test "$enable_pcregrep_libbz2" = "yes
651      echo "** Cannot --enable-pcregrep-libbz2 because libbz2 was not found"      echo "** Cannot --enable-pcregrep-libbz2 because libbz2 was not found"
652      exit 1      exit 1
653    fi    fi
654    if test "$LIBS" = ""; then LIBS=-lbz2; else LIBS="$LIBS -lbz2"; fi    LIBBZ2="-lbz2"
655  fi  fi
656    AC_SUBST(LIBBZ2)
657    
658  # Similarly for --enable-pcretest-readline  # Similarly for --enable-pcretest-readline
659    
# Line 533  if test "$enable_pcretest_libreadline" = Line 666  if test "$enable_pcretest_libreadline" =
666      echo "** Cannot --enable-pcretest-readline because readline/history.h was not found."      echo "** Cannot --enable-pcretest-readline because readline/history.h was not found."
667      exit 1      exit 1
668    fi    fi
669    if test "$LIBS" = ""; then LIBS=-lreadline; else LIBS="$LIBS -lreadline"; fi    LIBREADLINE="-lreadline"
670  fi  fi
671    AC_SUBST(LIBREADLINE)
672    
673  # Produce these files, in addition to config.h.  # Produce these files, in addition to config.h.
674  AC_CONFIG_FILES(  AC_CONFIG_FILES(
675          Makefile          Makefile
676          libpcre.pc          libpcre.pc
677            libpcreposix.pc
678          libpcrecpp.pc          libpcrecpp.pc
679          pcre-config          pcre-config
680          pcre.h          pcre.h

Legend:
Removed from v.319  
changed lines
  Added in v.486

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12