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

Contents of /code/trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 100 - (hide annotations) (download)
Tue Mar 6 14:53:10 2007 UTC (7 years, 8 months ago) by ph10
File size: 16110 byte(s)
Updated comments in configure.ac that end up in config.h.in, and arrange for 
config.h to be distributed (compare pcre.h).

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