diff options
Diffstat (limited to 'contrib/ragel.m4')
-rw-r--r-- | contrib/ragel.m4 | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/contrib/ragel.m4 b/contrib/ragel.m4 new file mode 100644 index 00000000..e7b42425 --- /dev/null +++ b/contrib/ragel.m4 @@ -0,0 +1,53 @@ +dnl Check for presence of the Ragel State Machine generator. +dnl +dnl This macro checks for the presence of the ragel tool in the system, +dnl and whether the ragel tool is absolutely needed for a complete +dnl build. +dnl +dnl To check for the need for Ragel, you have to provide the relative +dnl path of a source file generated through Ragel: if the file is +dnl present in the source tree, a missing ragel command will not cause +dnl the configure to abort. + +AC_DEFUN([_RAGEL_VARS], [ + AC_ARG_VAR([RAGEL], [Ragel generator command]) + AC_ARG_VAR([RAGELFLAGS], [Ragel generator flags]) +]) + +AC_DEFUN([CHECK_RAGEL], [ + AC_REQUIRE([_RAGEL_VARS]) + AC_CHECK_PROG([RAGEL], [ragel], [ragel], [no]) + + dnl We set RAGEL to false so that it would execute the "false" + dnl command if needed. + AS_IF([test x"$RAGEL" = x"no"], + [RAGEL=false], + AS_IF([test x"$2" != "x"], + [ragel_version=`$RAGEL --version | sed -n -e '1s:.*version \(@<:@0-9@:>@\.@<:@0-9@:>@\)\(\.@<:@0-9@:>@\)* .*:\1:p'` + ragel_version_compare=`echo $ragel_version | tr -d .` + ragel_wanted_version=`echo $2 | tr -d .` + AS_IF([test $ragel_version_compare -lt $ragel_wanted_version], + [AC_MSG_WARN([Found Ragel $ragel_version but Ragel $2 requested]) + RAGEL=false + ]) + ])) + + dnl Only test the need if not found + AS_IF([test x"$RAGEL" = x"false"], [ + AC_MSG_CHECKING([whether we need ragel to regenerate sources]) + AS_IF([test -a "${srcdir}/$1"], [ragel_needed=no], [ragel_needed=yes]) + AC_MSG_RESULT([$ragel_needed]) + + AS_IF([test x"$ragel_needed" = x"yes"], + [AC_MSG_ERROR([dnl +You need Ragel to build from development sources. +You can find Ragel at http://www.colm.net/open-source/ragel/dnl + ])]) + ]) +]) + +AC_DEFUN([CHECK_RAGEL_AM], [ + CHECK_RAGEL([$1], [$2]) + + AM_CONDITIONAL([HAVE_RAGEL], [test x"$RAGEL" != x"false"]) +]) |