Initial revision
[silc.git] / apps / silcer / macros / gnome-libgtop-check.m4
diff --git a/apps/silcer/macros/gnome-libgtop-check.m4 b/apps/silcer/macros/gnome-libgtop-check.m4
new file mode 100644 (file)
index 0000000..1b4e174
--- /dev/null
@@ -0,0 +1,217 @@
+dnl
+dnl LIBGTOP_CHECK_TYPE
+dnl
+dnl Improved version of AC_CHECK_TYPE which takes into account
+dnl that we need to #include some other header files on some
+dnl systems to get some types.
+
+dnl AC_LIBGTOP_CHECK_TYPE(TYPE, DEFAULT)
+AC_DEFUN([AC_LIBGTOP_CHECK_TYPE],
+[AC_REQUIRE([AC_HEADER_STDC])dnl
+AC_MSG_CHECKING(for $1)
+AC_CACHE_VAL(ac_cv_type_$1,
+[AC_EGREP_CPP(dnl
+changequote(<<,>>)dnl
+<<(^|[^a-zA-Z_0-9])$1[^a-zA-Z_0-9]>>dnl
+changequote([,]), [#include <sys/types.h>
+#if STDC_HEADERS
+#include <stdlib.h>
+#include <stddef.h>
+#endif
+
+/* For Tru64 */
+#ifdef HAVE_SYS_BITYPES_H
+#include <sys/bitypes.h>
+#endif
+], ac_cv_type_$1=yes, ac_cv_type_$1=no)])dnl
+AC_MSG_RESULT($ac_cv_type_$1)
+if test $ac_cv_type_$1 = no; then
+  AC_DEFINE($1, $2)
+fi
+])
+
+dnl
+dnl GNOME_LIBGTOP_TYPES
+dnl
+dnl some typechecks for libgtop.
+dnl
+
+AC_DEFUN([GNOME_LIBGTOP_TYPES],
+[
+       AC_CHECK_HEADERS(sys/bitypes.h)
+       AC_LIBGTOP_CHECK_TYPE(u_int64_t, unsigned long long int)
+       AC_LIBGTOP_CHECK_TYPE(int64_t, signed long long int)
+])
+
+dnl
+dnl GNOME_LIBGTOP_HOOK (minversion, script-if-libgtop-enabled, failflag)
+dnl
+dnl if failflag is "fail" then GNOME_LIBGTOP_HOOK will abort if LibGTop
+dnl is not found. 
+dnl
+
+AC_DEFUN([GNOME_LIBGTOP_HOOK],
+[      
+       AC_REQUIRE([GNOME_LIBGTOP_TYPES])
+
+       AC_SUBST(LIBGTOP_LIBDIR)
+       AC_SUBST(LIBGTOP_INCLUDEDIR)
+       AC_SUBST(LIBGTOP_EXTRA_LIBS)
+       AC_SUBST(LIBGTOP_LIBS)
+       AC_SUBST(LIBGTOP_INCS)
+       AC_SUBST(LIBGTOP_NAMES_LIBS)
+       AC_SUBST(LIBGTOP_NAMES_INCS)
+       AC_SUBST(LIBGTOP_MAJOR_VERSION)
+       AC_SUBST(LIBGTOP_MINOR_VERSION)
+       AC_SUBST(LIBGTOP_MICRO_VERSION)
+       AC_SUBST(LIBGTOP_VERSION)
+       AC_SUBST(LIBGTOP_VERSION_CODE)
+       AC_SUBST(LIBGTOP_SERVER_VERSION)
+       AC_SUBST(LIBGTOP_INTERFACE_AGE)
+       AC_SUBST(LIBGTOP_BINARY_AGE)
+       AC_SUBST(LIBGTOP_BINDIR)
+       AC_SUBST(LIBGTOP_SERVER)
+
+       dnl Get the cflags and libraries from the libgtop-config script
+       dnl
+       AC_ARG_WITH(libgtop,
+       [  --with-libgtop=PFX      Prefix where LIBGTOP is installed (optional)],
+       libgtop_config_prefix="$withval", libgtop_config_prefix="")
+       AC_ARG_WITH(libgtop-exec,
+       [  --with-libgtop-exec=PFX Exec prefix where LIBGTOP is installed (optional)],
+       libgtop_config_exec_prefix="$withval", libgtop_config_exec_prefix="")
+
+       if test x$libgtop_config_exec_prefix != x ; then
+         libgtop_config_args="$libgtop_config_args --exec-prefix=$libgtop_config_exec_prefix"
+         if test x${LIBGTOP_CONFIG+set} != xset ; then
+           LIBGTOP_CONFIG=$libgtop_config_exec_prefix/bin/libgtop-config
+         fi
+       fi
+       if test x$libgtop_config_prefix != x ; then
+         libgtop_config_args="$libgtop_config_args --prefix=$libgtop_config_prefix"
+         if test x${LIBGTOP_CONFIG+set} != xset ; then
+           LIBGTOP_CONFIG=$libgtop_config_prefix/bin/libgtop-config
+         fi
+       fi
+
+       AC_PATH_PROG(LIBGTOP_CONFIG, libgtop-config, no)
+       dnl IMPORTANT NOTICE:
+       dnl   If you increase this number here, this means that *ALL*
+       dnl   modules will require the new version, even if they explicitly
+       dnl   give a lower number in their `configure.in' !!!
+       real_min_libgtop_version=1.0.0
+       min_libgtop_version=ifelse([$1], ,$real_min_libgtop_version,$1)
+       dnl I know, the following code looks really ugly, but if you want
+       dnl to make changes, please test it with a brain-dead /bin/sh and
+       dnl with a brain-dead /bin/test (not all shells/tests support the
+       dnl `<' operator to compare strings, that's why I convert everything
+       dnl into numbers and test them).
+       min_libgtop_major=`echo $min_libgtop_version | \
+         sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+       min_libgtop_minor=`echo $min_libgtop_version | \
+         sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+       min_libgtop_micro=`echo $min_libgtop_version | \
+         sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+       test x$min_libgtop_micro = x && min_libgtop_micro=0
+       real_min_libgtop_major=`echo $real_min_libgtop_version | \
+         sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+       real_min_libgtop_minor=`echo $real_min_libgtop_version | \
+         sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+       real_min_libgtop_micro=`echo $real_min_libgtop_version | \
+         sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+       test x$real_min_libgtop_micro = x && real_min_libgtop_micro=0
+       dnl You cannot require a version less then $real_min_libgtop_version,
+       dnl so you don't need to update each `configure.in' when it's increased.
+       if test $real_min_libgtop_major -gt $min_libgtop_major ; then
+         min_libgtop_major=$real_min_libgtop_major
+         min_libgtop_minor=$real_min_libgtop_minor
+         min_libgtop_micro=$real_min_libgtop_micro
+       elif test $real_min_libgtop_major = $min_libgtop_major ; then
+         if test $real_min_libgtop_minor -gt $min_libgtop_minor ; then
+           min_libgtop_minor=$real_min_libgtop_minor
+           min_libgtop_micro=$real_min_libgtop_micro
+         elif test $real_min_libgtop_minor = $min_libgtop_minor ; then
+           if test $real_min_libgtop_micro -gt $min_libgtop_micro ; then
+             min_libgtop_micro=$real_min_libgtop_micro
+           fi
+         fi
+       fi
+       min_libgtop_version="$min_libgtop_major.$min_libgtop_minor.$min_libgtop_micro"
+       AC_MSG_CHECKING(for libgtop - version >= $min_libgtop_version)
+       no_libgtop=""
+       if test "$LIBGTOP_CONFIG" = "no" ; then
+         no_libgtop=yes
+       else
+         configfile=`$LIBGTOP_CONFIG --config`
+         libgtop_major_version=`$LIBGTOP_CONFIG --version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+         libgtop_minor_version=`$LIBGTOP_CONFIG --version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+         libgtop_micro_version=`$LIBGTOP_CONFIG --version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+         if test $libgtop_major_version != $min_libgtop_major ; then 
+           no_libgtop=mismatch
+         else 
+           test $libgtop_minor_version -lt $min_libgtop_minor && no_libgtop=yes
+           if test $libgtop_minor_version = $min_libgtop_minor ; then
+             test $libgtop_micro_version -lt $min_libgtop_micro && no_libgtop=yes
+           fi
+         fi
+         . $configfile
+       fi
+       if test x$no_libgtop = x ; then
+         AC_DEFINE(HAVE_LIBGTOP)
+         AC_DEFINE_UNQUOTED(LIBGTOP_VERSION, "$LIBGTOP_VERSION")
+         AC_DEFINE_UNQUOTED(LIBGTOP_VERSION_CODE, $LIBGTOP_VERSION_CODE)
+         AC_DEFINE_UNQUOTED(LIBGTOP_MAJOR_VERSION, $LIBGTOP_MAJOR_VERSION)
+         AC_DEFINE_UNQUOTED(LIBGTOP_MINOR_VERSION, $LIBGTOP_MINOR_VERSION)
+         AC_DEFINE_UNQUOTED(LIBGTOP_MICRO_VERSION, $LIBGTOP_MICRO_VERSION)
+         AC_DEFINE_UNQUOTED(LIBGTOP_SERVER_VERSION, $LIBGTOP_SERVER_VERSION)
+         AC_MSG_RESULT(yes)
+         dnl Note that an empty true branch is not valid sh syntax.
+         ifelse([$2], [], :, [$2])
+       else
+         AC_MSG_RESULT(no)
+         if test "$no_libgtop"x = mismatchx; then
+           AC_MSG_ERROR(LibGTop major version mismatch $libgtop_major_version != $min_libgtop_major)
+         fi
+         if test "x$3" = "xfail"; then
+           AC_MSG_ERROR(LibGTop >= $min_libgtop_version not found)
+         else
+           AC_MSG_WARN(LibGTop >= $min_libgtop_version not found)
+         fi
+       fi
+
+       AM_CONDITIONAL(HAVE_LIBGTOP, test x$no_libgtop != xyes)
+])
+
+AC_DEFUN([GNOME_INIT_LIBGTOP],[
+       GNOME_LIBGTOP_HOOK($1,[ifelse([$3], [], :, [$3])],$2)
+])
+
+dnl
+dnl GNOME_LIBGTOP_DOCU
+dnl
+dnl checks whether the documentation of LibGTop is installed
+dnl
+
+AC_DEFUN([GNOME_LIBGTOP_DOCU],
+[
+       AC_REQUIRE([GNOME_LIBGTOP_HOOK])
+
+       helpdir="$LIBGTOP_DATADIR/gnome/help/libgtop"
+
+       AC_MSG_CHECKING(whether you have the LibGTop Documentation)
+
+       if test -f "$helpdir/C/topic.dat" ; then
+         have_libgtop_docu=yes
+         AC_DEFINE(HAVE_LIBGTOP_DOCU)
+       else
+         have_libgtop_docu=no
+       fi
+
+       AC_MSG_RESULT($have_libgtop_docu)
+
+       AM_CONDITIONAL(HAVE_LIBGTOP_DOCU, test x$have_libgtop_docu = xyes)
+])
+