1# -*- Autotest -*- 2 3AT_BANNER([Autoconf base layer.]) 4 5# Copyright (C) 2000, 2001, 2003, 2005, 2006 Free Software Foundation, Inc. 6# 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. 11# 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. 16# 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. 21 22 23## ------------------------------- ## 24## AC_REQUIRE: topological sort.. ## 25## ------------------------------- ## 26 27# Check that dependencies are always properly honored. 28 29AT_SETUP([AC_REQUIRE: topological sort]) 30 31AT_DATA([configure.ac], 32[[define([REQUIRE_AND_CHECK], 33[AC_REQUIRE([$1]) 34test -z "$m4@&t@_translit([$1], [A-Z], [a-z])" && AS_EXIT(1)]) 35 36AC_DEFUN([TEST1], 37[REQUIRE_AND_CHECK([TEST2a]) 38REQUIRE_AND_CHECK([TEST2b]) 39test1=set]) 40 41AC_DEFUN([TEST2a], 42[test2a=set]) 43 44AC_DEFUN([TEST2b], 45[REQUIRE_AND_CHECK([TEST3]) 46test2b=set]) 47 48AC_DEFUN([TEST3], 49[REQUIRE_AND_CHECK([TEST2a]) 50test3=set]) 51 52AS@&t@_INIT 53 54TEST1 55test -z "$test1" && 56 AC_MSG_ERROR([\$test1 is empty]) 57AS_EXIT(0) 58]]) 59 60AT_CHECK_AUTOCONF 61AT_CHECK_CONFIGURE 62 63AT_CLEANUP 64 65 66## --------------------------- ## 67## AC_REQUIRE: error message. ## 68## --------------------------- ## 69 70# Check that the message mentions AC_DEFUN, not m4_defun. 71 72AT_SETUP([AC_REQUIRE: error message]) 73AT_DATA([configure.ac], 74[[AC_REQUIRE([AC_PROG_CC]) 75]]) 76 77AT_CHECK_AUTOCONF([], [1], [], 78[[configure.ac:1: error: AC_REQUIRE(AC_PROG_CC): cannot be used outside of an AC_DEFUN'd macro 79configure.ac:1: the top level 80autom4te: m4 failed with exit status: 1 81]]) 82AT_CLEANUP 83 84 85## ----------------------------------------------- ## 86## AC_REQUIRE and AC_DEFUN_ONCE: Require, expand. ## 87## ----------------------------------------------- ## 88 89AT_SETUP([AC_REQUIRE & AC_DEFUN_ONCE: Require, expand]) 90 91AT_DATA([configure.ac], 92[[AC_DEFUN([TEST], 93[AC_REQUIRE([MULTI_TEST]) 94AC_REQUIRE([SINGLE_TEST])]) 95 96AC_DEFUN([MULTI_TEST], 97[multi_test=".$multi_test"]) 98 99AC_DEFUN_ONCE([SINGLE_TEST], 100[single_test=".$single_test"]) 101 102AS@&t@_INIT 103 104TEST 105TEST 106MULTI_TEST 107MULTI_TEST 108SINGLE_TEST 109SINGLE_TEST 110 111case $multi_test:$single_test in 112 ...:. ) AS_EXIT(0);; 113 ...:* ) AC_MSG_ERROR([DEFUN_ONCE is broken]);; 114 *:. ) AC_MSG_ERROR([DEFUN is broken (Wow, congrats!)]);; 115esac 116]]) 117 118AT_CHECK_AUTOCONF([], 0, [], 119[configure.ac:17: warning: SINGLE_TEST invoked multiple times 120configure.ac:18: warning: SINGLE_TEST invoked multiple times 121]) 122 123AT_CHECK_CONFIGURE 124 125AT_CLEANUP 126 127 128 129## ----------------------------------------------- ## 130## AC_REQUIRE and AC_DEFUN_ONCE: Expand, require. ## 131## ----------------------------------------------- ## 132 133AT_SETUP([AC_REQUIRE & AC_DEFUN_ONCE: Expand, require]) 134 135AT_DATA([configure.ac], 136[[AC_DEFUN([TEST], 137[AC_REQUIRE([MULTI_TEST]) 138AC_REQUIRE([SINGLE_TEST])]) 139 140AC_DEFUN([MULTI_TEST], 141[multi_test=".$multi_test"]) 142 143AC_DEFUN_ONCE([SINGLE_TEST], 144[single_test=".$single_test"]) 145 146AS@&t@_INIT 147 148MULTI_TEST 149MULTI_TEST 150SINGLE_TEST 151SINGLE_TEST 152TEST 153TEST 154 155case $multi_test:$single_test in 156 ..:. ) AS_EXIT(0);; 157 ..:* ) AC_MSG_ERROR([DEFUN_ONCE is broken]);; 158 *:. ) AC_MSG_ERROR([DEFUN is broken (Wow, congrats!)]);; 159 * ) AC_MSG_ERROR([received `$multi_test:$single_test']);; 160esac 161]]) 162 163AT_CHECK_AUTOCONF([], 0, [], 164[configure.ac:16: warning: SINGLE_TEST invoked multiple times 165]) 166AT_CHECK_CONFIGURE 167 168AT_CLEANUP 169 170 171 172## ------------------------- ## 173## AC_REQUIRE & AC_PROVIDE. ## 174## ------------------------- ## 175 176AT_SETUP([AC_REQUIRE & AC_PROVIDE]) 177 178AT_DATA([configure.ac], 179[[AC_DEFUN([TEST], 180[AC_REQUIRE([INNER_TEST])]) 181 182AC_DEFUN([INNER_TEST], 183[inner_test=".$inner_test"]) 184 185AS@&t@_INIT 186 187AC_PROVIDE([INNER_TEST]) 188TEST 189 190case $inner_test in 191 "" ) AS_EXIT(0);; 192 * ) AC_MSG_ERROR([received `$inner_test']);; 193esac 194]]) 195 196AT_CHECK_AUTOCONF 197AT_CHECK_CONFIGURE 198 199AT_CLEANUP 200 201 202## ---------------- ## 203## AC_CACHE_CHECK. ## 204## ---------------- ## 205 206# Make sure AC_CACHE_CHECK is silent with -q. 207 208AT_SETUP([AC_CACHE_CHECK]) 209 210AT_DATA([configure.ac], 211[[AC_INIT 212AC_CACHE_CHECK([for nothing], 213 [ac_nothing], 214 [ac_nothing=found]) 215]]) 216 217AT_CHECK_AUTOCONF 218AT_CHECK_CONFIGURE([-q]) 219 220AT_CLEANUP 221 222 223## ---------------- ## 224## AC_COMPUTE_INT. ## 225## ---------------- ## 226 227# Make sure AC_COMPUTE_INT fails properly. 228 229AT_SETUP([AC_COMPUTE_INT]) 230 231AT_DATA([configure.ac], 232[[AC_INIT 233AC_COMPUTE_INT([invalid_expression], 234 [**0**], 235 [], 236 [invalid_expression=failed]) 237test "$invalid_expression" = failed || 238 AC_MSG_ERROR([**0** evaluated to $invalid_expression instead of failing]) 239]]) 240 241AT_CHECK_AUTOCONF 242AT_CHECK_CONFIGURE 243 244AT_CLEANUP 245 246 247## ---------------- ## 248## AC_TRY_COMMAND. ## 249## ---------------- ## 250 251AT_SETUP([AC_TRY_COMMAND]) 252 253AT_DATA([configure.ac], 254[[AC_INIT 255 256if AC_TRY_COMMAND([(echo "The Cat in the Hat"; 257 echo "The Hat in the Cat" >&2) | 258 grep \^The\ Cat\ in\ the\ Hat\$ >/dev/null]); then 259 : 260else 261 AC_MSG_ERROR([Didn't see the Cat in the Hat!]) 262fi 263 264if AC_TRY_COMMAND([(echo "The Cat in the Hat"; 265 echo "The Hat in the Cat" >&2) | 266 grep \^The\ Hat\ in\ the\ Cat\$ >/dev/null]); then 267 AC_MSG_ERROR([Saw the Hat in the Cat!]) 268fi 269]]) 270 271AT_CHECK_AUTOCONF 272AT_CHECK_CONFIGURE([-q]) 273 274AT_CLEANUP 275 276 277## ------------ ## 278## Input/Output ## 279## ------------ ## 280 281AT_SETUP([Input/Output]) 282 283m4_pattern_allow([^AS_(MESSAGE|ORIGINAL_STDIN)_FD$]) 284AT_DATA([configure.ac], 285[[AC_INIT 286cat <&AS_ORIGINAL_STDIN_FD >&AS_MESSAGE_FD 287]]) 288AT_CHECK_AUTOCONF 289AT_CHECK([echo Hello | top_srcdir=$abs_top_srcdir ./configure | grep -v 'configure: loading site script '],, [Hello 290]) 291AT_CHECK([echo Hello | top_srcdir=$abs_top_srcdir ./configure --silent]) 292 293AT_CLEANUP 294