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

Contents of /code/trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 231 - (show annotations) (download)
Tue Sep 11 11:15:33 2007 UTC (6 years, 10 months ago) by ph10
File size: 18743 byte(s)
Add facility to make \R match only CR, LF, or CRLF.

1 dnl Process this file with autoconf to produce a configure script.
2
3 dnl NOTE FOR MAINTAINERS: Do not use major or minor version numbers with
4 dnl leading zeros, because they may be treated as octal constants. The
5 dnl PCRE_PRERELEASE feature is for identifying release candidates. It might
6 dnl be defined as -RC2, for example. For real releases, it should be defined
7 dnl empty.
8
9 m4_define(pcre_major, [7])
10 m4_define(pcre_minor, [4])
11 m4_define(pcre_prerelease, [-RC1])
12 m4_define(pcre_date, [2007-09-10])
13
14 # Libtool shared library interface versions (current:revision:age)
15 m4_define(libpcre_version, [0:1:0])
16 m4_define(libpcreposix_version, [0:0:0])
17 m4_define(libpcrecpp_version, [0:0:0])
18
19 AC_PREREQ(2.57)
20 AC_INIT(PCRE, pcre_major.pcre_minor[]pcre_prerelease, , pcre)
21 AC_CONFIG_SRCDIR([pcre.h.in])
22 AM_INIT_AUTOMAKE([dist-bzip2 dist-zip])
23 AC_CONFIG_HEADERS(config.h)
24
25 # The default CFLAGS and CXXFLAGS in Autoconf are "-g -O2" for gcc and just
26 # "-g" for any other compiler. There doesn't seem to be a standard way of
27 # getting rid of the -g (which I don't think is needed for a production
28 # library). This fudge seems to achieve the necessary. First, we remember the
29 # externally set values of CFLAGS and CXXFLAGS. Then call the AC_PROG_CC and
30 # AC_PROG_CXX macros to find the compilers - if CFLAGS and CXXFLAGS are not
31 # set, they will be set to Autoconf's defaults. Afterwards, if the original
32 # values were not set, remove the -g from the Autoconf defaults.
33 # (PH 02-May-07)
34
35 remember_set_CFLAGS="$CFLAGS"
36 remember_set_CXXFLAGS="$CXXFLAGS"
37
38 AC_PROG_CC
39 AC_PROG_CXX
40
41 if test "x$remember_set_CFLAGS" = "x"
42 then
43 if test "$CFLAGS" = "-g -O2"
44 then
45 CFLAGS="-O2"
46 elif test "$CFLAGS" = "-g"
47 then
48 CFLAGS=""
49 fi
50 fi
51
52 if test "x$remember_set_CXXFLAGS" = "x"
53 then
54 if test "$CXXFLAGS" = "-g -O2"
55 then
56 CXXFLAGS="-O2"
57 elif test "$CXXFLAGS" = "-g"
58 then
59 CXXFLAGS=""
60 fi
61 fi
62
63
64 AC_PROG_INSTALL
65 AC_LIBTOOL_WIN32_DLL
66 AC_PROG_LIBTOOL
67 AC_PROG_LN_S
68
69 PCRE_MAJOR="pcre_major"
70 PCRE_MINOR="pcre_minor"
71 PCRE_PRERELEASE="pcre_prerelease"
72 PCRE_DATE="pcre_date"
73
74 AC_SUBST(PCRE_MAJOR)
75 AC_SUBST(PCRE_MINOR)
76 AC_SUBST(PCRE_PRERELEASE)
77 AC_SUBST(PCRE_DATE)
78
79 # Set a more sensible default value for $(htmldir).
80 if test "x$htmldir" = 'x${docdir}'
81 then
82 htmldir='${docdir}/html'
83 fi
84
85 # Handle --disable-cpp
86 AC_ARG_ENABLE(cpp,
87 AS_HELP_STRING([--disable-cpp],
88 [disable C++ support]),
89 , enable_cpp=yes)
90
91 # Handle --enable-rebuild-chartables
92 AC_ARG_ENABLE(rebuild-chartables,
93 AS_HELP_STRING([--enable-rebuild-chartables],
94 [rebuild character tables in current locale]),
95 , enable_rebuild_chartables=no)
96
97 # Handle --enable-utf8 (disabled by default)
98 AC_ARG_ENABLE(utf8,
99 AS_HELP_STRING([--enable-utf8],
100 [enable UTF-8 support]),
101 , enable_utf8=unset)
102
103 # Handle --enable-unicode-properties
104 AC_ARG_ENABLE(unicode-properties,
105 AS_HELP_STRING([--enable-unicode-properties],
106 [enable Unicode properties support (implies --enable-utf8)]),
107 , enable_unicode_properties=no)
108
109 # Handle --enable-newline=NL
110 dnl AC_ARG_ENABLE(newline,
111 dnl AS_HELP_STRING([--enable-newline=NL],
112 dnl [use NL as newline (lf, cr, crlf, anycrlf, any; default=lf)]),
113 dnl , enable_newline=lf)
114
115 # Separate newline options
116 ac_pcre_newline=lf
117 AC_ARG_ENABLE(newline-is-cr,
118 AS_HELP_STRING([--enable-newline-is-cr],
119 [use CR as newline character]),
120 ac_pcre_newline=cr)
121 AC_ARG_ENABLE(newline-is-lf,
122 AS_HELP_STRING([--enable-newline-is-lf],
123 [use LF as newline character (default)]),
124 ac_pcre_newline=lf)
125 AC_ARG_ENABLE(newline-is-crlf,
126 AS_HELP_STRING([--enable-newline-is-crlf],
127 [use CRLF as newline sequence]),
128 ac_pcre_newline=crlf)
129 AC_ARG_ENABLE(newline-is-anycrlf,
130 AS_HELP_STRING([--enable-newline-is-anycrlf],
131 [use CR, LF, or CRLF as newline sequence]),
132 ac_pcre_newline=anycrlf)
133 AC_ARG_ENABLE(newline-is-any,
134 AS_HELP_STRING([--enable-newline-is-any],
135 [use any valid Unicode newline sequence]),
136 ac_pcre_newline=any)
137 enable_newline="$ac_pcre_newline"
138
139 # Handle --enable-bsr-anycrlf
140 AC_ARG_ENABLE(bsr-anycrlf,
141 AS_HELP_STRING([--enable-bsr-anycrlf],
142 [\R matches only CR, LF, CRLF by default]),
143 , enable_bsr_anycrlf=no)
144
145 # Handle --enable-ebcdic
146 AC_ARG_ENABLE(ebcdic,
147 AS_HELP_STRING([--enable-ebcdic],
148 [assume EBCDIC coding rather than ASCII; use this only in (uncommon) EBCDIC environments; it implies --enable-rebuild-chartables]),
149 , enable_ebcdic=no)
150
151 # Handle --disable-stack-for-recursion
152 AC_ARG_ENABLE(stack-for-recursion,
153 AS_HELP_STRING([--disable-stack-for-recursion],
154 [don't use stack recursion when matching]),
155 , enable_stack_for_recursion=yes)
156
157 # Handle --with-posix-malloc-threshold=NBYTES
158 AC_ARG_WITH(posix-malloc-threshold,
159 AS_HELP_STRING([--with-posix-malloc-threshold=NBYTES],
160 [threshold for POSIX malloc usage (default=10)]),
161 , with_posix_malloc_threshold=10)
162
163 # Handle --with-link-size=N
164 AC_ARG_WITH(link-size,
165 AS_HELP_STRING([--with-link-size=N],
166 [internal link size (2, 3, or 4 allowed; default=2)]),
167 , with_link_size=2)
168
169 # Handle --with-match-limit=N
170 AC_ARG_WITH(match-limit,
171 AS_HELP_STRING([--with-match-limit=N],
172 [default limit on internal looping (default=10000000)]),
173 , with_match_limit=10000000)
174
175 # Handle --with-match-limit_recursion=N
176 #
177 # Note: In config.h, the default is to define MATCH_LIMIT_RECURSION
178 # symbolically as MATCH_LIMIT, which in turn is defined to be some numeric
179 # value (e.g. 10000000). MATCH_LIMIT_RECURSION can otherwise be set to some
180 # different numeric value (or even the same numeric value as MATCH_LIMIT,
181 # though no longer defined in terms of the latter).
182 #
183 AC_ARG_WITH(match-limit-recursion,
184 AS_HELP_STRING([--with-match-limit-recursion=N],
185 [default limit on internal recursion (default=MATCH_LIMIT)]),
186 , with_match_limit_recursion=MATCH_LIMIT)
187
188 # Make sure that if enable_unicode_properties was set, that UTF-8 support
189 # is enabled.
190 #
191 if test "x$enable_unicode_properties" = "xyes"
192 then
193 if test "x$enable_utf8" = "xno"
194 then
195 AC_MSG_ERROR([support for Unicode properties requires UTF-8 support])
196 fi
197 enable_utf8=yes
198 fi
199
200 if test "x$enable_utf8" = "xunset"
201 then
202 enable_utf8=no
203 fi
204
205 # Make sure that if enable_ebcdic is set, rebuild_chartables is also enabled.
206 #
207 if test "x$enable_ebcdic" = "xyes"
208 then
209 enable_rebuild_chartables=yes
210 fi
211
212 # Convert the newline identifier into the appropriate integer value.
213 case "$enable_newline" in
214 lf) ac_pcre_newline_value=10 ;;
215 cr) ac_pcre_newline_value=13 ;;
216 crlf) ac_pcre_newline_value=3338 ;;
217 anycrlf) ac_pcre_newline_value=-2 ;;
218 any) ac_pcre_newline_value=-1 ;;
219 *)
220 AC_MSG_ERROR([invalid argument \"$enable_newline\" to --enable-newline option])
221 ;;
222 esac
223
224 # Check argument to --with-link-size
225 case "$with_link_size" in
226 2|3|4) ;;
227 *)
228 AC_MSG_ERROR([invalid argument \"$with_link_size\" to --with-link-size option])
229 ;;
230 esac
231
232 AH_TOP([
233 /* On Unix-like systems config.h.in is converted by "configure" into config.h.
234 Some other environments also support the use of "configure". PCRE is written in
235 Standard C, but there are a few non-standard things it can cope with, allowing
236 it to run on SunOS4 and other "close to standard" systems.
237
238 If you are going to build PCRE "by hand" on a system without "configure" you
239 should copy the distributed config.h.generic to config.h, and then set up the
240 macros the way you need them. Alternatively, you can avoid editing by using -D
241 on the compiler command line to set the macro values.
242
243 PCRE uses memmove() if HAVE_MEMMOVE is set to 1; otherwise it uses bcopy() if
244 HAVE_BCOPY is set to 1. If your system has neither bcopy() nor memmove(), set
245 them both to 0; an emulation function will be used. */])
246
247 # Checks for header files.
248 AC_HEADER_STDC
249 AC_CHECK_HEADERS(limits.h sys/types.h sys/stat.h dirent.h windows.h)
250
251 # The files below are C++ header files.
252 pcre_have_type_traits="0"
253 pcre_have_bits_type_traits="0"
254 if test "x$enable_cpp" = "xyes" -a -n "$CXX"
255 then
256 AC_LANG_PUSH(C++)
257
258 # We could be more clever here, given we're doing AC_SUBST with this
259 # (eg set a var to be the name of the include file we want). But we're not
260 # so it's easy to change back to 'regular' autoconf vars if we needed to.
261 AC_CHECK_HEADERS(string, [pcre_have_cpp_headers="1"],
262 [pcre_have_cpp_headers="0"])
263 AC_CHECK_HEADERS(bits/type_traits.h, [pcre_have_bits_type_traits="1"],
264 [pcre_have_bits_type_traits="0"])
265 AC_CHECK_HEADERS(type_traits.h, [pcre_have_type_traits="1"],
266 [pcre_have_type_traits="0"])
267 AC_LANG_POP
268 fi
269 # Using AC_SUBST eliminates the need to include config.h in a public .h file
270 AC_SUBST(pcre_have_type_traits)
271 AC_SUBST(pcre_have_bits_type_traits)
272
273 # Conditional compilation
274 AM_CONDITIONAL(WITH_PCRE_CPP, test "x$enable_cpp" = "xyes")
275 AM_CONDITIONAL(WITH_REBUILD_CHARTABLES, test "x$enable_rebuild_chartables" = "xyes")
276
277 # Checks for typedefs, structures, and compiler characteristics.
278
279 AC_C_CONST
280 AC_TYPE_SIZE_T
281
282 AC_CHECK_TYPES([long long],
283 [pcre_have_long_long="1"],
284 [pcre_have_long_long="0"])
285 AC_CHECK_TYPES([unsigned long long],
286 [pcre_have_ulong_long="1"],
287 [pcre_have_ulong_long="0"])
288 AC_SUBST(pcre_have_long_long)
289 AC_SUBST(pcre_have_ulong_long)
290
291 # Checks for library functions.
292
293 AC_CHECK_FUNCS(bcopy memmove strerror strtoq strtoll)
294
295 # This facilitates -ansi builds under Linux
296 dnl AC_DEFINE([_GNU_SOURCE], [], [Enable GNU extensions in glibc])
297
298 if test "x$enable_shared" = "xno" ; then
299 AC_DEFINE([PCRE_STATIC], [1], [
300 Define if linking statically (TODO: make nice with Libtool)])
301 fi
302
303 # Here is where pcre specific defines are handled
304
305 if test "$enable_utf8" = "yes"; then
306 AC_DEFINE([SUPPORT_UTF8], [], [
307 Define to enable support for the UTF-8 Unicode encoding.])
308 fi
309
310 if test "$enable_unicode_properties" = "yes"; then
311 AC_DEFINE([SUPPORT_UCP], [], [
312 Define to enable support for Unicode properties])
313 fi
314
315 if test "$enable_stack_for_recursion" = "no"; then
316 AC_DEFINE([NO_RECURSE], [], [
317 PCRE uses recursive function calls to handle backtracking while
318 matching. This can sometimes be a problem on systems that have
319 stacks of limited size. Define NO_RECURSE to get a version that
320 doesn't use recursion in the match() function; instead it creates
321 its own stack by steam using pcre_recurse_malloc() to obtain memory
322 from the heap. For more detail, see the comments and other stuff
323 just above the match() function. On systems that support it,
324 "configure" can be used to set this in the Makefile
325 (use --disable-stack-for-recursion).])
326 fi
327
328 AC_DEFINE_UNQUOTED([NEWLINE], [$ac_pcre_newline_value], [
329 The value of NEWLINE determines the newline character sequence. On
330 systems that support it, "configure" can be used to override the
331 default, which is 10. The possible values are 10 (LF), 13 (CR),
332 3338 (CRLF), -1 (ANY), or -2 (ANYCRLF).])
333
334 if test "$enable_bsr_anycrlf" = "yes"; then
335 AC_DEFINE([BSR_ANYCRLF], [], [
336 By default, the \R escape sequence matches any Unicode line ending
337 character or sequence of characters. If BSR_ANYCRLF is defined, this is
338 changed so that backslash-R matches only CR, LF, or CRLF. The build-
339 time default can be overridden by the user of PCRE at runtime. On
340 systems that support it, "configure" can be used to override the
341 default.])
342 fi
343
344 AC_DEFINE_UNQUOTED([LINK_SIZE], [$with_link_size], [
345 The value of LINK_SIZE determines the number of bytes used to store
346 links as offsets within the compiled regex. The default is 2, which
347 allows for compiled patterns up to 64K long. This covers the vast
348 majority of cases. However, PCRE can also be compiled to use 3 or 4
349 bytes instead. This allows for longer patterns in extreme cases. On
350 systems that support it, "configure" can be used to override this default.])
351
352 AC_DEFINE_UNQUOTED([POSIX_MALLOC_THRESHOLD], [$with_posix_malloc_threshold], [
353 When calling PCRE via the POSIX interface, additional working storage
354 is required for holding the pointers to capturing substrings because
355 PCRE requires three integers per substring, whereas the POSIX
356 interface provides only two. If the number of expected substrings is
357 small, the wrapper function uses space on the stack, because this is
358 faster than using malloc() for each call. The threshold above which
359 the stack is no longer used is defined by POSIX_MALLOC_THRESHOLD. On
360 systems that support it, "configure" can be used to override this
361 default.])
362
363 AC_DEFINE_UNQUOTED([MATCH_LIMIT], [$with_match_limit], [
364 The value of MATCH_LIMIT determines the default number of times the
365 internal match() function can be called during a single execution of
366 pcre_exec(). There is a runtime interface for setting a different
367 limit. The limit exists in order to catch runaway regular
368 expressions that take for ever to determine that they do not match.
369 The default is set very large so that it does not accidentally catch
370 legitimate cases. On systems that support it, "configure" can be
371 used to override this default default.])
372
373 AC_DEFINE_UNQUOTED([MATCH_LIMIT_RECURSION], [$with_match_limit_recursion], [
374 The above limit applies to all calls of match(), whether or not they
375 increase the recursion depth. In some environments it is desirable
376 to limit the depth of recursive calls of match() more strictly, in
377 order to restrict the maximum amount of stack (or heap, if
378 NO_RECURSE is defined) that is used. The value of
379 MATCH_LIMIT_RECURSION applies only to recursive calls of match(). To
380 have any useful effect, it must be less than the value of
381 MATCH_LIMIT. The default is to use the same value as MATCH_LIMIT.
382 There is a runtime method for setting a different limit. On systems
383 that support it, "configure" can be used to override the default.])
384
385 AC_DEFINE([MAX_NAME_SIZE], [32], [
386 This limit is parameterized just in case anybody ever wants to
387 change it. Care must be taken if it is increased, because it guards
388 against integer overflow caused by enormously large patterns.])
389
390 AC_DEFINE([MAX_NAME_COUNT], [10000], [
391 This limit is parameterized just in case anybody ever wants to
392 change it. Care must be taken if it is increased, because it guards
393 against integer overflow caused by enormously large patterns.])
394
395 AH_VERBATIM([PCRE_EXP_DEFN], [
396 /* If you are compiling for a system other than a Unix-like system or
397 Win32, and it needs some magic to be inserted before the definition
398 of a function that is exported by the library, define this macro to
399 contain the relevant magic. If you do not define this macro, it
400 defaults to "extern" for a C compiler and "extern C" for a C++
401 compiler on non-Win32 systems. This macro apears at the start of
402 every exported function that is part of the external API. It does
403 not appear on functions that are "external" in the C sense, but
404 which are internal to the library. */
405 #undef PCRE_EXP_DEFN])
406
407 if test "$enable_ebcdic" = "yes"; then
408 AC_DEFINE_UNQUOTED([EBCDIC], [], [
409 If you are compiling for a system that uses EBCDIC instead of ASCII
410 character codes, define this macro as 1. On systems that can use
411 "configure", this can be done via --enable-ebcdic.])
412 fi
413
414 # Platform specific issues
415 NO_UNDEFINED=
416 EXPORT_ALL_SYMBOLS=
417 case $host_os in
418 cygwin* | mingw* )
419 if test X"$enable_shared" = Xyes; then
420 NO_UNDEFINED="-no-undefined"
421 EXPORT_ALL_SYMBOLS="-Wl,--export-all-symbols"
422 fi
423 ;;
424 esac
425
426 # The extra LDFLAGS for each particular library
427 # (Note: The libpcre*_version bits are m4 variables, assigned above)
428
429 EXTRA_LIBPCRE_LDFLAGS="$NO_UNDEFINED -version-info libpcre_version"
430
431 EXTRA_LIBPCREPOSIX_LDFLAGS="$NO_UNDEFINED -version-info libpcreposix_version"
432
433 EXTRA_LIBPCRECPP_LDFLAGS="$NO_UNDEFINED $EXPORT_ALL_SYMBOLS -version-info libpcrecpp_version"
434
435 AC_SUBST(EXTRA_LIBPCRE_LDFLAGS)
436 AC_SUBST(EXTRA_LIBPCREPOSIX_LDFLAGS)
437 AC_SUBST(EXTRA_LIBPCRECPP_LDFLAGS)
438
439 # When we run 'make distcheck', use these arguments.
440 DISTCHECK_CONFIGURE_FLAGS="--enable-cpp --enable-unicode-properties"
441 AC_SUBST(DISTCHECK_CONFIGURE_FLAGS)
442
443 # Produce these files, in addition to config.h.
444 AC_CONFIG_FILES(
445 Makefile
446 libpcre.pc
447 libpcrecpp.pc
448 pcre-config
449 pcre.h
450 pcre_stringpiece.h
451 pcrecpparg.h
452 )
453
454 # Make the generated script files executable.
455 AC_CONFIG_COMMANDS([script-chmod], [chmod a+x pcre-config])
456
457 # Make sure that pcre_chartables.c is removed in case the method for
458 # creating it was changed by reconfiguration.
459 AC_CONFIG_COMMANDS([delete-old-chartables], [rm -f pcre_chartables.c])
460
461 AC_OUTPUT
462
463 # Print out a nice little message after configure is run displaying your
464 # chosen options.
465 #
466 cat <<EOF
467
468 $PACKAGE-$VERSION configuration summary:
469
470 Install prefix ........... : ${prefix}
471 C preprocessor ........... : ${CPP}
472 C compiler ............... : ${CC}
473 C++ preprocessor ......... : ${CXXCPP}
474 C++ compiler ............. : ${CXX}
475 Linker ................... : ${LD}
476 C preprocessor flags ..... : ${CPPFLAGS}
477 C compiler flags ......... : ${CFLAGS}
478 C++ compiler flags ....... : ${CXXFLAGS}
479 Linker flags ............. : ${LDFLAGS}
480 Extra libraries .......... : ${LIBS}
481
482 Build C++ library ........ : ${enable_cpp}
483 Enable UTF-8 support ..... : ${enable_utf8}
484 Unicode properties ....... : ${enable_unicode_properties}
485 Newline char/sequence .... : ${enable_newline}
486 \R matches only ANYCRLF .. : ${enable_bsr_anycrlf}
487 EBCDIC coding ............ : ${enable_ebcdic}
488 Rebuild char tables ...... : ${enable_rebuild_chartables}
489 Use stack recursion ...... : ${enable_stack_for_recursion}
490 POSIX mem threshold ...... : ${with_posix_malloc_threshold}
491 Internal link size ....... : ${with_link_size}
492 Match limit .............. : ${with_match_limit}
493 Match limit recursion .... : ${with_match_limit_recursion}
494 Build shared libs ........ : ${enable_shared}
495 Build static libs ........ : ${enable_static}
496
497 EOF
498
499 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