+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.
+
+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"])])])])
+
+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($@)])])])])
+
+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])])
+
+AC_DEFUN([DX_PROG_AUTOTEST],
+ [m4_do([AC_REQUIRE([AC_PROG_FGREP])],
+ [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])])])