80 lines
1.8 KiB
Plaintext
80 lines
1.8 KiB
Plaintext
dnl
|
|
dnl AC_PROG_GPERF (MINIMUM-VERSION)
|
|
dnl
|
|
dnl Check for availability of gperf.
|
|
dnl Abort if not found or if current version is not up to par.
|
|
dnl
|
|
|
|
AC_DEFUN([AC_PROG_GPERF],[
|
|
AC_PATH_PROG(GPERF, gperf, no)
|
|
if test "$GPERF" = no; then
|
|
AC_MSG_ERROR(Could not find gperf)
|
|
fi
|
|
min_gperf_version=ifelse([$1], ,2.7,$1)
|
|
AC_MSG_CHECKING(for gperf - version >= $min_gperf_version)
|
|
gperf_major_version=`$GPERF --version | \
|
|
sed 's/GNU gperf \([[0-9]]*\).\([[0-9]]*\)/\1/'`
|
|
gperf_minor_version=`$GPERF --version | \
|
|
sed 's/GNU gperf \([[0-9]]*\).\([[0-9]]*\)/\2/'`
|
|
no_gperf=""
|
|
dnl
|
|
dnl Now check if the installed gperf is sufficiently new.
|
|
dnl
|
|
AC_TRY_RUN([
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
static char*
|
|
my_strdup (char *str)
|
|
{
|
|
char *new_str;
|
|
|
|
if (str)
|
|
{
|
|
new_str = malloc ((strlen (str) + 1) * sizeof(char));
|
|
strcpy (new_str, str);
|
|
}
|
|
else
|
|
new_str = NULL;
|
|
|
|
return new_str;
|
|
}
|
|
|
|
int
|
|
main ()
|
|
{
|
|
char *tmp_version;
|
|
|
|
int major;
|
|
int minor;
|
|
|
|
/* HP/UX 9 (%@#!) writes to sscanf strings */
|
|
tmp_version = my_strdup("$min_gperf_version");
|
|
if (sscanf(tmp_version, "%d.%d", &major, &minor) != 2) {
|
|
printf ("%s, bad version string\n", "$min_gperf_version");
|
|
exit (1);
|
|
}
|
|
|
|
if (($gperf_major_version > major) ||
|
|
(($gperf_major_version == major) && ($gperf_minor_version >= minor))) {
|
|
return 0;
|
|
} else {
|
|
printf ("\n");
|
|
printf ("*** An old version of gperf ($gperf_major_version.$gperf_minor_version) was found.\n");
|
|
printf ("*** You need a version of gperf newer than %d.%d.%d. The latest version of\n",
|
|
major, minor);
|
|
printf ("*** gperf is always available from ftp://ftp.gnu.org.\n");
|
|
printf ("***\n");
|
|
return 1;
|
|
}
|
|
}
|
|
],,no_gperf=yes,[/bin/true])
|
|
if test "x$no_gperf" = x ; then
|
|
AC_MSG_RESULT(yes)
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
|
|
])
|