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

Contents of /code/trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 106 - (show annotations) (download)
Wed Mar 7 09:43:22 2007 UTC (7 years, 9 months ago) by ph10
File size: 16205 byte(s)
Add comment about valid newline values to configure.ac so that it ends up in 
config.h.in and thus in config.h.

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