Mention latest rules about make and set -e.
[autoconf.git] / tests / base.at
blobb5ee30fbcd288c7dcff5415084094c9ac6b695e4
1 #                                                       -*- Autotest -*-
3 AT_BANNER([Autoconf base layer.])
5 # Copyright (C) 2000, 2001, 2003, 2005, 2006, 2007, 2008, 2009 Free
6 # Software 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])
31 AT_KEYWORDS([m4@&t@_require])
33 AT_DATA([configure.ac],
34 [[define([REQUIRE_AND_CHECK],
35 [AC_REQUIRE([$1])
36 test -z "$m4@&t@_translit([$1], [A-Z], [a-z])" && AS_EXIT(1)])
38 AC_DEFUN([TEST1],
39 [REQUIRE_AND_CHECK([TEST2a])
40 REQUIRE_AND_CHECK([TEST2b])
41 test1=set])
43 AC_DEFUN([TEST2a],
44 [test2a=set])
46 AC_DEFUN([TEST2b],
47 [REQUIRE_AND_CHECK([TEST3])
48 test2b=set])
50 AC_DEFUN([TEST3],
51 [REQUIRE_AND_CHECK([TEST2a])
52 test3=set])
54 AS@&t@_INIT
56 TEST1
57 test -z "$test1" &&
58   AC_MSG_ERROR([\$test1 is empty])
59 AS_EXIT(0)
60 ]])
62 AT_CHECK_AUTOCONF
63 AT_CHECK_CONFIGURE
65 AT_CLEANUP
68 ## --------------------------- ##
69 ## AC_REQUIRE: error message.  ##
70 ## --------------------------- ##
72 # Check that the message mentions AC_DEFUN, not m4_defun.
74 AT_SETUP([AC_REQUIRE: error message])
75 AT_KEYWORDS([m4@&t@_require])
76 AT_DATA([configure.ac],
77 [[AC_REQUIRE([AC_PROG_CC])
78 ]])
80 AT_CHECK_AUTOCONF([], [1], [],
81 [[configure.ac:1: error: AC_REQUIRE(AC_PROG_CC): cannot be used outside of an AC_DEFUN'd macro
82 configure.ac:1: the top level
83 autom4te: m4 failed with exit status: 1
84 ]])
85 AT_CLEANUP
88 ## ----------------------------------------------- ##
89 ## AC_REQUIRE and AC_DEFUN_ONCE: Require, expand.  ##
90 ## ----------------------------------------------- ##
92 AT_SETUP([AC_REQUIRE & AC_DEFUN_ONCE: [Require, expand]])
93 AT_KEYWORDS([m4@&t@_require m4@&t@_require_once])
95 AT_DATA([configure.ac],
96 [[AC_DEFUN([TEST],
97 [AC_REQUIRE([MULTI_TEST])
98 AC_REQUIRE([SINGLE_TEST])])
100 AC_DEFUN([MULTI_TEST],
101 [multi_test=".$multi_test"])
103 AC_DEFUN_ONCE([SINGLE_TEST],
104 [single_test=".$single_test"])
106 AS@&t@_INIT
108 TEST
109 TEST
110 MULTI_TEST
111 MULTI_TEST
112 SINGLE_TEST
113 SINGLE_TEST
115 case $multi_test:$single_test in
116   ...:. ) AS_EXIT(0);;
117   ...:* ) AC_MSG_ERROR([DEFUN_ONCE is broken]);;
118   *:.   ) AC_MSG_ERROR([DEFUN is broken (Wow, congrats!)]);;
119 esac
122 AT_CHECK_AUTOCONF([], 0, [])
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]])
135 AT_KEYWORDS([m4@&t@_require m4@&t@_require_once])
137 AT_DATA([configure.ac],
138 [[AC_DEFUN([TEST],
139 [AC_REQUIRE([MULTI_TEST])
140 AC_REQUIRE([SINGLE_TEST])])
142 AC_DEFUN([MULTI_TEST],
143 [multi_test=".$multi_test"])
145 AC_DEFUN_ONCE([SINGLE_TEST],
146 [single_test=".$single_test"])
148 AS@&t@_INIT
150 MULTI_TEST
151 MULTI_TEST
152 SINGLE_TEST
153 SINGLE_TEST
154 TEST
155 TEST
157 case $multi_test:$single_test in
158   ..:. ) AS_EXIT(0);;
159   ..:* ) AC_MSG_ERROR([DEFUN_ONCE is broken]);;
160   *:.  ) AC_MSG_ERROR([DEFUN is broken (Wow, congrats!)]);;
161      * ) AC_MSG_ERROR([received `$multi_test:$single_test']);;
162 esac
165 AT_CHECK_AUTOCONF([], 0, [])
166 AT_CHECK_CONFIGURE
168 AT_CLEANUP
172 ## ------------------------- ##
173 ## AC_REQUIRE & AC_PROVIDE.  ##
174 ## ------------------------- ##
176 AT_SETUP([AC_REQUIRE & AC_PROVIDE])
177 AT_KEYWORDS([m4@&t@_require])
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 AT_DATA([configure.ac],
298 [[AC_INIT
299 cat <&AS@&t@_ORIGINAL_STDIN_FD >&AS@&t@_MESSAGE_FD
301 AT_CHECK_AUTOCONF
302 AT_CHECK([echo Hello | CONFIG_SITE=/dev/null ./configure | grep -v 'configure: loading site script '],, [Hello
304 AT_CHECK([echo Hello | CONFIG_SITE=/dev/null ./configure --silent])
306 AT_CLEANUP
309 ## ------------------- ##
310 ## configure arguments ##
311 ## ------------------- ##
313 AT_SETUP([configure arguments])
315 AT_DATA([configure.ac],
316 [[AC_INIT
317 echo "$@"
320 AT_CHECK_AUTOCONF
321 AT_CHECK_CONFIGURE([FOO=bar --enable-baz --without-zork --silent], [0], [stdout], [ignore])
322 AT_CHECK([grep 'FOO=bar --enable-baz --without-zork --silent' stdout], [0], [ignore], [ignore])
324 dnl check that syntax error is detected
325 AT_CHECK_CONFIGURE([=], [1], [], [ignore], [ignore])
326 AT_CHECK_CONFIGURE([1=2], [1], [], [ignore], [ignore])
328 AT_CLEANUP
331 ## --------------------- ##
332 ## configure directories ##
333 ## --------------------- ##
335 AT_SETUP([configure directories])
337 AT_DATA([foo.in],
338 [[prefix=@prefix@
339 exec_prefix=@exec_prefix@
340 libdir=@libdir@
343 AT_DATA([configure.ac],
344 [[AC_INIT
345 AC_CONFIG_FILES([foo])
346 AC_OUTPUT
349 AT_CHECK_AUTOCONF
350 dnl check that relative paths are rejected
351 AT_CHECK_CONFIGURE([--libdir=.], [1], [ignore], [stderr])
352 AT_CHECK([grep 'expected an absolute directory name for --libdir: \.' stderr],
353          [0], [ignore])
355 dnl check that extra slashes are stripped, and that defaults are not expanded
356 AT_CHECK_CONFIGURE([--prefix=/usr//])
357 AT_CHECK([cat foo], [0], [[prefix=/usr
358 exec_prefix=${prefix}
359 libdir=${exec_prefix}/lib
362 AT_CLEANUP