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

Contents of /code/trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 181 - (hide annotations) (download)
Wed Jun 13 14:55:18 2007 UTC (6 years, 10 months ago) by ph10
File size: 18145 byte(s)
Documentation update preparatory to release.

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