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

Contents of /code/trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 131 - (hide annotations) (download)
Mon Mar 26 15:10:12 2007 UTC (7 years ago) by ph10
File size: 16846 byte(s)
Various new tidies.

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