* doc/autoconf.texi (C Compiler): Clarify AC_C_TYPEOF.
[autoconf.git] / tests / base.at
blobfe5eea0a2985c9e2a295d2fa3e835f29833cfae2
1 #                                                       -*- Autotest -*-
3 AT_BANNER([Autoconf base layer.])
5 # Copyright (C) 2000, 2001, 2003, 2005 Free Software Foundation, Inc.
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.
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.
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.
23 ## ------------------------------- ##
24 ## AC_REQUIRE: topological sort..  ##
25 ## ------------------------------- ##
27 # Check that dependencies are always properly honored.
29 AT_SETUP([AC_REQUIRE: topological sort])
31 AT_DATA([configure.ac],
32 [[define([REQUIRE_AND_CHECK],
33 [AC_REQUIRE([$1])
34 test -z "$m4@&t@_translit([$1], [A-Z], [a-z])" && AS_EXIT(1)])
36 AC_DEFUN([TEST1],
37 [REQUIRE_AND_CHECK([TEST2a])
38 REQUIRE_AND_CHECK([TEST2b])
39 test1=set])
41 AC_DEFUN([TEST2a],
42 [test2a=set])
44 AC_DEFUN([TEST2b],
45 [REQUIRE_AND_CHECK([TEST3])
46 test2b=set])
48 AC_DEFUN([TEST3],
49 [REQUIRE_AND_CHECK([TEST2a])
50 test3=set])
52 AS@&t@_INIT
54 TEST1
55 test -z "$test1" &&
56   AC_MSG_ERROR([\$test1 is empty])
57 AS_EXIT(0)
58 ]])
60 AT_CHECK_AUTOCONF
61 AT_CHECK_CONFIGURE
63 AT_CLEANUP
67 ## ----------------------------------------------- ##
68 ## AC_REQUIRE and AC_DEFUN_ONCE: Require, expand.  ##
69 ## ----------------------------------------------- ##
71 AT_SETUP([AC_REQUIRE & AC_DEFUN_ONCE: Require, expand])
73 AT_DATA([configure.ac],
74 [[AC_DEFUN([TEST],
75 [AC_REQUIRE([MULTI_TEST])
76 AC_REQUIRE([SINGLE_TEST])])
78 AC_DEFUN([MULTI_TEST],
79 [multi_test=".$multi_test"])
81 AC_DEFUN_ONCE([SINGLE_TEST],
82 [single_test=".$single_test"])
84 AS@&t@_INIT
86 TEST
87 TEST
88 MULTI_TEST
89 MULTI_TEST
90 SINGLE_TEST
91 SINGLE_TEST
93 case $multi_test:$single_test in
94   ...:. ) AS_EXIT(0);;
95   ...:* ) AC_MSG_ERROR([DEFUN_ONCE is broken]);;
96   *:.   ) AC_MSG_ERROR([DEFUN is broken (Wow, congrats!)]);;
97 esac
98 ]])
100 AT_CHECK_AUTOCONF([], 0, [],
101 [configure.ac:17: warning: SINGLE_TEST invoked multiple times
102 configure.ac:18: warning: SINGLE_TEST invoked multiple times
105 AT_CHECK_CONFIGURE
107 AT_CLEANUP
111 ## ----------------------------------------------- ##
112 ## AC_REQUIRE and AC_DEFUN_ONCE: Expand, require.  ##
113 ## ----------------------------------------------- ##
115 AT_SETUP([AC_REQUIRE & AC_DEFUN_ONCE: Expand, require])
117 AT_DATA([configure.ac],
118 [[AC_DEFUN([TEST],
119 [AC_REQUIRE([MULTI_TEST])
120 AC_REQUIRE([SINGLE_TEST])])
122 AC_DEFUN([MULTI_TEST],
123 [multi_test=".$multi_test"])
125 AC_DEFUN_ONCE([SINGLE_TEST],
126 [single_test=".$single_test"])
128 AS@&t@_INIT
130 MULTI_TEST
131 MULTI_TEST
132 SINGLE_TEST
133 SINGLE_TEST
134 TEST
135 TEST
137 case $multi_test:$single_test in
138   ..:. ) AS_EXIT(0);;
139   ..:* ) AC_MSG_ERROR([DEFUN_ONCE is broken]);;
140   *:.  ) AC_MSG_ERROR([DEFUN is broken (Wow, congrats!)]);;
141      * ) AC_MSG_ERROR([received `$multi_test:$single_test']);;
142 esac
145 AT_CHECK_AUTOCONF([], 0, [],
146 [configure.ac:16: warning: SINGLE_TEST invoked multiple times
148 AT_CHECK_CONFIGURE
150 AT_CLEANUP
154 ## ------------------------- ##
155 ## AC_REQUIRE & AC_PROVIDE.  ##
156 ## ------------------------- ##
158 AT_SETUP([AC_REQUIRE & AC_PROVIDE])
160 AT_DATA([configure.ac],
161 [[AC_DEFUN([TEST],
162 [AC_REQUIRE([INNER_TEST])])
164 AC_DEFUN([INNER_TEST],
165 [inner_test=".$inner_test"])
167 AS@&t@_INIT
169 AC_PROVIDE([INNER_TEST])
170 TEST
172 case $inner_test in
173   "" ) AS_EXIT(0);;
174   *  ) AC_MSG_ERROR([received `$inner_test']);;
175 esac
178 AT_CHECK_AUTOCONF
179 AT_CHECK_CONFIGURE
181 AT_CLEANUP
184 ## ---------------- ##
185 ## AC_CACHE_CHECK.  ##
186 ## ---------------- ##
188 # Make sure AC_CACHE_CHECK is silent with -q.
190 AT_SETUP([AC_CACHE_CHECK])
192 AT_DATA([configure.ac],
193 [[AC_INIT
194 AC_CACHE_CHECK([for nothing],
195                [ac_nothing],
196                [ac_nothing=found])
199 AT_CHECK_AUTOCONF
200 AT_CHECK_CONFIGURE([-q])
202 AT_CLEANUP
205 ## ---------------- ##
206 ## AC_TRY_COMMAND.  ##
207 ## ---------------- ##
209 AT_SETUP([AC_TRY_COMMAND])
211 AT_DATA([configure.ac],
212 [[AC_INIT
214 if AC_TRY_COMMAND([(echo "The Cat in the Hat";
215                     echo "The Hat in the Cat" >&2)
216                   | grep \^The\ Cat\ in\ the\ Hat\$ >/dev/null]); then
217   :
218 else
219   AC_MSG_ERROR([Didn't see the Cat in the Hat!])
222 if AC_TRY_COMMAND([(echo "The Cat in the Hat";
223                     echo "The Hat in the Cat" >&2)
224                   | grep \^The\ Hat\ in\ the\ Cat\$ >/dev/null]); then
225   AC_MSG_ERROR([Saw the Hat in the Cat!])
229 AT_CHECK_AUTOCONF
230 AT_CHECK_CONFIGURE([-q])
232 AT_CLEANUP
235 ## ------------ ##
236 ## Input/Output ##
237 ## ------------ ##
239 AT_SETUP([Input/Output])
241 m4_pattern_allow([^AS_(MESSAGE|ORIGINAL_STDIN)_FD$])
242 AT_DATA([configure.ac],
243 [[AC_INIT
244 cat <&AS_ORIGINAL_STDIN_FD >&AS_MESSAGE_FD
246 AT_CHECK_AUTOCONF
247 AT_CHECK([echo Hello | top_srcdir=$abs_top_srcdir ./configure | grep -v 'configure: loading site script '],, [Hello
249 AT_CHECK([echo Hello | top_srcdir=$abs_top_srcdir ./configure --silent])
251 AT_CLEANUP