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

Contents of /code/trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


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

1 nigel 87 dnl Process this file with autoconf to produce a configure script.
2    
3 ph10 99 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 ph10 97 m4_define(pcre_major, [7])
10     m4_define(pcre_minor, [1])
11 ph10 149 m4_define(pcre_prerelease, [-RC5])
12     m4_define(pcre_date, [2007-04-16])
13 nigel 87
14 ph10 97 # 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 nigel 87
19 ph10 97 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 ph10 137 AC_PROG_LN_S
30 nigel 87
31 ph10 97 PCRE_MAJOR="pcre_major"
32     PCRE_MINOR="pcre_minor"
33     PCRE_PRERELEASE="pcre_prerelease"
34     PCRE_DATE="pcre_date"
35 nigel 87
36 ph10 97 AC_SUBST(PCRE_MAJOR)
37     AC_SUBST(PCRE_MINOR)
38     AC_SUBST(PCRE_PRERELEASE)
39     AC_SUBST(PCRE_DATE)
40 nigel 87
41 ph10 97 # Set a more sensible default value for $(htmldir).
42     if test "x$htmldir" = 'x${docdir}'
43     then
44     htmldir='${docdir}/html'
45     fi
46 nigel 87
47 ph10 97 # Handle --disable-cpp
48     AC_ARG_ENABLE(cpp,
49     AS_HELP_STRING([--disable-cpp],
50     [disable C++ support]),
51     , enable_cpp=yes)
52 nigel 87
53 ph10 128 # 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 ph10 97 # 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 nigel 87
65 ph10 97 # 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 nigel 87
71 ph10 97 # Handle --enable-newline=NL
72     dnl AC_ARG_ENABLE(newline,
73     dnl AS_HELP_STRING([--enable-newline=NL],
74 ph10 149 dnl [use NL as newline (lf, cr, crlf, anycrlf, any; default=lf)]),
75 ph10 97 dnl , enable_newline=lf)
76 nigel 87
77 ph10 97 # 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 ph10 149 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 ph10 97 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 nigel 87
101 ph10 97 # Handle --enable-ebcdic
102     AC_ARG_ENABLE(ebcdic,
103     AS_HELP_STRING([--enable-ebcdic],
104 ph10 128 [assume EBCDIC coding rather than ASCII (implies --enable-rebuild-chartables)]),
105 ph10 97 , enable_ebcdic=no)
106 nigel 87
107 ph10 97 # 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 nigel 87
113 ph10 97 # 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 nigel 87
119 ph10 97 # 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 nigel 87
125 ph10 97 # 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 nigel 87
131 ph10 97 # 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 nigel 87
144 ph10 97 # 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 nigel 87
156 ph10 97 if test "x$enable_utf8" = "xunset"
157     then
158     enable_utf8=no
159     fi
160 nigel 87
161 ph10 128 # Make sure that if enable_ebcdic is set, rebuild_chartables is also enabled.
162     #
163 ph10 137 if test "x$enable_ebcdic" = "xyes"
164 ph10 128 then
165     enable_rebuild_chartables=yes
166     fi
167    
168 ph10 97 # Convert the newline identifier into the appropriate integer value.
169     case "$enable_newline" in
170 ph10 149 lf) ac_pcre_newline_value=10 ;;
171     cr) ac_pcre_newline_value=13 ;;
172     crlf) ac_pcre_newline_value=3338 ;;
173 ph10 150 anycrlf) ac_pcre_newline_value=-2 ;;
174 ph10 149 any) ac_pcre_newline_value=-1 ;;
175 ph10 97 *)
176     AC_MSG_ERROR([invalid argument \"$enable_newline\" to --enable-newline option])
177     ;;
178     esac
179 nigel 87
180 ph10 97 # 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 nigel 87
188 ph10 97 AH_TOP([
189 ph10 100 /* 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 nigel 87
194 ph10 111 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 ph10 123 macros the way you need them. Alternatively, you can avoid editing by using -D
197 ph10 111 on the compiler command line to set the macro values.
198 nigel 87
199 ph10 111 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 ph10 100
203 ph10 97 # Checks for header files.
204 nigel 87 AC_HEADER_STDC
205 ph10 97 AC_CHECK_HEADERS(limits.h sys/types.h sys/stat.h dirent.h windows.h)
206 nigel 87
207 ph10 97 # 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 nigel 87 then
212 ph10 97 AC_LANG_PUSH(C++)
213 nigel 87
214 ph10 97 # We could be more clever here, given we're doing AC_SUBST with this
215 ph10 127 # (eg set a var to be the name of the include file we want). But we're not
216 ph10 97 # so it's easy to change back to 'regular' autoconf vars if we needed to.
217 nigel 87 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 ph10 97 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 nigel 87 AC_SUBST(pcre_have_bits_type_traits)
228    
229 ph10 97 # Conditional compilation
230     AM_CONDITIONAL(WITH_PCRE_CPP, test "x$enable_cpp" = "xyes")
231 ph10 128 AM_CONDITIONAL(WITH_REBUILD_CHARTABLES, test "x$enable_rebuild_chartables" = "xyes")
232 nigel 87
233 ph10 97 # Checks for typedefs, structures, and compiler characteristics.
234 nigel 87
235     AC_C_CONST
236     AC_TYPE_SIZE_T
237    
238 ph10 97 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 nigel 87 AC_SUBST(pcre_have_long_long)
245     AC_SUBST(pcre_have_ulong_long)
246    
247 ph10 97 # Checks for library functions.
248 nigel 87
249     AC_CHECK_FUNCS(bcopy memmove strerror strtoq strtoll)
250    
251 ph10 97 # This facilitates -ansi builds under Linux
252     dnl AC_DEFINE([_GNU_SOURCE], [], [Enable GNU extensions in glibc])
253 nigel 87
254 ph10 97 if test "x$enable_shared" = "xno" ; then
255     AC_DEFINE([PCRE_STATIC], [1], [
256     Define if linking statically (TODO: make nice with Libtool)])
257 nigel 87 fi
258    
259 ph10 97 # Here is where pcre specific defines are handled
260 nigel 87
261 ph10 97 if test "$enable_utf8" = "yes"; then
262     AC_DEFINE([SUPPORT_UTF8], [], [
263     Define to enable support for the UTF-8 Unicode encoding.])
264 nigel 87 fi
265    
266 ph10 97 if test "$enable_unicode_properties" = "yes"; then
267     AC_DEFINE([SUPPORT_UCP], [], [
268     Define to enable support for Unicode properties])
269     fi
270 nigel 87
271 ph10 97 if test "$enable_stack_for_recursion" = "no"; then
272     AC_DEFINE([NO_RECURSE], [], [
273     PCRE uses recursive function calls to handle backtracking while
274 ph10 127 matching. This can sometimes be a problem on systems that have
275 ph10 100 stacks of limited size. Define NO_RECURSE to get a version that
276 ph10 97 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 nigel 87 fi
283    
284 ph10 97 AC_DEFINE_UNQUOTED([NEWLINE], [$ac_pcre_newline_value], [
285 ph10 111 The value of NEWLINE determines the newline character sequence. On
286 ph10 106 Unix-like systems, "configure" can be used to override the default,
287 ph10 111 which is 10. The possible values are 10 (LF), 13 (CR), 3338 (CRLF),
288 ph10 149 -1 (ANY), or -2 (ANYCRLF).])
289 nigel 87
290 ph10 97 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 nigel 87
298 ph10 97 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 nigel 91
309 ph10 97 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 ph10 100 pcre_exec(). There is a runtime interface for setting a different
313 ph10 97 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 nigel 91
319 ph10 97 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 ph10 111 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 ph10 100 that support it, "configure" can be used to override the default.])
330 nigel 93
331 ph10 97 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 nigel 93
336 ph10 97 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 nigel 87
341 ph10 97 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 nigel 87
346 ph10 145 AH_VERBATIM([PCRE_EXP_DEFN], [
347 ph10 97 /* 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 ph10 145 #undef PCRE_EXP_DEFN])
357 nigel 87
358 ph10 97 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 nigel 87 fi
364    
365 ph10 97 # 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 nigel 87
377 ph10 97 # The extra LDFLAGS for each particular library
378     # (Note: The libpcre*_version bits are m4 variables, assigned above)
379 nigel 87
380 ph10 97 EXTRA_LIBPCRE_LDFLAGS="$NO_UNDEFINED -version-info libpcre_version"
381 nigel 87
382 ph10 97 EXTRA_LIBPCREPOSIX_LDFLAGS="$NO_UNDEFINED -version-info libpcreposix_version"
383 nigel 87
384 ph10 97 EXTRA_LIBPCRECPP_LDFLAGS="$NO_UNDEFINED $EXPORT_ALL_SYMBOLS -version-info libpcrecpp_version"
385 nigel 87
386 ph10 97 AC_SUBST(EXTRA_LIBPCRE_LDFLAGS)
387     AC_SUBST(EXTRA_LIBPCREPOSIX_LDFLAGS)
388     AC_SUBST(EXTRA_LIBPCRECPP_LDFLAGS)
389 nigel 87
390 ph10 97 # When we run 'make distcheck', use these arguments.
391     DISTCHECK_CONFIGURE_FLAGS="--enable-cpp --enable-unicode-properties"
392     AC_SUBST(DISTCHECK_CONFIGURE_FLAGS)
393 nigel 87
394 ph10 97 # 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 nigel 87 )
404    
405 ph10 97 # Make the generated script files executable.
406 ph10 137 AC_CONFIG_COMMANDS([script-chmod], [chmod a+x pcre-config])
407 nigel 87
408 ph10 128 # Make sure that pcre_chartables.c is removed in case the method for
409     # creating it was changed by reconfiguration.
410 ph10 137 AC_CONFIG_COMMANDS([delete-old-chartables], [rm -f pcre_chartables.c])
411 ph10 128
412 ph10 137 AC_OUTPUT
413 ph10 128
414 ph10 97 # Print out a nice little message after configure is run displaying your
415     # chosen options.
416     #
417     cat <<EOF
418 nigel 87
419 ph10 97 $PACKAGE-$VERSION configuration summary:
420 nigel 87
421 ph10 97 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 nigel 87
433 ph10 97 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 ph10 128 Rebuild char tables .... : ${enable_rebuild_chartables}
439 ph10 97 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 nigel 87
447 ph10 97 EOF
448 nigel 87
449 ph10 97 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