Tweak m4_wrap to force FIFO or LIFO semantics.
[autoconf.git] / tests / base.at
blobf86c6b79047e8d741d70d5d536c04ae10aeee2df
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 3 of the License, or
11 # (at your option) 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, see <http://www.gnu.org/licenses/>.
22 ## ------------------------------- ##
23 ## AC_REQUIRE: topological sort..  ##
24 ## ------------------------------- ##
26 # Check that dependencies are always properly honored.
28 AT_SETUP([AC_REQUIRE: topological sort])
30 AT_DATA([configure.ac],
31 [[define([REQUIRE_AND_CHECK],
32 [AC_REQUIRE([$1])
33 test -z "$m4@&t@_translit([$1], [A-Z], [a-z])" && AS_EXIT(1)])
35 AC_DEFUN([TEST1],
36 [REQUIRE_AND_CHECK([TEST2a])
37 REQUIRE_AND_CHECK([TEST2b])
38 test1=set])
40 AC_DEFUN([TEST2a],
41 [test2a=set])
43 AC_DEFUN([TEST2b],
44 [REQUIRE_AND_CHECK([TEST3])
45 test2b=set])
47 AC_DEFUN([TEST3],
48 [REQUIRE_AND_CHECK([TEST2a])
49 test3=set])
51 AS@&t@_INIT
53 TEST1
54 test -z "$test1" &&
55   AC_MSG_ERROR([\$test1 is empty])
56 AS_EXIT(0)
57 ]])
59 AT_CHECK_AUTOCONF
60 AT_CHECK_CONFIGURE
62 AT_CLEANUP
65 ## --------------------------- ##
66 ## AC_REQUIRE: error message.  ##
67 ## --------------------------- ##
69 # Check that the message mentions AC_DEFUN, not m4_defun.
71 AT_SETUP([AC_REQUIRE: error message])
72 AT_DATA([configure.ac],
73 [[AC_REQUIRE([AC_PROG_CC])
74 ]])
76 AT_CHECK_AUTOCONF([], [1], [],
77 [[configure.ac:1: error: AC_REQUIRE(AC_PROG_CC): cannot be used outside of an AC_DEFUN'd macro
78 configure.ac:1: the top level
79 autom4te: m4 failed with exit status: 1
80 ]])
81 AT_CLEANUP
84 ## ----------------------------------------------- ##
85 ## AC_REQUIRE and AC_DEFUN_ONCE: Require, expand.  ##
86 ## ----------------------------------------------- ##
88 AT_SETUP([AC_REQUIRE & AC_DEFUN_ONCE: [Require, expand]])
90 AT_DATA([configure.ac],
91 [[AC_DEFUN([TEST],
92 [AC_REQUIRE([MULTI_TEST])
93 AC_REQUIRE([SINGLE_TEST])])
95 AC_DEFUN([MULTI_TEST],
96 [multi_test=".$multi_test"])
98 AC_DEFUN_ONCE([SINGLE_TEST],
99 [single_test=".$single_test"])
101 AS@&t@_INIT
103 TEST
104 TEST
105 MULTI_TEST
106 MULTI_TEST
107 SINGLE_TEST
108 SINGLE_TEST
110 case $multi_test:$single_test in
111   ...:. ) AS_EXIT(0);;
112   ...:* ) AC_MSG_ERROR([DEFUN_ONCE is broken]);;
113   *:.   ) AC_MSG_ERROR([DEFUN is broken (Wow, congrats!)]);;
114 esac
117 AT_CHECK_AUTOCONF([], 0, [],
118 [configure.ac:17: warning: SINGLE_TEST invoked multiple times
119 configure.ac:18: warning: SINGLE_TEST invoked multiple times
122 AT_CHECK_CONFIGURE
124 AT_CLEANUP
128 ## ----------------------------------------------- ##
129 ## AC_REQUIRE and AC_DEFUN_ONCE: Expand, require.  ##
130 ## ----------------------------------------------- ##
132 AT_SETUP([AC_REQUIRE & AC_DEFUN_ONCE: [Expand, require]])
134 AT_DATA([configure.ac],
135 [[AC_DEFUN([TEST],
136 [AC_REQUIRE([MULTI_TEST])
137 AC_REQUIRE([SINGLE_TEST])])
139 AC_DEFUN([MULTI_TEST],
140 [multi_test=".$multi_test"])
142 AC_DEFUN_ONCE([SINGLE_TEST],
143 [single_test=".$single_test"])
145 AS@&t@_INIT
147 MULTI_TEST
148 MULTI_TEST
149 SINGLE_TEST
150 SINGLE_TEST
151 TEST
152 TEST
154 case $multi_test:$single_test in
155   ..:. ) AS_EXIT(0);;
156   ..:* ) AC_MSG_ERROR([DEFUN_ONCE is broken]);;
157   *:.  ) AC_MSG_ERROR([DEFUN is broken (Wow, congrats!)]);;
158      * ) AC_MSG_ERROR([received `$multi_test:$single_test']);;
159 esac
162 AT_CHECK_AUTOCONF([], 0, [],
163 [configure.ac:16: warning: SINGLE_TEST invoked multiple times
165 AT_CHECK_CONFIGURE
167 AT_CLEANUP
171 ## ------------------------- ##
172 ## AC_REQUIRE & AC_PROVIDE.  ##
173 ## ------------------------- ##
175 AT_SETUP([AC_REQUIRE & AC_PROVIDE])
177 AT_DATA([configure.ac],
178 [[AC_DEFUN([TEST],
179 [AC_REQUIRE([INNER_TEST])])
181 AC_DEFUN([INNER_TEST],
182 [inner_test=".$inner_test"])
184 AS@&t@_INIT
186 AC_PROVIDE([INNER_TEST])
187 TEST
189 case $inner_test in
190   "" ) AS_EXIT(0);;
191   *  ) AC_MSG_ERROR([received `$inner_test']);;
192 esac
195 AT_CHECK_AUTOCONF
196 AT_CHECK_CONFIGURE
198 AT_CLEANUP
201 ## ---------------- ##
202 ## AC_CACHE_CHECK.  ##
203 ## ---------------- ##
205 # Make sure AC_CACHE_CHECK is silent with -q.
206 # Also make sure we warn about cache id's not named with `_cv_'.
208 AT_SETUP([AC_CACHE_CHECK])
210 AT_DATA([configure.ac],
211 [[AC_INIT
212 # m4_define([ac_nothing], [ac_cv_absolutely_nothing])
213 AC_CACHE_CHECK([for nothing],
214                [ac_nothing],
215                [ac_nothing=found])
218 AT_CHECK_AUTOCONF([], [], [], [stderr])
219 AT_CHECK([grep 'must contain _cv_ to be cached' stderr], [], [ignore])
221 # Do not warn about defines:
222 sed 's/^# //' configure.ac > t
223 mv -f t configure.ac
224 AT_CHECK_AUTOCONF
225 AT_CHECK_CONFIGURE([-q])
227 sed '/m4_define/d; s/ac_nothing/ac_cv_nothing/' configure.ac > t
228 mv -f t configure.ac
229 AT_CHECK_AUTOCONF
230 AT_CHECK_CONFIGURE([-q])
232 AT_CLEANUP
235 ## ---------------- ##
236 ## AC_COMPUTE_INT.  ##
237 ## ---------------- ##
239 # Make sure AC_COMPUTE_INT fails properly.
241 AT_SETUP([AC_COMPUTE_INT])
243 AT_DATA([configure.ac],
244 [[AC_INIT
245 AC_COMPUTE_INT([invalid_expression],
246                [**0**],
247                [],
248                [invalid_expression=failed])
249 test "$invalid_expression" = failed ||
250   AC_MSG_ERROR([**0** evaluated to $invalid_expression instead of failing])
253 AT_CHECK_AUTOCONF
254 AT_CHECK_CONFIGURE
256 AT_CLEANUP
259 ## ---------------- ##
260 ## AC_TRY_COMMAND.  ##
261 ## ---------------- ##
263 AT_SETUP([AC_TRY_COMMAND])
265 AT_DATA([configure.ac],
266 [[AC_INIT
268 if AC_TRY_COMMAND([(echo "The Cat in the Hat";
269                     echo "The Hat in the Cat" >&2) |
270                    grep \^The\ Cat\ in\ the\ Hat\$ >/dev/null]); then
271   :
272 else
273   AC_MSG_ERROR([Didn't see the Cat in the Hat!])
276 if AC_TRY_COMMAND([(echo "The Cat in the Hat";
277                     echo "The Hat in the Cat" >&2) |
278                    grep \^The\ Hat\ in\ the\ Cat\$ >/dev/null]); then
279   AC_MSG_ERROR([Saw the Hat in the Cat!])
283 AT_CHECK_AUTOCONF
284 AT_CHECK_CONFIGURE([-q])
286 AT_CLEANUP
289 ## ------------ ##
290 ## Input/Output ##
291 ## ------------ ##
293 AT_SETUP([Input/Output])
295 m4_pattern_allow([^AS_(MESSAGE|ORIGINAL_STDIN)_FD$])
296 AT_DATA([configure.ac],
297 [[AC_INIT
298 cat <&AS_ORIGINAL_STDIN_FD >&AS_MESSAGE_FD
300 AT_CHECK_AUTOCONF
301 AT_CHECK([echo Hello | ./configure | grep -v 'configure: loading site script '],, [Hello
303 AT_CHECK([echo Hello | ./configure --silent])
305 AT_CLEANUP
308 ## ------------------- ##
309 ## configure arguments ##
310 ## ------------------- ##
312 AT_SETUP([configure arguments])
314 AT_DATA([configure.ac],
315 [[AC_INIT
316 echo "$@"
319 AT_CHECK_AUTOCONF
320 AT_CHECK_CONFIGURE([FOO=bar --enable-baz --without-zork --silent], [0], [stdout], [ignore])
321 AT_CHECK([grep 'FOO=bar --enable-baz --without-zork --silent' stdout], [0], [ignore], [ignore])
323 AT_CLEANUP
326 ## --------------------- ##
327 ## configure directories ##
328 ## --------------------- ##
330 AT_SETUP([configure directories])
332 AT_DATA([foo.in],
333 [[prefix=@prefix@
334 exec_prefix=@exec_prefix@
335 libdir=@libdir@
338 AT_DATA([configure.ac],
339 [[AC_INIT
340 AC_CONFIG_FILES([foo])
341 AC_OUTPUT
344 AT_CHECK_AUTOCONF
345 dnl check that relative paths are rejected
346 AT_CHECK_CONFIGURE([--libdir=.], [1], [ignore], [stderr])
347 AT_CHECK([grep 'expected an absolute directory name for --libdir: \.' stderr],
348          [0], [ignore])
350 dnl check that extra slashes are stripped, and that defaults are not expanded
351 AT_CHECK_CONFIGURE([--prefix=/usr//])
352 AT_CHECK([cat foo], [0], [[prefix=/usr
353 exec_prefix=${prefix}
354 libdir=${exec_prefix}/lib
357 AT_CLEANUP