1#							-*- Autotest -*-
2
3AT_BANNER([Autoconf base layer.])
4
5# Copyright (C) 2000, 2001, 2003, 2005, 2006 Free Software Foundation, Inc.
6#
7# This program is free software; you can redistribute it and/or modify
8# it under the terms of the GNU General Public License as published by
9# the Free Software Foundation; either version 2, or (at your option)
10# any later version.
11#
12# This program is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15# GNU General Public License for more details.
16#
17# You should have received a copy of the GNU General Public License
18# along with this program; if not, write to the Free Software
19# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
20# 02110-1301, USA.
21
22
23## ------------------------------- ##
24## AC_REQUIRE: topological sort..  ##
25## ------------------------------- ##
26
27# Check that dependencies are always properly honored.
28
29AT_SETUP([AC_REQUIRE: topological sort])
30
31AT_DATA([configure.ac],
32[[define([REQUIRE_AND_CHECK],
33[AC_REQUIRE([$1])
34test -z "$m4@&t@_translit([$1], [A-Z], [a-z])" && AS_EXIT(1)])
35
36AC_DEFUN([TEST1],
37[REQUIRE_AND_CHECK([TEST2a])
38REQUIRE_AND_CHECK([TEST2b])
39test1=set])
40
41AC_DEFUN([TEST2a],
42[test2a=set])
43
44AC_DEFUN([TEST2b],
45[REQUIRE_AND_CHECK([TEST3])
46test2b=set])
47
48AC_DEFUN([TEST3],
49[REQUIRE_AND_CHECK([TEST2a])
50test3=set])
51
52AS@&t@_INIT
53
54TEST1
55test -z "$test1" &&
56  AC_MSG_ERROR([\$test1 is empty])
57AS_EXIT(0)
58]])
59
60AT_CHECK_AUTOCONF
61AT_CHECK_CONFIGURE
62
63AT_CLEANUP
64
65
66## --------------------------- ##
67## AC_REQUIRE: error message.  ##
68## --------------------------- ##
69
70# Check that the message mentions AC_DEFUN, not m4_defun.
71
72AT_SETUP([AC_REQUIRE: error message])
73AT_DATA([configure.ac],
74[[AC_REQUIRE([AC_PROG_CC])
75]])
76
77AT_CHECK_AUTOCONF([], [1], [],
78[[configure.ac:1: error: AC_REQUIRE(AC_PROG_CC): cannot be used outside of an AC_DEFUN'd macro
79configure.ac:1: the top level
80autom4te: m4 failed with exit status: 1
81]])
82AT_CLEANUP
83
84
85## ----------------------------------------------- ##
86## AC_REQUIRE and AC_DEFUN_ONCE: Require, expand.  ##
87## ----------------------------------------------- ##
88
89AT_SETUP([AC_REQUIRE & AC_DEFUN_ONCE: Require, expand])
90
91AT_DATA([configure.ac],
92[[AC_DEFUN([TEST],
93[AC_REQUIRE([MULTI_TEST])
94AC_REQUIRE([SINGLE_TEST])])
95
96AC_DEFUN([MULTI_TEST],
97[multi_test=".$multi_test"])
98
99AC_DEFUN_ONCE([SINGLE_TEST],
100[single_test=".$single_test"])
101
102AS@&t@_INIT
103
104TEST
105TEST
106MULTI_TEST
107MULTI_TEST
108SINGLE_TEST
109SINGLE_TEST
110
111case $multi_test:$single_test in
112  ...:. ) AS_EXIT(0);;
113  ...:* ) AC_MSG_ERROR([DEFUN_ONCE is broken]);;
114  *:.   ) AC_MSG_ERROR([DEFUN is broken (Wow, congrats!)]);;
115esac
116]])
117
118AT_CHECK_AUTOCONF([], 0, [],
119[configure.ac:17: warning: SINGLE_TEST invoked multiple times
120configure.ac:18: warning: SINGLE_TEST invoked multiple times
121])
122
123AT_CHECK_CONFIGURE
124
125AT_CLEANUP
126
127
128
129## ----------------------------------------------- ##
130## AC_REQUIRE and AC_DEFUN_ONCE: Expand, require.  ##
131## ----------------------------------------------- ##
132
133AT_SETUP([AC_REQUIRE & AC_DEFUN_ONCE: Expand, require])
134
135AT_DATA([configure.ac],
136[[AC_DEFUN([TEST],
137[AC_REQUIRE([MULTI_TEST])
138AC_REQUIRE([SINGLE_TEST])])
139
140AC_DEFUN([MULTI_TEST],
141[multi_test=".$multi_test"])
142
143AC_DEFUN_ONCE([SINGLE_TEST],
144[single_test=".$single_test"])
145
146AS@&t@_INIT
147
148MULTI_TEST
149MULTI_TEST
150SINGLE_TEST
151SINGLE_TEST
152TEST
153TEST
154
155case $multi_test:$single_test in
156  ..:. ) AS_EXIT(0);;
157  ..:* ) AC_MSG_ERROR([DEFUN_ONCE is broken]);;
158  *:.  ) AC_MSG_ERROR([DEFUN is broken (Wow, congrats!)]);;
159     * ) AC_MSG_ERROR([received `$multi_test:$single_test']);;
160esac
161]])
162
163AT_CHECK_AUTOCONF([], 0, [],
164[configure.ac:16: warning: SINGLE_TEST invoked multiple times
165])
166AT_CHECK_CONFIGURE
167
168AT_CLEANUP
169
170
171
172## ------------------------- ##
173## AC_REQUIRE & AC_PROVIDE.  ##
174## ------------------------- ##
175
176AT_SETUP([AC_REQUIRE & AC_PROVIDE])
177
178AT_DATA([configure.ac],
179[[AC_DEFUN([TEST],
180[AC_REQUIRE([INNER_TEST])])
181
182AC_DEFUN([INNER_TEST],
183[inner_test=".$inner_test"])
184
185AS@&t@_INIT
186
187AC_PROVIDE([INNER_TEST])
188TEST
189
190case $inner_test in
191  "" ) AS_EXIT(0);;
192  *  ) AC_MSG_ERROR([received `$inner_test']);;
193esac
194]])
195
196AT_CHECK_AUTOCONF
197AT_CHECK_CONFIGURE
198
199AT_CLEANUP
200
201
202## ---------------- ##
203## AC_CACHE_CHECK.  ##
204## ---------------- ##
205
206# Make sure AC_CACHE_CHECK is silent with -q.
207
208AT_SETUP([AC_CACHE_CHECK])
209
210AT_DATA([configure.ac],
211[[AC_INIT
212AC_CACHE_CHECK([for nothing],
213	       [ac_nothing],
214	       [ac_nothing=found])
215]])
216
217AT_CHECK_AUTOCONF
218AT_CHECK_CONFIGURE([-q])
219
220AT_CLEANUP
221
222
223## ---------------- ##
224## AC_COMPUTE_INT.  ##
225## ---------------- ##
226
227# Make sure AC_COMPUTE_INT fails properly.
228
229AT_SETUP([AC_COMPUTE_INT])
230
231AT_DATA([configure.ac],
232[[AC_INIT
233AC_COMPUTE_INT([invalid_expression],
234	       [**0**],
235	       [],
236	       [invalid_expression=failed])
237test "$invalid_expression" = failed ||
238  AC_MSG_ERROR([**0** evaluated to $invalid_expression instead of failing])
239]])
240
241AT_CHECK_AUTOCONF
242AT_CHECK_CONFIGURE
243
244AT_CLEANUP
245
246
247## ---------------- ##
248## AC_TRY_COMMAND.  ##
249## ---------------- ##
250
251AT_SETUP([AC_TRY_COMMAND])
252
253AT_DATA([configure.ac],
254[[AC_INIT
255
256if AC_TRY_COMMAND([(echo "The Cat in the Hat";
257		    echo "The Hat in the Cat" >&2) |
258		   grep \^The\ Cat\ in\ the\ Hat\$ >/dev/null]); then
259  :
260else
261  AC_MSG_ERROR([Didn't see the Cat in the Hat!])
262fi
263
264if AC_TRY_COMMAND([(echo "The Cat in the Hat";
265		    echo "The Hat in the Cat" >&2) |
266		   grep \^The\ Hat\ in\ the\ Cat\$ >/dev/null]); then
267  AC_MSG_ERROR([Saw the Hat in the Cat!])
268fi
269]])
270
271AT_CHECK_AUTOCONF
272AT_CHECK_CONFIGURE([-q])
273
274AT_CLEANUP
275
276
277## ------------ ##
278## Input/Output ##
279## ------------ ##
280
281AT_SETUP([Input/Output])
282
283m4_pattern_allow([^AS_(MESSAGE|ORIGINAL_STDIN)_FD$])
284AT_DATA([configure.ac],
285[[AC_INIT
286cat <&AS_ORIGINAL_STDIN_FD >&AS_MESSAGE_FD
287]])
288AT_CHECK_AUTOCONF
289AT_CHECK([echo Hello | top_srcdir=$abs_top_srcdir ./configure | grep -v 'configure: loading site script '],, [Hello
290])
291AT_CHECK([echo Hello | top_srcdir=$abs_top_srcdir ./configure --silent])
292
293AT_CLEANUP
294