X-Git-Url: https://git.draconx.ca/gitweb/dxcommon.git/blobdiff_plain/06991b16dda9f3dc3991f39599512a7e94260667..9060b3e8d2ac9296abb97f159895718cd233f3bc:/m4/autotest.m4 diff --git a/m4/autotest.m4 b/m4/autotest.m4 index 063144a..854295f 100644 --- a/m4/autotest.m4 +++ b/m4/autotest.m4 @@ -1,47 +1,57 @@ -dnl Copyright © 2015 Nick Bowler -dnl -dnl Macro to find an working autotest installation. -dnl -dnl License WTFPL2: Do What The Fuck You Want To Public License, version 2. -dnl This is free software: you are free to do what the fuck you want to. -dnl There is NO WARRANTY, to the extent permitted by law. +# Copyright © 2015, 2021, 2023 Nick Bowler +# +# Macro to find an working autotest installation. +# +# License WTFPL2: Do What The Fuck You Want To Public License, version 2. +# This is free software: you are free to do what the fuck you want to. +# There is NO WARRANTY, to the extent permitted by law. -m4_define([_DX_PROG_AUTOTEST_SRC], [cat >conftest.at <<'EOF' -m4@&t@_define(@<:@AT_PACKAGE_STRING@:>@, @<:@AC_PACKAGE_STRING@:>@) -m4@&t@_define(@<:@AT_PACKAGE_BUGREPORT@:>@, @<:@AC_PACKAGE_BUGREPORT@:>@) -AT_INIT -EOF]) - -m4_define([_DX_PROG_AUTOTEST_CHECK_OUT], - [AS_IF([$FGREP "$PACKAGE_STRING" conftest.out >/dev/null 2>&1], - [DX_DO([dx_cv_autotest_works=yes], - [AS_VAR_SET([dx_cv_autotest_cmd], ["$1"])])])]) +# DX_PROG_AUTOTEST +# +# Determine a command which works to compile Autotest testsuites. +# +# If found, the AUTOTEST variable (which is substituted by AC_SUBST) +# is set with the result, and the cache variable dx_cv_autotest_works +# is set to "yes". Otherwise, dx_cv_autotest_works is set to "no". +AC_DEFUN_ONCE([DX_PROG_AUTOTEST], +[AC_ARG_VAR([AUTOTEST], [command to compile Autotest testsuites])dnl +_DX_PROG_AUTOTEST +AS_IF([$dx_cv_autotest_found], + [AC_CACHE_CHECK([whether $AUTOTEST works], + [dx_cv_autotest_works], [_DX_PROG_AUTOTEST_CHECK])])]) -m4_define([_DX_PROG_AUTOTEST_CHECK_CMD], - [AS_IF([test x"$dx_cv_autotest_cmd" = x"false"], - [AS_IF([AC_RUN_LOG([$1 conftest.at >conftest.sh])], - [AS_IF([AC_RUN_LOG([$SHELL conftest.sh --version >conftest.out])], - [_DX_PROG_AUTOTEST_CHECK_OUT($@)])])])]) +# DX_PROG_AUTOTEST_AM +# +# Like DX_PROG_AUTOTEST, but also define various additional things +# needed to use the autotest.mk snippet. +AC_DEFUN_ONCE([DX_PROG_AUTOTEST_AM], +[AC_REQUIRE([DX_PROG_AUTOTEST])AC_REQUIRE([DX_AUTOMAKE_COMPAT])dnl +AM_CONDITIONAL([HAVE_AUTOTEST], [test x"$dx_cv_autotest_works" = xyes])]) -m4_define([_DX_PROG_AUTOTEST_SET_VAR], - [DX_DO([AC_CACHE_CHECK([for autotest], [dx_cv_autotest_cmd], - [AS_VAR_SET_IF([AUTOTEST], - [dx_cv_autotest_cmd=$AUTOTEST], - [DX_DO([dx_cv_autotest_works=no dx_cv_autotest_cmd=false], - [AS_VAR_SET_IF([AUTOTEST], - [_DX_PROG_AUTOTEST_CHECK_CMD([$AUTOTEST])])], - [AS_VAR_SET_IF([AUTOM4TE], - [_DX_PROG_AUTOTEST_CHECK_CMD([$AUTOM4TE -l autotest])])], - [_DX_PROG_AUTOTEST_CHECK_CMD([autom4te -l autotest])])])])], - [AUTOTEST=$dx_cv_autotest_cmd])]) +m4_define([_DX_PROG_AUTOTEST], +[AC_CACHE_CHECK([for autotest], [dx_cv_autotest_cmd], +[dx_cv_autotest_found=false +AS_VAR_SET_IF([AUTOTEST], + [dx_cv_autotest_cmd=$AUTOTEST dx_cv_autotest_found=:], +[for dx_cv_autotest_cmd +in ${AUTOM4TE:+"$AUTOM4TE -l autotest"} "autom4te -l autotest" +do + _DX_PROG_AUTOTEST_CHECK([dx_cv_autotest_found=:; break]) +done]) +$dx_cv_autotest_found || dx_cv_autotest_cmd=no]) +$dx_cv_autotest_found && AUTOTEST=$dx_cv_autotest_cmd]) -AC_DEFUN([DX_PROG_AUTOTEST], - [m4_do([AC_REQUIRE([AC_PROG_FGREP])AC_REQUIRE([DX_AUTOMAKE_COMPAT])], - [AC_ARG_VAR([AUTOTEST], [command to compile autotest programs])], - [DX_DO([_DX_PROG_AUTOTEST_SRC], - [_DX_PROG_AUTOTEST_SET_VAR], - [AC_CACHE_CHECK([whether autotest works], - [dx_cv_autotest_works], - [DX_DO([dx_cv_autotest_works=no], - [_DX_PROG_AUTOTEST_CHECK_CMD([$AUTOTEST])])])])], - [AC_SUBST([AUTOTEST])])]) +m4_define([_DX_PROG_AUTOTEST_CHECK], +[cat >conftest.at <<'EOF' +[m4@&t@_define([AT_PACKAGE_STRING], [mypackage])] +[m4@&t@_define([AT_PACKAGE_BUGREPORT], [nobody])] +AT_INIT +EOF +dx_cv_autotest_works=no +AS_IF( + [DX_RUN_LOG([$dx_cv_autotest_cmd conftest.at >conftest.sh && + $SHELL conftest.sh --version >conftest.out && + grep '[(]mypackage[)]' conftest.out >/dev/null 2>&1])], + [dx_cv_autotest_works=yes]) +rm -f conftest.at conftest.sh conftest.out[]m4_ifnblank([$1], [ +AS_CASE([$dx_cv_autotest_works], [yes], [$1])])])