/[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 321 by ph10, Wed Mar 5 17:10:45 2008 UTC revision 588 by ph10, Sat Jan 15 11:22:47 2011 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, [7])  
11  m4_define(pcre_prerelease, [-RC1])  m4_define(pcre_major, [8])
12  m4_define(pcre_date, [2008-03-05])  m4_define(pcre_minor, [12])
13    m4_define(pcre_prerelease, [])
14    m4_define(pcre_date, [2011-01-15])
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 82  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 97  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 145  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 221  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 277  if test "x$enable_cpp" = "xyes" -a -n "$ Line 308  if test "x$enable_cpp" = "xyes" -a -n "$
308  then  then
309  AC_LANG_PUSH(C++)  AC_LANG_PUSH(C++)
310    
311    # Older versions of pcre defined pcrecpp::no_arg, but in new versions
312    # it's called pcrecpp::RE::no_arg.  For backwards ABI compatibility,
313    # we want to make one an alias for the other.  Different systems do
314    # this in different ways.  Some systems, for instance, can do it via
315    # a linker flag: -alias (for os x 10.5) or -i (for os x <=10.4).
316    OLD_LDFLAGS="$LDFLAGS"
317    for flag in "-alias,__ZN7pcrecpp2RE6no_argE,__ZN7pcrecpp6no_argE" \
318                "-i__ZN7pcrecpp6no_argE:__ZN7pcrecpp2RE6no_argE"; do
319      AC_MSG_CHECKING([for alias support in the linker])
320      LDFLAGS="$OLD_LDFLAGS -Wl,$flag"
321      # We try to run the linker with this new ld flag.  If the link fails,
322      # we give up and remove the new flag from LDFLAGS.
323      AC_LINK_IFELSE(AC_LANG_PROGRAM([namespace pcrecpp {
324                                        class RE { static int no_arg; };
325                                        int RE::no_arg;
326                                      }],
327                                     []),
328                     [AC_MSG_RESULT([yes]);
329                      EXTRA_LIBPCRECPP_LDFLAGS="$EXTRA_LIBPCRECPP_LDFLAGS -Wl,$flag";
330                      break;],
331                     AC_MSG_RESULT([no]))
332    done
333    LDFLAGS="$OLD_LDFLAGS"
334    
335  # 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
336  # (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
337  # 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 341  AC_CHECK_HEADERS(bits/type_traits.h, [pc
341                                       [pcre_have_bits_type_traits="0"])                                       [pcre_have_bits_type_traits="0"])
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 301  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 328  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 342  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 472  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 490  esac Line 610  esac
610  # The extra LDFLAGS for each particular library  # The extra LDFLAGS for each particular library
611  # (Note: The libpcre*_version bits are m4 variables, assigned above)  # (Note: The libpcre*_version bits are m4 variables, assigned above)
612    
613  EXTRA_LIBPCRE_LDFLAGS="$NO_UNDEFINED -version-info libpcre_version"  EXTRA_LIBPCRE_LDFLAGS="$EXTRA_LIBPCRE_LDFLAGS \
614                           $NO_UNDEFINED -version-info libpcre_version"
615    
616  EXTRA_LIBPCREPOSIX_LDFLAGS="$NO_UNDEFINED -version-info libpcreposix_version"  EXTRA_LIBPCREPOSIX_LDFLAGS="$EXTRA_LIBPCREPOSIX_LDFLAGS \
617                                $NO_UNDEFINED -version-info libpcreposix_version"
618    
619  EXTRA_LIBPCRECPP_LDFLAGS="$NO_UNDEFINED $EXPORT_ALL_SYMBOLS -version-info libpcrecpp_version"  EXTRA_LIBPCRECPP_LDFLAGS="$EXTRA_LIBPCRECPP_LDFLAGS \
620                              $NO_UNDEFINED -version-info libpcrecpp_version \
621                              $EXPORT_ALL_SYMBOLS"
622    
623  AC_SUBST(EXTRA_LIBPCRE_LDFLAGS)  AC_SUBST(EXTRA_LIBPCRE_LDFLAGS)
624  AC_SUBST(EXTRA_LIBPCREPOSIX_LDFLAGS)  AC_SUBST(EXTRA_LIBPCREPOSIX_LDFLAGS)
# Line 505  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 516  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 528  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 542  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.321  
changed lines
  Added in v.588

  ViewVC Help
Powered by ViewVC 1.1.5