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)
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
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],
36 test -z "$m4@&t@_translit([$1], [A-Z], [a-z])" && AS_EXIT(1)])
39 [REQUIRE_AND_CHECK([TEST2a])
40 REQUIRE_AND_CHECK([TEST2b])
47 [REQUIRE_AND_CHECK([TEST3])
51 [REQUIRE_AND_CHECK([TEST2a])
58 AC_MSG_ERROR([\$test1 is empty])
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])
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
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],
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"])
115 case $multi_test:$single_test in
117 ...:* ) AC_MSG_ERROR([DEFUN_ONCE is broken]);;
118 *:. ) AC_MSG_ERROR([DEFUN is broken (Wow, congrats!)]);;
122 AT_CHECK_AUTOCONF([], 0, [])
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],
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"])
157 case $multi_test:$single_test in
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']);;
165 AT_CHECK_AUTOCONF([], 0, [])
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],
181 [AC_REQUIRE([INNER_TEST])])
183 AC_DEFUN([INNER_TEST],
184 [inner_test=".$inner_test"])
188 AC_PROVIDE([INNER_TEST])
193 * ) AC_MSG_ERROR([received `$inner_test']);;
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],
214 # m4_define([ac_nothing], [ac_cv_absolutely_nothing])
215 AC_CACHE_CHECK([for nothing],
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
227 AT_CHECK_CONFIGURE([-q])
229 sed '/m4_define/d; s/ac_nothing/ac_cv_nothing/' configure.ac > t
232 AT_CHECK_CONFIGURE([-q])
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],
247 AC_COMPUTE_INT([invalid_expression],
250 [invalid_expression=failed])
251 test "$invalid_expression" = failed ||
252 AC_MSG_ERROR([**0** evaluated to $invalid_expression instead of failing])
261 ## ---------------- ##
262 ## AC_TRY_COMMAND. ##
263 ## ---------------- ##
265 AT_SETUP([AC_TRY_COMMAND])
267 AT_DATA([configure.ac],
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
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!])
286 AT_CHECK_CONFIGURE([-q])
295 AT_SETUP([Input/Output])
297 AT_DATA([configure.ac],
299 cat <&AS@&t@_ORIGINAL_STDIN_FD >&AS@&t@_MESSAGE_FD
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])
309 ## ------------------- ##
310 ## configure arguments ##
311 ## ------------------- ##
313 AT_SETUP([configure arguments])
315 AT_DATA([configure.ac],
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])
331 ## --------------------- ##
332 ## configure directories ##
333 ## --------------------- ##
335 AT_SETUP([configure directories])
339 exec_prefix=@exec_prefix@
343 AT_DATA([configure.ac],
345 AC_CONFIG_FILES([foo])
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],
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