Added SILC Thread Queue API
[crypto.git] / apps / silcer / macros / gperf-check.m4
1 dnl
2 dnl AC_PROG_GPERF (MINIMUM-VERSION)
3 dnl
4 dnl Check for availability of gperf.
5 dnl Abort if not found or if current version is not up to par.
6 dnl
7
8 AC_DEFUN([AC_PROG_GPERF],[
9         AC_PATH_PROG(GPERF, gperf, no)
10         if test "$GPERF" = no; then
11                 AC_MSG_ERROR(Could not find gperf)
12         fi
13         min_gperf_version=ifelse([$1], ,2.7,$1)
14         AC_MSG_CHECKING(for gperf - version >= $min_gperf_version)
15         gperf_major_version=`$GPERF --version | \
16                 sed 's/GNU gperf \([[0-9]]*\).\([[0-9]]*\)/\1/'`
17         gperf_minor_version=`$GPERF --version | \
18                 sed 's/GNU gperf \([[0-9]]*\).\([[0-9]]*\)/\2/'`
19         no_gperf=""
20 dnl
21 dnl Now check if the installed gperf is sufficiently new.
22 dnl
23         AC_TRY_RUN([
24 #include <stdio.h>
25 #include <stdlib.h>
26 #include <string.h>
27
28 static char*
29 my_strdup (char *str)
30 {
31   char *new_str;
32   
33   if (str)
34     {
35       new_str = malloc ((strlen (str) + 1) * sizeof(char));
36       strcpy (new_str, str);
37     }
38   else
39     new_str = NULL;
40   
41   return new_str;
42 }
43
44 int 
45 main ()
46 {
47   char  *tmp_version;
48   
49   int    major;
50   int    minor;
51
52   /* HP/UX 9 (%@#!) writes to sscanf strings */
53   tmp_version = my_strdup("$min_gperf_version");
54   if (sscanf(tmp_version, "%d.%d", &major, &minor) != 2) {
55     printf ("%s, bad version string\n", "$min_gperf_version");
56     exit (1);
57   }
58
59   if (($gperf_major_version > major) ||
60       (($gperf_major_version == major) && ($gperf_minor_version >= minor))) {
61     return 0;
62   } else {
63     printf ("\n");
64     printf ("*** An old version of gperf ($gperf_major_version.$gperf_minor_version) was found.\n");
65     printf ("*** You need a version of gperf newer than %d.%d.%d.  The latest version of\n",
66                major, minor);
67     printf ("*** gperf is always available from ftp://ftp.gnu.org.\n");
68     printf ("***\n");
69     return 1;
70   }
71 }
72 ],,no_gperf=yes,[/bin/true])
73         if test "x$no_gperf" = x ; then
74                 AC_MSG_RESULT(yes)
75         else
76                 AC_MSG_RESULT(no)
77         fi
78
79 ])