/[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 478 by ph10, Sun Jan 3 16:05:13 2010 UTC
# Line 6  dnl PCRE_PRERELEASE feature is for ident Line 6  dnl PCRE_PRERELEASE feature is for ident
6  dnl be defined as -RC2, for example. For real releases, it should be defined  dnl be defined as -RC2, for example. For real releases, it should be defined
7  dnl empty.  dnl empty.
8    
9  m4_define(pcre_major, [7])  m4_define(pcre_major, [8])
10  m4_define(pcre_minor, [7])  m4_define(pcre_minor, [01])
11  m4_define(pcre_prerelease, [-RC1])  m4_define(pcre_prerelease, [])
12  m4_define(pcre_date, [2008-03-05])  m4_define(pcre_date, [2010-01-02])
13    
14  # Libtool shared library interface versions (current:revision:age)  # Libtool shared library interface versions (current:revision:age)
15  m4_define(libpcre_version, [0:1:0])  m4_define(libpcre_version, [0:1:0])
# Line 60  then Line 60  then
60    fi    fi
61  fi  fi
62    
63    # AC_PROG_CXX will return "g++" even if no c++ compiler is installed.
64    # Check for that case, and just disable c++ code if g++ doesn't run.
65    AC_LANG_PUSH(C++)
66    AC_COMPILE_IFELSE(AC_LANG_PROGRAM([],[]),, CXX=""; CXXCP=""; CXXFLAGS="")
67    AC_LANG_POP
68    
69    # Check for a 64-bit integer type
70    AC_TYPE_INT64_T
71    
72  AC_PROG_INSTALL  AC_PROG_INSTALL
73  AC_LIBTOOL_WIN32_DLL  AC_LIBTOOL_WIN32_DLL
# Line 97  AC_ARG_ENABLE(rebuild-chartables, Line 105  AC_ARG_ENABLE(rebuild-chartables,
105  # Handle --enable-utf8 (disabled by default)  # Handle --enable-utf8 (disabled by default)
106  AC_ARG_ENABLE(utf8,  AC_ARG_ENABLE(utf8,
107                AS_HELP_STRING([--enable-utf8],                AS_HELP_STRING([--enable-utf8],
108                               [enable UTF-8 support]),                               [enable UTF-8 support (incompatible with --enable-ebcdic)]),
109                , enable_utf8=unset)                , enable_utf8=unset)
110    
111  # Handle --enable-unicode-properties  # Handle --enable-unicode-properties
# Line 145  AC_ARG_ENABLE(bsr-anycrlf, Line 153  AC_ARG_ENABLE(bsr-anycrlf,
153  # Handle --enable-ebcdic  # Handle --enable-ebcdic
154  AC_ARG_ENABLE(ebcdic,  AC_ARG_ENABLE(ebcdic,
155                AS_HELP_STRING([--enable-ebcdic],                AS_HELP_STRING([--enable-ebcdic],
156                               [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]),
157                , enable_ebcdic=no)                , enable_ebcdic=no)
158    
159  # Handle --disable-stack-for-recursion  # Handle --disable-stack-for-recursion
# Line 221  then Line 229  then
229  fi  fi
230    
231  # 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.
232    # Also check that UTF-8 support is not requested, because PCRE cannot handle
233    # EBCDIC and UTF-8 in the same build. To do so it would need to use different
234    # character constants depending on the mode.
235  #  #
236  if test "x$enable_ebcdic" = "xyes"  if test "x$enable_ebcdic" = "xyes"
237  then  then
238    enable_rebuild_chartables=yes    enable_rebuild_chartables=yes
239      if test "x$enable_utf8" = "xyes"
240      then
241        AC_MSG_ERROR([support for EBCDIC and UTF-8 cannot be enabled at the same time])
242      fi
243  fi  fi
244    
245  # 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 292  if test "x$enable_cpp" = "xyes" -a -n "$
292  then  then
293  AC_LANG_PUSH(C++)  AC_LANG_PUSH(C++)
294    
295    # Older versions of pcre defined pcrecpp::no_arg, but in new versions
296    # it's called pcrecpp::RE::no_arg.  For backwards ABI compatibility,
297    # we want to make one an alias for the other.  Different systems do
298    # this in different ways.  Some systems, for instance, can do it via
299    # a linker flag: -alias (for os x 10.5) or -i (for os x <=10.4).
300    OLD_LDFLAGS="$LDFLAGS"
301    for flag in "-alias,__ZN7pcrecpp2RE6no_argE,__ZN7pcrecpp6no_argE" \
302                "-i__ZN7pcrecpp6no_argE:__ZN7pcrecpp2RE6no_argE"; do
303      AC_MSG_CHECKING([for alias support in the linker])
304      LDFLAGS="$OLD_LDFLAGS -Wl,$flag"
305      # We try to run the linker with this new ld flag.  If the link fails,
306      # we give up and remove the new flag from LDFLAGS.
307      AC_LINK_IFELSE(AC_LANG_PROGRAM([namespace pcrecpp {
308                                        class RE { static int no_arg; };
309                                        int RE::no_arg;
310                                      }],
311                                     []),
312                     [AC_MSG_RESULT([yes]);
313                      EXTRA_LIBPCRECPP_LDFLAGS="$EXTRA_LIBPCRECPP_LDFLAGS -Wl,$flag";
314                      break;],
315                     AC_MSG_RESULT([no]))
316    done
317    LDFLAGS="$OLD_LDFLAGS"
318    
319  # 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
320  # (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
321  # 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 325  AC_CHECK_HEADERS(bits/type_traits.h, [pc
325                                       [pcre_have_bits_type_traits="0"])                                       [pcre_have_bits_type_traits="0"])
326  AC_CHECK_HEADERS(type_traits.h, [pcre_have_type_traits="1"],  AC_CHECK_HEADERS(type_traits.h, [pcre_have_type_traits="1"],
327                                  [pcre_have_type_traits="0"])                                  [pcre_have_type_traits="0"])
328    
329  AC_LANG_POP  AC_LANG_POP
330  fi  fi
331  # 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 328  AC_CHECK_FUNCS(bcopy memmove strerror) Line 368  AC_CHECK_FUNCS(bcopy memmove strerror)
368  AC_CHECK_HEADERS([zlib.h], [HAVE_ZLIB_H=1])  AC_CHECK_HEADERS([zlib.h], [HAVE_ZLIB_H=1])
369  AC_CHECK_LIB([z], [gzopen], [HAVE_LIBZ=1])  AC_CHECK_LIB([z], [gzopen], [HAVE_LIBZ=1])
370    
371  # Check for the availability of libbz2  # Check for the availability of libbz2. Originally we just used AC_CHECK_LIB,
372    # as for libz. However, this had the following problem, diagnosed and fixed by
373    # a user:
374    #
375    #   - libbz2 uses the Pascal calling convention (WINAPI) for the functions
376    #     under Win32.
377    #   - The standard autoconf AC_CHECK_LIB fails to include "bzlib.h",
378    #     therefore missing the function definition.
379    #   - The compiler thus generates a "C" signature for the test function.
380    #   - The linker fails to find the "C" function.
381    #   - PCRE fails to configure if asked to do so against libbz2.
382    #
383    # Solution:
384    #
385    #   - Replace the AC_CHECK_LIB test with a custom test.
386    
387  AC_CHECK_HEADERS([bzlib.h], [HAVE_BZLIB_H=1])  AC_CHECK_HEADERS([bzlib.h], [HAVE_BZLIB_H=1])
388  AC_CHECK_LIB([bz2], [BZ2_bzopen], [HAVE_LIBBZ2=1])  # Original test
389    # AC_CHECK_LIB([bz2], [BZ2_bzopen], [HAVE_LIBBZ2=1])
390    #
391    # Custom test follows
392    
393    AC_MSG_CHECKING([for libbz2])
394    OLD_LIBS="$LIBS"
395    LIBS="$LIBS -lbz2"
396    AC_LINK_IFELSE( AC_LANG_PROGRAM([[
397    #ifdef HAVE_BZLIB_H
398    #include <bzlib.h>
399    #endif]],
400    [[return (int)BZ2_bzopen("conftest", "rb");]]),
401    [AC_MSG_RESULT([yes]);HAVE_LIBBZ2=1; break;],
402    AC_MSG_RESULT([no]))
403    LIBS="$OLD_LIBS"
404    
405  # Check for the availabiity of libreadline  # Check for the availabiity of libreadline
406    
# Line 342  AC_CHECK_LIB([readline], [readline], [HA Line 411  AC_CHECK_LIB([readline], [readline], [HA
411  # This facilitates -ansi builds under Linux  # This facilitates -ansi builds under Linux
412  dnl AC_DEFINE([_GNU_SOURCE], [], [Enable GNU extensions in glibc])  dnl AC_DEFINE([_GNU_SOURCE], [], [Enable GNU extensions in glibc])
413    
414    PCRE_STATIC_CFLAG=""
415  if test "x$enable_shared" = "xno" ; then  if test "x$enable_shared" = "xno" ; then
416    AC_DEFINE([PCRE_STATIC], [1], [    AC_DEFINE([PCRE_STATIC], [1], [
417      Define if linking statically (TODO: make nice with Libtool)])      Define if linking statically (TODO: make nice with Libtool)])
418      PCRE_STATIC_CFLAG="-DPCRE_STATIC"
419  fi  fi
420    AC_SUBST(PCRE_STATIC_CFLAG)
421    
422  # Here is where pcre specific defines are handled  # Here is where pcre specific defines are handled
423    
424  if test "$enable_utf8" = "yes"; then  if test "$enable_utf8" = "yes"; then
425    AC_DEFINE([SUPPORT_UTF8], [], [    AC_DEFINE([SUPPORT_UTF8], [], [
426      Define to enable support for the UTF-8 Unicode encoding.])      Define to enable support for the UTF-8 Unicode encoding. This will
427        work even in an EBCDIC environment, but it is incompatible with
428        the EBCDIC macro. That is, PCRE can support *either* EBCDIC code
429        *or* ASCII/UTF-8, but not both at once.])
430  fi  fi
431    
432  if test "$enable_unicode_properties" = "yes"; then  if test "$enable_unicode_properties" = "yes"; then
# Line 472  if test "$enable_ebcdic" = "yes"; then Line 547  if test "$enable_ebcdic" = "yes"; then
547    AC_DEFINE_UNQUOTED([EBCDIC], [], [    AC_DEFINE_UNQUOTED([EBCDIC], [], [
548      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
549      character codes, define this macro as 1. On systems that can use      character codes, define this macro as 1. On systems that can use
550      "configure", this can be done via --enable-ebcdic.])      "configure", this can be done via --enable-ebcdic. PCRE will then
551        assume that all input strings are in EBCDIC. If you do not define
552        this macro, PCRE will assume input strings are ASCII or UTF-8 Unicode.
553        It is not possible to build a version of PCRE that supports both
554        EBCDIC and UTF-8.])
555  fi  fi
556    
557  # Platform specific issues  # Platform specific issues
# Line 490  esac Line 569  esac
569  # The extra LDFLAGS for each particular library  # The extra LDFLAGS for each particular library
570  # (Note: The libpcre*_version bits are m4 variables, assigned above)  # (Note: The libpcre*_version bits are m4 variables, assigned above)
571    
572  EXTRA_LIBPCRE_LDFLAGS="$NO_UNDEFINED -version-info libpcre_version"  EXTRA_LIBPCRE_LDFLAGS="$EXTRA_LIBPCRE_LDFLAGS \
573                           $NO_UNDEFINED -version-info libpcre_version"
574    
575  EXTRA_LIBPCREPOSIX_LDFLAGS="$NO_UNDEFINED -version-info libpcreposix_version"  EXTRA_LIBPCREPOSIX_LDFLAGS="$EXTRA_LIBPCREPOSIX_LDFLAGS \
576                                $NO_UNDEFINED -version-info libpcreposix_version"
577    
578  EXTRA_LIBPCRECPP_LDFLAGS="$NO_UNDEFINED $EXPORT_ALL_SYMBOLS -version-info libpcrecpp_version"  EXTRA_LIBPCRECPP_LDFLAGS="$EXTRA_LIBPCRECPP_LDFLAGS \
579                              $NO_UNDEFINED -version-info libpcrecpp_version \
580                              $EXPORT_ALL_SYMBOLS"
581    
582  AC_SUBST(EXTRA_LIBPCRE_LDFLAGS)  AC_SUBST(EXTRA_LIBPCRE_LDFLAGS)
583  AC_SUBST(EXTRA_LIBPCREPOSIX_LDFLAGS)  AC_SUBST(EXTRA_LIBPCREPOSIX_LDFLAGS)
# Line 505  DISTCHECK_CONFIGURE_FLAGS="--enable-cpp Line 588  DISTCHECK_CONFIGURE_FLAGS="--enable-cpp
588  AC_SUBST(DISTCHECK_CONFIGURE_FLAGS)  AC_SUBST(DISTCHECK_CONFIGURE_FLAGS)
589    
590  # Check that, if --enable-pcregrep-libz or --enable-pcregrep-libbz2 is  # Check that, if --enable-pcregrep-libz or --enable-pcregrep-libbz2 is
591  # specified, the relevant library is available. If so, add it to LIBS.  # specified, the relevant library is available.
592    
593  if test "$enable_pcregrep_libz" = "yes"; then  if test "$enable_pcregrep_libz" = "yes"; then
594    if test "$HAVE_ZLIB_H" != "1"; then    if test "$HAVE_ZLIB_H" != "1"; then
# Line 516  if test "$enable_pcregrep_libz" = "yes"; Line 599  if test "$enable_pcregrep_libz" = "yes";
599      echo "** Cannot --enable-pcregrep-libz because libz was not found"      echo "** Cannot --enable-pcregrep-libz because libz was not found"
600      exit 1      exit 1
601    fi    fi
602    if test "$LIBS" = ""; then LIBS=-lz; else LIBS="$LIBS -lz"; fi    LIBZ="-lz"
603  fi  fi
604    AC_SUBST(LIBZ)
605    
606  if test "$enable_pcregrep_libbz2" = "yes"; then  if test "$enable_pcregrep_libbz2" = "yes"; then
607    if test "$HAVE_BZLIB_H" != "1"; then    if test "$HAVE_BZLIB_H" != "1"; then
# Line 528  if test "$enable_pcregrep_libbz2" = "yes Line 612  if test "$enable_pcregrep_libbz2" = "yes
612      echo "** Cannot --enable-pcregrep-libbz2 because libbz2 was not found"      echo "** Cannot --enable-pcregrep-libbz2 because libbz2 was not found"
613      exit 1      exit 1
614    fi    fi
615    if test "$LIBS" = ""; then LIBS=-lbz2; else LIBS="$LIBS -lbz2"; fi    LIBBZ2="-lbz2"
616  fi  fi
617    AC_SUBST(LIBBZ2)
618    
619  # Similarly for --enable-pcretest-readline  # Similarly for --enable-pcretest-readline
620    
# Line 542  if test "$enable_pcretest_libreadline" = Line 627  if test "$enable_pcretest_libreadline" =
627      echo "** Cannot --enable-pcretest-readline because readline/history.h was not found."      echo "** Cannot --enable-pcretest-readline because readline/history.h was not found."
628      exit 1      exit 1
629    fi    fi
630    if test "$LIBS" = ""; then LIBS=-lreadline; else LIBS="$LIBS -lreadline"; fi    LIBREADLINE="-lreadline"
631  fi  fi
632    AC_SUBST(LIBREADLINE)
633    
634  # Produce these files, in addition to config.h.  # Produce these files, in addition to config.h.
635  AC_CONFIG_FILES(  AC_CONFIG_FILES(
636          Makefile          Makefile
637          libpcre.pc          libpcre.pc
638            libpcreposix.pc
639          libpcrecpp.pc          libpcrecpp.pc
640          pcre-config          pcre-config
641          pcre.h          pcre.h

Legend:
Removed from v.321  
changed lines
  Added in v.478

  ViewVC Help
Powered by ViewVC 1.1.5