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

Contents of /code/trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 145 - (show annotations) (download)
Wed Apr 4 14:06:52 2007 UTC (7 years, 7 months ago) by ph10
File size: 16859 byte(s)
Reworked all the WIN32 __declspec stuff in the hope of getting it right.

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