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

Contents of /code/trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 135 - (show annotations) (download)
Thu Mar 29 09:09:33 2007 UTC (7 years, 5 months ago) by ph10
File size: 16846 byte(s)
Hopefully the final rename of makevp-* to makevp_*.

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