/[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 374 by ph10, Fri Sep 5 16:42:28 2008 UTC revision 579 by ph10, Wed Nov 24 17:39:25 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, [8])  
11  m4_define(pcre_prerelease, [])  m4_define(pcre_major, [8])
12  m4_define(pcre_date, [2008-09-05])  m4_define(pcre_minor, [11])
13    m4_define(pcre_prerelease, [-RC1])
14    m4_define(pcre_date, [2010-11-24])
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 66  AC_LANG_PUSH(C++) Line 71  AC_LANG_PUSH(C++)
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
# Line 76  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 87  then Line 104  then
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,
# Line 102  AC_ARG_ENABLE(rebuild-chartables, Line 121  AC_ARG_ENABLE(rebuild-chartables,
121  # Handle --enable-utf8 (disabled by default)  # Handle --enable-utf8 (disabled by default)
122  AC_ARG_ENABLE(utf8,  AC_ARG_ENABLE(utf8,
123                AS_HELP_STRING([--enable-utf8],                AS_HELP_STRING([--enable-utf8],
124                               [enable UTF-8 support]),                               [enable UTF-8 support (incompatible with --enable-ebcdic)]),
125                , enable_utf8=unset)                , enable_utf8=unset)
126    
127  # Handle --enable-unicode-properties  # Handle --enable-unicode-properties
# Line 150  AC_ARG_ENABLE(bsr-anycrlf, Line 169  AC_ARG_ENABLE(bsr-anycrlf,
169  # Handle --enable-ebcdic  # Handle --enable-ebcdic
170  AC_ARG_ENABLE(ebcdic,  AC_ARG_ENABLE(ebcdic,
171                AS_HELP_STRING([--enable-ebcdic],                AS_HELP_STRING([--enable-ebcdic],
172                               [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]),
173                , enable_ebcdic=no)                , enable_ebcdic=no)
174    
175  # Handle --disable-stack-for-recursion  # Handle --disable-stack-for-recursion
# Line 226  then Line 245  then
245  fi  fi
246    
247  # 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.
248    # Also check that UTF-8 support is not requested, because PCRE cannot handle
249    # EBCDIC and UTF-8 in the same build. To do so it would need to use different
250    # character constants depending on the mode.
251  #  #
252  if test "x$enable_ebcdic" = "xyes"  if test "x$enable_ebcdic" = "xyes"
253  then  then
254    enable_rebuild_chartables=yes    enable_rebuild_chartables=yes
255      if test "x$enable_utf8" = "xyes"
256      then
257        AC_MSG_ERROR([support for EBCDIC and UTF-8 cannot be enabled at the same time])
258      fi
259  fi  fi
260    
261  # Convert the newline identifier into the appropriate integer value.  # Convert the newline identifier into the appropriate integer value.
# Line 316  AC_CHECK_HEADERS(bits/type_traits.h, [pc Line 342  AC_CHECK_HEADERS(bits/type_traits.h, [pc
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
# Line 331  AM_CONDITIONAL(WITH_REBUILD_CHARTABLES, Line 400  AM_CONDITIONAL(WITH_REBUILD_CHARTABLES,
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)
# Line 358  AC_CHECK_FUNCS(bcopy memmove strerror) Line 409  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    
# Line 372  AC_CHECK_LIB([readline], [readline], [HA Line 452  AC_CHECK_LIB([readline], [readline], [HA
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    
465  if test "$enable_utf8" = "yes"; then  if test "$enable_utf8" = "yes"; then
466    AC_DEFINE([SUPPORT_UTF8], [], [    AC_DEFINE([SUPPORT_UTF8], [], [
467      Define to enable support for the UTF-8 Unicode encoding.])      Define to enable support for the UTF-8 Unicode encoding. This will
468        work even in an EBCDIC environment, but it is incompatible with
469        the EBCDIC macro. That is, PCRE can support *either* EBCDIC code
470        *or* ASCII/UTF-8, but not both at once.])
471  fi  fi
472    
473  if test "$enable_unicode_properties" = "yes"; then  if test "$enable_unicode_properties" = "yes"; then
# Line 502  if test "$enable_ebcdic" = "yes"; then Line 588  if test "$enable_ebcdic" = "yes"; then
588    AC_DEFINE_UNQUOTED([EBCDIC], [], [    AC_DEFINE_UNQUOTED([EBCDIC], [], [
589      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
590      character codes, define this macro as 1. On systems that can use      character codes, define this macro as 1. On systems that can use
591      "configure", this can be done via --enable-ebcdic.])      "configure", this can be done via --enable-ebcdic. PCRE will then
592        assume that all input strings are in EBCDIC. If you do not define
593        this macro, PCRE will assume input strings are ASCII or UTF-8 Unicode.
594        It is not possible to build a version of PCRE that supports both
595        EBCDIC and UTF-8.])
596  fi  fi
597    
598  # Platform specific issues  # Platform specific issues
# Line 539  DISTCHECK_CONFIGURE_FLAGS="--enable-cpp Line 629  DISTCHECK_CONFIGURE_FLAGS="--enable-cpp
629  AC_SUBST(DISTCHECK_CONFIGURE_FLAGS)  AC_SUBST(DISTCHECK_CONFIGURE_FLAGS)
630    
631  # Check that, if --enable-pcregrep-libz or --enable-pcregrep-libbz2 is  # Check that, if --enable-pcregrep-libz or --enable-pcregrep-libbz2 is
632  # specified, the relevant library is available. If so, add it to LIBS.  # specified, the relevant library is available.
633    
634  if test "$enable_pcregrep_libz" = "yes"; then  if test "$enable_pcregrep_libz" = "yes"; then
635    if test "$HAVE_ZLIB_H" != "1"; then    if test "$HAVE_ZLIB_H" != "1"; then
# Line 550  if test "$enable_pcregrep_libz" = "yes"; Line 640  if test "$enable_pcregrep_libz" = "yes";
640      echo "** Cannot --enable-pcregrep-libz because libz was not found"      echo "** Cannot --enable-pcregrep-libz because libz was not found"
641      exit 1      exit 1
642    fi    fi
643    if test "$LIBS" = ""; then LIBS=-lz; else LIBS="$LIBS -lz"; fi    LIBZ="-lz"
644  fi  fi
645    AC_SUBST(LIBZ)
646    
647  if test "$enable_pcregrep_libbz2" = "yes"; then  if test "$enable_pcregrep_libbz2" = "yes"; then
648    if test "$HAVE_BZLIB_H" != "1"; then    if test "$HAVE_BZLIB_H" != "1"; then
# Line 562  if test "$enable_pcregrep_libbz2" = "yes Line 653  if test "$enable_pcregrep_libbz2" = "yes
653      echo "** Cannot --enable-pcregrep-libbz2 because libbz2 was not found"      echo "** Cannot --enable-pcregrep-libbz2 because libbz2 was not found"
654      exit 1      exit 1
655    fi    fi
656    if test "$LIBS" = ""; then LIBS=-lbz2; else LIBS="$LIBS -lbz2"; fi    LIBBZ2="-lbz2"
657  fi  fi
658    AC_SUBST(LIBBZ2)
659    
660  # Similarly for --enable-pcretest-readline  # Similarly for --enable-pcretest-readline
661    
# Line 576  if test "$enable_pcretest_libreadline" = Line 668  if test "$enable_pcretest_libreadline" =
668      echo "** Cannot --enable-pcretest-readline because readline/history.h was not found."      echo "** Cannot --enable-pcretest-readline because readline/history.h was not found."
669      exit 1      exit 1
670    fi    fi
671    if test "$LIBS" = ""; then LIBS=-lreadline; else LIBS="$LIBS -lreadline"; fi    LIBREADLINE="-lreadline"
672  fi  fi
673    AC_SUBST(LIBREADLINE)
674    
675  # Produce these files, in addition to config.h.  # Produce these files, in addition to config.h.
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

Legend:
Removed from v.374  
changed lines
  Added in v.579

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12