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

Contents of /code/trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 111 - (hide annotations) (download)
Thu Mar 8 16:53:09 2007 UTC (7 years, 8 months ago) by ph10
File size: 16366 byte(s)
Create the PrepareRelease script to process the documentation and create the 
.generic files for distribution, also to remove trailing spaces. Update a lot 
more of the build-time documentation. Arrange for PrepareRelease and its 
sub-scripts to be distributed.

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 111 If you are going to build PCRE "by hand" on a system without "configure" you
176     should copy the distributed config.h.generic to config.h, and then set up the
177     macros the way you need them. Alternatively, you can avoid editing by using -D
178     on the compiler command line to set the macro values.
179 nigel 87
180 ph10 111 PCRE uses memmove() if HAVE_MEMMOVE is set to 1; otherwise it uses bcopy() if
181     HAVE_BCOPY is set to 1. If your system has neither bcopy() nor memmove(), set
182     them both to 0; an emulation function will be used. */])
183 ph10 100
184 ph10 97 # Checks for header files.
185 nigel 87 AC_HEADER_STDC
186 ph10 97 AC_CHECK_HEADERS(limits.h sys/types.h sys/stat.h dirent.h windows.h)
187 nigel 87
188 ph10 97 # The files below are C++ header files.
189     pcre_have_type_traits="0"
190     pcre_have_bits_type_traits="0"
191     if test "x$enable_cpp" = "xyes" -a -n "$CXX"
192 nigel 87 then
193 ph10 97 AC_LANG_PUSH(C++)
194 nigel 87
195 ph10 97 # We could be more clever here, given we're doing AC_SUBST with this
196     # (eg set a var to be the name of the include file we want). But we're not
197     # so it's easy to change back to 'regular' autoconf vars if we needed to.
198 nigel 87 AC_CHECK_HEADERS(string, [pcre_have_cpp_headers="1"],
199     [pcre_have_cpp_headers="0"])
200     AC_CHECK_HEADERS(bits/type_traits.h, [pcre_have_bits_type_traits="1"],
201     [pcre_have_bits_type_traits="0"])
202     AC_CHECK_HEADERS(type_traits.h, [pcre_have_type_traits="1"],
203     [pcre_have_type_traits="0"])
204 ph10 97 AC_LANG_POP
205     fi
206     # Using AC_SUBST eliminates the need to include config.h in a public .h file
207     AC_SUBST(pcre_have_type_traits)
208 nigel 87 AC_SUBST(pcre_have_bits_type_traits)
209    
210 ph10 97 # Conditional compilation
211     AM_CONDITIONAL(WITH_PCRE_CPP, test "x$enable_cpp" = "xyes")
212 nigel 87
213 ph10 97 # Checks for typedefs, structures, and compiler characteristics.
214 nigel 87
215     AC_C_CONST
216     AC_TYPE_SIZE_T
217    
218 ph10 97 AC_CHECK_TYPES([long long],
219     [pcre_have_long_long="1"],
220     [pcre_have_long_long="0"])
221     AC_CHECK_TYPES([unsigned long long],
222     [pcre_have_ulong_long="1"],
223     [pcre_have_ulong_long="0"])
224 nigel 87 AC_SUBST(pcre_have_long_long)
225     AC_SUBST(pcre_have_ulong_long)
226    
227 ph10 97 # Checks for library functions.
228 nigel 87
229     AC_CHECK_FUNCS(bcopy memmove strerror strtoq strtoll)
230    
231 ph10 97 # This facilitates -ansi builds under Linux
232     dnl AC_DEFINE([_GNU_SOURCE], [], [Enable GNU extensions in glibc])
233 nigel 87
234 ph10 97 if test "x$enable_shared" = "xno" ; then
235     AC_DEFINE([PCRE_STATIC], [1], [
236     Define if linking statically (TODO: make nice with Libtool)])
237 nigel 87 fi
238    
239 ph10 97 # Here is where pcre specific defines are handled
240 nigel 87
241 ph10 97 if test "$enable_utf8" = "yes"; then
242     AC_DEFINE([SUPPORT_UTF8], [], [
243     Define to enable support for the UTF-8 Unicode encoding.])
244 nigel 87 fi
245    
246 ph10 97 if test "$enable_unicode_properties" = "yes"; then
247     AC_DEFINE([SUPPORT_UCP], [], [
248     Define to enable support for Unicode properties])
249     fi
250 nigel 87
251 ph10 97 if test "$enable_stack_for_recursion" = "no"; then
252     AC_DEFINE([NO_RECURSE], [], [
253     PCRE uses recursive function calls to handle backtracking while
254     matching. This can sometimes be a problem on systems that have
255 ph10 100 stacks of limited size. Define NO_RECURSE to get a version that
256 ph10 97 doesn't use recursion in the match() function; instead it creates
257     its own stack by steam using pcre_recurse_malloc() to obtain memory
258     from the heap. For more detail, see the comments and other stuff
259     just above the match() function. On systems that support it,
260     "configure" can be used to set this in the Makefile
261     (use --disable-stack-for-recursion).])
262 nigel 87 fi
263    
264 ph10 97 AC_DEFINE_UNQUOTED([NEWLINE], [$ac_pcre_newline_value], [
265 ph10 111 The value of NEWLINE determines the newline character sequence. On
266 ph10 106 Unix-like systems, "configure" can be used to override the default,
267 ph10 111 which is 10. The possible values are 10 (LF), 13 (CR), 3338 (CRLF),
268 ph10 106 or -1 (ANY).])
269 nigel 87
270 ph10 97 AC_DEFINE_UNQUOTED([LINK_SIZE], [$with_link_size], [
271     The value of LINK_SIZE determines the number of bytes used to store
272     links as offsets within the compiled regex. The default is 2, which
273     allows for compiled patterns up to 64K long. This covers the vast
274     majority of cases. However, PCRE can also be compiled to use 3 or 4
275     bytes instead. This allows for longer patterns in extreme cases. On
276     systems that support it, "configure" can be used to override this default.])
277 nigel 87
278 ph10 97 AC_DEFINE_UNQUOTED([POSIX_MALLOC_THRESHOLD], [$with_posix_malloc_threshold], [
279     When calling PCRE via the POSIX interface, additional working storage
280     is required for holding the pointers to capturing substrings because
281     PCRE requires three integers per substring, whereas the POSIX
282     interface provides only two. If the number of expected substrings is
283     small, the wrapper function uses space on the stack, because this is
284     faster than using malloc() for each call. The threshold above which
285     the stack is no longer used is defined by POSIX_MALLOC_THRESHOLD. On
286     systems that support it, "configure" can be used to override this
287     default.])
288 nigel 91
289 ph10 97 AC_DEFINE_UNQUOTED([MATCH_LIMIT], [$with_match_limit], [
290     The value of MATCH_LIMIT determines the default number of times the
291     internal match() function can be called during a single execution of
292 ph10 100 pcre_exec(). There is a runtime interface for setting a different
293 ph10 97 limit. The limit exists in order to catch runaway regular
294     expressions that take for ever to determine that they do not match.
295     The default is set very large so that it does not accidentally catch
296     legitimate cases. On systems that support it, "configure" can be
297     used to override this default default.])
298 nigel 91
299 ph10 97 AC_DEFINE_UNQUOTED([MATCH_LIMIT_RECURSION], [$with_match_limit_recursion], [
300     The above limit applies to all calls of match(), whether or not they
301     increase the recursion depth. In some environments it is desirable
302     to limit the depth of recursive calls of match() more strictly, in
303     order to restrict the maximum amount of stack (or heap, if
304     NO_RECURSE is defined) that is used. The value of
305     MATCH_LIMIT_RECURSION applies only to recursive calls of match(). To
306     have any useful effect, it must be less than the value of
307 ph10 111 MATCH_LIMIT. The default is to use the same value as MATCH_LIMIT.
308     There is a runtime method for setting a different limit. On systems
309 ph10 100 that support it, "configure" can be used to override the default.])
310 nigel 93
311 ph10 97 AC_DEFINE([MAX_NAME_SIZE], [32], [
312     This limit is parameterized just in case anybody ever wants to
313     change it. Care must be taken if it is increased, because it guards
314     against integer overflow caused by enormously large patterns.])
315 nigel 93
316 ph10 97 AC_DEFINE([MAX_NAME_COUNT], [10000], [
317     This limit is parameterized just in case anybody ever wants to
318     change it. Care must be taken if it is increased, because it guards
319     against integer overflow caused by enormously large patterns.])
320 nigel 87
321 ph10 97 AC_DEFINE([MAX_DUPLENGTH], [30000], [
322     This limit is parameterized just in case anybody ever wants to
323     change it. Care must be taken if it is increased, because it guards
324     against integer overflow caused by enormously large patterns.])
325 nigel 87
326 ph10 97 AH_VERBATIM([PCRE_DATA_SCOPE], [
327     /* If you are compiling for a system other than a Unix-like system or
328     Win32, and it needs some magic to be inserted before the definition
329     of a function that is exported by the library, define this macro to
330     contain the relevant magic. If you do not define this macro, it
331     defaults to "extern" for a C compiler and "extern C" for a C++
332     compiler on non-Win32 systems. This macro apears at the start of
333     every exported function that is part of the external API. It does
334     not appear on functions that are "external" in the C sense, but
335     which are internal to the library. */
336     #undef PCRE_DATA_SCOPE])
337 nigel 87
338 ph10 97 if test "$enable_ebcdic" = "yes"; then
339     AC_DEFINE_UNQUOTED([EBCDIC], [], [
340     If you are compiling for a system that uses EBCDIC instead of ASCII
341     character codes, define this macro as 1. On systems that can use
342     "configure", this can be done via --enable-ebcdic.])
343 nigel 87 fi
344    
345 ph10 97 # Here is where pcre specific substs are handled
346     # These 3 are only used by RunTest.in.
347     # TODO: remove once RunTest uses pcretest -C instead.
348     AC_SUBST(LINK_SIZE, $with_link_size)
349     AC_SUBST(UTF8, $enable_utf8)
350     AC_SUBST(UCP, $enable_unicode_properties)
351 nigel 87
352 ph10 97 # Platform specific issues
353     NO_UNDEFINED=
354     EXPORT_ALL_SYMBOLS=
355     case $host_os in
356     cygwin* | mingw* )
357     if test X"$enable_shared" = Xyes; then
358     NO_UNDEFINED="-no-undefined"
359     EXPORT_ALL_SYMBOLS="-Wl,--export-all-symbols"
360     fi
361     ;;
362     esac
363 nigel 87
364 ph10 97 # The extra LDFLAGS for each particular library
365     # (Note: The libpcre*_version bits are m4 variables, assigned above)
366 nigel 87
367 ph10 97 EXTRA_LIBPCRE_LDFLAGS="$NO_UNDEFINED -version-info libpcre_version"
368 nigel 87
369 ph10 97 EXTRA_LIBPCREPOSIX_LDFLAGS="$NO_UNDEFINED -version-info libpcreposix_version"
370 nigel 87
371 ph10 97 EXTRA_LIBPCRECPP_LDFLAGS="$NO_UNDEFINED $EXPORT_ALL_SYMBOLS -version-info libpcrecpp_version"
372 nigel 87
373 ph10 97 AC_SUBST(EXTRA_LIBPCRE_LDFLAGS)
374     AC_SUBST(EXTRA_LIBPCREPOSIX_LDFLAGS)
375     AC_SUBST(EXTRA_LIBPCRECPP_LDFLAGS)
376 nigel 87
377 ph10 97 # When we run 'make distcheck', use these arguments.
378     DISTCHECK_CONFIGURE_FLAGS="--enable-cpp --enable-unicode-properties"
379     AC_SUBST(DISTCHECK_CONFIGURE_FLAGS)
380 nigel 87
381 ph10 97 # Produce these files, in addition to config.h.
382     AC_CONFIG_FILES(
383     Makefile
384     RunGrepTest
385     RunTest
386     libpcre.pc
387     libpcrecpp.pc
388     pcre-config
389     pcre.h
390     pcre_stringpiece.h
391     pcrecpparg.h
392 nigel 87 )
393    
394 ph10 97 # Make the generated script files executable.
395     AC_CONFIG_COMMANDS([script-chmod], [chmod a+x RunTest RunGrepTest pcre-config])
396 nigel 87
397 ph10 97 AC_OUTPUT
398 nigel 87
399 ph10 97 # Print out a nice little message after configure is run displaying your
400     # chosen options.
401     #
402     cat <<EOF
403 nigel 87
404 ph10 97 $PACKAGE-$VERSION configuration summary:
405 nigel 87
406 ph10 97 Install prefix ......... : ${prefix}
407     C preprocessor ......... : ${CPP}
408     C compiler ............. : ${CC}
409     C++ preprocessor ....... : ${CXXCPP}
410     C++ compiler ........... : ${CXX}
411     Linker ................. : ${LD}
412     C preprocessor flags ... : ${CPPFLAGS}
413     C compiler flags ....... : ${CFLAGS}
414     C++ compiler flags ..... : ${CXXFLAGS}
415     Linker flags ........... : ${LDFLAGS}
416     Extra libraries ........ : ${LIBS}
417 nigel 87
418 ph10 97 Build C++ library ...... : ${enable_cpp}
419     Enable UTF-8 support ... : ${enable_utf8}
420     Unicode properties ..... : ${enable_unicode_properties}
421     Newline char/sequence .. : ${enable_newline}
422     EBCDIC coding .......... : ${enable_ebcdic}
423     Use stack recursion .... : ${enable_stack_for_recursion}
424     POSIX mem threshold .... : ${with_posix_malloc_threshold}
425     Internal link size ..... : ${with_link_size}
426     Match limit ............ : ${with_match_limit}
427     Match limit recursion .. : ${with_match_limit_recursion}
428     Build shared libs ...... : ${enable_shared}
429     Build static libs ...... : ${enable_static}
430 nigel 87
431 ph10 97 EOF
432 nigel 87
433 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