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

Contents of /code/trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 184 - (show annotations) (download)
Tue Jun 19 13:26:46 2007 UTC (6 years, 10 months ago) by ph10
File size: 18141 byte(s)
Fix non-UTF-8 mode Unicode properties bug; prepare for 7.2 release.

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, [2])
11 m4_define(pcre_prerelease, [])
12 m4_define(pcre_date, [2007-06-19])
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-ebcdic
140 AC_ARG_ENABLE(ebcdic,
141 AS_HELP_STRING([--enable-ebcdic],
142 [assume EBCDIC coding rather than ASCII (implies --enable-rebuild-chartables)]),
143 , enable_ebcdic=no)
144
145 # Handle --disable-stack-for-recursion
146 AC_ARG_ENABLE(stack-for-recursion,
147 AS_HELP_STRING([--disable-stack-for-recursion],
148 [don't use stack recursion when matching]),
149 , enable_stack_for_recursion=yes)
150
151 # Handle --with-posix-malloc-threshold=NBYTES
152 AC_ARG_WITH(posix-malloc-threshold,
153 AS_HELP_STRING([--with-posix-malloc-threshold=NBYTES],
154 [threshold for POSIX malloc usage (default=10)]),
155 , with_posix_malloc_threshold=10)
156
157 # Handle --with-link-size=N
158 AC_ARG_WITH(link-size,
159 AS_HELP_STRING([--with-link-size=N],
160 [internal link size (2, 3, or 4 allowed; default=2)]),
161 , with_link_size=2)
162
163 # Handle --with-match-limit=N
164 AC_ARG_WITH(match-limit,
165 AS_HELP_STRING([--with-match-limit=N],
166 [default limit on internal looping (default=10000000)]),
167 , with_match_limit=10000000)
168
169 # Handle --with-match-limit_recursion=N
170 #
171 # Note: In config.h, the default is to define MATCH_LIMIT_RECURSION
172 # symbolically as MATCH_LIMIT, which in turn is defined to be some numeric
173 # value (e.g. 10000000). MATCH_LIMIT_RECURSION can otherwise be set to some
174 # different numeric value (or even the same numeric value as MATCH_LIMIT,
175 # though no longer defined in terms of the latter).
176 #
177 AC_ARG_WITH(match-limit-recursion,
178 AS_HELP_STRING([--with-match-limit-recursion=N],
179 [default limit on internal recursion (default=MATCH_LIMIT)]),
180 , with_match_limit_recursion=MATCH_LIMIT)
181
182 # Make sure that if enable_unicode_properties was set, that UTF-8 support
183 # is enabled.
184 #
185 if test "x$enable_unicode_properties" = "xyes"
186 then
187 if test "x$enable_utf8" = "xno"
188 then
189 AC_MSG_ERROR([support for Unicode properties requires UTF-8 support])
190 fi
191 enable_utf8=yes
192 fi
193
194 if test "x$enable_utf8" = "xunset"
195 then
196 enable_utf8=no
197 fi
198
199 # Make sure that if enable_ebcdic is set, rebuild_chartables is also enabled.
200 #
201 if test "x$enable_ebcdic" = "xyes"
202 then
203 enable_rebuild_chartables=yes
204 fi
205
206 # Convert the newline identifier into the appropriate integer value.
207 case "$enable_newline" in
208 lf) ac_pcre_newline_value=10 ;;
209 cr) ac_pcre_newline_value=13 ;;
210 crlf) ac_pcre_newline_value=3338 ;;
211 anycrlf) ac_pcre_newline_value=-2 ;;
212 any) ac_pcre_newline_value=-1 ;;
213 *)
214 AC_MSG_ERROR([invalid argument \"$enable_newline\" to --enable-newline option])
215 ;;
216 esac
217
218 # Check argument to --with-link-size
219 case "$with_link_size" in
220 2|3|4) ;;
221 *)
222 AC_MSG_ERROR([invalid argument \"$with_link_size\" to --with-link-size option])
223 ;;
224 esac
225
226 AH_TOP([
227 /* On Unix-like systems config.h.in is converted by "configure" into config.h.
228 Some other environments also support the use of "configure". PCRE is written in
229 Standard C, but there are a few non-standard things it can cope with, allowing
230 it to run on SunOS4 and other "close to standard" systems.
231
232 If you are going to build PCRE "by hand" on a system without "configure" you
233 should copy the distributed config.h.generic to config.h, and then set up the
234 macros the way you need them. Alternatively, you can avoid editing by using -D
235 on the compiler command line to set the macro values.
236
237 PCRE uses memmove() if HAVE_MEMMOVE is set to 1; otherwise it uses bcopy() if
238 HAVE_BCOPY is set to 1. If your system has neither bcopy() nor memmove(), set
239 them both to 0; an emulation function will be used. */])
240
241 # Checks for header files.
242 AC_HEADER_STDC
243 AC_CHECK_HEADERS(limits.h sys/types.h sys/stat.h dirent.h windows.h)
244
245 # The files below are C++ header files.
246 pcre_have_type_traits="0"
247 pcre_have_bits_type_traits="0"
248 if test "x$enable_cpp" = "xyes" -a -n "$CXX"
249 then
250 AC_LANG_PUSH(C++)
251
252 # We could be more clever here, given we're doing AC_SUBST with this
253 # (eg set a var to be the name of the include file we want). But we're not
254 # so it's easy to change back to 'regular' autoconf vars if we needed to.
255 AC_CHECK_HEADERS(string, [pcre_have_cpp_headers="1"],
256 [pcre_have_cpp_headers="0"])
257 AC_CHECK_HEADERS(bits/type_traits.h, [pcre_have_bits_type_traits="1"],
258 [pcre_have_bits_type_traits="0"])
259 AC_CHECK_HEADERS(type_traits.h, [pcre_have_type_traits="1"],
260 [pcre_have_type_traits="0"])
261 AC_LANG_POP
262 fi
263 # Using AC_SUBST eliminates the need to include config.h in a public .h file
264 AC_SUBST(pcre_have_type_traits)
265 AC_SUBST(pcre_have_bits_type_traits)
266
267 # Conditional compilation
268 AM_CONDITIONAL(WITH_PCRE_CPP, test "x$enable_cpp" = "xyes")
269 AM_CONDITIONAL(WITH_REBUILD_CHARTABLES, test "x$enable_rebuild_chartables" = "xyes")
270
271 # Checks for typedefs, structures, and compiler characteristics.
272
273 AC_C_CONST
274 AC_TYPE_SIZE_T
275
276 AC_CHECK_TYPES([long long],
277 [pcre_have_long_long="1"],
278 [pcre_have_long_long="0"])
279 AC_CHECK_TYPES([unsigned long long],
280 [pcre_have_ulong_long="1"],
281 [pcre_have_ulong_long="0"])
282 AC_SUBST(pcre_have_long_long)
283 AC_SUBST(pcre_have_ulong_long)
284
285 # Checks for library functions.
286
287 AC_CHECK_FUNCS(bcopy memmove strerror strtoq strtoll)
288
289 # This facilitates -ansi builds under Linux
290 dnl AC_DEFINE([_GNU_SOURCE], [], [Enable GNU extensions in glibc])
291
292 if test "x$enable_shared" = "xno" ; then
293 AC_DEFINE([PCRE_STATIC], [1], [
294 Define if linking statically (TODO: make nice with Libtool)])
295 fi
296
297 # Here is where pcre specific defines are handled
298
299 if test "$enable_utf8" = "yes"; then
300 AC_DEFINE([SUPPORT_UTF8], [], [
301 Define to enable support for the UTF-8 Unicode encoding.])
302 fi
303
304 if test "$enable_unicode_properties" = "yes"; then
305 AC_DEFINE([SUPPORT_UCP], [], [
306 Define to enable support for Unicode properties])
307 fi
308
309 if test "$enable_stack_for_recursion" = "no"; then
310 AC_DEFINE([NO_RECURSE], [], [
311 PCRE uses recursive function calls to handle backtracking while
312 matching. This can sometimes be a problem on systems that have
313 stacks of limited size. Define NO_RECURSE to get a version that
314 doesn't use recursion in the match() function; instead it creates
315 its own stack by steam using pcre_recurse_malloc() to obtain memory
316 from the heap. For more detail, see the comments and other stuff
317 just above the match() function. On systems that support it,
318 "configure" can be used to set this in the Makefile
319 (use --disable-stack-for-recursion).])
320 fi
321
322 AC_DEFINE_UNQUOTED([NEWLINE], [$ac_pcre_newline_value], [
323 The value of NEWLINE determines the newline character sequence. On
324 Unix-like systems, "configure" can be used to override the default,
325 which is 10. The possible values are 10 (LF), 13 (CR), 3338 (CRLF),
326 -1 (ANY), or -2 (ANYCRLF).])
327
328 AC_DEFINE_UNQUOTED([LINK_SIZE], [$with_link_size], [
329 The value of LINK_SIZE determines the number of bytes used to store
330 links as offsets within the compiled regex. The default is 2, which
331 allows for compiled patterns up to 64K long. This covers the vast
332 majority of cases. However, PCRE can also be compiled to use 3 or 4
333 bytes instead. This allows for longer patterns in extreme cases. On
334 systems that support it, "configure" can be used to override this default.])
335
336 AC_DEFINE_UNQUOTED([POSIX_MALLOC_THRESHOLD], [$with_posix_malloc_threshold], [
337 When calling PCRE via the POSIX interface, additional working storage
338 is required for holding the pointers to capturing substrings because
339 PCRE requires three integers per substring, whereas the POSIX
340 interface provides only two. If the number of expected substrings is
341 small, the wrapper function uses space on the stack, because this is
342 faster than using malloc() for each call. The threshold above which
343 the stack is no longer used is defined by POSIX_MALLOC_THRESHOLD. On
344 systems that support it, "configure" can be used to override this
345 default.])
346
347 AC_DEFINE_UNQUOTED([MATCH_LIMIT], [$with_match_limit], [
348 The value of MATCH_LIMIT determines the default number of times the
349 internal match() function can be called during a single execution of
350 pcre_exec(). There is a runtime interface for setting a different
351 limit. The limit exists in order to catch runaway regular
352 expressions that take for ever to determine that they do not match.
353 The default is set very large so that it does not accidentally catch
354 legitimate cases. On systems that support it, "configure" can be
355 used to override this default default.])
356
357 AC_DEFINE_UNQUOTED([MATCH_LIMIT_RECURSION], [$with_match_limit_recursion], [
358 The above limit applies to all calls of match(), whether or not they
359 increase the recursion depth. In some environments it is desirable
360 to limit the depth of recursive calls of match() more strictly, in
361 order to restrict the maximum amount of stack (or heap, if
362 NO_RECURSE is defined) that is used. The value of
363 MATCH_LIMIT_RECURSION applies only to recursive calls of match(). To
364 have any useful effect, it must be less than the value of
365 MATCH_LIMIT. The default is to use the same value as MATCH_LIMIT.
366 There is a runtime method for setting a different limit. On systems
367 that support it, "configure" can be used to override the default.])
368
369 AC_DEFINE([MAX_NAME_SIZE], [32], [
370 This limit is parameterized just in case anybody ever wants to
371 change it. Care must be taken if it is increased, because it guards
372 against integer overflow caused by enormously large patterns.])
373
374 AC_DEFINE([MAX_NAME_COUNT], [10000], [
375 This limit is parameterized just in case anybody ever wants to
376 change it. Care must be taken if it is increased, because it guards
377 against integer overflow caused by enormously large patterns.])
378
379 AC_DEFINE([MAX_DUPLENGTH], [30000], [
380 This limit is parameterized just in case anybody ever wants to
381 change it. Care must be taken if it is increased, because it guards
382 against integer overflow caused by enormously large patterns.])
383
384 AH_VERBATIM([PCRE_EXP_DEFN], [
385 /* If you are compiling for a system other than a Unix-like system or
386 Win32, and it needs some magic to be inserted before the definition
387 of a function that is exported by the library, define this macro to
388 contain the relevant magic. If you do not define this macro, it
389 defaults to "extern" for a C compiler and "extern C" for a C++
390 compiler on non-Win32 systems. This macro apears at the start of
391 every exported function that is part of the external API. It does
392 not appear on functions that are "external" in the C sense, but
393 which are internal to the library. */
394 #undef PCRE_EXP_DEFN])
395
396 if test "$enable_ebcdic" = "yes"; then
397 AC_DEFINE_UNQUOTED([EBCDIC], [], [
398 If you are compiling for a system that uses EBCDIC instead of ASCII
399 character codes, define this macro as 1. On systems that can use
400 "configure", this can be done via --enable-ebcdic.])
401 fi
402
403 # Platform specific issues
404 NO_UNDEFINED=
405 EXPORT_ALL_SYMBOLS=
406 case $host_os in
407 cygwin* | mingw* )
408 if test X"$enable_shared" = Xyes; then
409 NO_UNDEFINED="-no-undefined"
410 EXPORT_ALL_SYMBOLS="-Wl,--export-all-symbols"
411 fi
412 ;;
413 esac
414
415 # The extra LDFLAGS for each particular library
416 # (Note: The libpcre*_version bits are m4 variables, assigned above)
417
418 EXTRA_LIBPCRE_LDFLAGS="$NO_UNDEFINED -version-info libpcre_version"
419
420 EXTRA_LIBPCREPOSIX_LDFLAGS="$NO_UNDEFINED -version-info libpcreposix_version"
421
422 EXTRA_LIBPCRECPP_LDFLAGS="$NO_UNDEFINED $EXPORT_ALL_SYMBOLS -version-info libpcrecpp_version"
423
424 AC_SUBST(EXTRA_LIBPCRE_LDFLAGS)
425 AC_SUBST(EXTRA_LIBPCREPOSIX_LDFLAGS)
426 AC_SUBST(EXTRA_LIBPCRECPP_LDFLAGS)
427
428 # When we run 'make distcheck', use these arguments.
429 DISTCHECK_CONFIGURE_FLAGS="--enable-cpp --enable-unicode-properties"
430 AC_SUBST(DISTCHECK_CONFIGURE_FLAGS)
431
432 # Produce these files, in addition to config.h.
433 AC_CONFIG_FILES(
434 Makefile
435 libpcre.pc
436 libpcrecpp.pc
437 pcre-config
438 pcre.h
439 pcre_stringpiece.h
440 pcrecpparg.h
441 )
442
443 # Make the generated script files executable.
444 AC_CONFIG_COMMANDS([script-chmod], [chmod a+x pcre-config])
445
446 # Make sure that pcre_chartables.c is removed in case the method for
447 # creating it was changed by reconfiguration.
448 AC_CONFIG_COMMANDS([delete-old-chartables], [rm -f pcre_chartables.c])
449
450 AC_OUTPUT
451
452 # Print out a nice little message after configure is run displaying your
453 # chosen options.
454 #
455 cat <<EOF
456
457 $PACKAGE-$VERSION configuration summary:
458
459 Install prefix ......... : ${prefix}
460 C preprocessor ......... : ${CPP}
461 C compiler ............. : ${CC}
462 C++ preprocessor ....... : ${CXXCPP}
463 C++ compiler ........... : ${CXX}
464 Linker ................. : ${LD}
465 C preprocessor flags ... : ${CPPFLAGS}
466 C compiler flags ....... : ${CFLAGS}
467 C++ compiler flags ..... : ${CXXFLAGS}
468 Linker flags ........... : ${LDFLAGS}
469 Extra libraries ........ : ${LIBS}
470
471 Build C++ library ...... : ${enable_cpp}
472 Enable UTF-8 support ... : ${enable_utf8}
473 Unicode properties ..... : ${enable_unicode_properties}
474 Newline char/sequence .. : ${enable_newline}
475 EBCDIC coding .......... : ${enable_ebcdic}
476 Rebuild char tables .... : ${enable_rebuild_chartables}
477 Use stack recursion .... : ${enable_stack_for_recursion}
478 POSIX mem threshold .... : ${with_posix_malloc_threshold}
479 Internal link size ..... : ${with_link_size}
480 Match limit ............ : ${with_match_limit}
481 Match limit recursion .. : ${with_match_limit_recursion}
482 Build shared libs ...... : ${enable_shared}
483 Build static libs ...... : ${enable_static}
484
485 EOF
486
487 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