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

Contents of /code/trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 99 - (show annotations) (download)
Tue Mar 6 12:27:42 2007 UTC (7 years, 6 months ago) by ph10
File size: 16336 byte(s)
1. Move the comment about version numbers from pcre.h.in to configure.ac 
because that's where they are now set.
2. Update all the man pages to remove the use of .br and .in because this
causes trouble for some HTML converters. Also standardised the final sections 
giving author information and revision date.
3. Update the maintain/132html man page converter to handle .nf/.fi and to barf 
at .br/.in.

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