# -*- Autotest -*-AT_BANNER([Autoconf base layer.])# Copyright (C) 2000, 2001, 2003, 2005, 2006 Free Software Foundation, Inc.## This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 2, or (at your option)# any later version.## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the# GNU General Public License for more details.## You should have received a copy of the GNU General Public License# along with this program; if not, write to the Free Software# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA# 02110-1301, USA.## ------------------------------- #### AC_REQUIRE: topological sort.. #### ------------------------------- ### Check that dependencies are always properly honored.AT_SETUP([AC_REQUIRE: topological sort])AT_DATA([configure.ac],[[define([REQUIRE_AND_CHECK],[AC_REQUIRE([$1])test -z "$m4@&t@_translit([$1], [A-Z], [a-z])" && AS_EXIT(1)])AC_DEFUN([TEST1],[REQUIRE_AND_CHECK([TEST2a])REQUIRE_AND_CHECK([TEST2b])test1=set])AC_DEFUN([TEST2a],[test2a=set])AC_DEFUN([TEST2b],[REQUIRE_AND_CHECK([TEST3])test2b=set])AC_DEFUN([TEST3],[REQUIRE_AND_CHECK([TEST2a])test3=set])AS@&t@_INITTEST1test -z "$test1" &&AC_MSG_ERROR([\$test1 is empty])AS_EXIT(0)]])AT_CHECK_AUTOCONFAT_CHECK_CONFIGUREAT_CLEANUP## --------------------------- #### AC_REQUIRE: error message. #### --------------------------- ### Check that the message mentions AC_DEFUN, not m4_defun.AT_SETUP([AC_REQUIRE: error message])AT_DATA([configure.ac],[[AC_REQUIRE([AC_PROG_CC])]])AT_CHECK_AUTOCONF([], [1], [],[[configure.ac:1: error: AC_REQUIRE(AC_PROG_CC): cannot be used outside of an AC_DEFUN'd macroconfigure.ac:1: the top levelautom4te: m4 failed with exit status: 1]])AT_CLEANUP## ----------------------------------------------- #### AC_REQUIRE and AC_DEFUN_ONCE: Require, expand. #### ----------------------------------------------- ##AT_SETUP([AC_REQUIRE & AC_DEFUN_ONCE: Require, expand])AT_DATA([configure.ac],[[AC_DEFUN([TEST],[AC_REQUIRE([MULTI_TEST])AC_REQUIRE([SINGLE_TEST])])AC_DEFUN([MULTI_TEST],[multi_test=".$multi_test"])AC_DEFUN_ONCE([SINGLE_TEST],[single_test=".$single_test"])AS@&t@_INITTESTTESTMULTI_TESTMULTI_TESTSINGLE_TESTSINGLE_TESTcase $multi_test:$single_test in...:. ) AS_EXIT(0);;...:* ) AC_MSG_ERROR([DEFUN_ONCE is broken]);;*:. ) AC_MSG_ERROR([DEFUN is broken (Wow, congrats!)]);;esac]])AT_CHECK_AUTOCONF([], 0, [],[configure.ac:17: warning: SINGLE_TEST invoked multiple timesconfigure.ac:18: warning: SINGLE_TEST invoked multiple times])AT_CHECK_CONFIGUREAT_CLEANUP## ----------------------------------------------- #### AC_REQUIRE and AC_DEFUN_ONCE: Expand, require. #### ----------------------------------------------- ##AT_SETUP([AC_REQUIRE & AC_DEFUN_ONCE: Expand, require])AT_DATA([configure.ac],[[AC_DEFUN([TEST],[AC_REQUIRE([MULTI_TEST])AC_REQUIRE([SINGLE_TEST])])AC_DEFUN([MULTI_TEST],[multi_test=".$multi_test"])AC_DEFUN_ONCE([SINGLE_TEST],[single_test=".$single_test"])AS@&t@_INITMULTI_TESTMULTI_TESTSINGLE_TESTSINGLE_TESTTESTTESTcase $multi_test:$single_test in..:. ) AS_EXIT(0);;..:* ) AC_MSG_ERROR([DEFUN_ONCE is broken]);;*:. ) AC_MSG_ERROR([DEFUN is broken (Wow, congrats!)]);;* ) AC_MSG_ERROR([received `$multi_test:$single_test']);;esac]])AT_CHECK_AUTOCONF([], 0, [],[configure.ac:16: warning: SINGLE_TEST invoked multiple times])AT_CHECK_CONFIGUREAT_CLEANUP## ------------------------- #### AC_REQUIRE & AC_PROVIDE. #### ------------------------- ##AT_SETUP([AC_REQUIRE & AC_PROVIDE])AT_DATA([configure.ac],[[AC_DEFUN([TEST],[AC_REQUIRE([INNER_TEST])])AC_DEFUN([INNER_TEST],[inner_test=".$inner_test"])AS@&t@_INITAC_PROVIDE([INNER_TEST])TESTcase $inner_test in"" ) AS_EXIT(0);;* ) AC_MSG_ERROR([received `$inner_test']);;esac]])AT_CHECK_AUTOCONFAT_CHECK_CONFIGUREAT_CLEANUP## ---------------- #### AC_CACHE_CHECK. #### ---------------- ### Make sure AC_CACHE_CHECK is silent with -q.AT_SETUP([AC_CACHE_CHECK])AT_DATA([configure.ac],[[AC_INITAC_CACHE_CHECK([for nothing],[ac_nothing],[ac_nothing=found])]])AT_CHECK_AUTOCONFAT_CHECK_CONFIGURE([-q])AT_CLEANUP## ---------------- #### AC_COMPUTE_INT. #### ---------------- ### Make sure AC_COMPUTE_INT fails properly.AT_SETUP([AC_COMPUTE_INT])AT_DATA([configure.ac],[[AC_INITAC_COMPUTE_INT([invalid_expression],[**0**],[],[invalid_expression=failed])test "$invalid_expression" = failed ||AC_MSG_ERROR([**0** evaluated to $invalid_expression instead of failing])]])AT_CHECK_AUTOCONFAT_CHECK_CONFIGUREAT_CLEANUP## ---------------- #### AC_TRY_COMMAND. #### ---------------- ##AT_SETUP([AC_TRY_COMMAND])AT_DATA([configure.ac],[[AC_INITif AC_TRY_COMMAND([(echo "The Cat in the Hat";echo "The Hat in the Cat" >&2) |grep \^The\ Cat\ in\ the\ Hat\$ >/dev/null]); then:elseAC_MSG_ERROR([Didn't see the Cat in the Hat!])fiif AC_TRY_COMMAND([(echo "The Cat in the Hat";echo "The Hat in the Cat" >&2) |grep \^The\ Hat\ in\ the\ Cat\$ >/dev/null]); thenAC_MSG_ERROR([Saw the Hat in the Cat!])fi]])AT_CHECK_AUTOCONFAT_CHECK_CONFIGURE([-q])AT_CLEANUP## ------------ #### Input/Output #### ------------ ##AT_SETUP([Input/Output])m4_pattern_allow([^AS_(MESSAGE|ORIGINAL_STDIN)_FD$])AT_DATA([configure.ac],[[AC_INITcat <&AS_ORIGINAL_STDIN_FD >&AS_MESSAGE_FD]])AT_CHECK_AUTOCONFAT_CHECK([echo Hello | top_srcdir=$abs_top_srcdir ./configure | grep -v 'configure: loading site script '],, [Hello])AT_CHECK([echo Hello | top_srcdir=$abs_top_srcdir ./configure --silent])AT_CLEANUP