1*00b67f09SDavid van Moolenbroekdnl 2*00b67f09SDavid van Moolenbroekdnl Automated Testing Framework (atf) 3*00b67f09SDavid van Moolenbroekdnl 4*00b67f09SDavid van Moolenbroekdnl Copyright (c) 2007 The NetBSD Foundation, Inc. 5*00b67f09SDavid van Moolenbroekdnl All rights reserved. 6*00b67f09SDavid van Moolenbroekdnl 7*00b67f09SDavid van Moolenbroekdnl Redistribution and use in source and binary forms, with or without 8*00b67f09SDavid van Moolenbroekdnl modification, are permitted provided that the following conditions 9*00b67f09SDavid van Moolenbroekdnl are met: 10*00b67f09SDavid van Moolenbroekdnl 1. Redistributions of source code must retain the above copyright 11*00b67f09SDavid van Moolenbroekdnl notice, this list of conditions and the following disclaimer. 12*00b67f09SDavid van Moolenbroekdnl 2. Redistributions in binary form must reproduce the above copyright 13*00b67f09SDavid van Moolenbroekdnl notice, this list of conditions and the following disclaimer in the 14*00b67f09SDavid van Moolenbroekdnl documentation and/or other materials provided with the distribution. 15*00b67f09SDavid van Moolenbroekdnl 16*00b67f09SDavid van Moolenbroekdnl THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND 17*00b67f09SDavid van Moolenbroekdnl CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, 18*00b67f09SDavid van Moolenbroekdnl INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 19*00b67f09SDavid van Moolenbroekdnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20*00b67f09SDavid van Moolenbroekdnl IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY 21*00b67f09SDavid van Moolenbroekdnl DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22*00b67f09SDavid van Moolenbroekdnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 23*00b67f09SDavid van Moolenbroekdnl GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24*00b67f09SDavid van Moolenbroekdnl INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 25*00b67f09SDavid van Moolenbroekdnl IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 26*00b67f09SDavid van Moolenbroekdnl OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 27*00b67f09SDavid van Moolenbroekdnl IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28*00b67f09SDavid van Moolenbroekdnl 29*00b67f09SDavid van Moolenbroek 30*00b67f09SDavid van Moolenbroekdnl ----------------------------------------------------------------------- 31*00b67f09SDavid van Moolenbroekdnl Initialize the GNU build system. 32*00b67f09SDavid van Moolenbroekdnl ----------------------------------------------------------------------- 33*00b67f09SDavid van Moolenbroek 34*00b67f09SDavid van MoolenbroekAC_INIT([Automated Testing Framework], [0.17], [atf-devel@NetBSD.org], [atf], 35*00b67f09SDavid van Moolenbroek [http://code.google.com/p/kyua/wiki/ATF]) 36*00b67f09SDavid van MoolenbroekAC_PREREQ([2.65]) 37*00b67f09SDavid van MoolenbroekAC_COPYRIGHT([Copyright (c) 2007-2012 The NetBSD Foundation, Inc.]) 38*00b67f09SDavid van MoolenbroekAC_DEFINE([PACKAGE_COPYRIGHT], 39*00b67f09SDavid van Moolenbroek ["Copyright (c) 2007-2012 The NetBSD Foundation, Inc."], 40*00b67f09SDavid van Moolenbroek [Define to the copyright string applicable to this package.]) 41*00b67f09SDavid van MoolenbroekAC_CONFIG_AUX_DIR([admin]) 42*00b67f09SDavid van MoolenbroekAC_CONFIG_HEADERS([bconfig.h]) 43*00b67f09SDavid van MoolenbroekAC_CONFIG_MACRO_DIR([m4]) 44*00b67f09SDavid van MoolenbroekAC_CONFIG_SRCDIR([atf-c.h]) 45*00b67f09SDavid van MoolenbroekAC_CONFIG_TESTDIR([bootstrap]) 46*00b67f09SDavid van Moolenbroek 47*00b67f09SDavid van MoolenbroekAC_CANONICAL_TARGET 48*00b67f09SDavid van Moolenbroek 49*00b67f09SDavid van MoolenbroekAM_INIT_AUTOMAKE([1.9 check-news foreign subdir-objects -Wall]) 50*00b67f09SDavid van Moolenbroek 51*00b67f09SDavid van MoolenbroekLT_INIT 52*00b67f09SDavid van Moolenbroek 53*00b67f09SDavid van MoolenbroekAC_ARG_ENABLE(tools, 54*00b67f09SDavid van Moolenbroek AS_HELP_STRING([--enable-tools], 55*00b67f09SDavid van Moolenbroek [Enables the build of the deprecated ATF tools]), 56*00b67f09SDavid van Moolenbroek [case $enableval in 57*00b67f09SDavid van Moolenbroek yes|no) enable_tools=${enableval} ;; 58*00b67f09SDavid van Moolenbroek *) AC_MSG_ERROR([Invalid value passed to --enable-tools]) ;; 59*00b67f09SDavid van Moolenbroek esac], 60*00b67f09SDavid van Moolenbroek [enable_tools=no]) 61*00b67f09SDavid van MoolenbroekAC_SUBST([ENABLE_TOOLS], ${enable_tools}) 62*00b67f09SDavid van MoolenbroekAM_CONDITIONAL([ENABLE_TOOLS], [test "${enable_tools}" = yes]) 63*00b67f09SDavid van Moolenbroek 64*00b67f09SDavid van Moolenbroekdnl ----------------------------------------------------------------------- 65*00b67f09SDavid van Moolenbroekdnl Check for the C and C++ compilers and required features. 66*00b67f09SDavid van Moolenbroekdnl ----------------------------------------------------------------------- 67*00b67f09SDavid van Moolenbroek 68*00b67f09SDavid van MoolenbroekAC_LANG(C) 69*00b67f09SDavid van MoolenbroekAC_PROG_CC 70*00b67f09SDavid van MoolenbroekAM_PROG_CC_C_O 71*00b67f09SDavid van Moolenbroekdnl The C compiler check automatically aborts if the compiler does not work. 72*00b67f09SDavid van Moolenbroekdnl Nothing to do here. 73*00b67f09SDavid van Moolenbroek 74*00b67f09SDavid van MoolenbroekAC_LANG(C++) 75*00b67f09SDavid van MoolenbroekAC_PROG_CXX 76*00b67f09SDavid van MoolenbroekAC_CACHE_CHECK([whether the C++ compiler works], 77*00b67f09SDavid van Moolenbroek [atf_cv_prog_cxx_works], 78*00b67f09SDavid van Moolenbroek [AC_LANG_PUSH([C++]) 79*00b67f09SDavid van Moolenbroek AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], 80*00b67f09SDavid van Moolenbroek [atf_cv_prog_cxx_works=yes], 81*00b67f09SDavid van Moolenbroek [atf_cv_prog_cxx_works=no]) 82*00b67f09SDavid van Moolenbroek AC_LANG_POP]) 83*00b67f09SDavid van Moolenbroekif test "${atf_cv_prog_cxx_works}" = no; then 84*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([C++ compiler cannot create executables]) 85*00b67f09SDavid van Moolenbroekfi 86*00b67f09SDavid van Moolenbroek 87*00b67f09SDavid van MoolenbroekKYUA_DEVELOPER_MODE([C,C++]) 88*00b67f09SDavid van Moolenbroek 89*00b67f09SDavid van MoolenbroekATF_MODULE_APPLICATION 90*00b67f09SDavid van MoolenbroekATF_MODULE_DEFS 91*00b67f09SDavid van MoolenbroekATF_MODULE_ENV 92*00b67f09SDavid van MoolenbroekATF_MODULE_FS 93*00b67f09SDavid van MoolenbroekATF_MODULE_SANITY 94*00b67f09SDavid van MoolenbroekATF_MODULE_SIGNALS 95*00b67f09SDavid van Moolenbroek 96*00b67f09SDavid van MoolenbroekAC_CHECK_TYPE([timer_t], [], [], [[#include <time.h>]]) 97*00b67f09SDavid van Moolenbroek 98*00b67f09SDavid van MoolenbroekATF_RUNTIME_TOOL([ATF_BUILD_CC], 99*00b67f09SDavid van Moolenbroek [C compiler to use at runtime], [${CC}]) 100*00b67f09SDavid van MoolenbroekATF_RUNTIME_TOOL([ATF_BUILD_CFLAGS], 101*00b67f09SDavid van Moolenbroek [C compiler flags to use at runtime], [${CFLAGS}]) 102*00b67f09SDavid van MoolenbroekATF_RUNTIME_TOOL([ATF_BUILD_CPP], 103*00b67f09SDavid van Moolenbroek [C/C++ preprocessor to use at runtime], [${CPP}]) 104*00b67f09SDavid van MoolenbroekATF_RUNTIME_TOOL([ATF_BUILD_CPPFLAGS], 105*00b67f09SDavid van Moolenbroek [C/C++ preprocessor flags to use at runtime], [${CPPFLAGS}]) 106*00b67f09SDavid van MoolenbroekATF_RUNTIME_TOOL([ATF_BUILD_CXX], 107*00b67f09SDavid van Moolenbroek [C++ compiler to use at runtime], [${CXX}]) 108*00b67f09SDavid van MoolenbroekATF_RUNTIME_TOOL([ATF_BUILD_CXXFLAGS], 109*00b67f09SDavid van Moolenbroek [C++ compiler flags to use at runtime], [${CXXFLAGS}]) 110*00b67f09SDavid van Moolenbroek 111*00b67f09SDavid van Moolenbroekdnl ----------------------------------------------------------------------- 112*00b67f09SDavid van Moolenbroekdnl Generation of files in srcdir. 113*00b67f09SDavid van Moolenbroekdnl ----------------------------------------------------------------------- 114*00b67f09SDavid van Moolenbroek 115*00b67f09SDavid van Moolenbroekdnl BSD make(1) doesn't deal with targets specified as './foo' well: they 116*00b67f09SDavid van Moolenbroekdnl need to be specified as 'foo'. The following hack is to workaround this 117*00b67f09SDavid van Moolenbroekdnl issue. 118*00b67f09SDavid van Moolenbroekif test "${srcdir}" = .; then 119*00b67f09SDavid van Moolenbroek target_srcdir= 120*00b67f09SDavid van Moolenbroekelse 121*00b67f09SDavid van Moolenbroek target_srcdir="${srcdir}/" 122*00b67f09SDavid van Moolenbroekfi 123*00b67f09SDavid van MoolenbroekAC_SUBST([target_srcdir]) 124*00b67f09SDavid van Moolenbroek 125*00b67f09SDavid van Moolenbroekdnl ----------------------------------------------------------------------- 126*00b67f09SDavid van Moolenbroekdnl Architecture and machine checks. 127*00b67f09SDavid van Moolenbroekdnl ----------------------------------------------------------------------- 128*00b67f09SDavid van Moolenbroek 129*00b67f09SDavid van Moolenbroekatf_arch=`uname -p` 130*00b67f09SDavid van Moolenbroekatf_machine=`uname -m` 131*00b67f09SDavid van Moolenbroek 132*00b67f09SDavid van MoolenbroekAC_MSG_NOTICE([Machine type: ${atf_machine}, architecture: ${atf_arch}]) 133*00b67f09SDavid van MoolenbroekAC_SUBST(atf_arch, ${atf_arch}) 134*00b67f09SDavid van MoolenbroekAC_SUBST(atf_machine, ${atf_machine}) 135*00b67f09SDavid van Moolenbroek 136*00b67f09SDavid van Moolenbroekdnl ----------------------------------------------------------------------- 137*00b67f09SDavid van Moolenbroekdnl User-customizable variables. 138*00b67f09SDavid van Moolenbroekdnl ----------------------------------------------------------------------- 139*00b67f09SDavid van Moolenbroek 140*00b67f09SDavid van MoolenbroekAC_ARG_VAR([ATF_CONFSUBDIR], 141*00b67f09SDavid van Moolenbroek [Subdirectory of sysconfdir under which to look for files]) 142*00b67f09SDavid van Moolenbroekif test x"${ATF_CONFSUBDIR-unset}" = x"unset"; then 143*00b67f09SDavid van Moolenbroek ATF_CONFSUBDIR=atf 144*00b67f09SDavid van Moolenbroekelse 145*00b67f09SDavid van Moolenbroek case ${ATF_CONFSUBDIR} in 146*00b67f09SDavid van Moolenbroek /*) 147*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([ATF_CONFSUBDIR must hold a relative path]) 148*00b67f09SDavid van Moolenbroek ;; 149*00b67f09SDavid van Moolenbroek *) 150*00b67f09SDavid van Moolenbroek ;; 151*00b67f09SDavid van Moolenbroek esac 152*00b67f09SDavid van Moolenbroekfi 153*00b67f09SDavid van Moolenbroekif test x"${ATF_CONFSUBDIR}" = x""; then 154*00b67f09SDavid van Moolenbroek AC_SUBST(atf_confdir, \${sysconfdir}) 155*00b67f09SDavid van Moolenbroekelse 156*00b67f09SDavid van Moolenbroek AC_SUBST(atf_confdir, \${sysconfdir}/${ATF_CONFSUBDIR}) 157*00b67f09SDavid van Moolenbroekfi 158*00b67f09SDavid van Moolenbroek 159*00b67f09SDavid van MoolenbroekAC_ARG_VAR([ATF_WORKDIR], 160*00b67f09SDavid van Moolenbroek [Default location to use for ATF work directories]) 161*00b67f09SDavid van Moolenbroekif test x"${ATF_WORKDIR}" = x""; then 162*00b67f09SDavid van Moolenbroek for t in /tmp /var/tmp; do 163*00b67f09SDavid van Moolenbroek if test -d ${t}; then 164*00b67f09SDavid van Moolenbroek ATF_WORKDIR=${t} 165*00b67f09SDavid van Moolenbroek break 166*00b67f09SDavid van Moolenbroek fi 167*00b67f09SDavid van Moolenbroek done 168*00b67f09SDavid van Moolenbroek if test x"${ATF_WORKDIR}" = x""; then 169*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([Could not guess a value for ATF_WORKDIR]) 170*00b67f09SDavid van Moolenbroek fi 171*00b67f09SDavid van Moolenbroekelse 172*00b67f09SDavid van Moolenbroek case ${ATF_WORKDIR} in 173*00b67f09SDavid van Moolenbroek /*) 174*00b67f09SDavid van Moolenbroek ;; 175*00b67f09SDavid van Moolenbroek *) 176*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([ATF_WORKDIR must hold an absolute path]) 177*00b67f09SDavid van Moolenbroek ;; 178*00b67f09SDavid van Moolenbroek esac 179*00b67f09SDavid van Moolenbroekfi 180*00b67f09SDavid van Moolenbroek 181*00b67f09SDavid van MoolenbroekAC_SUBST(atf_aclocaldir, \${datadir}/aclocal) 182*00b67f09SDavid van MoolenbroekAC_SUBST(atf_cssdir, \${datadir}/examples/atf) 183*00b67f09SDavid van MoolenbroekAC_SUBST(atf_dtddir, \${datadir}/xml/atf) 184*00b67f09SDavid van MoolenbroekAC_SUBST(atf_egdir, \${datadir}/examples/atf) 185*00b67f09SDavid van MoolenbroekAC_SUBST(atf_pkgconfigdir, \${libdir}/pkgconfig) 186*00b67f09SDavid van MoolenbroekAC_SUBST(atf_xsldir, \${datadir}/xsl/atf) 187*00b67f09SDavid van Moolenbroek 188*00b67f09SDavid van Moolenbroekdnl ----------------------------------------------------------------------- 189*00b67f09SDavid van Moolenbroekdnl Check for the shell and portability problems. 190*00b67f09SDavid van Moolenbroekdnl ----------------------------------------------------------------------- 191*00b67f09SDavid van Moolenbroek 192*00b67f09SDavid van MoolenbroekAC_ARG_VAR([ATF_SHELL], [Location of the POSIX shell interpreter to use]) 193*00b67f09SDavid van Moolenbroekif test x"${ATF_SHELL}" = x""; then 194*00b67f09SDavid van Moolenbroek AC_PATH_PROGS(ATF_SHELL, [bash sh]) 195*00b67f09SDavid van Moolenbroekelse 196*00b67f09SDavid van Moolenbroek case ${ATF_SHELL} in 197*00b67f09SDavid van Moolenbroek /*) 198*00b67f09SDavid van Moolenbroek ;; 199*00b67f09SDavid van Moolenbroek *) 200*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([ATF_SHELL must hold an absolute path]) 201*00b67f09SDavid van Moolenbroek ;; 202*00b67f09SDavid van Moolenbroek esac 203*00b67f09SDavid van Moolenbroekfi 204*00b67f09SDavid van Moolenbroekif test x"${ATF_SHELL}" = x""; then 205*00b67f09SDavid van Moolenbroek AC_MSG_ERROR([No POSIX shell interpreter found; maybe set ATF_SHELL?]) 206*00b67f09SDavid van Moolenbroekfi 207*00b67f09SDavid van Moolenbroek 208*00b67f09SDavid van Moolenbroekdnl ----------------------------------------------------------------------- 209*00b67f09SDavid van Moolenbroekdnl Check for required tools. 210*00b67f09SDavid van Moolenbroekdnl ----------------------------------------------------------------------- 211*00b67f09SDavid van Moolenbroek 212*00b67f09SDavid van MoolenbroekAC_PATH_PROG([GDB], [gdb]) 213*00b67f09SDavid van MoolenbroekAC_PATH_PROG([KYUA], [kyua]) 214*00b67f09SDavid van MoolenbroekAM_CONDITIONAL([HAVE_KYUA], [test -n "${KYUA}"]) 215*00b67f09SDavid van MoolenbroekAC_PATH_PROG([GIT], [git]) 216*00b67f09SDavid van Moolenbroek 217*00b67f09SDavid van Moolenbroekdnl ----------------------------------------------------------------------- 218*00b67f09SDavid van Moolenbroekdnl Finally, generate output. 219*00b67f09SDavid van Moolenbroekdnl ----------------------------------------------------------------------- 220*00b67f09SDavid van Moolenbroek 221*00b67f09SDavid van MoolenbroekAC_OUTPUT([Makefile atf-c/defs.h]) 222*00b67f09SDavid van Moolenbroek 223*00b67f09SDavid van Moolenbroekif test ${enable_tools} = yes; then 224*00b67f09SDavid van Moolenbroek AC_MSG_WARN([Building the deprecated ATF tools (atf-run and atf-report);]) 225*00b67f09SDavid van Moolenbroek AC_MSG_WARN([please migrate to Kyua as soon as feasible.]) 226*00b67f09SDavid van Moolenbroekfi 227*00b67f09SDavid van Moolenbroek 228*00b67f09SDavid van Moolenbroekdnl vim: syntax=m4:expandtab:shiftwidth=4:softtabstop=4 229