1 | #serial 12
|
---|
2 |
|
---|
3 | dnl Initially derived from code in GNU grep.
|
---|
4 | dnl Mostly written by Jim Meyering.
|
---|
5 |
|
---|
6 | dnl Usage: jm_INCLUDED_REGEX([lib/regex.c])
|
---|
7 | dnl
|
---|
8 | AC_DEFUN([jm_INCLUDED_REGEX],
|
---|
9 | [
|
---|
10 | dnl Even packages that don't use regex.c can use this macro.
|
---|
11 | dnl Of course, for them it doesn't do anything.
|
---|
12 |
|
---|
13 | # Assume we'll default to using the included regex.c.
|
---|
14 | ac_use_included_regex=yes
|
---|
15 |
|
---|
16 | # However, if the system regex support is good enough that it passes the
|
---|
17 | # the following run test, then default to *not* using the included regex.c.
|
---|
18 | # If cross compiling, assume the test would fail and use the included
|
---|
19 | # regex.c. The first failing regular expression is from `Spencer ere
|
---|
20 | # test #75' in grep-2.3.
|
---|
21 | AC_CACHE_CHECK([for working re_compile_pattern],
|
---|
22 | jm_cv_func_working_re_compile_pattern,
|
---|
23 | AC_TRY_RUN(
|
---|
24 | [#include <stdio.h>
|
---|
25 | #include <regex.h>
|
---|
26 | int
|
---|
27 | main ()
|
---|
28 | {
|
---|
29 | static struct re_pattern_buffer regex;
|
---|
30 | const char *s;
|
---|
31 | struct re_registers regs;
|
---|
32 | re_set_syntax (RE_SYNTAX_POSIX_EGREP);
|
---|
33 | [s = re_compile_pattern ("a[[:@:>@:]]b\n", 9, ®ex);]
|
---|
34 | /* This should fail with _Invalid character class name_ error. */
|
---|
35 | if (!s)
|
---|
36 | exit (1);
|
---|
37 |
|
---|
38 | /* This should succeed, but doesn't for e.g. glibc-2.1.3. */
|
---|
39 | s = re_compile_pattern ("{1", 2, ®ex);
|
---|
40 |
|
---|
41 | if (s)
|
---|
42 | exit (1);
|
---|
43 |
|
---|
44 | /* The following example is derived from a problem report
|
---|
45 | against gawk from Jorge Stolfi <stolfi@ic.unicamp.br>. */
|
---|
46 | s = re_compile_pattern ("[[anù]]*n", 7, ®ex);
|
---|
47 | if (s)
|
---|
48 | exit (1);
|
---|
49 |
|
---|
50 | /* This should match, but doesn't for e.g. glibc-2.2.1. */
|
---|
51 | if (re_match (®ex, "an", 2, 0, ®s) != 2)
|
---|
52 | exit (1);
|
---|
53 |
|
---|
54 | exit (0);
|
---|
55 | }
|
---|
56 | ],
|
---|
57 | jm_cv_func_working_re_compile_pattern=yes,
|
---|
58 | jm_cv_func_working_re_compile_pattern=no,
|
---|
59 | dnl When crosscompiling, assume it's broken.
|
---|
60 | jm_cv_func_working_re_compile_pattern=no))
|
---|
61 | if test $jm_cv_func_working_re_compile_pattern = yes; then
|
---|
62 | ac_use_included_regex=no
|
---|
63 | fi
|
---|
64 |
|
---|
65 | test -n "$1" || AC_MSG_ERROR([missing argument])
|
---|
66 | m4_syscmd([test -f $1])
|
---|
67 | ifelse(m4_sysval, 0,
|
---|
68 | [
|
---|
69 | AC_ARG_WITH(included-regex,
|
---|
70 | [ --without-included-regex don't compile regex; this is the default on
|
---|
71 | systems with version 2 of the GNU C library
|
---|
72 | (use with caution on other system)],
|
---|
73 | jm_with_regex=$withval,
|
---|
74 | jm_with_regex=$ac_use_included_regex)
|
---|
75 | if test "$jm_with_regex" = yes; then
|
---|
76 | AC_LIBOBJ(regex)
|
---|
77 | fi
|
---|
78 | ],
|
---|
79 | )
|
---|
80 | ]
|
---|
81 | )
|
---|