/[pcre]/code/trunk/configure.ac
ViewVC logotype

Contents of /code/trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 936 - (hide annotations) (download)
Sat Feb 25 17:02:23 2012 UTC (14 months, 4 weeks ago) by ph10
File size: 35017 byte(s)
Add support for linking pcretest with libedit instead of libreadline.

1 nigel 87 dnl Process this file with autoconf to produce a configure script.
2    
3 ph10 481 dnl NOTE FOR MAINTAINERS: Do not use minor version numbers 08 or 09 because
4     dnl the leading zeros may cause them to be treated as invalid octal constants
5     dnl if a PCRE user writes code that uses PCRE_MINOR as a number. There is now
6     dnl a check further down that throws an error if 08 or 09 are used.
7 ph10 99
8 ph10 481 dnl The PCRE_PRERELEASE feature is for identifying release candidates. It might
9     dnl be defined as -RC2, for example. For real releases, it should be empty.
10    
11 ph10 418 m4_define(pcre_major, [8])
12 ph10 912 m4_define(pcre_minor, [31])
13     m4_define(pcre_prerelease, [-RC1])
14     m4_define(pcre_date, [2012-02-012])
15 nigel 87
16 ph10 886 # NOTE: The CMakeLists.txt file searches for the above variables in the first
17     # 50 lines of this file. Please update that if the variables above are moved.
18    
19 ph10 97 # Libtool shared library interface versions (current:revision:age)
20 ph10 851 m4_define(libpcre_version, [1:0:0])
21     m4_define(libpcre16_version, [0:0:0])
22 ph10 97 m4_define(libpcreposix_version, [0:0:0])
23     m4_define(libpcrecpp_version, [0:0:0])
24 nigel 87
25 ph10 97 AC_PREREQ(2.57)
26     AC_INIT(PCRE, pcre_major.pcre_minor[]pcre_prerelease, , pcre)
27     AC_CONFIG_SRCDIR([pcre.h.in])
28     AM_INIT_AUTOMAKE([dist-bzip2 dist-zip])
29 ph10 885 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
30 ph10 97 AC_CONFIG_HEADERS(config.h)
31 ph10 159
32 ph10 479 # This was added at the suggestion of libtoolize (03-Jan-10)
33     AC_CONFIG_MACRO_DIR([m4])
34    
35 ph10 159 # The default CFLAGS and CXXFLAGS in Autoconf are "-g -O2" for gcc and just
36     # "-g" for any other compiler. There doesn't seem to be a standard way of
37     # getting rid of the -g (which I don't think is needed for a production
38     # library). This fudge seems to achieve the necessary. First, we remember the
39     # externally set values of CFLAGS and CXXFLAGS. Then call the AC_PROG_CC and
40     # AC_PROG_CXX macros to find the compilers - if CFLAGS and CXXFLAGS are not
41     # set, they will be set to Autoconf's defaults. Afterwards, if the original
42     # values were not set, remove the -g from the Autoconf defaults.
43     # (PH 02-May-07)
44    
45     remember_set_CFLAGS="$CFLAGS"
46     remember_set_CXXFLAGS="$CXXFLAGS"
47    
48 ph10 97 AC_PROG_CC
49     AC_PROG_CXX
50 ph10 159
51     if test "x$remember_set_CFLAGS" = "x"
52     then
53     if test "$CFLAGS" = "-g -O2"
54     then
55     CFLAGS="-O2"
56     elif test "$CFLAGS" = "-g"
57     then
58     CFLAGS=""
59     fi
60     fi
61    
62     if test "x$remember_set_CXXFLAGS" = "x"
63     then
64     if test "$CXXFLAGS" = "-g -O2"
65     then
66     CXXFLAGS="-O2"
67     elif test "$CXXFLAGS" = "-g"
68     then
69     CXXFLAGS=""
70     fi
71     fi
72    
73 ph10 330 # AC_PROG_CXX will return "g++" even if no c++ compiler is installed.
74     # Check for that case, and just disable c++ code if g++ doesn't run.
75     AC_LANG_PUSH(C++)
76 ph10 644 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],, CXX=""; CXXCP=""; CXXFLAGS="")
77 ph10 330 AC_LANG_POP
78 ph10 159
79 ph10 475 # Check for a 64-bit integer type
80     AC_TYPE_INT64_T
81    
82 ph10 97 AC_PROG_INSTALL
83     AC_LIBTOOL_WIN32_DLL
84 ph10 644 LT_INIT
85 ph10 137 AC_PROG_LN_S
86 nigel 87
87 ph10 97 PCRE_MAJOR="pcre_major"
88     PCRE_MINOR="pcre_minor"
89     PCRE_PRERELEASE="pcre_prerelease"
90     PCRE_DATE="pcre_date"
91 nigel 87
92 ph10 481 if test "$PCRE_MINOR" = "08" -o "$PCRE_MINOR" = "09"
93     then
94     echo "***"
95     echo "*** Minor version number $PCRE_MINOR must not be used. ***"
96 ph10 487 echo "*** Use only 01 to 07 or 10 onwards, to avoid octal issues. ***"
97     echo "***"
98 ph10 481 exit 1
99 ph10 487 fi
100 ph10 481
101 ph10 97 AC_SUBST(PCRE_MAJOR)
102     AC_SUBST(PCRE_MINOR)
103     AC_SUBST(PCRE_PRERELEASE)
104     AC_SUBST(PCRE_DATE)
105 nigel 87
106 ph10 97 # Set a more sensible default value for $(htmldir).
107     if test "x$htmldir" = 'x${docdir}'
108     then
109     htmldir='${docdir}/html'
110     fi
111 nigel 87
112 ph10 836 # Handle --disable-pcre8 (enabled by default)
113     AC_ARG_ENABLE(pcre8,
114     AS_HELP_STRING([--disable-pcre8],
115 zherczeg 876 [disable 8 bit character support]),
116 ph10 836 , enable_pcre8=unset)
117 ph10 843 AC_SUBST(enable_pcre8)
118 ph10 836
119     # Handle --enable-pcre16 (disabled by default)
120     AC_ARG_ENABLE(pcre16,
121     AS_HELP_STRING([--enable-pcre16],
122     [enable 16 bit character support]),
123     , enable_pcre16=unset)
124 ph10 843 AC_SUBST(enable_pcre16)
125 ph10 836
126 ph10 492 # Handle --disable-cpp. The substitution of enable_cpp is needed for use in
127     # pcre-config.
128 ph10 97 AC_ARG_ENABLE(cpp,
129     AS_HELP_STRING([--disable-cpp],
130     [disable C++ support]),
131 ph10 836 , enable_cpp=unset)
132 ph10 507 AC_SUBST(enable_cpp)
133 nigel 87
134 ph10 666 # Handle --enable-jit (disabled by default)
135     AC_ARG_ENABLE(jit,
136     AS_HELP_STRING([--enable-jit],
137     [enable Just-In-Time compiling support]),
138     , enable_jit=no)
139    
140 ph10 685 # Handle --disable-pcregrep-jit (enabled by default)
141     AC_ARG_ENABLE(pcregrep-jit,
142     AS_HELP_STRING([--disable-pcregrep-jit],
143     [disable JIT support in pcregrep]),
144     , enable_pcregrep_jit=yes)
145    
146 ph10 128 # Handle --enable-rebuild-chartables
147     AC_ARG_ENABLE(rebuild-chartables,
148     AS_HELP_STRING([--enable-rebuild-chartables],
149     [rebuild character tables in current locale]),
150     , enable_rebuild_chartables=no)
151    
152 ph10 97 # Handle --enable-utf8 (disabled by default)
153     AC_ARG_ENABLE(utf8,
154     AS_HELP_STRING([--enable-utf8],
155 ph10 836 [another name for --enable-utf. Kept only for compatibility reasons]),
156 ph10 97 , enable_utf8=unset)
157 nigel 87
158 ph10 836 # Handle --enable-utf (disabled by default)
159     AC_ARG_ENABLE(utf,
160     AS_HELP_STRING([--enable-utf],
161     [enable UTF-8/16 support (incompatible with --enable-ebcdic)]),
162     , enable_utf=unset)
163    
164 ph10 97 # Handle --enable-unicode-properties
165     AC_ARG_ENABLE(unicode-properties,
166     AS_HELP_STRING([--enable-unicode-properties],
167 ph10 836 [enable Unicode properties support (implies --enable-utf)]),
168 ph10 97 , enable_unicode_properties=no)
169 nigel 87
170 ph10 97 # Handle --enable-newline=NL
171     dnl AC_ARG_ENABLE(newline,
172     dnl AS_HELP_STRING([--enable-newline=NL],
173 ph10 149 dnl [use NL as newline (lf, cr, crlf, anycrlf, any; default=lf)]),
174 ph10 97 dnl , enable_newline=lf)
175 nigel 87
176 ph10 97 # Separate newline options
177     ac_pcre_newline=lf
178     AC_ARG_ENABLE(newline-is-cr,
179     AS_HELP_STRING([--enable-newline-is-cr],
180     [use CR as newline character]),
181     ac_pcre_newline=cr)
182     AC_ARG_ENABLE(newline-is-lf,
183     AS_HELP_STRING([--enable-newline-is-lf],
184     [use LF as newline character (default)]),
185     ac_pcre_newline=lf)
186     AC_ARG_ENABLE(newline-is-crlf,
187     AS_HELP_STRING([--enable-newline-is-crlf],
188     [use CRLF as newline sequence]),
189     ac_pcre_newline=crlf)
190 ph10 149 AC_ARG_ENABLE(newline-is-anycrlf,
191     AS_HELP_STRING([--enable-newline-is-anycrlf],
192     [use CR, LF, or CRLF as newline sequence]),
193     ac_pcre_newline=anycrlf)
194 ph10 97 AC_ARG_ENABLE(newline-is-any,
195     AS_HELP_STRING([--enable-newline-is-any],
196     [use any valid Unicode newline sequence]),
197     ac_pcre_newline=any)
198     enable_newline="$ac_pcre_newline"
199 nigel 87
200 ph10 231 # Handle --enable-bsr-anycrlf
201     AC_ARG_ENABLE(bsr-anycrlf,
202     AS_HELP_STRING([--enable-bsr-anycrlf],
203     [\R matches only CR, LF, CRLF by default]),
204     , enable_bsr_anycrlf=no)
205    
206 ph10 97 # Handle --enable-ebcdic
207     AC_ARG_ENABLE(ebcdic,
208     AS_HELP_STRING([--enable-ebcdic],
209 ph10 836 [assume EBCDIC coding rather than ASCII; incompatible with --enable-utf; use only in (uncommon) EBCDIC environments; it implies --enable-rebuild-chartables]),
210 ph10 97 , enable_ebcdic=no)
211 nigel 87
212 ph10 97 # Handle --disable-stack-for-recursion
213     AC_ARG_ENABLE(stack-for-recursion,
214     AS_HELP_STRING([--disable-stack-for-recursion],
215     [don't use stack recursion when matching]),
216     , enable_stack_for_recursion=yes)
217 nigel 87
218 ph10 286 # Handle --enable-pcregrep-libz
219     AC_ARG_ENABLE(pcregrep-libz,
220     AS_HELP_STRING([--enable-pcregrep-libz],
221     [link pcregrep with libz to handle .gz files]),
222     , enable_pcregrep_libz=no)
223    
224     # Handle --enable-pcregrep-libbz2
225     AC_ARG_ENABLE(pcregrep-libbz2,
226     AS_HELP_STRING([--enable-pcregrep-libbz2],
227     [link pcregrep with libbz2 to handle .bz2 files]),
228     , enable_pcregrep_libbz2=no)
229    
230 ph10 644 # Handle --with-pcregrep-bufsize=N
231     AC_ARG_WITH(pcregrep-bufsize,
232     AS_HELP_STRING([--with-pcregrep-bufsize=N],
233     [pcregrep buffer size (default=20480)]),
234     , with_pcregrep_bufsize=20480)
235    
236 ph10 936 # Handle --enable-pcretest-libedit
237     AC_ARG_ENABLE(pcretest-libedit,
238     AS_HELP_STRING([--enable-pcretest-libedit],
239     [link pcretest with libedit]),
240     , enable_pcretest_libedit=no)
241    
242 ph10 287 # Handle --enable-pcretest-libreadline
243     AC_ARG_ENABLE(pcretest-libreadline,
244     AS_HELP_STRING([--enable-pcretest-libreadline],
245     [link pcretest with libreadline]),
246     , enable_pcretest_libreadline=no)
247    
248 ph10 97 # Handle --with-posix-malloc-threshold=NBYTES
249     AC_ARG_WITH(posix-malloc-threshold,
250     AS_HELP_STRING([--with-posix-malloc-threshold=NBYTES],
251     [threshold for POSIX malloc usage (default=10)]),
252     , with_posix_malloc_threshold=10)
253 nigel 87
254 ph10 97 # Handle --with-link-size=N
255     AC_ARG_WITH(link-size,
256     AS_HELP_STRING([--with-link-size=N],
257     [internal link size (2, 3, or 4 allowed; default=2)]),
258     , with_link_size=2)
259 nigel 87
260 ph10 97 # Handle --with-match-limit=N
261     AC_ARG_WITH(match-limit,
262     AS_HELP_STRING([--with-match-limit=N],
263     [default limit on internal looping (default=10000000)]),
264     , with_match_limit=10000000)
265 nigel 87
266 ph10 97 # Handle --with-match-limit_recursion=N
267     #
268     # Note: In config.h, the default is to define MATCH_LIMIT_RECURSION
269     # symbolically as MATCH_LIMIT, which in turn is defined to be some numeric
270     # value (e.g. 10000000). MATCH_LIMIT_RECURSION can otherwise be set to some
271     # different numeric value (or even the same numeric value as MATCH_LIMIT,
272     # though no longer defined in terms of the latter).
273     #
274     AC_ARG_WITH(match-limit-recursion,
275     AS_HELP_STRING([--with-match-limit-recursion=N],
276     [default limit on internal recursion (default=MATCH_LIMIT)]),
277     , with_match_limit_recursion=MATCH_LIMIT)
278 nigel 87
279 ph10 836 # Copy enable_utf8 value to enable_utf for compatibility reasons
280     if test "x$enable_utf8" != "xunset"
281     then
282     if test "x$enable_utf" != "xunset"
283     then
284     AC_MSG_ERROR([--enable/disable-utf8 is kept only for compatibility reasons and its value is copied to --enable/disable-utf. Newer code must use --enable/disable-utf alone.])
285     fi
286     enable_utf=$enable_utf8
287     fi
288    
289     # Set the default value for pcre8
290     if test "x$enable_pcre8" = "xunset"
291     then
292     enable_pcre8=yes
293     fi
294    
295     # Set the default value for pcre16
296     if test "x$enable_pcre16" = "xunset"
297     then
298     enable_pcre16=no
299     fi
300    
301     # Make sure enable_pcre8 or enable_pcre16 was set
302     if test "x$enable_pcre8$enable_pcre16" = "xnono"
303     then
304     AC_MSG_ERROR([Either 8 or 16 bit (or both) pcre library must be enabled])
305     fi
306    
307     # Make sure that if enable_unicode_properties was set, that UTF support is enabled.
308 ph10 97 if test "x$enable_unicode_properties" = "xyes"
309     then
310 ph10 836 if test "x$enable_utf" = "xno"
311 ph10 97 then
312 ph10 836 AC_MSG_ERROR([support for Unicode properties requires UTF-8/16 support])
313 ph10 97 fi
314 ph10 836 enable_utf=yes
315 ph10 97 fi
316 nigel 87
317 ph10 836 # enable_utf is disabled by default.
318     if test "x$enable_utf" = "xunset"
319 ph10 97 then
320 ph10 836 enable_utf=no
321 ph10 97 fi
322 nigel 87
323 ph10 836 # enable_cpp copies the value of enable_pcre8 by default
324     if test "x$enable_cpp" = "xunset"
325     then
326     enable_cpp=$enable_pcre8
327     fi
328    
329     # Make sure that if enable_cpp was set, that enable_pcre8 support is enabled
330     if test "x$enable_cpp" = "xyes"
331     then
332     if test "x$enable_pcre8" = "xno"
333     then
334     AC_MSG_ERROR([C++ library requires pcre library with 8 bit characters])
335     fi
336     fi
337    
338 ph10 128 # Make sure that if enable_ebcdic is set, rebuild_chartables is also enabled.
339 ph10 836 # Also check that UTF support is not requested, because PCRE cannot handle
340     # EBCDIC and UTF in the same build. To do so it would need to use different
341 ph10 391 # character constants depending on the mode.
342 ph10 128 #
343 ph10 137 if test "x$enable_ebcdic" = "xyes"
344 ph10 128 then
345     enable_rebuild_chartables=yes
346 ph10 836 if test "x$enable_utf" = "xyes"
347 ph10 391 then
348 ph10 836 AC_MSG_ERROR([support for EBCDIC and UTF-8/16 cannot be enabled at the same time])
349 ph10 391 fi
350 ph10 128 fi
351    
352 ph10 97 # Convert the newline identifier into the appropriate integer value.
353     case "$enable_newline" in
354 ph10 149 lf) ac_pcre_newline_value=10 ;;
355     cr) ac_pcre_newline_value=13 ;;
356     crlf) ac_pcre_newline_value=3338 ;;
357 ph10 150 anycrlf) ac_pcre_newline_value=-2 ;;
358 ph10 149 any) ac_pcre_newline_value=-1 ;;
359 ph10 97 *)
360     AC_MSG_ERROR([invalid argument \"$enable_newline\" to --enable-newline option])
361     ;;
362     esac
363 nigel 87
364 ph10 97 # Check argument to --with-link-size
365     case "$with_link_size" in
366     2|3|4) ;;
367     *)
368     AC_MSG_ERROR([invalid argument \"$with_link_size\" to --with-link-size option])
369     ;;
370     esac
371 nigel 87
372 ph10 97 AH_TOP([
373 ph10 100 /* On Unix-like systems config.h.in is converted by "configure" into config.h.
374     Some other environments also support the use of "configure". PCRE is written in
375     Standard C, but there are a few non-standard things it can cope with, allowing
376     it to run on SunOS4 and other "close to standard" systems.
377 nigel 87
378 ph10 111 If you are going to build PCRE "by hand" on a system without "configure" you
379     should copy the distributed config.h.generic to config.h, and then set up the
380 ph10 237 macro definitions the way you need them. You must then add -DHAVE_CONFIG_H to
381     all of your compile commands, so that config.h is included at the start of
382     every source.
383 nigel 87
384 ph10 237 Alternatively, you can avoid editing by using -D on the compiler command line
385     to set the macro values. In this case, you do not have to set -DHAVE_CONFIG_H.
386    
387 ph10 111 PCRE uses memmove() if HAVE_MEMMOVE is set to 1; otherwise it uses bcopy() if
388     HAVE_BCOPY is set to 1. If your system has neither bcopy() nor memmove(), set
389     them both to 0; an emulation function will be used. */])
390 ph10 100
391 ph10 97 # Checks for header files.
392 nigel 87 AC_HEADER_STDC
393 ph10 97 AC_CHECK_HEADERS(limits.h sys/types.h sys/stat.h dirent.h windows.h)
394 nigel 87
395 ph10 97 # The files below are C++ header files.
396     pcre_have_type_traits="0"
397     pcre_have_bits_type_traits="0"
398     if test "x$enable_cpp" = "xyes" -a -n "$CXX"
399 nigel 87 then
400 ph10 97 AC_LANG_PUSH(C++)
401 nigel 87
402 ph10 330 # Older versions of pcre defined pcrecpp::no_arg, but in new versions
403     # it's called pcrecpp::RE::no_arg. For backwards ABI compatibility,
404     # we want to make one an alias for the other. Different systems do
405     # this in different ways. Some systems, for instance, can do it via
406     # a linker flag: -alias (for os x 10.5) or -i (for os x <=10.4).
407     OLD_LDFLAGS="$LDFLAGS"
408     for flag in "-alias,__ZN7pcrecpp2RE6no_argE,__ZN7pcrecpp6no_argE" \
409     "-i__ZN7pcrecpp6no_argE:__ZN7pcrecpp2RE6no_argE"; do
410     AC_MSG_CHECKING([for alias support in the linker])
411     LDFLAGS="$OLD_LDFLAGS -Wl,$flag"
412     # We try to run the linker with this new ld flag. If the link fails,
413     # we give up and remove the new flag from LDFLAGS.
414 ph10 644 AC_LINK_IFELSE([AC_LANG_PROGRAM([namespace pcrecpp {
415 ph10 330 class RE { static int no_arg; };
416     int RE::no_arg;
417     }],
418 ph10 644 [])],
419 ph10 330 [AC_MSG_RESULT([yes]);
420     EXTRA_LIBPCRECPP_LDFLAGS="$EXTRA_LIBPCRECPP_LDFLAGS -Wl,$flag";
421     break;],
422     AC_MSG_RESULT([no]))
423     done
424     LDFLAGS="$OLD_LDFLAGS"
425    
426 ph10 97 # We could be more clever here, given we're doing AC_SUBST with this
427 ph10 127 # (eg set a var to be the name of the include file we want). But we're not
428 ph10 97 # so it's easy to change back to 'regular' autoconf vars if we needed to.
429 nigel 87 AC_CHECK_HEADERS(string, [pcre_have_cpp_headers="1"],
430     [pcre_have_cpp_headers="0"])
431     AC_CHECK_HEADERS(bits/type_traits.h, [pcre_have_bits_type_traits="1"],
432     [pcre_have_bits_type_traits="0"])
433     AC_CHECK_HEADERS(type_traits.h, [pcre_have_type_traits="1"],
434     [pcre_have_type_traits="0"])
435 ph10 330
436 ph10 486 # (This isn't c++-specific, but is only used in pcrecpp.cc, so try this
437     # in a c++ context. This matters becuase strtoimax is C99 and may not
438     # be supported by the C++ compiler.)
439     # Figure out how to create a longlong from a string: strtoll and
440     # equiv. It's not enough to call AC_CHECK_FUNCS: hpux has a
441     # strtoll, for instance, but it only takes 2 args instead of 3!
442     # We have to call AH_TEMPLATE since AC_DEFINE_UNQUOTED below is complex.
443     AH_TEMPLATE(HAVE_STRTOQ, [Define to 1 if you have `strtoq'.])
444     AH_TEMPLATE(HAVE_STRTOLL, [Define to 1 if you have `strtoll'.])
445     AH_TEMPLATE(HAVE__STRTOI64, [Define to 1 if you have `_strtoi64'.])
446     AH_TEMPLATE(HAVE_STRTOIMAX, [Define to 1 if you have `strtoimax'.])
447     have_strto_fn=0
448 ph10 506 for fn in strtoq strtoll _strtoi64 strtoimax; do
449 ph10 486 AC_MSG_CHECKING([for $fn])
450     if test "$fn" = strtoimax; then
451     include=stdint.h
452     else
453     include=stdlib.h
454     fi
455 ph10 644 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <$include>],
456     [char* e; return $fn("100", &e, 10)])],
457 ph10 486 [AC_MSG_RESULT(yes)
458     AC_DEFINE_UNQUOTED(HAVE_`echo $fn | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ`, 1,
459     [Define to 1 if you have `$fn'.])
460     have_strto_fn=1
461     break],
462     [AC_MSG_RESULT(no)])
463     done
464    
465     if test "$have_strto_fn" = 1; then
466     AC_CHECK_TYPES([long long],
467     [pcre_have_long_long="1"],
468     [pcre_have_long_long="0"])
469     AC_CHECK_TYPES([unsigned long long],
470     [pcre_have_ulong_long="1"],
471     [pcre_have_ulong_long="0"])
472     else
473     pcre_have_long_long="0"
474     pcre_have_ulong_long="0"
475     fi
476     AC_SUBST(pcre_have_long_long)
477     AC_SUBST(pcre_have_ulong_long)
478    
479 ph10 97 AC_LANG_POP
480     fi
481     # Using AC_SUBST eliminates the need to include config.h in a public .h file
482     AC_SUBST(pcre_have_type_traits)
483 nigel 87 AC_SUBST(pcre_have_bits_type_traits)
484    
485 ph10 97 # Conditional compilation
486 ph10 836 AM_CONDITIONAL(WITH_PCRE8, test "x$enable_pcre8" = "xyes")
487     AM_CONDITIONAL(WITH_PCRE16, test "x$enable_pcre16" = "xyes")
488 ph10 97 AM_CONDITIONAL(WITH_PCRE_CPP, test "x$enable_cpp" = "xyes")
489 ph10 128 AM_CONDITIONAL(WITH_REBUILD_CHARTABLES, test "x$enable_rebuild_chartables" = "xyes")
490 ph10 666 AM_CONDITIONAL(WITH_JIT, test "x$enable_jit" = "xyes")
491 ph10 836 AM_CONDITIONAL(WITH_UTF, test "x$enable_utf" = "xyes")
492 nigel 87
493 ph10 97 # Checks for typedefs, structures, and compiler characteristics.
494 nigel 87
495     AC_C_CONST
496     AC_TYPE_SIZE_T
497    
498 ph10 97 # Checks for library functions.
499 nigel 87
500 ph10 321 AC_CHECK_FUNCS(bcopy memmove strerror)
501 nigel 87
502 ph10 286 # Check for the availability of libz (aka zlib)
503    
504     AC_CHECK_HEADERS([zlib.h], [HAVE_ZLIB_H=1])
505     AC_CHECK_LIB([z], [gzopen], [HAVE_LIBZ=1])
506    
507 ph10 478 # Check for the availability of libbz2. Originally we just used AC_CHECK_LIB,
508     # as for libz. However, this had the following problem, diagnosed and fixed by
509     # a user:
510     #
511     # - libbz2 uses the Pascal calling convention (WINAPI) for the functions
512     # under Win32.
513     # - The standard autoconf AC_CHECK_LIB fails to include "bzlib.h",
514     # therefore missing the function definition.
515     # - The compiler thus generates a "C" signature for the test function.
516     # - The linker fails to find the "C" function.
517     # - PCRE fails to configure if asked to do so against libbz2.
518     #
519     # Solution:
520     #
521     # - Replace the AC_CHECK_LIB test with a custom test.
522 ph10 286
523     AC_CHECK_HEADERS([bzlib.h], [HAVE_BZLIB_H=1])
524 ph10 478 # Original test
525     # AC_CHECK_LIB([bz2], [BZ2_bzopen], [HAVE_LIBBZ2=1])
526     #
527     # Custom test follows
528 ph10 286
529 ph10 478 AC_MSG_CHECKING([for libbz2])
530     OLD_LIBS="$LIBS"
531     LIBS="$LIBS -lbz2"
532 ph10 644 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
533 ph10 478 #ifdef HAVE_BZLIB_H
534     #include <bzlib.h>
535     #endif]],
536 ph10 644 [[return (int)BZ2_bzopen("conftest", "rb");]])],
537 ph10 478 [AC_MSG_RESULT([yes]);HAVE_LIBBZ2=1; break;],
538     AC_MSG_RESULT([no]))
539     LIBS="$OLD_LIBS"
540    
541 ph10 287 # Check for the availabiity of libreadline
542    
543 ph10 936 if test "$enable_pcretest_libreadline" = "yes"; then
544     AC_CHECK_HEADERS([readline/readline.h], [HAVE_READLINE_H=1])
545     AC_CHECK_HEADERS([readline/history.h], [HAVE_HISTORY_H=1])
546     AC_CHECK_LIB([readline], [readline], [LIBREADLINE="-lreadline"],
547     [unset ac_cv_lib_readline_readline;
548     AC_CHECK_LIB([readline], [readline], [LIBREADLINE="-ltinfo"],
549     [unset ac_cv_lib_readline_readline;
550     AC_CHECK_LIB([readline], [readline], [LIBREADLINE="-lcurses"],
551     [unset ac_cv_lib_readline_readline;
552     AC_CHECK_LIB([readline], [readline], [LIBREADLINE="-lncurses"],
553     [unset ac_cv_lib_readline_readline;
554     AC_CHECK_LIB([readline], [readline], [LIBREADLINE="-lncursesw"],
555     [unset ac_cv_lib_readline_readline;
556     AC_CHECK_LIB([readline], [readline], [LIBREADLINE="-ltermcap"],
557     [LIBREADLINE=""],
558     [-ltermcap])],
559     [-lncursesw])],
560     [-lncurses])],
561     [-lcurses])],
562     [-ltinfo])])
563     AC_SUBST(LIBREADLINE)
564     if test -n "$LIBREADLINE"; then
565     if test "$LIBREADLINE" != "-lreadline"; then
566     echo "-lreadline needs $LIBREADLINE"
567     LIBREADLINE="-lreadline $LIBREADLINE"
568     fi
569     fi
570 ph10 889 fi
571 ph10 936
572 ph10 287
573 ph10 936 # Check for the availability of libedit
574    
575     if test "$enable_pcretest_libedit" = "yes"; then
576     AC_CHECK_HEADERS([editline/readline.h], [HAVE_EDITLINE_READLINE_H=1],
577     [AC_CHECK_HEADERS([readline/readline.h], [HAVE_READLINE_READLINE_H=1])])
578     AC_CHECK_LIB([edit], [readline], [LIBEDIT="-ledit"])
579     fi
580    
581 ph10 97 # This facilitates -ansi builds under Linux
582     dnl AC_DEFINE([_GNU_SOURCE], [], [Enable GNU extensions in glibc])
583 nigel 87
584 ph10 430 PCRE_STATIC_CFLAG=""
585 ph10 97 if test "x$enable_shared" = "xno" ; then
586     AC_DEFINE([PCRE_STATIC], [1], [
587     Define if linking statically (TODO: make nice with Libtool)])
588 ph10 430 PCRE_STATIC_CFLAG="-DPCRE_STATIC"
589 nigel 87 fi
590 ph10 430 AC_SUBST(PCRE_STATIC_CFLAG)
591 nigel 87
592 ph10 97 # Here is where pcre specific defines are handled
593 nigel 87
594 ph10 836 if test "$enable_pcre8" = "yes"; then
595     AC_DEFINE([SUPPORT_PCRE8], [], [
596     Define to enable the 8 bit PCRE library.])
597     fi
598    
599     if test "$enable_pcre16" = "yes"; then
600     AC_DEFINE([SUPPORT_PCRE16], [], [
601     Define to enable the 16 bit PCRE library.])
602     fi
603    
604 ph10 666 if test "$enable_jit" = "yes"; then
605     AC_DEFINE([SUPPORT_JIT], [], [
606     Define to enable support for Just-In-Time compiling.])
607 ph10 685 else
608     enable_pcregrep_jit="no"
609 ph10 666 fi
610    
611 ph10 685 if test "$enable_pcregrep_jit" = "yes"; then
612     AC_DEFINE([SUPPORT_PCREGREP_JIT], [], [
613 ph10 691 Define to enable JIT support in pcregrep.])
614 ph10 685 fi
615    
616 ph10 836 if test "$enable_utf" = "yes"; then
617     AC_DEFINE([SUPPORT_UTF], [], [
618     Define to enable support for the UTF-8/16 Unicode encoding. This
619     will work even in an EBCDIC environment, but it is incompatible
620     with the EBCDIC macro. That is, PCRE can support *either* EBCDIC
621     code *or* ASCII/UTF-8/16, but not both at once.])
622 nigel 87 fi
623    
624 ph10 97 if test "$enable_unicode_properties" = "yes"; then
625     AC_DEFINE([SUPPORT_UCP], [], [
626 ph10 666 Define to enable support for Unicode properties.])
627 ph10 97 fi
628 nigel 87
629 ph10 97 if test "$enable_stack_for_recursion" = "no"; then
630     AC_DEFINE([NO_RECURSE], [], [
631     PCRE uses recursive function calls to handle backtracking while
632 ph10 127 matching. This can sometimes be a problem on systems that have
633 ph10 100 stacks of limited size. Define NO_RECURSE to get a version that
634 ph10 97 doesn't use recursion in the match() function; instead it creates
635     its own stack by steam using pcre_recurse_malloc() to obtain memory
636     from the heap. For more detail, see the comments and other stuff
637     just above the match() function. On systems that support it,
638     "configure" can be used to set this in the Makefile
639     (use --disable-stack-for-recursion).])
640 nigel 87 fi
641    
642 ph10 286 if test "$enable_pcregrep_libz" = "yes"; then
643     AC_DEFINE([SUPPORT_LIBZ], [], [
644     Define to allow pcregrep to be linked with libz, so that it is
645     able to handle .gz files.])
646     fi
647    
648     if test "$enable_pcregrep_libbz2" = "yes"; then
649     AC_DEFINE([SUPPORT_LIBBZ2], [], [
650     Define to allow pcregrep to be linked with libbz2, so that it is
651     able to handle .bz2 files.])
652     fi
653    
654 ph10 644 if test $with_pcregrep_bufsize -lt 8192 ; then
655     with_pcregrep_bufsize="8192"
656     fi
657 ph10 654
658 ph10 644 AC_DEFINE_UNQUOTED([PCREGREP_BUFSIZE], [$with_pcregrep_bufsize], [
659     The value of PCREGREP_BUFSIZE determines the size of buffer used by
660     pcregrep to hold parts of the file it is searching. On systems that
661     support it, "configure" can be used to override the default, which is
662     8192. This is also the minimum value. The actual amount of memory used by
663     pcregrep is three times this number, because it allows for the buffering of
664     "before" and "after" lines.])
665    
666 ph10 936 if test "$enable_pcretest_libedit" = "yes"; then
667     AC_DEFINE([SUPPORT_LIBEDIT], [], [
668     Define to allow pcretest to be linked with libedit.])
669     LIBREADLINE="$LIBEDIT"
670     elif test "$enable_pcretest_libreadline" = "yes"; then
671 ph10 287 AC_DEFINE([SUPPORT_LIBREADLINE], [], [
672     Define to allow pcretest to be linked with libreadline.])
673 ph10 289 fi
674 ph10 287
675 ph10 97 AC_DEFINE_UNQUOTED([NEWLINE], [$ac_pcre_newline_value], [
676 ph10 111 The value of NEWLINE determines the newline character sequence. On
677 ph10 231 systems that support it, "configure" can be used to override the
678     default, which is 10. The possible values are 10 (LF), 13 (CR),
679     3338 (CRLF), -1 (ANY), or -2 (ANYCRLF).])
680 nigel 87
681 ph10 231 if test "$enable_bsr_anycrlf" = "yes"; then
682     AC_DEFINE([BSR_ANYCRLF], [], [
683     By default, the \R escape sequence matches any Unicode line ending
684     character or sequence of characters. If BSR_ANYCRLF is defined, this is
685     changed so that backslash-R matches only CR, LF, or CRLF. The build-
686     time default can be overridden by the user of PCRE at runtime. On
687     systems that support it, "configure" can be used to override the
688     default.])
689     fi
690    
691 ph10 97 AC_DEFINE_UNQUOTED([LINK_SIZE], [$with_link_size], [
692     The value of LINK_SIZE determines the number of bytes used to store
693     links as offsets within the compiled regex. The default is 2, which
694     allows for compiled patterns up to 64K long. This covers the vast
695     majority of cases. However, PCRE can also be compiled to use 3 or 4
696     bytes instead. This allows for longer patterns in extreme cases. On
697     systems that support it, "configure" can be used to override this default.])
698 nigel 87
699 ph10 97 AC_DEFINE_UNQUOTED([POSIX_MALLOC_THRESHOLD], [$with_posix_malloc_threshold], [
700     When calling PCRE via the POSIX interface, additional working storage
701     is required for holding the pointers to capturing substrings because
702     PCRE requires three integers per substring, whereas the POSIX
703     interface provides only two. If the number of expected substrings is
704     small, the wrapper function uses space on the stack, because this is
705     faster than using malloc() for each call. The threshold above which
706     the stack is no longer used is defined by POSIX_MALLOC_THRESHOLD. On
707     systems that support it, "configure" can be used to override this
708     default.])
709 nigel 91
710 ph10 97 AC_DEFINE_UNQUOTED([MATCH_LIMIT], [$with_match_limit], [
711     The value of MATCH_LIMIT determines the default number of times the
712     internal match() function can be called during a single execution of
713 ph10 100 pcre_exec(). There is a runtime interface for setting a different
714 ph10 97 limit. The limit exists in order to catch runaway regular
715     expressions that take for ever to determine that they do not match.
716     The default is set very large so that it does not accidentally catch
717     legitimate cases. On systems that support it, "configure" can be
718     used to override this default default.])
719 nigel 91
720 ph10 97 AC_DEFINE_UNQUOTED([MATCH_LIMIT_RECURSION], [$with_match_limit_recursion], [
721     The above limit applies to all calls of match(), whether or not they
722     increase the recursion depth. In some environments it is desirable
723     to limit the depth of recursive calls of match() more strictly, in
724     order to restrict the maximum amount of stack (or heap, if
725     NO_RECURSE is defined) that is used. The value of
726     MATCH_LIMIT_RECURSION applies only to recursive calls of match(). To
727     have any useful effect, it must be less than the value of
728 ph10 111 MATCH_LIMIT. The default is to use the same value as MATCH_LIMIT.
729     There is a runtime method for setting a different limit. On systems
730 ph10 100 that support it, "configure" can be used to override the default.])
731 nigel 93
732 ph10 97 AC_DEFINE([MAX_NAME_SIZE], [32], [
733     This limit is parameterized just in case anybody ever wants to
734     change it. Care must be taken if it is increased, because it guards
735     against integer overflow caused by enormously large patterns.])
736 nigel 93
737 ph10 97 AC_DEFINE([MAX_NAME_COUNT], [10000], [
738     This limit is parameterized just in case anybody ever wants to
739     change it. Care must be taken if it is increased, because it guards
740     against integer overflow caused by enormously large patterns.])
741 nigel 87
742 ph10 145 AH_VERBATIM([PCRE_EXP_DEFN], [
743 ph10 97 /* If you are compiling for a system other than a Unix-like system or
744     Win32, and it needs some magic to be inserted before the definition
745     of a function that is exported by the library, define this macro to
746     contain the relevant magic. If you do not define this macro, it
747     defaults to "extern" for a C compiler and "extern C" for a C++
748     compiler on non-Win32 systems. This macro apears at the start of
749     every exported function that is part of the external API. It does
750     not appear on functions that are "external" in the C sense, but
751     which are internal to the library. */
752 ph10 145 #undef PCRE_EXP_DEFN])
753 nigel 87
754 ph10 97 if test "$enable_ebcdic" = "yes"; then
755     AC_DEFINE_UNQUOTED([EBCDIC], [], [
756     If you are compiling for a system that uses EBCDIC instead of ASCII
757     character codes, define this macro as 1. On systems that can use
758 ph10 391 "configure", this can be done via --enable-ebcdic. PCRE will then
759 ph10 392 assume that all input strings are in EBCDIC. If you do not define
760 ph10 836 this macro, PCRE will assume input strings are ASCII or UTF-8/16
761     Unicode. It is not possible to build a version of PCRE that
762     supports both EBCDIC and UTF-8/16.])
763 nigel 87 fi
764    
765 ph10 97 # Platform specific issues
766     NO_UNDEFINED=
767     EXPORT_ALL_SYMBOLS=
768     case $host_os in
769     cygwin* | mingw* )
770     if test X"$enable_shared" = Xyes; then
771     NO_UNDEFINED="-no-undefined"
772     EXPORT_ALL_SYMBOLS="-Wl,--export-all-symbols"
773     fi
774     ;;
775     esac
776 nigel 87
777 ph10 97 # The extra LDFLAGS for each particular library
778     # (Note: The libpcre*_version bits are m4 variables, assigned above)
779 nigel 87
780 ph10 330 EXTRA_LIBPCRE_LDFLAGS="$EXTRA_LIBPCRE_LDFLAGS \
781     $NO_UNDEFINED -version-info libpcre_version"
782 nigel 87
783 ph10 851 EXTRA_LIBPCRE16_LDFLAGS="$EXTRA_LIBPCRE16_LDFLAGS \
784     $NO_UNDEFINED -version-info libpcre16_version"
785    
786 ph10 330 EXTRA_LIBPCREPOSIX_LDFLAGS="$EXTRA_LIBPCREPOSIX_LDFLAGS \
787     $NO_UNDEFINED -version-info libpcreposix_version"
788 nigel 87
789 ph10 330 EXTRA_LIBPCRECPP_LDFLAGS="$EXTRA_LIBPCRECPP_LDFLAGS \
790     $NO_UNDEFINED -version-info libpcrecpp_version \
791     $EXPORT_ALL_SYMBOLS"
792 nigel 87
793 ph10 97 AC_SUBST(EXTRA_LIBPCRE_LDFLAGS)
794 ph10 851 AC_SUBST(EXTRA_LIBPCRE16_LDFLAGS)
795 ph10 97 AC_SUBST(EXTRA_LIBPCREPOSIX_LDFLAGS)
796     AC_SUBST(EXTRA_LIBPCRECPP_LDFLAGS)
797 nigel 87
798 ph10 903 # When we run 'make distcheck', use these arguments. Turning off compiler
799     # optimization makes it run faster.
800     DISTCHECK_CONFIGURE_FLAGS="CFLAGS='' CXXFLAGS='' --enable-pcre16 --enable-jit --enable-cpp --enable-unicode-properties"
801 ph10 97 AC_SUBST(DISTCHECK_CONFIGURE_FLAGS)
802 nigel 87
803 ph10 286 # Check that, if --enable-pcregrep-libz or --enable-pcregrep-libbz2 is
804 ph10 376 # specified, the relevant library is available.
805 ph10 286
806     if test "$enable_pcregrep_libz" = "yes"; then
807     if test "$HAVE_ZLIB_H" != "1"; then
808     echo "** Cannot --enable-pcregrep-libz because zlib.h was not found"
809     exit 1
810     fi
811     if test "$HAVE_LIBZ" != "1"; then
812     echo "** Cannot --enable-pcregrep-libz because libz was not found"
813     exit 1
814     fi
815 ph10 376 LIBZ="-lz"
816 ph10 286 fi
817 ph10 376 AC_SUBST(LIBZ)
818 ph10 286
819     if test "$enable_pcregrep_libbz2" = "yes"; then
820     if test "$HAVE_BZLIB_H" != "1"; then
821     echo "** Cannot --enable-pcregrep-libbz2 because bzlib.h was not found"
822     exit 1
823     fi
824     if test "$HAVE_LIBBZ2" != "1"; then
825     echo "** Cannot --enable-pcregrep-libbz2 because libbz2 was not found"
826     exit 1
827     fi
828 ph10 376 LIBBZ2="-lbz2"
829 ph10 286 fi
830 ph10 376 AC_SUBST(LIBBZ2)
831 ph10 286
832 ph10 287 # Similarly for --enable-pcretest-readline
833    
834 ph10 936 if test "$enable_pcretest_libedit" = "yes"; then
835     if test "$enable_pcretest_libreadline" = "yes"; then
836     echo "** Cannot use both --enable-pcretest-libedit and --enable-pcretest-readline"
837     exit 1
838     fi
839     if test "$HAVE_EDITLINE_READLINE_H" != "1" -a \
840     "$HAVE_READLINE_READLINE_H" != "1"; then
841     echo "** Cannot --enable-pcretest-libedit because neither editline/readline.h"
842     echo "** nor readline/readline.h was found."
843     exit 1
844     fi
845     if test -z "$LIBEDIT"; then
846     echo "** Cannot --enable-pcretest-libedit because libedit library was not found."
847     exit 1
848     fi
849     fi
850    
851 ph10 287 if test "$enable_pcretest_libreadline" = "yes"; then
852     if test "$HAVE_READLINE_H" != "1"; then
853     echo "** Cannot --enable-pcretest-readline because readline/readline.h was not found."
854     exit 1
855     fi
856     if test "$HAVE_HISTORY_H" != "1"; then
857     echo "** Cannot --enable-pcretest-readline because readline/history.h was not found."
858     exit 1
859     fi
860 ph10 889 if test -z "$LIBREADLINE"; then
861     echo "** Cannot --enable-pcretest-readline because readline library was not found."
862     exit 1
863     fi
864 ph10 289 fi
865 ph10 287
866 ph10 97 # Produce these files, in addition to config.h.
867     AC_CONFIG_FILES(
868     Makefile
869     libpcre.pc
870 ph10 836 libpcre16.pc
871     libpcreposix.pc
872 ph10 97 libpcrecpp.pc
873     pcre-config
874     pcre.h
875     pcre_stringpiece.h
876     pcrecpparg.h
877 nigel 87 )
878    
879 ph10 97 # Make the generated script files executable.
880 ph10 137 AC_CONFIG_COMMANDS([script-chmod], [chmod a+x pcre-config])
881 nigel 87
882 ph10 128 # Make sure that pcre_chartables.c is removed in case the method for
883     # creating it was changed by reconfiguration.
884 ph10 137 AC_CONFIG_COMMANDS([delete-old-chartables], [rm -f pcre_chartables.c])
885 ph10 128
886 ph10 137 AC_OUTPUT
887 ph10 128
888 ph10 97 # Print out a nice little message after configure is run displaying your
889     # chosen options.
890 ph10 286
891 ph10 97 cat <<EOF
892 nigel 87
893 ph10 97 $PACKAGE-$VERSION configuration summary:
894 nigel 87
895 ph10 287 Install prefix .................. : ${prefix}
896     C preprocessor .................. : ${CPP}
897     C compiler ...................... : ${CC}
898     C++ preprocessor ................ : ${CXXCPP}
899     C++ compiler .................... : ${CXX}
900     Linker .......................... : ${LD}
901     C preprocessor flags ............ : ${CPPFLAGS}
902     C compiler flags ................ : ${CFLAGS}
903     C++ compiler flags .............. : ${CXXFLAGS}
904     Linker flags .................... : ${LDFLAGS}
905     Extra libraries ................. : ${LIBS}
906 ph10 289
907 ph10 836 Build 8 bit pcre library ........ : ${enable_pcre8}
908     Build 16 bit pcre library ....... : ${enable_pcre16}
909 ph10 287 Build C++ library ............... : ${enable_cpp}
910 ph10 666 Enable JIT compiling support .... : ${enable_jit}
911 ph10 836 Enable UTF-8/16 support ......... : ${enable_utf}
912 ph10 287 Unicode properties .............. : ${enable_unicode_properties}
913     Newline char/sequence ........... : ${enable_newline}
914     \R matches only ANYCRLF ......... : ${enable_bsr_anycrlf}
915     EBCDIC coding ................... : ${enable_ebcdic}
916     Rebuild char tables ............. : ${enable_rebuild_chartables}
917     Use stack recursion ............. : ${enable_stack_for_recursion}
918     POSIX mem threshold ............. : ${with_posix_malloc_threshold}
919     Internal link size .............. : ${with_link_size}
920     Match limit ..................... : ${with_match_limit}
921     Match limit recursion ........... : ${with_match_limit_recursion}
922     Build shared libs ............... : ${enable_shared}
923     Build static libs ............... : ${enable_static}
924 ph10 691 Use JIT in pcregrep ............. : ${enable_pcregrep_jit}
925 ph10 654 Buffer size for pcregrep ........ : ${with_pcregrep_bufsize}
926 ph10 287 Link pcregrep with libz ......... : ${enable_pcregrep_libz}
927     Link pcregrep with libbz2 ....... : ${enable_pcregrep_libbz2}
928 ph10 936 Link pcretest with libedit ...... : ${enable_pcretest_libedit}
929 ph10 289 Link pcretest with libreadline .. : ${enable_pcretest_libreadline}
930 nigel 87
931 ph10 97 EOF
932 nigel 87
933 ph10 97 dnl end configure.ac

Properties

Name Value
svn:eol-style native
svn:keywords "Author Date Id Revision Url"

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12