-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathconfigure.ac
154 lines (138 loc) · 4.8 KB
/
configure.ac
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# Configure template for GNU M4. -*-Autoconf-*-
# Copyright (C) 1991, 1993, 1994, 2004, 2005, 2006 Free Software
# Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301 USA
AC_PREREQ([2.60])
AC_INIT([GNU M4], [1.4.6], [[email protected]])
AM_INIT_AUTOMAKE([1.9.6 dist-bzip2 gnu])
PACKAGE=$PACKAGE_TARNAME; AC_SUBST([PACKAGE])
VERSION=$PACKAGE_VERSION; AC_SUBST([VERSION])
m4_pattern_forbid([^M4_])
m4_pattern_allow([^M4_cv_])
AC_CONFIG_SRCDIR([src/m4.h])
AC_CONFIG_HEADERS([config.h:config-h.in])
AC_CANONICAL_BUILD
AC_CANONICAL_HOST
AC_PROG_CC
M4_EARLY
AC_CHECK_HEADERS_ONCE([limits.h siginfo.h sys/wait.h])
AC_CHECK_TYPES([siginfo_t], [], [],
[[#include <signal.h>
#if HAVE_SIGINFO_H
# include <siginfo.h>
#endif
]])
AC_CHECK_MEMBERS([struct sigaction.sa_sigaction], [], [],
[[#include <signal.h>
]])
AC_TYPE_SIGNAL
AC_TYPE_SIZE_T
AC_CHECK_FUNCS_ONCE([sigaction sigaltstack sigstack sigvec strerror])
M4_INIT
# Code from Jim Avera <[email protected]>.
# stackovf.c requires:
# 1. Either sigaction with SA_ONSTACK, or sigvec with SV_ONSTACK
# 2. Either sigaltstack or sigstack
# 3. getrlimit, including support for RLIMIT_STACK
AC_CACHE_CHECK([if stack overflow is detectable], [M4_cv_use_stackovf],
[M4_cv_use_stackovf=no
if test "$ac_cv_func_sigaction" = yes || test "$ac_cv_func_sigvec" = yes; then
if test "$ac_cv_func_sigaltstack" = yes || test "$ac_cv_func_sigstack" = yes; then
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#include <sys/time.h>
#include <sys/resource.h>
#include <signal.h>
]], [[struct rlimit r; getrlimit (RLIMIT_STACK, &r);
#if (!defined(HAVE_SIGACTION) || !defined(SA_ONSTACK)) \
&& (!defined(HAVE_SIGVEC) || !defined(SV_ONSTACK))
choke me /* SA_ONSTACK and/or SV_ONSTACK are not defined */
#endif
]])], [M4_cv_use_stackovf=yes])
fi
fi])
AM_CONDITIONAL([STACKOVF], [test "$M4_cv_use_stackovf" = yes])
if test "$M4_cv_use_stackovf" = yes; then
AC_DEFINE([USE_STACKOVF], [1],
[Define to 1 if using stack overflow detection])
AC_CHECK_TYPES([rlim_t], [],
[AC_DEFINE([rlim_t], [int],
[Define to int if rlim_t is not defined in sys/resource.h])],
[[#include <sys/resource.h>
]])
AC_CHECK_TYPES([stack_t], [],
[AC_DEFINE([stack_t], [struct sigaltstack],
[Define to struct sigaltstack if stack_t is not in signal.h])],
[[#include <signal.h>
]])
AC_CHECK_TYPES([sigcontext], [], [], [[#include <signal.h>
]])
fi
AC_CACHE_CHECK([if system() agrees with pclose()],
[M4_cv_func_system_consistent],
[AC_RUN_IFELSE([AC_LANG_PROGRAM([
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
], [int i1, i2;
FILE *f;
i1 = system ("exit 2");
if (i1 == -1)
return 1;
f = popen ("exit 2", "r");
if (!f)
return 1;
i2 = pclose (f);
return i1 != i2;])],
[M4_cv_func_system_consistent=yes], [M4_cv_func_system_consistent=no],
[AC_COMPILE_IFELSE([
/* EMX on OS/2 defines WEXITSTATUS to be (x>>8)&0xff, and uses that for
pclose(), but for system() it uses x&0xff instead. Otherwise, we assume
your system is sane and that pclose() and system() are consistent in their
values. If this heuristic is wrong for your platform, report it as a bug
to [email protected]. */
#ifdef __EMX__
choke me
#endif
], [M4_cv_func_system_consistent=yes], [M4_cv_func_system_consistent=no])])])
if test "$M4_cv_func_system_consistent" = no ; then
AC_DEFINE([FUNC_SYSTEM_BROKEN], [1],
[Define to 1 if the return value of system() disagrees with pclose().])
fi
dnl Don't let changeword get in our way, if bootstrapping with a version of
dnl m4 that already turned the feature on.
m4_ifdef([changeword], [m4_undefine([changeword])])dnl
AC_MSG_CHECKING([[if changeword is wanted]])
AC_ARG_ENABLE([changeword],
[AS_HELP_STRING([--enable-changeword],
[enable -W and changeword() builtin])],
[if test "$enableval" = yes; then
AC_MSG_RESULT([yes])
AC_DEFINE([ENABLE_CHANGEWORD], [1],
[Define to 1 if the changeword(REGEXP) functionality is wanted])
else
AC_MSG_RESULT([no])
fi], [AC_MSG_RESULT([no])])
M4_WITH_DMALLOC
AC_CONFIG_COMMANDS([stamp-h], [[test -z "$CONFIG_HEADERS" || date > stamp-h]])
AC_CONFIG_FILES([Makefile
doc/Makefile
lib/Makefile
src/Makefile
checks/Makefile
examples/Makefile
])
AC_OUTPUT