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

Contents of /code/trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 137 - (hide annotations) (download)
Thu Mar 29 13:56:00 2007 UTC (7 years ago) by ph10
File size: 16863 byte(s)
Daniel's patches.

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 135 m4_define(pcre_prerelease, [-RC4])
12     m4_define(pcre_date, [2007-03-29])
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     dnl [use NL as newline (lf, cr, crlf, any; default=lf)]),
75     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     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 nigel 87
97 ph10 97 # Handle --enable-ebcdic
98     AC_ARG_ENABLE(ebcdic,
99     AS_HELP_STRING([--enable-ebcdic],
100 ph10 128 [assume EBCDIC coding rather than ASCII (implies --enable-rebuild-chartables)]),
101 ph10 97 , enable_ebcdic=no)
102 nigel 87
103 ph10 97 # 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 nigel 87
109 ph10 97 # 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 nigel 87
115 ph10 97 # 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 nigel 87
121 ph10 97 # 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 nigel 87
127 ph10 97 # 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 nigel 87
140 ph10 97 # 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 nigel 87
152 ph10 97 if test "x$enable_utf8" = "xunset"
153     then
154     enable_utf8=no
155     fi
156 nigel 87
157 ph10 128 # Make sure that if enable_ebcdic is set, rebuild_chartables is also enabled.
158     #
159 ph10 137 if test "x$enable_ebcdic" = "xyes"
160 ph10 128 then
161     enable_rebuild_chartables=yes
162     fi
163    
164 ph10 97 # 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 nigel 87
175 ph10 97 # 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 nigel 87
183 ph10 97 AH_TOP([
184 ph10 100 /* 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 nigel 87
189 ph10 111 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 ph10 123 macros the way you need them. Alternatively, you can avoid editing by using -D
192 ph10 111 on the compiler command line to set the macro values.
193 nigel 87
194 ph10 111 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 ph10 100
198 ph10 97 # Checks for header files.
199 nigel 87 AC_HEADER_STDC
200 ph10 97 AC_CHECK_HEADERS(limits.h sys/types.h sys/stat.h dirent.h windows.h)
201 nigel 87
202 ph10 97 # 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 nigel 87 then
207 ph10 97 AC_LANG_PUSH(C++)
208 nigel 87
209 ph10 97 # We could be more clever here, given we're doing AC_SUBST with this
210 ph10 127 # (eg set a var to be the name of the include file we want). But we're not
211 ph10 97 # so it's easy to change back to 'regular' autoconf vars if we needed to.
212 nigel 87 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 ph10 97 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 nigel 87 AC_SUBST(pcre_have_bits_type_traits)
223    
224 ph10 97 # Conditional compilation
225     AM_CONDITIONAL(WITH_PCRE_CPP, test "x$enable_cpp" = "xyes")
226 ph10 128 AM_CONDITIONAL(WITH_REBUILD_CHARTABLES, test "x$enable_rebuild_chartables" = "xyes")
227 nigel 87
228 ph10 97 # Checks for typedefs, structures, and compiler characteristics.
229 nigel 87
230     AC_C_CONST
231     AC_TYPE_SIZE_T
232    
233 ph10 97 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 nigel 87 AC_SUBST(pcre_have_long_long)
240     AC_SUBST(pcre_have_ulong_long)
241    
242 ph10 97 # Checks for library functions.
243 nigel 87
244     AC_CHECK_FUNCS(bcopy memmove strerror strtoq strtoll)
245    
246 ph10 97 # This facilitates -ansi builds under Linux
247     dnl AC_DEFINE([_GNU_SOURCE], [], [Enable GNU extensions in glibc])
248 nigel 87
249 ph10 97 if test "x$enable_shared" = "xno" ; then
250     AC_DEFINE([PCRE_STATIC], [1], [
251     Define if linking statically (TODO: make nice with Libtool)])
252 nigel 87 fi
253    
254 ph10 97 # Here is where pcre specific defines are handled
255 nigel 87
256 ph10 97 if test "$enable_utf8" = "yes"; then
257     AC_DEFINE([SUPPORT_UTF8], [], [
258     Define to enable support for the UTF-8 Unicode encoding.])
259 nigel 87 fi
260    
261 ph10 97 if test "$enable_unicode_properties" = "yes"; then
262     AC_DEFINE([SUPPORT_UCP], [], [
263     Define to enable support for Unicode properties])
264     fi
265 nigel 87
266 ph10 97 if test "$enable_stack_for_recursion" = "no"; then
267     AC_DEFINE([NO_RECURSE], [], [
268     PCRE uses recursive function calls to handle backtracking while
269 ph10 127 matching. This can sometimes be a problem on systems that have
270 ph10 100 stacks of limited size. Define NO_RECURSE to get a version that
271 ph10 97 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 nigel 87 fi
278    
279 ph10 97 AC_DEFINE_UNQUOTED([NEWLINE], [$ac_pcre_newline_value], [
280 ph10 111 The value of NEWLINE determines the newline character sequence. On
281 ph10 106 Unix-like systems, "configure" can be used to override the default,
282 ph10 111 which is 10. The possible values are 10 (LF), 13 (CR), 3338 (CRLF),
283 ph10 106 or -1 (ANY).])
284 nigel 87
285 ph10 97 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 nigel 87
293 ph10 97 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 nigel 91
304 ph10 97 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 ph10 100 pcre_exec(). There is a runtime interface for setting a different
308 ph10 97 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 nigel 91
314 ph10 97 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 ph10 111 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 ph10 100 that support it, "configure" can be used to override the default.])
325 nigel 93
326 ph10 97 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 nigel 93
331 ph10 97 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 nigel 87
336 ph10 97 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 nigel 87
341 ph10 97 AH_VERBATIM([PCRE_DATA_SCOPE], [
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_DATA_SCOPE])
352 nigel 87
353 ph10 97 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 nigel 87 fi
359    
360 ph10 97 # 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 nigel 87
372 ph10 97 # The extra LDFLAGS for each particular library
373     # (Note: The libpcre*_version bits are m4 variables, assigned above)
374 nigel 87
375 ph10 97 EXTRA_LIBPCRE_LDFLAGS="$NO_UNDEFINED -version-info libpcre_version"
376 nigel 87
377 ph10 97 EXTRA_LIBPCREPOSIX_LDFLAGS="$NO_UNDEFINED -version-info libpcreposix_version"
378 nigel 87
379 ph10 97 EXTRA_LIBPCRECPP_LDFLAGS="$NO_UNDEFINED $EXPORT_ALL_SYMBOLS -version-info libpcrecpp_version"
380 nigel 87
381 ph10 97 AC_SUBST(EXTRA_LIBPCRE_LDFLAGS)
382     AC_SUBST(EXTRA_LIBPCREPOSIX_LDFLAGS)
383     AC_SUBST(EXTRA_LIBPCRECPP_LDFLAGS)
384 nigel 87
385 ph10 97 # When we run 'make distcheck', use these arguments.
386     DISTCHECK_CONFIGURE_FLAGS="--enable-cpp --enable-unicode-properties"
387     AC_SUBST(DISTCHECK_CONFIGURE_FLAGS)
388 nigel 87
389 ph10 97 # 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 nigel 87 )
399    
400 ph10 97 # Make the generated script files executable.
401 ph10 137 AC_CONFIG_COMMANDS([script-chmod], [chmod a+x pcre-config])
402 nigel 87
403 ph10 128 # Make sure that pcre_chartables.c is removed in case the method for
404     # creating it was changed by reconfiguration.
405 ph10 137 AC_CONFIG_COMMANDS([delete-old-chartables], [rm -f pcre_chartables.c])
406 ph10 128
407 ph10 137 AC_OUTPUT
408 ph10 128
409 ph10 97 # Print out a nice little message after configure is run displaying your
410     # chosen options.
411     #
412     cat <<EOF
413 nigel 87
414 ph10 97 $PACKAGE-$VERSION configuration summary:
415 nigel 87
416 ph10 97 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 nigel 87
428 ph10 97 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 ph10 128 Rebuild char tables .... : ${enable_rebuild_chartables}
434 ph10 97 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 nigel 87
442 ph10 97 EOF
443 nigel 87
444 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