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

Contents of /code/trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 150 - (show annotations) (download)
Tue Apr 17 08:22:40 2007 UTC (7 years, 5 months ago) by ph10
File size: 17141 byte(s)
Update HTML documentation.

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