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

Contents of /code/trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 912 - (hide annotations) (download)
Sun Feb 12 16:53:39 2012 UTC (2 years, 8 months ago) by ph10
File size: 33570 byte(s)
Remove bashism from the RunTest script.

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 287 # Handle --enable-pcretest-libreadline
237     AC_ARG_ENABLE(pcretest-libreadline,
238     AS_HELP_STRING([--enable-pcretest-libreadline],
239     [link pcretest with libreadline]),
240     , enable_pcretest_libreadline=no)
241    
242 ph10 97 # Handle --with-posix-malloc-threshold=NBYTES
243     AC_ARG_WITH(posix-malloc-threshold,
244     AS_HELP_STRING([--with-posix-malloc-threshold=NBYTES],
245     [threshold for POSIX malloc usage (default=10)]),
246     , with_posix_malloc_threshold=10)
247 nigel 87
248 ph10 97 # Handle --with-link-size=N
249     AC_ARG_WITH(link-size,
250     AS_HELP_STRING([--with-link-size=N],
251     [internal link size (2, 3, or 4 allowed; default=2)]),
252     , with_link_size=2)
253 nigel 87
254 ph10 97 # Handle --with-match-limit=N
255     AC_ARG_WITH(match-limit,
256     AS_HELP_STRING([--with-match-limit=N],
257     [default limit on internal looping (default=10000000)]),
258     , with_match_limit=10000000)
259 nigel 87
260 ph10 97 # Handle --with-match-limit_recursion=N
261     #
262     # Note: In config.h, the default is to define MATCH_LIMIT_RECURSION
263     # symbolically as MATCH_LIMIT, which in turn is defined to be some numeric
264     # value (e.g. 10000000). MATCH_LIMIT_RECURSION can otherwise be set to some
265     # different numeric value (or even the same numeric value as MATCH_LIMIT,
266     # though no longer defined in terms of the latter).
267     #
268     AC_ARG_WITH(match-limit-recursion,
269     AS_HELP_STRING([--with-match-limit-recursion=N],
270     [default limit on internal recursion (default=MATCH_LIMIT)]),
271     , with_match_limit_recursion=MATCH_LIMIT)
272 nigel 87
273 ph10 836 # Copy enable_utf8 value to enable_utf for compatibility reasons
274     if test "x$enable_utf8" != "xunset"
275     then
276     if test "x$enable_utf" != "xunset"
277     then
278     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.])
279     fi
280     enable_utf=$enable_utf8
281     fi
282    
283     # Set the default value for pcre8
284     if test "x$enable_pcre8" = "xunset"
285     then
286     enable_pcre8=yes
287     fi
288    
289     # Set the default value for pcre16
290     if test "x$enable_pcre16" = "xunset"
291     then
292     enable_pcre16=no
293     fi
294    
295     # Make sure enable_pcre8 or enable_pcre16 was set
296     if test "x$enable_pcre8$enable_pcre16" = "xnono"
297     then
298     AC_MSG_ERROR([Either 8 or 16 bit (or both) pcre library must be enabled])
299     fi
300    
301     # Make sure that if enable_unicode_properties was set, that UTF support is enabled.
302 ph10 97 if test "x$enable_unicode_properties" = "xyes"
303     then
304 ph10 836 if test "x$enable_utf" = "xno"
305 ph10 97 then
306 ph10 836 AC_MSG_ERROR([support for Unicode properties requires UTF-8/16 support])
307 ph10 97 fi
308 ph10 836 enable_utf=yes
309 ph10 97 fi
310 nigel 87
311 ph10 836 # enable_utf is disabled by default.
312     if test "x$enable_utf" = "xunset"
313 ph10 97 then
314 ph10 836 enable_utf=no
315 ph10 97 fi
316 nigel 87
317 ph10 836 # enable_cpp copies the value of enable_pcre8 by default
318     if test "x$enable_cpp" = "xunset"
319     then
320     enable_cpp=$enable_pcre8
321     fi
322    
323     # Make sure that if enable_cpp was set, that enable_pcre8 support is enabled
324     if test "x$enable_cpp" = "xyes"
325     then
326     if test "x$enable_pcre8" = "xno"
327     then
328     AC_MSG_ERROR([C++ library requires pcre library with 8 bit characters])
329     fi
330     fi
331    
332 ph10 128 # Make sure that if enable_ebcdic is set, rebuild_chartables is also enabled.
333 ph10 836 # Also check that UTF support is not requested, because PCRE cannot handle
334     # EBCDIC and UTF in the same build. To do so it would need to use different
335 ph10 391 # character constants depending on the mode.
336 ph10 128 #
337 ph10 137 if test "x$enable_ebcdic" = "xyes"
338 ph10 128 then
339     enable_rebuild_chartables=yes
340 ph10 836 if test "x$enable_utf" = "xyes"
341 ph10 391 then
342 ph10 836 AC_MSG_ERROR([support for EBCDIC and UTF-8/16 cannot be enabled at the same time])
343 ph10 391 fi
344 ph10 128 fi
345    
346 ph10 97 # Convert the newline identifier into the appropriate integer value.
347     case "$enable_newline" in
348 ph10 149 lf) ac_pcre_newline_value=10 ;;
349     cr) ac_pcre_newline_value=13 ;;
350     crlf) ac_pcre_newline_value=3338 ;;
351 ph10 150 anycrlf) ac_pcre_newline_value=-2 ;;
352 ph10 149 any) ac_pcre_newline_value=-1 ;;
353 ph10 97 *)
354     AC_MSG_ERROR([invalid argument \"$enable_newline\" to --enable-newline option])
355     ;;
356     esac
357 nigel 87
358 ph10 97 # Check argument to --with-link-size
359     case "$with_link_size" in
360     2|3|4) ;;
361     *)
362     AC_MSG_ERROR([invalid argument \"$with_link_size\" to --with-link-size option])
363     ;;
364     esac
365 nigel 87
366 ph10 97 AH_TOP([
367 ph10 100 /* On Unix-like systems config.h.in is converted by "configure" into config.h.
368     Some other environments also support the use of "configure". PCRE is written in
369     Standard C, but there are a few non-standard things it can cope with, allowing
370     it to run on SunOS4 and other "close to standard" systems.
371 nigel 87
372 ph10 111 If you are going to build PCRE "by hand" on a system without "configure" you
373     should copy the distributed config.h.generic to config.h, and then set up the
374 ph10 237 macro definitions the way you need them. You must then add -DHAVE_CONFIG_H to
375     all of your compile commands, so that config.h is included at the start of
376     every source.
377 nigel 87
378 ph10 237 Alternatively, you can avoid editing by using -D on the compiler command line
379     to set the macro values. In this case, you do not have to set -DHAVE_CONFIG_H.
380    
381 ph10 111 PCRE uses memmove() if HAVE_MEMMOVE is set to 1; otherwise it uses bcopy() if
382     HAVE_BCOPY is set to 1. If your system has neither bcopy() nor memmove(), set
383     them both to 0; an emulation function will be used. */])
384 ph10 100
385 ph10 97 # Checks for header files.
386 nigel 87 AC_HEADER_STDC
387 ph10 97 AC_CHECK_HEADERS(limits.h sys/types.h sys/stat.h dirent.h windows.h)
388 nigel 87
389 ph10 97 # The files below are C++ header files.
390     pcre_have_type_traits="0"
391     pcre_have_bits_type_traits="0"
392     if test "x$enable_cpp" = "xyes" -a -n "$CXX"
393 nigel 87 then
394 ph10 97 AC_LANG_PUSH(C++)
395 nigel 87
396 ph10 330 # Older versions of pcre defined pcrecpp::no_arg, but in new versions
397     # it's called pcrecpp::RE::no_arg. For backwards ABI compatibility,
398     # we want to make one an alias for the other. Different systems do
399     # this in different ways. Some systems, for instance, can do it via
400     # a linker flag: -alias (for os x 10.5) or -i (for os x <=10.4).
401     OLD_LDFLAGS="$LDFLAGS"
402     for flag in "-alias,__ZN7pcrecpp2RE6no_argE,__ZN7pcrecpp6no_argE" \
403     "-i__ZN7pcrecpp6no_argE:__ZN7pcrecpp2RE6no_argE"; do
404     AC_MSG_CHECKING([for alias support in the linker])
405     LDFLAGS="$OLD_LDFLAGS -Wl,$flag"
406     # We try to run the linker with this new ld flag. If the link fails,
407     # we give up and remove the new flag from LDFLAGS.
408 ph10 644 AC_LINK_IFELSE([AC_LANG_PROGRAM([namespace pcrecpp {
409 ph10 330 class RE { static int no_arg; };
410     int RE::no_arg;
411     }],
412 ph10 644 [])],
413 ph10 330 [AC_MSG_RESULT([yes]);
414     EXTRA_LIBPCRECPP_LDFLAGS="$EXTRA_LIBPCRECPP_LDFLAGS -Wl,$flag";
415     break;],
416     AC_MSG_RESULT([no]))
417     done
418     LDFLAGS="$OLD_LDFLAGS"
419    
420 ph10 97 # We could be more clever here, given we're doing AC_SUBST with this
421 ph10 127 # (eg set a var to be the name of the include file we want). But we're not
422 ph10 97 # so it's easy to change back to 'regular' autoconf vars if we needed to.
423 nigel 87 AC_CHECK_HEADERS(string, [pcre_have_cpp_headers="1"],
424     [pcre_have_cpp_headers="0"])
425     AC_CHECK_HEADERS(bits/type_traits.h, [pcre_have_bits_type_traits="1"],
426     [pcre_have_bits_type_traits="0"])
427     AC_CHECK_HEADERS(type_traits.h, [pcre_have_type_traits="1"],
428     [pcre_have_type_traits="0"])
429 ph10 330
430 ph10 486 # (This isn't c++-specific, but is only used in pcrecpp.cc, so try this
431     # in a c++ context. This matters becuase strtoimax is C99 and may not
432     # be supported by the C++ compiler.)
433     # Figure out how to create a longlong from a string: strtoll and
434     # equiv. It's not enough to call AC_CHECK_FUNCS: hpux has a
435     # strtoll, for instance, but it only takes 2 args instead of 3!
436     # We have to call AH_TEMPLATE since AC_DEFINE_UNQUOTED below is complex.
437     AH_TEMPLATE(HAVE_STRTOQ, [Define to 1 if you have `strtoq'.])
438     AH_TEMPLATE(HAVE_STRTOLL, [Define to 1 if you have `strtoll'.])
439     AH_TEMPLATE(HAVE__STRTOI64, [Define to 1 if you have `_strtoi64'.])
440     AH_TEMPLATE(HAVE_STRTOIMAX, [Define to 1 if you have `strtoimax'.])
441     have_strto_fn=0
442 ph10 506 for fn in strtoq strtoll _strtoi64 strtoimax; do
443 ph10 486 AC_MSG_CHECKING([for $fn])
444     if test "$fn" = strtoimax; then
445     include=stdint.h
446     else
447     include=stdlib.h
448     fi
449 ph10 644 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <$include>],
450     [char* e; return $fn("100", &e, 10)])],
451 ph10 486 [AC_MSG_RESULT(yes)
452     AC_DEFINE_UNQUOTED(HAVE_`echo $fn | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ`, 1,
453     [Define to 1 if you have `$fn'.])
454     have_strto_fn=1
455     break],
456     [AC_MSG_RESULT(no)])
457     done
458    
459     if test "$have_strto_fn" = 1; then
460     AC_CHECK_TYPES([long long],
461     [pcre_have_long_long="1"],
462     [pcre_have_long_long="0"])
463     AC_CHECK_TYPES([unsigned long long],
464     [pcre_have_ulong_long="1"],
465     [pcre_have_ulong_long="0"])
466     else
467     pcre_have_long_long="0"
468     pcre_have_ulong_long="0"
469     fi
470     AC_SUBST(pcre_have_long_long)
471     AC_SUBST(pcre_have_ulong_long)
472    
473 ph10 97 AC_LANG_POP
474     fi
475     # Using AC_SUBST eliminates the need to include config.h in a public .h file
476     AC_SUBST(pcre_have_type_traits)
477 nigel 87 AC_SUBST(pcre_have_bits_type_traits)
478    
479 ph10 97 # Conditional compilation
480 ph10 836 AM_CONDITIONAL(WITH_PCRE8, test "x$enable_pcre8" = "xyes")
481     AM_CONDITIONAL(WITH_PCRE16, test "x$enable_pcre16" = "xyes")
482 ph10 97 AM_CONDITIONAL(WITH_PCRE_CPP, test "x$enable_cpp" = "xyes")
483 ph10 128 AM_CONDITIONAL(WITH_REBUILD_CHARTABLES, test "x$enable_rebuild_chartables" = "xyes")
484 ph10 666 AM_CONDITIONAL(WITH_JIT, test "x$enable_jit" = "xyes")
485 ph10 836 AM_CONDITIONAL(WITH_UTF, test "x$enable_utf" = "xyes")
486 nigel 87
487 ph10 97 # Checks for typedefs, structures, and compiler characteristics.
488 nigel 87
489     AC_C_CONST
490     AC_TYPE_SIZE_T
491    
492 ph10 97 # Checks for library functions.
493 nigel 87
494 ph10 321 AC_CHECK_FUNCS(bcopy memmove strerror)
495 nigel 87
496 ph10 286 # Check for the availability of libz (aka zlib)
497    
498     AC_CHECK_HEADERS([zlib.h], [HAVE_ZLIB_H=1])
499     AC_CHECK_LIB([z], [gzopen], [HAVE_LIBZ=1])
500    
501 ph10 478 # Check for the availability of libbz2. Originally we just used AC_CHECK_LIB,
502     # as for libz. However, this had the following problem, diagnosed and fixed by
503     # a user:
504     #
505     # - libbz2 uses the Pascal calling convention (WINAPI) for the functions
506     # under Win32.
507     # - The standard autoconf AC_CHECK_LIB fails to include "bzlib.h",
508     # therefore missing the function definition.
509     # - The compiler thus generates a "C" signature for the test function.
510     # - The linker fails to find the "C" function.
511     # - PCRE fails to configure if asked to do so against libbz2.
512     #
513     # Solution:
514     #
515     # - Replace the AC_CHECK_LIB test with a custom test.
516 ph10 286
517     AC_CHECK_HEADERS([bzlib.h], [HAVE_BZLIB_H=1])
518 ph10 478 # Original test
519     # AC_CHECK_LIB([bz2], [BZ2_bzopen], [HAVE_LIBBZ2=1])
520     #
521     # Custom test follows
522 ph10 286
523 ph10 478 AC_MSG_CHECKING([for libbz2])
524     OLD_LIBS="$LIBS"
525     LIBS="$LIBS -lbz2"
526 ph10 644 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
527 ph10 478 #ifdef HAVE_BZLIB_H
528     #include <bzlib.h>
529     #endif]],
530 ph10 644 [[return (int)BZ2_bzopen("conftest", "rb");]])],
531 ph10 478 [AC_MSG_RESULT([yes]);HAVE_LIBBZ2=1; break;],
532     AC_MSG_RESULT([no]))
533     LIBS="$OLD_LIBS"
534    
535 ph10 287 # Check for the availabiity of libreadline
536    
537     AC_CHECK_HEADERS([readline/readline.h], [HAVE_READLINE_H=1])
538     AC_CHECK_HEADERS([readline/history.h], [HAVE_HISTORY_H=1])
539 ph10 889 AC_CHECK_LIB([readline], [readline], [LIBREADLINE="-lreadline"],
540     [unset ac_cv_lib_readline_readline;
541     AC_CHECK_LIB([readline], [readline], [LIBREADLINE="-ltinfo"],
542     [unset ac_cv_lib_readline_readline;
543     AC_CHECK_LIB([readline], [readline], [LIBREADLINE="-lcurses"],
544     [unset ac_cv_lib_readline_readline;
545     AC_CHECK_LIB([readline], [readline], [LIBREADLINE="-lncurses"],
546     [unset ac_cv_lib_readline_readline;
547     AC_CHECK_LIB([readline], [readline], [LIBREADLINE="-lncursesw"],
548     [unset ac_cv_lib_readline_readline;
549     AC_CHECK_LIB([readline], [readline], [LIBREADLINE="-ltermcap"],
550     [LIBREADLINE=""],
551     [-ltermcap])],
552     [-lncursesw])],
553     [-lncurses])],
554     [-lcurses])],
555     [-ltinfo])])
556     AC_SUBST(LIBREADLINE)
557     if test -n "$LIBREADLINE"; then
558     if test "$LIBREADLINE" != "-lreadline"; then
559     echo "-lreadline needs $LIBREADLINE"
560     LIBREADLINE="-lreadline $LIBREADLINE"
561     fi
562     fi
563 ph10 287
564 ph10 97 # This facilitates -ansi builds under Linux
565     dnl AC_DEFINE([_GNU_SOURCE], [], [Enable GNU extensions in glibc])
566 nigel 87
567 ph10 430 PCRE_STATIC_CFLAG=""
568 ph10 97 if test "x$enable_shared" = "xno" ; then
569     AC_DEFINE([PCRE_STATIC], [1], [
570     Define if linking statically (TODO: make nice with Libtool)])
571 ph10 430 PCRE_STATIC_CFLAG="-DPCRE_STATIC"
572 nigel 87 fi
573 ph10 430 AC_SUBST(PCRE_STATIC_CFLAG)
574 nigel 87
575 ph10 97 # Here is where pcre specific defines are handled
576 nigel 87
577 ph10 836 if test "$enable_pcre8" = "yes"; then
578     AC_DEFINE([SUPPORT_PCRE8], [], [
579     Define to enable the 8 bit PCRE library.])
580     fi
581    
582     if test "$enable_pcre16" = "yes"; then
583     AC_DEFINE([SUPPORT_PCRE16], [], [
584     Define to enable the 16 bit PCRE library.])
585     fi
586    
587 ph10 666 if test "$enable_jit" = "yes"; then
588     AC_DEFINE([SUPPORT_JIT], [], [
589     Define to enable support for Just-In-Time compiling.])
590 ph10 685 else
591     enable_pcregrep_jit="no"
592 ph10 666 fi
593    
594 ph10 685 if test "$enable_pcregrep_jit" = "yes"; then
595     AC_DEFINE([SUPPORT_PCREGREP_JIT], [], [
596 ph10 691 Define to enable JIT support in pcregrep.])
597 ph10 685 fi
598    
599 ph10 836 if test "$enable_utf" = "yes"; then
600     AC_DEFINE([SUPPORT_UTF], [], [
601     Define to enable support for the UTF-8/16 Unicode encoding. This
602     will work even in an EBCDIC environment, but it is incompatible
603     with the EBCDIC macro. That is, PCRE can support *either* EBCDIC
604     code *or* ASCII/UTF-8/16, but not both at once.])
605 nigel 87 fi
606    
607 ph10 97 if test "$enable_unicode_properties" = "yes"; then
608     AC_DEFINE([SUPPORT_UCP], [], [
609 ph10 666 Define to enable support for Unicode properties.])
610 ph10 97 fi
611 nigel 87
612 ph10 97 if test "$enable_stack_for_recursion" = "no"; then
613     AC_DEFINE([NO_RECURSE], [], [
614     PCRE uses recursive function calls to handle backtracking while
615 ph10 127 matching. This can sometimes be a problem on systems that have
616 ph10 100 stacks of limited size. Define NO_RECURSE to get a version that
617 ph10 97 doesn't use recursion in the match() function; instead it creates
618     its own stack by steam using pcre_recurse_malloc() to obtain memory
619     from the heap. For more detail, see the comments and other stuff
620     just above the match() function. On systems that support it,
621     "configure" can be used to set this in the Makefile
622     (use --disable-stack-for-recursion).])
623 nigel 87 fi
624    
625 ph10 286 if test "$enable_pcregrep_libz" = "yes"; then
626     AC_DEFINE([SUPPORT_LIBZ], [], [
627     Define to allow pcregrep to be linked with libz, so that it is
628     able to handle .gz files.])
629     fi
630    
631     if test "$enable_pcregrep_libbz2" = "yes"; then
632     AC_DEFINE([SUPPORT_LIBBZ2], [], [
633     Define to allow pcregrep to be linked with libbz2, so that it is
634     able to handle .bz2 files.])
635     fi
636    
637 ph10 644 if test $with_pcregrep_bufsize -lt 8192 ; then
638     with_pcregrep_bufsize="8192"
639     fi
640 ph10 654
641 ph10 644 AC_DEFINE_UNQUOTED([PCREGREP_BUFSIZE], [$with_pcregrep_bufsize], [
642     The value of PCREGREP_BUFSIZE determines the size of buffer used by
643     pcregrep to hold parts of the file it is searching. On systems that
644     support it, "configure" can be used to override the default, which is
645     8192. This is also the minimum value. The actual amount of memory used by
646     pcregrep is three times this number, because it allows for the buffering of
647     "before" and "after" lines.])
648    
649 ph10 287 if test "$enable_pcretest_libreadline" = "yes"; then
650     AC_DEFINE([SUPPORT_LIBREADLINE], [], [
651     Define to allow pcretest to be linked with libreadline.])
652 ph10 289 fi
653 ph10 287
654 ph10 97 AC_DEFINE_UNQUOTED([NEWLINE], [$ac_pcre_newline_value], [
655 ph10 111 The value of NEWLINE determines the newline character sequence. On
656 ph10 231 systems that support it, "configure" can be used to override the
657     default, which is 10. The possible values are 10 (LF), 13 (CR),
658     3338 (CRLF), -1 (ANY), or -2 (ANYCRLF).])
659 nigel 87
660 ph10 231 if test "$enable_bsr_anycrlf" = "yes"; then
661     AC_DEFINE([BSR_ANYCRLF], [], [
662     By default, the \R escape sequence matches any Unicode line ending
663     character or sequence of characters. If BSR_ANYCRLF is defined, this is
664     changed so that backslash-R matches only CR, LF, or CRLF. The build-
665     time default can be overridden by the user of PCRE at runtime. On
666     systems that support it, "configure" can be used to override the
667     default.])
668     fi
669    
670 ph10 97 AC_DEFINE_UNQUOTED([LINK_SIZE], [$with_link_size], [
671     The value of LINK_SIZE determines the number of bytes used to store
672     links as offsets within the compiled regex. The default is 2, which
673     allows for compiled patterns up to 64K long. This covers the vast
674     majority of cases. However, PCRE can also be compiled to use 3 or 4
675     bytes instead. This allows for longer patterns in extreme cases. On
676     systems that support it, "configure" can be used to override this default.])
677 nigel 87
678 ph10 97 AC_DEFINE_UNQUOTED([POSIX_MALLOC_THRESHOLD], [$with_posix_malloc_threshold], [
679     When calling PCRE via the POSIX interface, additional working storage
680     is required for holding the pointers to capturing substrings because
681     PCRE requires three integers per substring, whereas the POSIX
682     interface provides only two. If the number of expected substrings is
683     small, the wrapper function uses space on the stack, because this is
684     faster than using malloc() for each call. The threshold above which
685     the stack is no longer used is defined by POSIX_MALLOC_THRESHOLD. On
686     systems that support it, "configure" can be used to override this
687     default.])
688 nigel 91
689 ph10 97 AC_DEFINE_UNQUOTED([MATCH_LIMIT], [$with_match_limit], [
690     The value of MATCH_LIMIT determines the default number of times the
691     internal match() function can be called during a single execution of
692 ph10 100 pcre_exec(). There is a runtime interface for setting a different
693 ph10 97 limit. The limit exists in order to catch runaway regular
694     expressions that take for ever to determine that they do not match.
695     The default is set very large so that it does not accidentally catch
696     legitimate cases. On systems that support it, "configure" can be
697     used to override this default default.])
698 nigel 91
699 ph10 97 AC_DEFINE_UNQUOTED([MATCH_LIMIT_RECURSION], [$with_match_limit_recursion], [
700     The above limit applies to all calls of match(), whether or not they
701     increase the recursion depth. In some environments it is desirable
702     to limit the depth of recursive calls of match() more strictly, in
703     order to restrict the maximum amount of stack (or heap, if
704     NO_RECURSE is defined) that is used. The value of
705     MATCH_LIMIT_RECURSION applies only to recursive calls of match(). To
706     have any useful effect, it must be less than the value of
707 ph10 111 MATCH_LIMIT. The default is to use the same value as MATCH_LIMIT.
708     There is a runtime method for setting a different limit. On systems
709 ph10 100 that support it, "configure" can be used to override the default.])
710 nigel 93
711 ph10 97 AC_DEFINE([MAX_NAME_SIZE], [32], [
712     This limit is parameterized just in case anybody ever wants to
713     change it. Care must be taken if it is increased, because it guards
714     against integer overflow caused by enormously large patterns.])
715 nigel 93
716 ph10 97 AC_DEFINE([MAX_NAME_COUNT], [10000], [
717     This limit is parameterized just in case anybody ever wants to
718     change it. Care must be taken if it is increased, because it guards
719     against integer overflow caused by enormously large patterns.])
720 nigel 87
721 ph10 145 AH_VERBATIM([PCRE_EXP_DEFN], [
722 ph10 97 /* If you are compiling for a system other than a Unix-like system or
723     Win32, and it needs some magic to be inserted before the definition
724     of a function that is exported by the library, define this macro to
725     contain the relevant magic. If you do not define this macro, it
726     defaults to "extern" for a C compiler and "extern C" for a C++
727     compiler on non-Win32 systems. This macro apears at the start of
728     every exported function that is part of the external API. It does
729     not appear on functions that are "external" in the C sense, but
730     which are internal to the library. */
731 ph10 145 #undef PCRE_EXP_DEFN])
732 nigel 87
733 ph10 97 if test "$enable_ebcdic" = "yes"; then
734     AC_DEFINE_UNQUOTED([EBCDIC], [], [
735     If you are compiling for a system that uses EBCDIC instead of ASCII
736     character codes, define this macro as 1. On systems that can use
737 ph10 391 "configure", this can be done via --enable-ebcdic. PCRE will then
738 ph10 392 assume that all input strings are in EBCDIC. If you do not define
739 ph10 836 this macro, PCRE will assume input strings are ASCII or UTF-8/16
740     Unicode. It is not possible to build a version of PCRE that
741     supports both EBCDIC and UTF-8/16.])
742 nigel 87 fi
743    
744 ph10 97 # Platform specific issues
745     NO_UNDEFINED=
746     EXPORT_ALL_SYMBOLS=
747     case $host_os in
748     cygwin* | mingw* )
749     if test X"$enable_shared" = Xyes; then
750     NO_UNDEFINED="-no-undefined"
751     EXPORT_ALL_SYMBOLS="-Wl,--export-all-symbols"
752     fi
753     ;;
754     esac
755 nigel 87
756 ph10 97 # The extra LDFLAGS for each particular library
757     # (Note: The libpcre*_version bits are m4 variables, assigned above)
758 nigel 87
759 ph10 330 EXTRA_LIBPCRE_LDFLAGS="$EXTRA_LIBPCRE_LDFLAGS \
760     $NO_UNDEFINED -version-info libpcre_version"
761 nigel 87
762 ph10 851 EXTRA_LIBPCRE16_LDFLAGS="$EXTRA_LIBPCRE16_LDFLAGS \
763     $NO_UNDEFINED -version-info libpcre16_version"
764    
765 ph10 330 EXTRA_LIBPCREPOSIX_LDFLAGS="$EXTRA_LIBPCREPOSIX_LDFLAGS \
766     $NO_UNDEFINED -version-info libpcreposix_version"
767 nigel 87
768 ph10 330 EXTRA_LIBPCRECPP_LDFLAGS="$EXTRA_LIBPCRECPP_LDFLAGS \
769     $NO_UNDEFINED -version-info libpcrecpp_version \
770     $EXPORT_ALL_SYMBOLS"
771 nigel 87
772 ph10 97 AC_SUBST(EXTRA_LIBPCRE_LDFLAGS)
773 ph10 851 AC_SUBST(EXTRA_LIBPCRE16_LDFLAGS)
774 ph10 97 AC_SUBST(EXTRA_LIBPCREPOSIX_LDFLAGS)
775     AC_SUBST(EXTRA_LIBPCRECPP_LDFLAGS)
776 nigel 87
777 ph10 903 # When we run 'make distcheck', use these arguments. Turning off compiler
778     # optimization makes it run faster.
779     DISTCHECK_CONFIGURE_FLAGS="CFLAGS='' CXXFLAGS='' --enable-pcre16 --enable-jit --enable-cpp --enable-unicode-properties"
780 ph10 97 AC_SUBST(DISTCHECK_CONFIGURE_FLAGS)
781 nigel 87
782 ph10 286 # Check that, if --enable-pcregrep-libz or --enable-pcregrep-libbz2 is
783 ph10 376 # specified, the relevant library is available.
784 ph10 286
785     if test "$enable_pcregrep_libz" = "yes"; then
786     if test "$HAVE_ZLIB_H" != "1"; then
787     echo "** Cannot --enable-pcregrep-libz because zlib.h was not found"
788     exit 1
789     fi
790     if test "$HAVE_LIBZ" != "1"; then
791     echo "** Cannot --enable-pcregrep-libz because libz was not found"
792     exit 1
793     fi
794 ph10 376 LIBZ="-lz"
795 ph10 286 fi
796 ph10 376 AC_SUBST(LIBZ)
797 ph10 286
798     if test "$enable_pcregrep_libbz2" = "yes"; then
799     if test "$HAVE_BZLIB_H" != "1"; then
800     echo "** Cannot --enable-pcregrep-libbz2 because bzlib.h was not found"
801     exit 1
802     fi
803     if test "$HAVE_LIBBZ2" != "1"; then
804     echo "** Cannot --enable-pcregrep-libbz2 because libbz2 was not found"
805     exit 1
806     fi
807 ph10 376 LIBBZ2="-lbz2"
808 ph10 286 fi
809 ph10 376 AC_SUBST(LIBBZ2)
810 ph10 286
811 ph10 287 # Similarly for --enable-pcretest-readline
812    
813     if test "$enable_pcretest_libreadline" = "yes"; then
814     if test "$HAVE_READLINE_H" != "1"; then
815     echo "** Cannot --enable-pcretest-readline because readline/readline.h was not found."
816     exit 1
817     fi
818     if test "$HAVE_HISTORY_H" != "1"; then
819     echo "** Cannot --enable-pcretest-readline because readline/history.h was not found."
820     exit 1
821     fi
822 ph10 889 if test -z "$LIBREADLINE"; then
823     echo "** Cannot --enable-pcretest-readline because readline library was not found."
824     exit 1
825     fi
826 ph10 289 fi
827 ph10 287
828 ph10 97 # Produce these files, in addition to config.h.
829     AC_CONFIG_FILES(
830     Makefile
831     libpcre.pc
832 ph10 836 libpcre16.pc
833     libpcreposix.pc
834 ph10 97 libpcrecpp.pc
835     pcre-config
836     pcre.h
837     pcre_stringpiece.h
838     pcrecpparg.h
839 nigel 87 )
840    
841 ph10 97 # Make the generated script files executable.
842 ph10 137 AC_CONFIG_COMMANDS([script-chmod], [chmod a+x pcre-config])
843 nigel 87
844 ph10 128 # Make sure that pcre_chartables.c is removed in case the method for
845     # creating it was changed by reconfiguration.
846 ph10 137 AC_CONFIG_COMMANDS([delete-old-chartables], [rm -f pcre_chartables.c])
847 ph10 128
848 ph10 137 AC_OUTPUT
849 ph10 128
850 ph10 97 # Print out a nice little message after configure is run displaying your
851     # chosen options.
852 ph10 286
853 ph10 97 cat <<EOF
854 nigel 87
855 ph10 97 $PACKAGE-$VERSION configuration summary:
856 nigel 87
857 ph10 287 Install prefix .................. : ${prefix}
858     C preprocessor .................. : ${CPP}
859     C compiler ...................... : ${CC}
860     C++ preprocessor ................ : ${CXXCPP}
861     C++ compiler .................... : ${CXX}
862     Linker .......................... : ${LD}
863     C preprocessor flags ............ : ${CPPFLAGS}
864     C compiler flags ................ : ${CFLAGS}
865     C++ compiler flags .............. : ${CXXFLAGS}
866     Linker flags .................... : ${LDFLAGS}
867     Extra libraries ................. : ${LIBS}
868 ph10 289
869 ph10 836 Build 8 bit pcre library ........ : ${enable_pcre8}
870     Build 16 bit pcre library ....... : ${enable_pcre16}
871 ph10 287 Build C++ library ............... : ${enable_cpp}
872 ph10 666 Enable JIT compiling support .... : ${enable_jit}
873 ph10 836 Enable UTF-8/16 support ......... : ${enable_utf}
874 ph10 287 Unicode properties .............. : ${enable_unicode_properties}
875     Newline char/sequence ........... : ${enable_newline}
876     \R matches only ANYCRLF ......... : ${enable_bsr_anycrlf}
877     EBCDIC coding ................... : ${enable_ebcdic}
878     Rebuild char tables ............. : ${enable_rebuild_chartables}
879     Use stack recursion ............. : ${enable_stack_for_recursion}
880     POSIX mem threshold ............. : ${with_posix_malloc_threshold}
881     Internal link size .............. : ${with_link_size}
882     Match limit ..................... : ${with_match_limit}
883     Match limit recursion ........... : ${with_match_limit_recursion}
884     Build shared libs ............... : ${enable_shared}
885     Build static libs ............... : ${enable_static}
886 ph10 691 Use JIT in pcregrep ............. : ${enable_pcregrep_jit}
887 ph10 654 Buffer size for pcregrep ........ : ${with_pcregrep_bufsize}
888 ph10 287 Link pcregrep with libz ......... : ${enable_pcregrep_libz}
889     Link pcregrep with libbz2 ....... : ${enable_pcregrep_libbz2}
890 ph10 289 Link pcretest with libreadline .. : ${enable_pcretest_libreadline}
891 nigel 87
892 ph10 97 EOF
893 nigel 87
894 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