Avoid infinite aclocal loop.
[autoconf.git] / tests / base.at
blobd85a1b5dee104afa7d754e17f8a33c52dc22474c
1 #                                                       -*- Autotest -*-
3 AT_BANNER([Autoconf base layer.])
5 # Copyright (C) 2000, 2001, 2003, 2005, 2006, 2007 Free Software
6 # Foundation, Inc.
8 # This program is free software: you can redistribute it and/or modify
9 # it under the terms of the GNU General Public License as published by
10 # the Free Software Foundation; either version 2, or (at your option)
11 # any later version.
13 # This program is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 # GNU General Public License for more details.
18 # You should have received a copy of the GNU General Public License
19 # along with this program; if not, write to the Free Software
20 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21 # 02110-1301, USA.
24 ## ------------------------------- ##
25 ## AC_REQUIRE: topological sort..  ##
26 ## ------------------------------- ##
28 # Check that dependencies are always properly honored.
30 AT_SETUP([AC_REQUIRE: topological sort])
32 AT_DATA([configure.ac],
33 [[define([REQUIRE_AND_CHECK],
34 [AC_REQUIRE([$1])
35 test -z "$m4@&t@_translit([$1], [A-Z], [a-z])" && AS_EXIT(1)])
37 AC_DEFUN([TEST1],
38 [REQUIRE_AND_CHECK([TEST2a])
39 REQUIRE_AND_CHECK([TEST2b])
40 test1=set])
42 AC_DEFUN([TEST2a],
43 [test2a=set])
45 AC_DEFUN([TEST2b],
46 [REQUIRE_AND_CHECK([TEST3])
47 test2b=set])
49 AC_DEFUN([TEST3],
50 [REQUIRE_AND_CHECK([TEST2a])
51 test3=set])
53 AS@&t@_INIT
55 TEST1
56 test -z "$test1" &&
57   AC_MSG_ERROR([\$test1 is empty])
58 AS_EXIT(0)
59 ]])
61 AT_CHECK_AUTOCONF
62 AT_CHECK_CONFIGURE
64 AT_CLEANUP
67 ## --------------------------- ##
68 ## AC_REQUIRE: error message.  ##
69 ## --------------------------- ##
71 # Check that the message mentions AC_DEFUN, not m4_defun.
73 AT_SETUP([AC_REQUIRE: error message])
74 AT_DATA([configure.ac],
75 [[AC_REQUIRE([AC_PROG_CC])
76 ]])
78 AT_CHECK_AUTOCONF([], [1], [],
79 [[configure.ac:1: error: AC_REQUIRE(AC_PROG_CC): cannot be used outside of an AC_DEFUN'd macro
80 configure.ac:1: the top level
81 autom4te: m4 failed with exit status: 1
82 ]])
83 AT_CLEANUP
86 ## ----------------------------------------------- ##
87 ## AC_REQUIRE and AC_DEFUN_ONCE: Require, expand.  ##
88 ## ----------------------------------------------- ##
90 AT_SETUP([AC_REQUIRE & AC_DEFUN_ONCE: [Require, expand]])
92 AT_DATA([configure.ac],
93 [[AC_DEFUN([TEST],
94 [AC_REQUIRE([MULTI_TEST])
95 AC_REQUIRE([SINGLE_TEST])])
97 AC_DEFUN([MULTI_TEST],
98 [multi_test=".$multi_test"])
100 AC_DEFUN_ONCE([SINGLE_TEST],
101 [single_test=".$single_test"])
103 AS@&t@_INIT
105 TEST
106 TEST
107 MULTI_TEST
108 MULTI_TEST
109 SINGLE_TEST
110 SINGLE_TEST
112 case $multi_test:$single_test in
113   ...:. ) AS_EXIT(0);;
114   ...:* ) AC_MSG_ERROR([DEFUN_ONCE is broken]);;
115   *:.   ) AC_MSG_ERROR([DEFUN is broken (Wow, congrats!)]);;
116 esac
119 AT_CHECK_AUTOCONF([], 0, [],
120 [configure.ac:17: warning: SINGLE_TEST invoked multiple times
121 configure.ac:18: warning: SINGLE_TEST invoked multiple times
124 AT_CHECK_CONFIGURE
126 AT_CLEANUP
130 ## ----------------------------------------------- ##
131 ## AC_REQUIRE and AC_DEFUN_ONCE: Expand, require.  ##
132 ## ----------------------------------------------- ##
134 AT_SETUP([AC_REQUIRE & AC_DEFUN_ONCE: [Expand, require]])
136 AT_DATA([configure.ac],
137 [[AC_DEFUN([TEST],
138 [AC_REQUIRE([MULTI_TEST])
139 AC_REQUIRE([SINGLE_TEST])])
141 AC_DEFUN([MULTI_TEST],
142 [multi_test=".$multi_test"])
144 AC_DEFUN_ONCE([SINGLE_TEST],
145 [single_test=".$single_test"])
147 AS@&t@_INIT
149 MULTI_TEST
150 MULTI_TEST
151 SINGLE_TEST
152 SINGLE_TEST
153 TEST
154 TEST
156 case $multi_test:$single_test in
157   ..:. ) AS_EXIT(0);;
158   ..:* ) AC_MSG_ERROR([DEFUN_ONCE is broken]);;
159   *:.  ) AC_MSG_ERROR([DEFUN is broken (Wow, congrats!)]);;
160      * ) AC_MSG_ERROR([received `$multi_test:$single_test']);;
161 esac
164 AT_CHECK_AUTOCONF([], 0, [],
165 [configure.ac:16: warning: SINGLE_TEST invoked multiple times
167 AT_CHECK_CONFIGURE
169 AT_CLEANUP
173 ## ------------------------- ##
174 ## AC_REQUIRE & AC_PROVIDE.  ##
175 ## ------------------------- ##
177 AT_SETUP([AC_REQUIRE & AC_PROVIDE])
179 AT_DATA([configure.ac],
180 [[AC_DEFUN([TEST],
181 [AC_REQUIRE([INNER_TEST])])
183 AC_DEFUN([INNER_TEST],
184 [inner_test=".$inner_test"])
186 AS@&t@_INIT
188 AC_PROVIDE([INNER_TEST])
189 TEST
191 case $inner_test in
192   "" ) AS_EXIT(0);;
193   *  ) AC_MSG_ERROR([received `$inner_test']);;
194 esac
197 AT_CHECK_AUTOCONF
198 AT_CHECK_CONFIGURE
200 AT_CLEANUP
203 ## ---------------- ##
204 ## AC_CACHE_CHECK.  ##
205 ## ---------------- ##
207 # Make sure AC_CACHE_CHECK is silent with -q.
208 # Also make sure we warn about cache id's not named with `_cv_'.
210 AT_SETUP([AC_CACHE_CHECK])
212 AT_DATA([configure.ac],
213 [[AC_INIT
214 # m4_define([ac_nothing], [ac_cv_absolutely_nothing])
215 AC_CACHE_CHECK([for nothing],
216                [ac_nothing],
217                [ac_nothing=found])
220 AT_CHECK_AUTOCONF([], [], [], [stderr])
221 AT_CHECK([grep 'must contain _cv_ to be cached' stderr], [], [ignore])
223 # Do not warn about defines:
224 sed 's/^# //' configure.ac > t
225 mv -f t configure.ac
226 AT_CHECK_AUTOCONF
227 AT_CHECK_CONFIGURE([-q])
229 sed '/m4_define/d; s/ac_nothing/ac_cv_nothing/' configure.ac > t
230 mv -f t configure.ac
231 AT_CHECK_AUTOCONF
232 AT_CHECK_CONFIGURE([-q])
234 AT_CLEANUP
237 ## ---------------- ##
238 ## AC_COMPUTE_INT.  ##
239 ## ---------------- ##
241 # Make sure AC_COMPUTE_INT fails properly.
243 AT_SETUP([AC_COMPUTE_INT])
245 AT_DATA([configure.ac],
246 [[AC_INIT
247 AC_COMPUTE_INT([invalid_expression],
248                [**0**],
249                [],
250                [invalid_expression=failed])
251 test "$invalid_expression" = failed ||
252   AC_MSG_ERROR([**0** evaluated to $invalid_expression instead of failing])
255 AT_CHECK_AUTOCONF
256 AT_CHECK_CONFIGURE
258 AT_CLEANUP
261 ## ---------------- ##
262 ## AC_TRY_COMMAND.  ##
263 ## ---------------- ##
265 AT_SETUP([AC_TRY_COMMAND])
267 AT_DATA([configure.ac],
268 [[AC_INIT
270 if AC_TRY_COMMAND([(echo "The Cat in the Hat";
271                     echo "The Hat in the Cat" >&2) |
272                    grep \^The\ Cat\ in\ the\ Hat\$ >/dev/null]); then
273   :
274 else
275   AC_MSG_ERROR([Didn't see the Cat in the Hat!])
278 if AC_TRY_COMMAND([(echo "The Cat in the Hat";
279                     echo "The Hat in the Cat" >&2) |
280                    grep \^The\ Hat\ in\ the\ Cat\$ >/dev/null]); then
281   AC_MSG_ERROR([Saw the Hat in the Cat!])
285 AT_CHECK_AUTOCONF
286 AT_CHECK_CONFIGURE([-q])
288 AT_CLEANUP
291 ## ------------ ##
292 ## Input/Output ##
293 ## ------------ ##
295 AT_SETUP([Input/Output])
297 m4_pattern_allow([^AS_(MESSAGE|ORIGINAL_STDIN)_FD$])
298 AT_DATA([configure.ac],
299 [[AC_INIT
300 cat <&AS_ORIGINAL_STDIN_FD >&AS_MESSAGE_FD
302 AT_CHECK_AUTOCONF
303 AT_CHECK([echo Hello | ./configure | grep -v 'configure: loading site script '],, [Hello
305 AT_CHECK([echo Hello | ./configure --silent])
307 AT_CLEANUP
310 ## ------------------- ##
311 ## configure arguments ##
312 ## ------------------- ##
314 AT_SETUP([configure arguments])
316 AT_DATA([configure.ac],
317 [[AC_INIT
318 echo "$@"
321 AT_CHECK_AUTOCONF
322 AT_CHECK_CONFIGURE([FOO=bar --enable-baz --without-zork --silent], [0], [stdout], [ignore])
323 AT_CHECK([grep 'FOO=bar --enable-baz --without-zork --silent' stdout], [0], [ignore], [ignore])
325 AT_CLEANUP
328 ## --------------------- ##
329 ## configure directories ##
330 ## --------------------- ##
332 AT_SETUP([configure directories])
334 AT_DATA([foo.in],
335 [[prefix=@prefix@
336 exec_prefix=@exec_prefix@
337 libdir=@libdir@
340 AT_DATA([configure.ac],
341 [[AC_INIT
342 AC_CONFIG_FILES([foo])
343 AC_OUTPUT
346 AT_CHECK_AUTOCONF
347 dnl check that relative paths are rejected
348 AT_CHECK_CONFIGURE([--libdir=.], [1], [ignore], [stderr])
349 AT_CHECK([grep 'expected an absolute directory name for --libdir: \.' stderr],
350          [0], [ignore])
352 dnl check that extra slashes are stripped, and that defaults are not expanded
353 AT_CHECK_CONFIGURE([--prefix=/usr//])
354 AT_CHECK([cat foo], [0], [[prefix=/usr
355 exec_prefix=${prefix}
356 libdir=${exec_prefix}/lib
359 AT_CLEANUP