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

Contents of /code/trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


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

Properties

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

  ViewVC Help
Powered by ViewVC 1.1.5