/[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 411 by ph10, Fri Apr 10 15:40:21 2009 UTC revision 685 by ph10, Tue Sep 6 15:02:07 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, [9])  
11  m4_define(pcre_prerelease, [])  m4_define(pcre_major, [8])
12  m4_define(pcre_date, [2009-04-10])  m4_define(pcre_minor, [20])
13    m4_define(pcre_prerelease, [-RC1])
14    m4_define(pcre_date, [2011-08-18])
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 63  fi Line 68  fi
68  # AC_PROG_CXX will return "g++" even if no c++ compiler is installed.  # 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.  # Check for that case, and just disable c++ code if g++ doesn't run.
70  AC_LANG_PUSH(C++)  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  LT_INIT
80  AC_PROG_LN_S  AC_PROG_LN_S
81    
82  PCRE_MAJOR="pcre_major"  PCRE_MAJOR="pcre_major"
# 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-jit (disabled by default)
116    AC_ARG_ENABLE(jit,
117                  AS_HELP_STRING([--enable-jit],
118                                 [enable Just-In-Time compiling support]),
119                  , enable_jit=no)
120    
121    # Handle --disable-pcregrep-jit (enabled by default)
122    AC_ARG_ENABLE(pcregrep-jit,
123                  AS_HELP_STRING([--disable-pcregrep-jit],
124                                 [disable JIT support in pcregrep]),
125                  , enable_pcregrep_jit=yes)
126    
127  # Handle --enable-rebuild-chartables  # Handle --enable-rebuild-chartables
128  AC_ARG_ENABLE(rebuild-chartables,  AC_ARG_ENABLE(rebuild-chartables,
# Line 171  AC_ARG_ENABLE(pcregrep-libbz2, Line 202  AC_ARG_ENABLE(pcregrep-libbz2,
202                               [link pcregrep with libbz2 to handle .bz2 files]),                               [link pcregrep with libbz2 to handle .bz2 files]),
203                , enable_pcregrep_libbz2=no)                , enable_pcregrep_libbz2=no)
204    
205    # Handle --with-pcregrep-bufsize=N
206    AC_ARG_WITH(pcregrep-bufsize,
207                  AS_HELP_STRING([--with-pcregrep-bufsize=N],
208                                 [pcregrep buffer size (default=20480)]),
209                  , with_pcregrep_bufsize=20480)
210    
211  # Handle --enable-pcretest-libreadline  # Handle --enable-pcretest-libreadline
212  AC_ARG_ENABLE(pcretest-libreadline,  AC_ARG_ENABLE(pcretest-libreadline,
213                AS_HELP_STRING([--enable-pcretest-libreadline],                AS_HELP_STRING([--enable-pcretest-libreadline],
# Line 301  for flag in "-alias,__ZN7pcrecpp2RE6no_a Line 338  for flag in "-alias,__ZN7pcrecpp2RE6no_a
338    LDFLAGS="$OLD_LDFLAGS -Wl,$flag"    LDFLAGS="$OLD_LDFLAGS -Wl,$flag"
339    # We try to run the linker with this new ld flag.  If the link fails,    # We try to run the linker with this new ld flag.  If the link fails,
340    # we give up and remove the new flag from LDFLAGS.    # we give up and remove the new flag from LDFLAGS.
341    AC_LINK_IFELSE(AC_LANG_PROGRAM([namespace pcrecpp {    AC_LINK_IFELSE([AC_LANG_PROGRAM([namespace pcrecpp {
342                                      class RE { static int no_arg; };                                      class RE { static int no_arg; };
343                                      int RE::no_arg;                                      int RE::no_arg;
344                                    }],                                    }],
345                                   []),                                   [])],
346                   [AC_MSG_RESULT([yes]);                   [AC_MSG_RESULT([yes]);
347                    EXTRA_LIBPCRECPP_LDFLAGS="$EXTRA_LIBPCRECPP_LDFLAGS -Wl,$flag";                    EXTRA_LIBPCRECPP_LDFLAGS="$EXTRA_LIBPCRECPP_LDFLAGS -Wl,$flag";
348                    break;],                    break;],
# Line 323  AC_CHECK_HEADERS(bits/type_traits.h, [pc Line 360  AC_CHECK_HEADERS(bits/type_traits.h, [pc
360  AC_CHECK_HEADERS(type_traits.h, [pcre_have_type_traits="1"],  AC_CHECK_HEADERS(type_traits.h, [pcre_have_type_traits="1"],
361                                  [pcre_have_type_traits="0"])                                  [pcre_have_type_traits="0"])
362    
363    # (This isn't c++-specific, but is only used in pcrecpp.cc, so try this
364    # in a c++ context.  This matters becuase strtoimax is C99 and may not
365    # be supported by the C++ compiler.)
366    # Figure out how to create a longlong from a string: strtoll and
367    # equiv.  It's not enough to call AC_CHECK_FUNCS: hpux has a
368    # strtoll, for instance, but it only takes 2 args instead of 3!
369    # We have to call AH_TEMPLATE since AC_DEFINE_UNQUOTED below is complex.
370    AH_TEMPLATE(HAVE_STRTOQ, [Define to 1 if you have `strtoq'.])
371    AH_TEMPLATE(HAVE_STRTOLL, [Define to 1 if you have `strtoll'.])
372    AH_TEMPLATE(HAVE__STRTOI64, [Define to 1 if you have `_strtoi64'.])
373    AH_TEMPLATE(HAVE_STRTOIMAX, [Define to 1 if you have `strtoimax'.])
374    have_strto_fn=0
375    for fn in strtoq strtoll _strtoi64 strtoimax; do
376      AC_MSG_CHECKING([for $fn])
377      if test "$fn" = strtoimax; then
378        include=stdint.h
379      else
380        include=stdlib.h
381      fi
382      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <$include>],
383                                        [char* e; return $fn("100", &e, 10)])],
384                        [AC_MSG_RESULT(yes)
385                         AC_DEFINE_UNQUOTED(HAVE_`echo $fn | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ`, 1,
386                                            [Define to 1 if you have `$fn'.])
387                         have_strto_fn=1
388                         break],
389                        [AC_MSG_RESULT(no)])
390    done
391    
392    if test "$have_strto_fn" = 1; then
393      AC_CHECK_TYPES([long long],
394                     [pcre_have_long_long="1"],
395                     [pcre_have_long_long="0"])
396      AC_CHECK_TYPES([unsigned long long],
397                     [pcre_have_ulong_long="1"],
398                     [pcre_have_ulong_long="0"])
399    else
400      pcre_have_long_long="0"
401      pcre_have_ulong_long="0"
402    fi
403    AC_SUBST(pcre_have_long_long)
404    AC_SUBST(pcre_have_ulong_long)
405    
406  AC_LANG_POP  AC_LANG_POP
407  fi  fi
408  # 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 332  AC_SUBST(pcre_have_bits_type_traits) Line 412  AC_SUBST(pcre_have_bits_type_traits)
412  # Conditional compilation  # Conditional compilation
413  AM_CONDITIONAL(WITH_PCRE_CPP, test "x$enable_cpp" = "xyes")  AM_CONDITIONAL(WITH_PCRE_CPP, test "x$enable_cpp" = "xyes")
414  AM_CONDITIONAL(WITH_REBUILD_CHARTABLES, test "x$enable_rebuild_chartables" = "xyes")  AM_CONDITIONAL(WITH_REBUILD_CHARTABLES, test "x$enable_rebuild_chartables" = "xyes")
415    AM_CONDITIONAL(WITH_JIT, test "x$enable_jit" = "xyes")
416    
417  # Checks for typedefs, structures, and compiler characteristics.  # Checks for typedefs, structures, and compiler characteristics.
418    
419  AC_C_CONST  AC_C_CONST
420  AC_TYPE_SIZE_T  AC_TYPE_SIZE_T
421    
 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)  
   
422  # Checks for library functions.  # Checks for library functions.
423    
424  AC_CHECK_FUNCS(bcopy memmove strerror)  AC_CHECK_FUNCS(bcopy memmove strerror)
# Line 365  AC_CHECK_FUNCS(bcopy memmove strerror) Line 428  AC_CHECK_FUNCS(bcopy memmove strerror)
428  AC_CHECK_HEADERS([zlib.h], [HAVE_ZLIB_H=1])  AC_CHECK_HEADERS([zlib.h], [HAVE_ZLIB_H=1])
429  AC_CHECK_LIB([z], [gzopen], [HAVE_LIBZ=1])  AC_CHECK_LIB([z], [gzopen], [HAVE_LIBZ=1])
430    
431  # Check for the availability of libbz2  # Check for the availability of libbz2. Originally we just used AC_CHECK_LIB,
432    # as for libz. However, this had the following problem, diagnosed and fixed by
433    # a user:
434    #
435    #   - libbz2 uses the Pascal calling convention (WINAPI) for the functions
436    #     under Win32.
437    #   - The standard autoconf AC_CHECK_LIB fails to include "bzlib.h",
438    #     therefore missing the function definition.
439    #   - The compiler thus generates a "C" signature for the test function.
440    #   - The linker fails to find the "C" function.
441    #   - PCRE fails to configure if asked to do so against libbz2.
442    #
443    # Solution:
444    #
445    #   - Replace the AC_CHECK_LIB test with a custom test.
446    
447  AC_CHECK_HEADERS([bzlib.h], [HAVE_BZLIB_H=1])  AC_CHECK_HEADERS([bzlib.h], [HAVE_BZLIB_H=1])
448  AC_CHECK_LIB([bz2], [BZ2_bzopen], [HAVE_LIBBZ2=1])  # Original test
449    # AC_CHECK_LIB([bz2], [BZ2_bzopen], [HAVE_LIBBZ2=1])
450    #
451    # Custom test follows
452    
453    AC_MSG_CHECKING([for libbz2])
454    OLD_LIBS="$LIBS"
455    LIBS="$LIBS -lbz2"
456    AC_LINK_IFELSE([AC_LANG_PROGRAM([[
457    #ifdef HAVE_BZLIB_H
458    #include <bzlib.h>
459    #endif]],
460    [[return (int)BZ2_bzopen("conftest", "rb");]])],
461    [AC_MSG_RESULT([yes]);HAVE_LIBBZ2=1; break;],
462    AC_MSG_RESULT([no]))
463    LIBS="$OLD_LIBS"
464    
465  # Check for the availabiity of libreadline  # Check for the availabiity of libreadline
466    
# Line 379  AC_CHECK_LIB([readline], [readline], [HA Line 471  AC_CHECK_LIB([readline], [readline], [HA
471  # This facilitates -ansi builds under Linux  # This facilitates -ansi builds under Linux
472  dnl AC_DEFINE([_GNU_SOURCE], [], [Enable GNU extensions in glibc])  dnl AC_DEFINE([_GNU_SOURCE], [], [Enable GNU extensions in glibc])
473    
474    PCRE_STATIC_CFLAG=""
475  if test "x$enable_shared" = "xno" ; then  if test "x$enable_shared" = "xno" ; then
476    AC_DEFINE([PCRE_STATIC], [1], [    AC_DEFINE([PCRE_STATIC], [1], [
477      Define if linking statically (TODO: make nice with Libtool)])      Define if linking statically (TODO: make nice with Libtool)])
478      PCRE_STATIC_CFLAG="-DPCRE_STATIC"
479  fi  fi
480    AC_SUBST(PCRE_STATIC_CFLAG)
481    
482  # Here is where pcre specific defines are handled  # Here is where pcre specific defines are handled
483    
484    if test "$enable_jit" = "yes"; then
485      AC_DEFINE([SUPPORT_JIT], [], [
486        Define to enable support for Just-In-Time compiling.])
487    else
488      enable_pcregrep_jit="no"
489    fi
490    
491    if test "$enable_pcregrep_jit" = "yes"; then
492      AC_DEFINE([SUPPORT_PCREGREP_JIT], [], [
493        Define to enable JIT support in pcregrep.])
494    fi
495    
496  if test "$enable_utf8" = "yes"; then  if test "$enable_utf8" = "yes"; then
497    AC_DEFINE([SUPPORT_UTF8], [], [    AC_DEFINE([SUPPORT_UTF8], [], [
498      Define to enable support for the UTF-8 Unicode encoding. This will      Define to enable support for the UTF-8 Unicode encoding. This will
# Line 396  fi Line 503  fi
503    
504  if test "$enable_unicode_properties" = "yes"; then  if test "$enable_unicode_properties" = "yes"; then
505    AC_DEFINE([SUPPORT_UCP], [], [    AC_DEFINE([SUPPORT_UCP], [], [
506      Define to enable support for Unicode properties])      Define to enable support for Unicode properties.])
507  fi  fi
508    
509  if test "$enable_stack_for_recursion" = "no"; then  if test "$enable_stack_for_recursion" = "no"; then
# Line 424  if test "$enable_pcregrep_libbz2" = "yes Line 531  if test "$enable_pcregrep_libbz2" = "yes
531      able to handle .bz2 files.])      able to handle .bz2 files.])
532  fi  fi
533    
534    if test $with_pcregrep_bufsize -lt 8192 ; then
535      with_pcregrep_bufsize="8192"
536    fi
537    
538    AC_DEFINE_UNQUOTED([PCREGREP_BUFSIZE], [$with_pcregrep_bufsize], [
539      The value of PCREGREP_BUFSIZE determines the size of buffer used by
540      pcregrep to hold parts of the file it is searching. On systems that
541      support it, "configure" can be used to override the default, which is
542      8192. This is also the minimum value. The actual amount of memory used by
543      pcregrep is three times this number, because it allows for the buffering of
544      "before" and "after" lines.])
545    
546  if test "$enable_pcretest_libreadline" = "yes"; then  if test "$enable_pcretest_libreadline" = "yes"; then
547    AC_DEFINE([SUPPORT_LIBREADLINE], [], [    AC_DEFINE([SUPPORT_LIBREADLINE], [], [
548      Define to allow pcretest to be linked with libreadline.])      Define to allow pcretest to be linked with libreadline.])
# Line 549  AC_SUBST(EXTRA_LIBPCREPOSIX_LDFLAGS) Line 668  AC_SUBST(EXTRA_LIBPCREPOSIX_LDFLAGS)
668  AC_SUBST(EXTRA_LIBPCRECPP_LDFLAGS)  AC_SUBST(EXTRA_LIBPCRECPP_LDFLAGS)
669    
670  # When we run 'make distcheck', use these arguments.  # When we run 'make distcheck', use these arguments.
671  DISTCHECK_CONFIGURE_FLAGS="--enable-cpp --enable-unicode-properties"  DISTCHECK_CONFIGURE_FLAGS="--enable-jit --enable-cpp --enable-unicode-properties"
672  AC_SUBST(DISTCHECK_CONFIGURE_FLAGS)  AC_SUBST(DISTCHECK_CONFIGURE_FLAGS)
673    
674  # Check that, if --enable-pcregrep-libz or --enable-pcregrep-libbz2 is  # Check that, if --enable-pcregrep-libz or --enable-pcregrep-libbz2 is
# Line 600  AC_SUBST(LIBREADLINE) Line 719  AC_SUBST(LIBREADLINE)
719  AC_CONFIG_FILES(  AC_CONFIG_FILES(
720          Makefile          Makefile
721          libpcre.pc          libpcre.pc
722            libpcreposix.pc
723          libpcrecpp.pc          libpcrecpp.pc
724          pcre-config          pcre-config
725          pcre.h          pcre.h
# Line 636  $PACKAGE-$VERSION configuration summary: Line 756  $PACKAGE-$VERSION configuration summary:
756      Extra libraries ................. : ${LIBS}      Extra libraries ................. : ${LIBS}
757    
758      Build C++ library ............... : ${enable_cpp}      Build C++ library ............... : ${enable_cpp}
759        Enable JIT compiling support .... : ${enable_jit}
760      Enable UTF-8 support ............ : ${enable_utf8}      Enable UTF-8 support ............ : ${enable_utf8}
761      Unicode properties .............. : ${enable_unicode_properties}      Unicode properties .............. : ${enable_unicode_properties}
762      Newline char/sequence ........... : ${enable_newline}      Newline char/sequence ........... : ${enable_newline}
# Line 649  $PACKAGE-$VERSION configuration summary: Line 770  $PACKAGE-$VERSION configuration summary:
770      Match limit recursion ........... : ${with_match_limit_recursion}      Match limit recursion ........... : ${with_match_limit_recursion}
771      Build shared libs ............... : ${enable_shared}      Build shared libs ............... : ${enable_shared}
772      Build static libs ............... : ${enable_static}      Build static libs ............... : ${enable_static}
773        Use JIT in pcregrep ............. : ${enable_pcregrep_jit}
774        Buffer size for pcregrep ........ : ${with_pcregrep_bufsize}
775      Link pcregrep with libz ......... : ${enable_pcregrep_libz}      Link pcregrep with libz ......... : ${enable_pcregrep_libz}
776      Link pcregrep with libbz2 ....... : ${enable_pcregrep_libbz2}      Link pcregrep with libbz2 ....... : ${enable_pcregrep_libbz2}
777      Link pcretest with libreadline .. : ${enable_pcretest_libreadline}      Link pcretest with libreadline .. : ${enable_pcretest_libreadline}

Legend:
Removed from v.411  
changed lines
  Added in v.685

  ViewVC Help
Powered by ViewVC 1.1.5