Blame libgtop-sysdeps.m4

Packit d37888
dnl This file is intended for use both internally in libgtop and in every program
Packit d37888
dnl that wants to use it.
Packit d37888
dnl
Packit d37888
dnl It defines the following variables:
Packit d37888
dnl
Packit d37888
dnl * 'libgtop_sysdeps_dir'    - sysdeps dir for libgtop.
Packit d37888
dnl * 'libgtop_need_server'    - is the server really needed? Defines 'LIBGTOP_NEED_SERVER'
Packit d37888
dnl                              if true; defines conditional 'LIBGTOP_NEED_SERVER'.
Packit d37888
Packit d37888
AC_DEFUN([GNOME_LIBGTOP_SYSDEPS],[
Packit d37888
	AC_REQUIRE([AC_CANONICAL_HOST])
Packit d37888
Packit d37888
	AC_SUBST(libgtop_sysdeps_dir)
Packit d37888
	AC_SUBST(libgtop_need_server)
Packit d37888
Packit d37888
	AC_ARG_WITH(examples,
Packit d37888
	AS_HELP_STRING([--with-examples],
Packit d37888
	[Build the libgtop examples @<:@default=yes@:>@]),[
Packit d37888
	build_examples="$withval"], [build_examples=yes])
Packit d37888
Packit d37888
	AM_CONDITIONAL(EXAMPLES, test x"$build_examples" = xyes)
Packit d37888
Packit d37888
	AC_ARG_ENABLE(hacker-mode,
Packit d37888
	AS_HELP_STRING([--enable-hacker-mode],
Packit d37888
	[Enable building of unstable sysdeps]),
Packit d37888
	[hacker_mode="$enableval"], [hacker_mode=no])
Packit d37888
Packit d37888
	AM_CONDITIONAL(HACKER_MODE, test x"$hacker_mode" = xyes)
Packit d37888
Packit d37888
	AC_MSG_CHECKING(for libgtop sysdeps directory)
Packit d37888
Packit d37888
	case "$host_os" in
Packit d37888
	linux*)
Packit d37888
	  libgtop_sysdeps_dir=linux
Packit d37888
	  libgtop_have_sysinfo=yes
Packit d37888
	  libgtop_need_server=no
Packit d37888
	  libgtop_sysdeps_private_mountlist=yes
Packit d37888
	  libgtop_sysdeps_private_fsusage=yes
Packit d37888
	  ;;
Packit d37888
	netbsd*|bsdi*)
Packit d37888
	  libgtop_sysdeps_dir=bsd
Packit d37888
	  libgtop_need_server=yes
Packit d37888
	  libgtop_postinstall='chgrp kmem $(bindir)/libgtop_server2 && chmod 2755 $(bindir)/libgtop_server2'
Packit d37888
	  ;;
Packit d37888
	openbsd*)
Packit d37888
	  libgtop_sysdeps_dir=openbsd
Packit d37888
	  libgtop_need_server=yes
Packit d37888
	  libgtop_sysdeps_private_mountlist=yes
Packit d37888
	  libgtop_sysdeps_private_fsusage=yes
Packit d37888
	  libgtop_postinstall='chgrp kmem $(bindir)/libgtop_server2 && chmod 2555 $(bindir)/libgtop_server2'
Packit d37888
	  ;;
Packit d37888
	freebsd*|kfreebsd*)
Packit d37888
	  libgtop_sysdeps_dir=freebsd
Packit d37888
	  libgtop_need_server=yes
Packit d37888
	  libgtop_sysdeps_private_mountlist=yes
Packit d37888
	  libgtop_sysdeps_private_fsusage=yes
Packit d37888
	  libgtop_postinstall='chgrp kmem $(bindir)/libgtop_server2 && chmod 2755 $(bindir)/libgtop_server2'
Packit d37888
	  ;;
Packit d37888
	solaris*)
Packit d37888
	  libgtop_sysdeps_dir=solaris
Packit d37888
	  libgtop_need_server=yes
Packit d37888
	  libgtop_postinstall='chgrp sys $(bindir)/libgtop_server && chmod 2755 $(bindir)/libgtop_server'
Packit d37888
	  ;;
Packit d37888
	aix*)
Packit d37888
	  libgtop_sysdeps_dir=aix
Packit d37888
	  libgtop_need_server=yes
Packit d37888
	  libgtop_have_sysinfo=yes
Packit d37888
	  libgtop_postinstall='chgrp system $(bindir)/libgtop_server && chmod g+s $(bindir)/libgtop_server2'
Packit d37888
	  ;;
Packit d37888
	darwin*)
Packit d37888
	  libgtop_sysdeps_dir=darwin
Packit d37888
	  libgtop_need_server=yes
Packit d37888
	  libgtop_have_sysinfo=yes
Packit d37888
	  libgtop_postinstall='chgrp kmem $(bindir)/libgtop_server2 && chmod g+s $(bindir)/libgtop_server2'
Packit d37888
	  ;;
Packit d37888
	cygwin*)
Packit d37888
	  libgtop_sysdeps_dir=cygwin
Packit d37888
	  libgtop_need_server=no
Packit d37888
	  libgtop_have_sysinfo=yes
Packit d37888
	  libgtop_sysdeps_private_mountlist=yes
Packit d37888
	  ;;
Packit d37888
	*)
Packit d37888
	  if test x$hacker_mode = xyes ; then
Packit d37888
	    case "$host_os" in
Packit d37888
	    sunos4*)
Packit d37888
	      #Please note that this port is obsolete and not working at
Packit d37888
	      #all. It is only useful for people who want to fix it ... :-)
Packit d37888
	      libgtop_sysdeps_dir=sun4
Packit d37888
	      libgtop_need_server=yes
Packit d37888
	      ;;
Packit d37888
	    osf*)
Packit d37888
	      libgtop_sysdeps_dir=osf1
Packit d37888
	      libgtop_need_server=yes
Packit d37888
	      ;;
Packit d37888
	    *)
Packit d37888
	      libgtop_sysdeps_dir=stub
Packit d37888
	      libgtop_need_server=no
Packit d37888
	      ;;
Packit d37888
	    esac
Packit d37888
	  else
Packit d37888
	    libgtop_sysdeps_dir=stub
Packit d37888
	    libgtop_need_server=no
Packit d37888
	  fi
Packit d37888
	  ;;
Packit d37888
	esac
Packit d37888
Packit d37888
	test -z "$libgtop_postinstall" && libgtop_postinstall=:
Packit d37888
Packit d37888
	AC_MSG_RESULT($libgtop_sysdeps_dir)
Packit d37888
Packit d37888
	AC_SUBST(libgtop_sysdeps_dir)
Packit d37888
	AC_SUBST(libgtop_postinstall)
Packit d37888
	AC_SUBST(libgtop_have_sysinfo)
Packit d37888
Packit d37888
	case "$host_os" in
Packit d37888
	*bsd*)
Packit d37888
	  AC_CHECK_LIB(kvm, kvm_open, KVM_LIBS=-lkvm, KVM_LIBS=)
Packit d37888
	  AC_SUBST(KVM_LIBS)
Packit d37888
Packit d37888
	  AC_CHECK_HEADERS(net/if_var.h,,, [
Packit d37888
#include <net/if.h>
Packit d37888
#include <sys/types.h>
Packit d37888
#include <sys/socket.h>])
Packit d37888
	  AC_MSG_CHECKING([for I4B])
Packit d37888
	  AC_TRY_COMPILE([
Packit d37888
#include <sys/types.h>
Packit d37888
#include <sys/socket.h>
Packit d37888
Packit d37888
#include <net/if.h>
Packit d37888
#include <net/if_types.h>
Packit d37888
Packit d37888
#ifdef HAVE_NET_IF_VAR_H
Packit d37888
#include <net/if_var.h>
Packit d37888
#endif
Packit d37888
Packit d37888
#include <net/netisr.h>
Packit d37888
#include <net/route.h>
Packit d37888
Packit d37888
#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__FreeBSD_kernel__)
Packit d37888
#include <net/if_sppp.h>
Packit d37888
#else
Packit d37888
#include <i4b/sppp/if_sppp.h>
Packit d37888
#endif
Packit d37888
],[
Packit d37888
	size_t size = sizeof (struct sppp);
Packit d37888
], have_i4b=yes, have_i4b=no)
Packit d37888
	  AC_MSG_RESULT($have_i4b)
Packit d37888
	  if test x$have_i4b = xyes; then
Packit d37888
	    AC_DEFINE(HAVE_I4B, 1, [Define if I4B is available])
Packit d37888
	    AC_MSG_CHECKING([for I4B accounting])
Packit d37888
	    AC_TRY_COMPILE([
Packit d37888
#include <sys/types.h>
Packit d37888
#include <sys/socket.h>
Packit d37888
Packit d37888
#include <net/if.h>
Packit d37888
#include <net/if_types.h>
Packit d37888
Packit d37888
#ifdef HAVE_NET_IF_VAR_H
Packit d37888
#include <net/if_var.h>
Packit d37888
#endif
Packit d37888
Packit d37888
#include <net/netisr.h>
Packit d37888
#include <net/route.h>
Packit d37888
Packit d37888
#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__FreeBSD_kernel__)
Packit d37888
#include <net/if_sppp.h>
Packit d37888
#else
Packit d37888
#include <i4b/sppp/if_sppp.h>
Packit d37888
#endif
Packit d37888
Packit d37888
#include <machine/i4b_acct.h>
Packit d37888
],[
Packit d37888
	size_t size = sizeof (struct i4bisppp_softc);
Packit d37888
], have_i4b_acct=yes, have_i4b_acct=no)
Packit d37888
	    AC_MSG_RESULT($have_i4b_acct)
Packit d37888
	    if test x$have_i4b_acct = xyes ; then
Packit d37888
	      AC_DEFINE(HAVE_I4B_ACCT, 1,
Packit d37888
                        [Define if I4B accounting is supported])
Packit d37888
	    else
Packit d37888
	      AC_WARN([
Packit d37888
*** I4B accounting disabled - you won't get any PPP statistics.
Packit d37888
*** Read "misc/i4b_acct.txt" in the LibGTop source directory
Packit d37888
*** to see how to enable it.])
Packit d37888
	    fi
Packit d37888
	  fi
Packit d37888
Packit d37888
	  AC_MSG_CHECKING(what we need to define to get struct msginfo)
Packit d37888
	  AC_CACHE_VAL(msginfo_cv_needs,
Packit d37888
	    msginfo_cv_needs=
Packit d37888
	    for def in nothing KERNEL _KERNEL; do
Packit d37888
	      AC_COMPILE_IFELSE([AC_LANG_SOURCE([#define $def
Packit d37888
#include <sys/types.h>
Packit d37888
#include <sys/ipc.h>
Packit d37888
#include <sys/msg.h>
Packit d37888
#include <stdio.h>
Packit d37888
Packit d37888
int
Packit d37888
main (void)
Packit d37888
{
Packit d37888
  struct msginfo mi;
Packit d37888
  mi.msgmax = 0;
Packit d37888
  return 0;
Packit d37888
}])],
Packit d37888
	        [
Packit d37888
	          msginfo_cv_needs=$def
Packit d37888
	          if test ${msginfo_cv_needs} = KERNEL; then
Packit d37888
	            AC_DEFINE(STRUCT_MSGINFO_NEEDS_KERNEL, 1,
Packit d37888
	              [Define to 1 if we need to define KERNEL to get 'struct msginfo'])
Packit d37888
	          elif test ${msginfo_cv_needs} = _KERNEL; then
Packit d37888
	            AC_DEFINE(STRUCT_MSGINFO_NEEDS__KERNEL, 1,
Packit d37888
	              [Define to 1 if we need to define _KERNEL to get 'struct msginfo'])
Packit d37888
	          fi
Packit d37888
	        ]
Packit d37888
	      )
Packit d37888
	      test -n "${msginfo_cv_needs}" && break
Packit d37888
	    done
Packit d37888
	  )
Packit d37888
	  AC_MSG_RESULT($msginfo_cv_needs)
Packit d37888
	  if test -z "${msginfo_cv_needs}"; then
Packit d37888
	    AC_MSG_ERROR([Could not find the definition of 'struct msginfo'])
Packit d37888
	  fi
Packit d37888
	  ;;
Packit d37888
	linux*)
Packit d37888
	  os_major_version=`uname -r | sed 's/-pre[[0-9]]*//' | \
Packit d37888
	    sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
Packit d37888
	  os_minor_version=`uname -r | sed 's/-pre[[0-9]]*//' | \
Packit d37888
	    sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
Packit d37888
	  os_micro_version=`uname -r | sed 's/-pre[[0-9]]*//' | \
Packit d37888
	    sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
Packit d37888
	  os_version_expr="$os_major_version 65536 * $os_minor_version 256 * + $os_micro_version + p q"
Packit d37888
Packit d37888
	  AC_CHECK_HEADERS(linux/version.h, have_linux_version_h=yes,
Packit d37888
	    have_linux_version_h=no)
Packit d37888
Packit d37888
	  if test x$have_linux_version_h = xyes ; then
Packit d37888
	    version_code=`cat /usr/include/linux/version.h | \
Packit d37888
	      grep \#define | grep LINUX_VERSION_CODE`
Packit d37888
	    os_version_code=`echo $version_code | \
Packit d37888
	      sed 's/^.*LINUX_VERSION_CODE[[ \t]]*\([[0-9]]*\).*$/\1/'`
Packit d37888
	  else
Packit d37888
	    os_version_code=`echo "$os_version_expr" | dc`
Packit d37888
	  fi
Packit d37888
Packit d37888
	  AC_MSG_CHECKING(for Linux kernel version code)
Packit d37888
	  AC_DEFINE_UNQUOTED(GLIBTOP_LINUX_VERSION_CODE, $os_version_code,
Packit d37888
              [Same as LINUX_VERSION_CODE either from <linux/version.h> or from the running kernel (if there are no configured kernel sources).])
Packit d37888
	  AC_MSG_RESULT($os_version_code)
Packit d37888
	  ;;
Packit d37888
	solaris*)
Packit d37888
	  os_major_version=`uname -r | sed 's/\([[0-9]]*\).\([[0-9]]*\)\.*\([[0-9]]*\)/\1/'`
Packit d37888
	  os_minor_version=`uname -r | sed 's/\([[0-9]]*\).\([[0-9]]*\)\.*\([[0-9]]*\)/\2/'`
Packit d37888
	  os_micro_version=`uname -r | sed 's/\([[0-9]]*\).\([[0-9]]*\)\.*\([[0-9]]*\)/\3/'`
Packit d37888
	  test -z "$os_micro_version" && os_micro_version=0
Packit d37888
	  os_version_expr="$os_major_version 10000 * $os_minor_version 100 * + $os_micro_version + p q"
Packit d37888
	  os_version_code=`echo "$os_version_expr" | dc`
Packit d37888
Packit d37888
	  AC_MSG_CHECKING(for Solaris release code)
Packit d37888
	  AC_DEFINE_UNQUOTED(GLIBTOP_SOLARIS_RELEASE, $os_version_code,
Packit d37888
              [Solaris release code (eg. 20501 for Solaris 2.5.1).])
Packit d37888
	  AC_MSG_RESULT($os_version_code)
Packit d37888
	  ;;
Packit d37888
	esac
Packit d37888
Packit d37888
	AC_MSG_CHECKING(whether we need libgtop)
Packit d37888
	AC_MSG_RESULT($libgtop_need_server)
Packit d37888
Packit d37888
	if test x$libgtop_need_server = xyes ; then
Packit d37888
	  AC_DEFINE(LIBGTOP_NEED_SERVER, 1, [Define if libgtop server is required])
Packit d37888
	fi
Packit d37888
Packit d37888
	AM_CONDITIONAL(LIBGTOP_NEED_SERVER, test x$libgtop_need_server = xyes)
Packit d37888
	AM_CONDITIONAL(LIBGTOP_SYSDEPS_PRIVATE_MOUNTLIST, test x$libgtop_sysdeps_private_mountlist = xyes)
Packit d37888
	AM_CONDITIONAL(LIBGTOP_SYSDEPS_PRIVATE_FSUSAGE, test x$libgtop_sysdeps_private_fsusage = xyes)
Packit d37888
])
Packit d37888