/[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 89 by nigel, Sat Feb 24 21:41:27 2007 UTC revision 475 by ph10, Sat Jan 2 18:21:30 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 This configure.in file has been hacked around quite a lot as a result of  dnl NOTE FOR MAINTAINERS: Do not use major or minor version numbers with
4  dnl patches that various people have sent to me (PH). Sometimes the information  dnl leading zeros, because they may be treated as octal constants. The
5  dnl I get is contradictory. I've tried to put in comments that explain things,  dnl PCRE_PRERELEASE feature is for identifying release candidates. It might
6  dnl but in some cases the information is second-hand and I have no way of  dnl be defined as -RC2, for example. For real releases, it should be defined
7  dnl verifying it. I am not an autoconf or libtool expert!  dnl empty.
8    
9    m4_define(pcre_major, [8])
10    m4_define(pcre_minor, [01])
11    m4_define(pcre_prerelease, [])
12    m4_define(pcre_date, [2010-01-02])
13    
14    # Libtool shared library interface versions (current:revision:age)
15    m4_define(libpcre_version, [0:1:0])
16    m4_define(libpcreposix_version, [0:0:0])
17    m4_define(libpcrecpp_version, [0:0:0])
18    
19  dnl This is required at the start; the name is the name of a file  AC_PREREQ(2.57)
20  dnl it should be seeing, to verify it is in the same directory.  AC_INIT(PCRE, pcre_major.pcre_minor[]pcre_prerelease, , pcre)
21    AC_CONFIG_SRCDIR([pcre.h.in])
22    AM_INIT_AUTOMAKE([dist-bzip2 dist-zip])
23    AC_CONFIG_HEADERS(config.h)
24    
25    # The default CFLAGS and CXXFLAGS in Autoconf are "-g -O2" for gcc and just
26    # "-g" for any other compiler. There doesn't seem to be a standard way of
27    # getting rid of the -g (which I don't think is needed for a production
28    # library). This fudge seems to achieve the necessary. First, we remember the
29    # externally set values of CFLAGS and CXXFLAGS. Then call the AC_PROG_CC and
30    # AC_PROG_CXX macros to find the compilers - if CFLAGS and CXXFLAGS are not
31    # set, they will be set to Autoconf's defaults. Afterwards, if the original
32    # values were not set, remove the -g from the Autoconf defaults.
33    # (PH 02-May-07)
34    
35  AC_INIT(dftables.c)  remember_set_CFLAGS="$CFLAGS"
36  AC_CONFIG_SRCDIR([pcre.h])  remember_set_CXXFLAGS="$CXXFLAGS"
37    
38  dnl A safety precaution  AC_PROG_CC
39    AC_PROG_CXX
40    
41  AC_PREREQ(2.57)  if test "x$remember_set_CFLAGS" = "x"
42    then
43      if test "$CFLAGS" = "-g -O2"
44      then
45        CFLAGS="-O2"
46      elif test "$CFLAGS" = "-g"
47      then
48        CFLAGS=""
49      fi
50    fi
51    
52  dnl Arrange to build config.h from config.h.in.  if test "x$remember_set_CXXFLAGS" = "x"
53  dnl Manual says this macro should come right after AC_INIT.  then
54  AC_CONFIG_HEADER(config.h)    if test "$CXXFLAGS" = "-g -O2"
55      then
56        CXXFLAGS="-O2"
57      elif test "$CXXFLAGS" = "-g"
58      then
59        CXXFLAGS=""
60      fi
61    fi
62    
63  dnl Default values for miscellaneous macros  # 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  POSIX_MALLOC_THRESHOLD=-DPOSIX_MALLOC_THRESHOLD=10  # Check for a 64-bit integer type
70    AC_TYPE_INT64_T
71    
72  dnl Provide versioning information for libtool shared libraries that  AC_PROG_INSTALL
73  dnl are built by default on Unix systems.  AC_LIBTOOL_WIN32_DLL
74    AC_PROG_LIBTOOL
75    AC_PROG_LN_S
76    
77  PCRE_LIB_VERSION=0:1:0  PCRE_MAJOR="pcre_major"
78  PCRE_POSIXLIB_VERSION=0:0:0  PCRE_MINOR="pcre_minor"
79  PCRE_CPPLIB_VERSION=0:0:0  PCRE_PRERELEASE="pcre_prerelease"
80    PCRE_DATE="pcre_date"
81    
82    AC_SUBST(PCRE_MAJOR)
83    AC_SUBST(PCRE_MINOR)
84    AC_SUBST(PCRE_PRERELEASE)
85    AC_SUBST(PCRE_DATE)
86    
87  dnl Find the PCRE version from the pcre.h file. The PCRE_VERSION variable is  # Set a more sensible default value for $(htmldir).
88  dnl substituted in pcre-config.in.  if test "x$htmldir" = 'x${docdir}'
89    then
90      htmldir='${docdir}/html'
91    fi
92    
93  PCRE_MAJOR=`grep '#define PCRE_MAJOR' ${srcdir}/pcre.h | cut -c 29-`  # Handle --disable-cpp
94  PCRE_MINOR=`grep '#define PCRE_MINOR' ${srcdir}/pcre.h | cut -c 29-`  AC_ARG_ENABLE(cpp,
95  PCRE_PRERELEASE=`grep '#define PCRE_PRERELEASE' ${srcdir}/pcre.h | cut -c 29-`                AS_HELP_STRING([--disable-cpp],
96  PCRE_VERSION=${PCRE_MAJOR}.${PCRE_MINOR}${PCRE_PRERELEASE}                               [disable C++ support]),
97                  , enable_cpp=yes)
98    
99    # Handle --enable-rebuild-chartables
100    AC_ARG_ENABLE(rebuild-chartables,
101                  AS_HELP_STRING([--enable-rebuild-chartables],
102                                 [rebuild character tables in current locale]),
103                  , enable_rebuild_chartables=no)
104    
105  dnl Handle --disable-cpp  # Handle --enable-utf8 (disabled by default)
106    AC_ARG_ENABLE(utf8,
107                  AS_HELP_STRING([--enable-utf8],
108                                 [enable UTF-8 support (incompatible with --enable-ebcdic)]),
109                  , enable_utf8=unset)
110    
111  AC_ARG_ENABLE(cpp,  # Handle --enable-unicode-properties
112  [  --disable-cpp           disable C++ support],  AC_ARG_ENABLE(unicode-properties,
113  want_cpp="$enableval", want_cpp=yes)                AS_HELP_STRING([--enable-unicode-properties],
114                                 [enable Unicode properties support (implies --enable-utf8)]),
115                  , enable_unicode_properties=no)
116    
117    # Handle --enable-newline=NL
118    dnl AC_ARG_ENABLE(newline,
119    dnl               AS_HELP_STRING([--enable-newline=NL],
120    dnl                              [use NL as newline (lf, cr, crlf, anycrlf, any; default=lf)]),
121    dnl               , enable_newline=lf)
122    
123  dnl Checks for programs.  # Separate newline options
124    ac_pcre_newline=lf
125    AC_ARG_ENABLE(newline-is-cr,
126                  AS_HELP_STRING([--enable-newline-is-cr],
127                                 [use CR as newline character]),
128                  ac_pcre_newline=cr)
129    AC_ARG_ENABLE(newline-is-lf,
130                  AS_HELP_STRING([--enable-newline-is-lf],
131                                 [use LF as newline character (default)]),
132                  ac_pcre_newline=lf)
133    AC_ARG_ENABLE(newline-is-crlf,
134                  AS_HELP_STRING([--enable-newline-is-crlf],
135                                 [use CRLF as newline sequence]),
136                  ac_pcre_newline=crlf)
137    AC_ARG_ENABLE(newline-is-anycrlf,
138                  AS_HELP_STRING([--enable-newline-is-anycrlf],
139                                 [use CR, LF, or CRLF as newline sequence]),
140                  ac_pcre_newline=anycrlf)
141    AC_ARG_ENABLE(newline-is-any,
142                  AS_HELP_STRING([--enable-newline-is-any],
143                                 [use any valid Unicode newline sequence]),
144                  ac_pcre_newline=any)
145    enable_newline="$ac_pcre_newline"
146    
147    # Handle --enable-bsr-anycrlf
148    AC_ARG_ENABLE(bsr-anycrlf,
149                  AS_HELP_STRING([--enable-bsr-anycrlf],
150                                 [\R matches only CR, LF, CRLF by default]),
151                  , enable_bsr_anycrlf=no)
152    
153  AC_PROG_CC  # Handle --enable-ebcdic
154    AC_ARG_ENABLE(ebcdic,
155                  AS_HELP_STRING([--enable-ebcdic],
156                                 [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)
158    
159  dnl Test for C++ for the C++ wrapper libpcrecpp. It seems, however, that  # Handle --disable-stack-for-recursion
160  dnl AC_PROC_CXX will set $CXX to "g++" when no C++ compiler is installed, even  AC_ARG_ENABLE(stack-for-recursion,
161  dnl though that is completely bogus. (This may happen only on certain systems                AS_HELP_STRING([--disable-stack-for-recursion],
162  dnl with certain versions of autoconf, of course.) An attempt to include this                               [don't use stack recursion when matching]),
163  dnl test inside a check for want_cpp was criticized by a libtool expert, who                , enable_stack_for_recursion=yes)
164  dnl tells me that it isn't allowed.  
165    # Handle --enable-pcregrep-libz
166    AC_ARG_ENABLE(pcregrep-libz,
167                  AS_HELP_STRING([--enable-pcregrep-libz],
168                                 [link pcregrep with libz to handle .gz files]),
169                  , enable_pcregrep_libz=no)
170    
171    # Handle --enable-pcregrep-libbz2
172    AC_ARG_ENABLE(pcregrep-libbz2,
173                  AS_HELP_STRING([--enable-pcregrep-libbz2],
174                                 [link pcregrep with libbz2 to handle .bz2 files]),
175                  , enable_pcregrep_libbz2=no)
176    
177    # Handle --enable-pcretest-libreadline
178    AC_ARG_ENABLE(pcretest-libreadline,
179                  AS_HELP_STRING([--enable-pcretest-libreadline],
180                                 [link pcretest with libreadline]),
181                  , enable_pcretest_libreadline=no)
182    
183  AC_PROG_CXX  # Handle --with-posix-malloc-threshold=NBYTES
184    AC_ARG_WITH(posix-malloc-threshold,
185                AS_HELP_STRING([--with-posix-malloc-threshold=NBYTES],
186                               [threshold for POSIX malloc usage (default=10)]),
187                , with_posix_malloc_threshold=10)
188    
189  dnl The icc compiler has the same options as gcc, so let the rest of the  # Handle --with-link-size=N
190  dnl configure script think it has gcc when setting up dnl options etc.  AC_ARG_WITH(link-size,
191  dnl This is a nasty hack which no longer seems necessary with the update              AS_HELP_STRING([--with-link-size=N],
192  dnl to the latest libtool files, so I have commented it out.                             [internal link size (2, 3, or 4 allowed; default=2)]),
193  dnl              , with_link_size=2)
 dnl if test "$CC" = "icc" ; then GCC=yes ; fi  
194    
195  AC_PROG_INSTALL  # Handle --with-match-limit=N
196  AC_LIBTOOL_WIN32_DLL  AC_ARG_WITH(match-limit,
197  AC_PROG_LIBTOOL              AS_HELP_STRING([--with-match-limit=N],
198                               [default limit on internal looping (default=10000000)]),
199                , with_match_limit=10000000)
200    
201    # Handle --with-match-limit_recursion=N
202    #
203    # Note: In config.h, the default is to define MATCH_LIMIT_RECURSION
204    # symbolically as MATCH_LIMIT, which in turn is defined to be some numeric
205    # value (e.g. 10000000). MATCH_LIMIT_RECURSION can otherwise be set to some
206    # different numeric value (or even the same numeric value as MATCH_LIMIT,
207    # though no longer defined in terms of the latter).
208    #
209    AC_ARG_WITH(match-limit-recursion,
210                AS_HELP_STRING([--with-match-limit-recursion=N],
211                               [default limit on internal recursion (default=MATCH_LIMIT)]),
212                , with_match_limit_recursion=MATCH_LIMIT)
213    
214    # Make sure that if enable_unicode_properties was set, that UTF-8 support
215    # is enabled.
216    #
217    if test "x$enable_unicode_properties" = "xyes"
218    then
219      if test "x$enable_utf8" = "xno"
220      then
221        AC_MSG_ERROR([support for Unicode properties requires UTF-8 support])
222      fi
223      enable_utf8=yes
224    fi
225    
226  dnl We need to find a compiler for compiling a program to run on the local host  if test "x$enable_utf8" = "xunset"
227  dnl while building. It needs to be different from CC when cross-compiling.  then
228  dnl There is a macro called AC_PROG_CC_FOR_BUILD in the GNU archive for    enable_utf8=no
229  dnl figuring this out automatically. Unfortunately, it does not work with the  fi
 dnl latest versions of autoconf. So for the moment, we just default to the  
 dnl same values as the "main" compiler. People who are cross-compiling will  
 dnl just have to adjust the Makefile by hand or set these values when they  
 dnl run "configure".  
   
 CC_FOR_BUILD=${CC_FOR_BUILD:-'$(CC)'}  
 CXX_FOR_BUILD=${CXX_FOR_BUILD:-'$(CXX)'}  
 CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD:-'$(CFLAGS)'}  
 CPPFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD:-'$(CPPFLAGS)'}  
 CXXFLAGS_FOR_BUILD=${CXXFLAGS_FOR_BUILD:-'$(CXXFLAGS)'}  
 BUILD_EXEEXT=${BUILD_EXEEXT:-'$(EXEEXT)'}  
 BUILD_OBJEXT=${BUILD_OBJEXT:-'$(OBJEXT)'}  
230    
231  dnl Checks for header files.  # 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"
237    then
238      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
244    
245  AC_HEADER_STDC  # Convert the newline identifier into the appropriate integer value.
246  AC_CHECK_HEADERS(limits.h)  case "$enable_newline" in
247      lf)      ac_pcre_newline_value=10   ;;
248      cr)      ac_pcre_newline_value=13   ;;
249      crlf)    ac_pcre_newline_value=3338 ;;
250      anycrlf) ac_pcre_newline_value=-2   ;;
251      any)     ac_pcre_newline_value=-1   ;;
252      *)
253      AC_MSG_ERROR([invalid argument \"$enable_newline\" to --enable-newline option])
254      ;;
255    esac
256    
257    # Check argument to --with-link-size
258    case "$with_link_size" in
259      2|3|4) ;;
260      *)
261      AC_MSG_ERROR([invalid argument \"$with_link_size\" to --with-link-size option])
262      ;;
263    esac
264    
265    AH_TOP([
266    /* On Unix-like systems config.h.in is converted by "configure" into config.h.
267    Some other environments also support the use of "configure". PCRE is written in
268    Standard C, but there are a few non-standard things it can cope with, allowing
269    it to run on SunOS4 and other "close to standard" systems.
270    
271    If you are going to build PCRE "by hand" on a system without "configure" you
272    should copy the distributed config.h.generic to config.h, and then set up the
273    macro definitions the way you need them. You must then add -DHAVE_CONFIG_H to
274    all of your compile commands, so that config.h is included at the start of
275    every source.
276    
277    Alternatively, you can avoid editing by using -D on the compiler command line
278    to set the macro values. In this case, you do not have to set -DHAVE_CONFIG_H.
279    
280    PCRE uses memmove() if HAVE_MEMMOVE is set to 1; otherwise it uses bcopy() if
281    HAVE_BCOPY is set to 1. If your system has neither bcopy() nor memmove(), set
282    them both to 0; an emulation function will be used. */])
283    
284  dnl The files below are C++ header files. One person told me (PH) that  # Checks for header files.
285  dnl AC_LANG_CPLUSPLUS unsets CXX if it was explicitly set to something which  AC_HEADER_STDC
286  dnl doesn't work. However, this doesn't always seem to be the case.  AC_CHECK_HEADERS(limits.h sys/types.h sys/stat.h dirent.h windows.h)
287    
288  if test "x$want_cpp" = "xyes" -a -n "$CXX"  # The files below are C++ header files.
289    pcre_have_type_traits="0"
290    pcre_have_bits_type_traits="0"
291    if test "x$enable_cpp" = "xyes" -a -n "$CXX"
292  then  then
293  AC_LANG_SAVE  AC_LANG_PUSH(C++)
 AC_LANG_CPLUSPLUS  
294    
295  dnl We could be more clever here, given we're doing AC_SUBST with this  # Older versions of pcre defined pcrecpp::no_arg, but in new versions
296  dnl (eg set a var to be the name of the include file we want).  But we're not  # it's called pcrecpp::RE::no_arg.  For backwards ABI compatibility,
297  dnl so it's easy to change back to 'regular' autoconf vars if we needed to.  # 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
320    # (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.
322  AC_CHECK_HEADERS(string, [pcre_have_cpp_headers="1"],  AC_CHECK_HEADERS(string, [pcre_have_cpp_headers="1"],
323                           [pcre_have_cpp_headers="0"])                           [pcre_have_cpp_headers="0"])
324  AC_CHECK_HEADERS(bits/type_traits.h, [pcre_have_bits_type_traits="1"],  AC_CHECK_HEADERS(bits/type_traits.h, [pcre_have_bits_type_traits="1"],
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"])
 dnl Using AC_SUBST eliminates the need to include config.h in a public .h file  
 AC_SUBST(pcre_have_bits_type_traits)  
 AC_SUBST(pcre_have_type_traits)  
 AC_LANG_RESTORE  
 fi  
328    
329  dnl From the above, we now have enough info to know if C++ is fully installed  AC_LANG_POP
 if test "x$want_cpp" = "xyes" -a -n "$CXX" -a "$pcre_have_cpp_headers" = 1; then  
   MAYBE_CPP_TARGETS='$(CPP_TARGETS)'  
   HAVE_CPP=  
 else  
   MAYBE_CPP_TARGETS=  
   HAVE_CPP="#"  
330  fi  fi
331  AC_SUBST(MAYBE_CPP_TARGETS)  # Using AC_SUBST eliminates the need to include config.h in a public .h file
332  AC_SUBST(HAVE_CPP)  AC_SUBST(pcre_have_type_traits)
333    AC_SUBST(pcre_have_bits_type_traits)
334    
335    # Conditional compilation
336    AM_CONDITIONAL(WITH_PCRE_CPP, test "x$enable_cpp" = "xyes")
337    AM_CONDITIONAL(WITH_REBUILD_CHARTABLES, test "x$enable_rebuild_chartables" = "xyes")
338    
339  dnl Checks for typedefs, structures, and compiler characteristics.  # Checks for typedefs, structures, and compiler characteristics.
340    
341  AC_C_CONST  AC_C_CONST
342  AC_TYPE_SIZE_T  AC_TYPE_SIZE_T
343    
344  AC_CHECK_TYPES([long long], [pcre_have_long_long="1"], [pcre_have_long_long="0"])  pcre_have_strotolonglong=0
345  AC_CHECK_TYPES([unsigned long long], [pcre_have_ulong_long="1"], [pcre_have_ulong_long="0"])  AC_CHECK_FUNCS(strtoq strtoll _strtoi64, [pcre_have_strotolonglong="1"; break])
346    # If we can't convert a string to a long long, pretend we don't even
347    # have a long long.
348    if test $pcre_have_strotolonglong = "0"; then
349       pcre_have_long_long="0"
350       pcre_have_ulong_long="0"
351    else
352      AC_CHECK_TYPES([long long],
353                     [pcre_have_long_long="1"],
354                     [pcre_have_long_long="0"])
355      AC_CHECK_TYPES([unsigned long long],
356                     [pcre_have_ulong_long="1"],
357                     [pcre_have_ulong_long="0"])
358    fi
359  AC_SUBST(pcre_have_long_long)  AC_SUBST(pcre_have_long_long)
360  AC_SUBST(pcre_have_ulong_long)  AC_SUBST(pcre_have_ulong_long)
361    
362  dnl Checks for library functions.  # Checks for library functions.
363    
364  AC_CHECK_FUNCS(bcopy memmove strerror strtoq strtoll)  AC_CHECK_FUNCS(bcopy memmove strerror)
365    
366  dnl Handle --enable-utf8  # Check for the availability of libz (aka zlib)
367    
368  AC_ARG_ENABLE(utf8,  AC_CHECK_HEADERS([zlib.h], [HAVE_ZLIB_H=1])
369  [  --enable-utf8           enable UTF8 support],  AC_CHECK_LIB([z], [gzopen], [HAVE_LIBZ=1])
 if test "$enableval" = "yes"; then  
   UTF8=-DSUPPORT_UTF8  
 fi  
 )  
370    
371  dnl Handle --enable-unicode-properties  # Check for the availability of libbz2
372    
373  AC_ARG_ENABLE(unicode-properties,  AC_CHECK_HEADERS([bzlib.h], [HAVE_BZLIB_H=1])
374  [  --enable-unicode-properties  enable Unicode properties support],  AC_CHECK_LIB([bz2], [BZ2_bzopen], [HAVE_LIBBZ2=1])
 if test "$enableval" = "yes"; then  
   UCP=-DSUPPORT_UCP  
 fi  
 )  
375    
376  dnl Handle --enable-newline-is-cr  # Check for the availabiity of libreadline
377    
378  AC_ARG_ENABLE(newline-is-cr,  AC_CHECK_HEADERS([readline/readline.h], [HAVE_READLINE_H=1])
379  [  --enable-newline-is-cr  use CR as the newline character],  AC_CHECK_HEADERS([readline/history.h], [HAVE_HISTORY_H=1])
380  if test "$enableval" = "yes"; then  AC_CHECK_LIB([readline], [readline], [HAVE_LIB_READLINE=1])
   NEWLINE=-DNEWLINE=13  
 fi  
 )  
381    
382  dnl Handle --enable-newline-is-lf  # This facilitates -ansi builds under Linux
383    dnl AC_DEFINE([_GNU_SOURCE], [], [Enable GNU extensions in glibc])
384    
385  AC_ARG_ENABLE(newline-is-lf,  PCRE_STATIC_CFLAG=""
386  [  --enable-newline-is-lf  use LF as the newline character],  if test "x$enable_shared" = "xno" ; then
387  if test "$enableval" = "yes"; then    AC_DEFINE([PCRE_STATIC], [1], [
388    NEWLINE=-DNEWLINE=10      Define if linking statically (TODO: make nice with Libtool)])
389      PCRE_STATIC_CFLAG="-DPCRE_STATIC"
390  fi  fi
391  )  AC_SUBST(PCRE_STATIC_CFLAG)
392    
393  dnl Handle --enable-ebcdic  # Here is where pcre specific defines are handled
394    
395  AC_ARG_ENABLE(ebcdic,  if test "$enable_utf8" = "yes"; then
396  [  --enable-ebcdic         assume EBCDIC coding rather than ASCII],    AC_DEFINE([SUPPORT_UTF8], [], [
397  if test "$enableval" == "yes"; then      Define to enable support for the UTF-8 Unicode encoding. This will
398    EBCDIC=-DEBCDIC=1      work even in an EBCDIC environment, but it is incompatible with
399        the EBCDIC macro. That is, PCRE can support *either* EBCDIC code
400        *or* ASCII/UTF-8, but not both at once.])
401  fi  fi
 )  
402    
403  dnl Handle --disable-stack-for-recursion  if test "$enable_unicode_properties" = "yes"; then
404      AC_DEFINE([SUPPORT_UCP], [], [
405        Define to enable support for Unicode properties])
406    fi
407    
408  AC_ARG_ENABLE(stack-for-recursion,  if test "$enable_stack_for_recursion" = "no"; then
409  [  --disable-stack-for-recursion  disable use of stack recursion when matching],    AC_DEFINE([NO_RECURSE], [], [
410  if test "$enableval" = "no"; then      PCRE uses recursive function calls to handle backtracking while
411    NO_RECURSE=-DNO_RECURSE      matching. This can sometimes be a problem on systems that have
412        stacks of limited size. Define NO_RECURSE to get a version that
413        doesn't use recursion in the match() function; instead it creates
414        its own stack by steam using pcre_recurse_malloc() to obtain memory
415        from the heap. For more detail, see the comments and other stuff
416        just above the match() function. On systems that support it,
417        "configure" can be used to set this in the Makefile
418        (use --disable-stack-for-recursion).])
419  fi  fi
 )  
420    
421  dnl There doesn't seem to be a straightforward way of having parameters  if test "$enable_pcregrep_libz" = "yes"; then
422  dnl that set values, other than fudging the --with thing. So that's what    AC_DEFINE([SUPPORT_LIBZ], [], [
423  dnl I've done.      Define to allow pcregrep to be linked with libz, so that it is
424        able to handle .gz files.])
425    fi
426    
427  dnl Handle --with-posix-malloc-threshold=n  if test "$enable_pcregrep_libbz2" = "yes"; then
428      AC_DEFINE([SUPPORT_LIBBZ2], [], [
429        Define to allow pcregrep to be linked with libbz2, so that it is
430        able to handle .bz2 files.])
431    fi
432    
433  AC_ARG_WITH(posix-malloc-threshold,  if test "$enable_pcretest_libreadline" = "yes"; then
434  [  --with-posix-malloc-threshold=10  threshold for POSIX malloc usage],    AC_DEFINE([SUPPORT_LIBREADLINE], [], [
435    POSIX_MALLOC_THRESHOLD=-DPOSIX_MALLOC_THRESHOLD=$withval      Define to allow pcretest to be linked with libreadline.])
436  )  fi
437    
438  dnl Handle --with-link-size=n  AC_DEFINE_UNQUOTED([NEWLINE], [$ac_pcre_newline_value], [
439      The value of NEWLINE determines the newline character sequence. On
440      systems that support it, "configure" can be used to override the
441      default, which is 10. The possible values are 10 (LF), 13 (CR),
442      3338 (CRLF), -1 (ANY), or -2 (ANYCRLF).])
443    
444    if test "$enable_bsr_anycrlf" = "yes"; then
445      AC_DEFINE([BSR_ANYCRLF], [], [
446        By default, the \R escape sequence matches any Unicode line ending
447        character or sequence of characters. If BSR_ANYCRLF is defined, this is
448        changed so that backslash-R matches only CR, LF, or CRLF. The build-
449        time default can be overridden by the user of PCRE at runtime. On
450        systems that support it, "configure" can be used to override the
451        default.])
452    fi
453    
454  AC_ARG_WITH(link-size,  AC_DEFINE_UNQUOTED([LINK_SIZE], [$with_link_size], [
455  [  --with-link-size=2    internal link size (2, 3, or 4 allowed)],    The value of LINK_SIZE determines the number of bytes used to store
456    LINK_SIZE=-DLINK_SIZE=$withval    links as offsets within the compiled regex. The default is 2, which
457  )    allows for compiled patterns up to 64K long. This covers the vast
458      majority of cases. However, PCRE can also be compiled to use 3 or 4
459      bytes instead. This allows for longer patterns in extreme cases. On
460      systems that support it, "configure" can be used to override this default.])
461    
462    AC_DEFINE_UNQUOTED([POSIX_MALLOC_THRESHOLD], [$with_posix_malloc_threshold], [
463      When calling PCRE via the POSIX interface, additional working storage
464      is required for holding the pointers to capturing substrings because
465      PCRE requires three integers per substring, whereas the POSIX
466      interface provides only two. If the number of expected substrings is
467      small, the wrapper function uses space on the stack, because this is
468      faster than using malloc() for each call. The threshold above which
469      the stack is no longer used is defined by POSIX_MALLOC_THRESHOLD. On
470      systems that support it, "configure" can be used to override this
471      default.])
472    
473    AC_DEFINE_UNQUOTED([MATCH_LIMIT], [$with_match_limit], [
474      The value of MATCH_LIMIT determines the default number of times the
475      internal match() function can be called during a single execution of
476      pcre_exec(). There is a runtime interface for setting a different
477      limit. The limit exists in order to catch runaway regular
478      expressions that take for ever to determine that they do not match.
479      The default is set very large so that it does not accidentally catch
480      legitimate cases. On systems that support it, "configure" can be
481      used to override this default default.])
482    
483    AC_DEFINE_UNQUOTED([MATCH_LIMIT_RECURSION], [$with_match_limit_recursion], [
484      The above limit applies to all calls of match(), whether or not they
485      increase the recursion depth. In some environments it is desirable
486      to limit the depth of recursive calls of match() more strictly, in
487      order to restrict the maximum amount of stack (or heap, if
488      NO_RECURSE is defined) that is used. The value of
489      MATCH_LIMIT_RECURSION applies only to recursive calls of match(). To
490      have any useful effect, it must be less than the value of
491      MATCH_LIMIT. The default is to use the same value as MATCH_LIMIT.
492      There is a runtime method for setting a different limit. On systems
493      that support it, "configure" can be used to override the default.])
494    
495    AC_DEFINE([MAX_NAME_SIZE], [32], [
496      This limit is parameterized just in case anybody ever wants to
497      change it. Care must be taken if it is increased, because it guards
498      against integer overflow caused by enormously large patterns.])
499    
500    AC_DEFINE([MAX_NAME_COUNT], [10000], [
501      This limit is parameterized just in case anybody ever wants to
502      change it. Care must be taken if it is increased, because it guards
503      against integer overflow caused by enormously large patterns.])
504    
505    AH_VERBATIM([PCRE_EXP_DEFN], [
506    /* If you are compiling for a system other than a Unix-like system or
507       Win32, and it needs some magic to be inserted before the definition
508       of a function that is exported by the library, define this macro to
509       contain the relevant magic. If you do not define this macro, it
510       defaults to "extern" for a C compiler and "extern C" for a C++
511       compiler on non-Win32 systems. This macro apears at the start of
512       every exported function that is part of the external API. It does
513       not appear on functions that are "external" in the C sense, but
514       which are internal to the library. */
515    #undef PCRE_EXP_DEFN])
516    
517    if test "$enable_ebcdic" = "yes"; then
518      AC_DEFINE_UNQUOTED([EBCDIC], [], [
519        If you are compiling for a system that uses EBCDIC instead of ASCII
520        character codes, define this macro as 1. On systems that can use
521        "configure", this can be done via --enable-ebcdic. PCRE will then
522        assume that all input strings are in EBCDIC. If you do not define
523        this macro, PCRE will assume input strings are ASCII or UTF-8 Unicode.
524        It is not possible to build a version of PCRE that supports both
525        EBCDIC and UTF-8.])
526    fi
527    
528  dnl Handle --with-match-limit=n  # Platform specific issues
529    NO_UNDEFINED=
530    EXPORT_ALL_SYMBOLS=
531    case $host_os in
532      cygwin* | mingw* )
533        if test X"$enable_shared" = Xyes; then
534          NO_UNDEFINED="-no-undefined"
535          EXPORT_ALL_SYMBOLS="-Wl,--export-all-symbols"
536        fi
537        ;;
538    esac
539    
540  AC_ARG_WITH(match-limit,  # The extra LDFLAGS for each particular library
541  [  --with-match-limit=10000000  default limit on internal looping],  # (Note: The libpcre*_version bits are m4 variables, assigned above)
   MATCH_LIMIT=-DMATCH_LIMIT=$withval  
 )  
542    
543  dnl Handle --with-match-limit_recursion=n  EXTRA_LIBPCRE_LDFLAGS="$EXTRA_LIBPCRE_LDFLAGS \
544                           $NO_UNDEFINED -version-info libpcre_version"
545    
546  AC_ARG_WITH(match-limit-recursion,  EXTRA_LIBPCREPOSIX_LDFLAGS="$EXTRA_LIBPCREPOSIX_LDFLAGS \
547  [  --with-match-limit-recursion=10000000  default limit on internal recursion],                              $NO_UNDEFINED -version-info libpcreposix_version"
   MATCH_LIMIT_RECURSION=-DMATCH_LIMIT_RECURSION=$withval  
 )  
548    
549  dnl Unicode character property support implies UTF-8 support  EXTRA_LIBPCRECPP_LDFLAGS="$EXTRA_LIBPCRECPP_LDFLAGS \
550                              $NO_UNDEFINED -version-info libpcrecpp_version \
551                              $EXPORT_ALL_SYMBOLS"
552    
553    AC_SUBST(EXTRA_LIBPCRE_LDFLAGS)
554    AC_SUBST(EXTRA_LIBPCREPOSIX_LDFLAGS)
555    AC_SUBST(EXTRA_LIBPCRECPP_LDFLAGS)
556    
557    # When we run 'make distcheck', use these arguments.
558    DISTCHECK_CONFIGURE_FLAGS="--enable-cpp --enable-unicode-properties"
559    AC_SUBST(DISTCHECK_CONFIGURE_FLAGS)
560    
561    # Check that, if --enable-pcregrep-libz or --enable-pcregrep-libbz2 is
562    # specified, the relevant library is available.
563    
564    if test "$enable_pcregrep_libz" = "yes"; then
565      if test "$HAVE_ZLIB_H" != "1"; then
566        echo "** Cannot --enable-pcregrep-libz because zlib.h was not found"
567        exit 1
568      fi
569      if test "$HAVE_LIBZ" != "1"; then
570        echo "** Cannot --enable-pcregrep-libz because libz was not found"
571        exit 1
572      fi
573      LIBZ="-lz"
574    fi
575    AC_SUBST(LIBZ)
576    
577  if test "$UCP" != "" ; then  if test "$enable_pcregrep_libbz2" = "yes"; then
578    UTF8=-DSUPPORT_UTF8    if test "$HAVE_BZLIB_H" != "1"; then
579        echo "** Cannot --enable-pcregrep-libbz2 because bzlib.h was not found"
580        exit 1
581      fi
582      if test "$HAVE_LIBBZ2" != "1"; then
583        echo "** Cannot --enable-pcregrep-libbz2 because libbz2 was not found"
584        exit 1
585      fi
586      LIBBZ2="-lbz2"
587  fi  fi
588    AC_SUBST(LIBBZ2)
589    
590  dnl "Export" these variables  # Similarly for --enable-pcretest-readline
591    
592  AC_SUBST(BUILD_EXEEXT)  if test "$enable_pcretest_libreadline" = "yes"; then
593  AC_SUBST(BUILD_OBJEXT)    if test "$HAVE_READLINE_H" != "1"; then
594  AC_SUBST(CC_FOR_BUILD)      echo "** Cannot --enable-pcretest-readline because readline/readline.h was not found."
595  AC_SUBST(CXX_FOR_BUILD)      exit 1
596  AC_SUBST(CFLAGS_FOR_BUILD)    fi
597  AC_SUBST(CXXFLAGS_FOR_BUILD)    if test "$HAVE_HISTORY_H" != "1"; then
598  AC_SUBST(CXXLDFLAGS)      echo "** Cannot --enable-pcretest-readline because readline/history.h was not found."
599  AC_SUBST(EBCDIC)      exit 1
600  AC_SUBST(HAVE_MEMMOVE)    fi
601  AC_SUBST(HAVE_STRERROR)    LIBREADLINE="-lreadline"
602  AC_SUBST(LINK_SIZE)  fi
603  AC_SUBST(MATCH_LIMIT)  AC_SUBST(LIBREADLINE)
 AC_SUBST(MATCH_LIMIT_RECURSION)  
 AC_SUBST(NEWLINE)  
 AC_SUBST(NO_RECURSE)  
 AC_SUBST(PCRE_LIB_VERSION)  
 AC_SUBST(PCRE_POSIXLIB_VERSION)  
 AC_SUBST(PCRE_CPPLIB_VERSION)  
 AC_SUBST(PCRE_VERSION)  
 AC_SUBST(POSIX_MALLOC_THRESHOLD)  
 AC_SUBST(UCP)  
 AC_SUBST(UTF8)  
604    
605  dnl Stuff to make MinGW work better. Special treatment is no longer  # Produce these files, in addition to config.h.
606  dnl needed for Cygwin.  AC_CONFIG_FILES(
607            Makefile
608            libpcre.pc
609            libpcreposix.pc
610            libpcrecpp.pc
611            pcre-config
612            pcre.h
613            pcre_stringpiece.h
614            pcrecpparg.h
615    )
616    
617  case $host_os in  # Make the generated script files executable.
618  mingw* )  AC_CONFIG_COMMANDS([script-chmod], [chmod a+x pcre-config])
     POSIX_OBJ=pcreposix.o  
     POSIX_LOBJ=pcreposix.lo  
     POSIX_LIB=  
     ON_WINDOWS=  
     NOT_ON_WINDOWS="#"  
     WIN_PREFIX=  
     ;;  
 * )  
     ON_WINDOWS="#"  
     NOT_ON_WINDOWS=  
     POSIX_OBJ=  
     POSIX_LOBJ=  
     POSIX_LIB=libpcreposix.la  
     WIN_PREFIX=  
     ;;  
 esac  
 AC_SUBST(WIN_PREFIX)  
 AC_SUBST(ON_WINDOWS)  
 AC_SUBST(NOT_ON_WINDOWS)  
 AC_SUBST(POSIX_OBJ)  
 AC_SUBST(POSIX_LOBJ)  
 AC_SUBST(POSIX_LIB)  
619    
620  if test "x$enable_shared" = "xno" ; then  # Make sure that pcre_chartables.c is removed in case the method for
621      AC_DEFINE([PCRE_STATIC],[1],[to link statically])  # creating it was changed by reconfiguration.
622  fi  AC_CONFIG_COMMANDS([delete-old-chartables], [rm -f pcre_chartables.c])
623    
624    AC_OUTPUT
625    
626    # Print out a nice little message after configure is run displaying your
627    # chosen options.
628    
629    cat <<EOF
630    
631    $PACKAGE-$VERSION configuration summary:
632    
633        Install prefix .................. : ${prefix}
634        C preprocessor .................. : ${CPP}
635        C compiler ...................... : ${CC}
636        C++ preprocessor ................ : ${CXXCPP}
637        C++ compiler .................... : ${CXX}
638        Linker .......................... : ${LD}
639        C preprocessor flags ............ : ${CPPFLAGS}
640        C compiler flags ................ : ${CFLAGS}
641        C++ compiler flags .............. : ${CXXFLAGS}
642        Linker flags .................... : ${LDFLAGS}
643        Extra libraries ................. : ${LIBS}
644    
645        Build C++ library ............... : ${enable_cpp}
646        Enable UTF-8 support ............ : ${enable_utf8}
647        Unicode properties .............. : ${enable_unicode_properties}
648        Newline char/sequence ........... : ${enable_newline}
649        \R matches only ANYCRLF ......... : ${enable_bsr_anycrlf}
650        EBCDIC coding ................... : ${enable_ebcdic}
651        Rebuild char tables ............. : ${enable_rebuild_chartables}
652        Use stack recursion ............. : ${enable_stack_for_recursion}
653        POSIX mem threshold ............. : ${with_posix_malloc_threshold}
654        Internal link size .............. : ${with_link_size}
655        Match limit ..................... : ${with_match_limit}
656        Match limit recursion ........... : ${with_match_limit_recursion}
657        Build shared libs ............... : ${enable_shared}
658        Build static libs ............... : ${enable_static}
659        Link pcregrep with libz ......... : ${enable_pcregrep_libz}
660        Link pcregrep with libbz2 ....... : ${enable_pcregrep_libbz2}
661        Link pcretest with libreadline .. : ${enable_pcretest_libreadline}
662    
663    EOF
664    
665  dnl This must be last; it determines what files are written as well as config.h  dnl end configure.ac
 AC_OUTPUT(Makefile pcre-config:pcre-config.in libpcre.pc:libpcre.pc.in pcrecpparg.h:pcrecpparg.h.in pcre_stringpiece.h:pcre_stringpiece.h.in RunGrepTest:RunGrepTest.in RunTest:RunTest.in,[chmod a+x RunTest RunGrepTest pcre-config])  

Legend:
Removed from v.89  
changed lines
  Added in v.475

  ViewVC Help
Powered by ViewVC 1.1.5