237 lines
6.1 KiB
Plaintext
237 lines
6.1 KiB
Plaintext
# process this file with autoconf >= 2.5 to produce a configure script.
|
|
# report bugs and comments to wavexx@users.sf.net
|
|
|
|
# initialization
|
|
AC_INIT(wmnd, 0.4.17, wavexx@users.sf.net)
|
|
AC_CONFIG_SRCDIR(src/wmnd.c)
|
|
AC_CANONICAL_TARGET
|
|
AM_INIT_AUTOMAKE
|
|
AM_CONFIG_HEADER(config.h)
|
|
|
|
# C compiler rules
|
|
AC_LANG([C])
|
|
AC_PROG_CC
|
|
AC_HEADER_STDC
|
|
AC_HEADER_TIME
|
|
AC_CHECK_HEADERS(sys/time.h)
|
|
AC_CHECK_HEADERS(net/ppp_defs.h)
|
|
|
|
# extend the namespace when building with strict c99 but do so conditionally,
|
|
# since it breaks FreeBSD's 8.1 which hasn't proper namespace separation.
|
|
AC_CHECK_TYPE([u_int],, [
|
|
AC_DEFINE(_BSD_SOURCE,, [BSD function declarations])
|
|
])
|
|
AC_CHECK_DECLS([strdup, getopt],, [
|
|
AC_DEFINE(_XOPEN_SOURCE, 600, [XOPEN function declarations])
|
|
])
|
|
|
|
# math library
|
|
AC_SEARCH_LIBS(sin, m,, [AC_MSG_ERROR(math library is required)])
|
|
|
|
# X libraries
|
|
AC_PATH_XTRA
|
|
CFLAGS="$CFLAGS $X_CFLAGS"
|
|
LDFLAGS="$LDFLAGS $X_PRE_LIBS $X_LIBS $X_EXTRA_LIBS"
|
|
|
|
# check for XPM headers, libraries
|
|
AC_HAVE_LIBRARY(X11,, [AC_MSG_ERROR(X11 library is required)])
|
|
AC_HAVE_LIBRARY(Xext,, [AC_MSG_ERROR(Xext library is required)])
|
|
AC_HAVE_LIBRARY(Xpm,, [AC_MSG_ERROR(Xpm library is required)])
|
|
|
|
# check for standard typedefs
|
|
AC_TYPE_PID_T
|
|
AC_TYPE_SIGNAL
|
|
AC_TYPE_SIZE_T
|
|
|
|
|
|
# like AC_ARG_ENABLE, but with COMMON SENSE(tm) added
|
|
AC_DEFUN([ARG_ENABLE],
|
|
[
|
|
AC_ARG_ENABLE([$1], [$2],, [enableval="no"])
|
|
AS_IF([test "$enableval" = "no"], [$4], [$3])
|
|
])
|
|
|
|
AC_DEFUN([ARG_DISABLE],
|
|
[
|
|
AC_ARG_ENABLE([$1], [$2],, [enableval="yes"])
|
|
AS_IF([test "$enableval" = "no"], [$3], [$4])
|
|
])
|
|
|
|
|
|
# drivers selection
|
|
ARG_ENABLE(drivers,
|
|
[AS_HELP_STRING(
|
|
[--enable-drivers="..."],
|
|
[manually selects drivers. defaults to auto])],
|
|
[
|
|
ac_drivers="$enable_drivers"
|
|
AC_MSG_NOTICE([overriding driver autodetection: $ac_drivers])
|
|
], [
|
|
# let the user specify an empty set
|
|
ac_drivers="auto"
|
|
])
|
|
|
|
# driver detection block: skip this block if the user manually specify
|
|
# drivers on the command line
|
|
AS_IF([test "$ac_drivers" = "auto"],
|
|
[
|
|
# reset the state variable
|
|
ac_drivers=""
|
|
|
|
# linux_proc
|
|
AC_CHECK_FILE(/proc/net/dev,
|
|
[ac_drivers="$ac_drivers linux_proc"]
|
|
)
|
|
|
|
# freebsd_sysctl
|
|
AC_MSG_CHECKING(for FreeBSD sysctl availability)
|
|
AC_PREPROC_IFELSE([AC_LANG_SOURCE(
|
|
[
|
|
#include <net/if_mib.h>
|
|
#include <sys/sysctl.h>
|
|
])], [
|
|
ac_drivers="$ac_drivers freebsd_sysctl"
|
|
AC_MSG_RESULT(yes)
|
|
], [
|
|
AC_MSG_RESULT(no)
|
|
])
|
|
|
|
# solaris_fpppd
|
|
AC_CHECK_HEADER(sys/stropts.h,
|
|
[AC_CHECK_FILE(/dev/ppp,
|
|
[ac_drivers="$ac_drivers solaris_fpppd"]
|
|
)]
|
|
)
|
|
|
|
# solaris_kstat
|
|
AC_CHECK_HEADER(kstat.h,
|
|
[AC_SEARCH_LIBS(kstat_open, kstat,
|
|
[ac_drivers="$ac_drivers solaris_kstat"]
|
|
)]
|
|
)
|
|
|
|
# netbsd_ioctl
|
|
AC_MSG_CHECKING(for NetBSD ioctl availability)
|
|
AC_COMPILE_IFELSE([AC_LANG_SOURCE(
|
|
[
|
|
#include <sys/types.h>
|
|
#include <sys/sockio.h>
|
|
#include <sys/ioctl.h>
|
|
#include <net/if.h>
|
|
#include <ifaddrs.h>
|
|
|
|
void aFunc() { ioctl(0, SIOCGIFDATA, NULL); }
|
|
])], [
|
|
ac_drivers="$ac_drivers netbsd_ioctl"
|
|
AC_MSG_RESULT(yes)
|
|
], [
|
|
AC_MSG_RESULT(no)
|
|
])
|
|
|
|
# irix_pcp
|
|
AC_CHECK_HEADER(pcp/pmapi.h,
|
|
[AC_SEARCH_LIBS(pmLookupName, pcp,
|
|
[ac_drivers="$ac_drivers irix_pcp"]
|
|
)]
|
|
)
|
|
|
|
# generic_snmp
|
|
AC_CHECK_HEADER(net-snmp/net-snmp-config.h,
|
|
[AC_SEARCH_LIBS(snmp_sess_init, [snmp netsnmp],
|
|
[ac_drivers="$ac_drivers generic_snmp"]
|
|
)]
|
|
)
|
|
])
|
|
for driver in $ac_drivers;
|
|
do
|
|
# we must repeat the define constants many times
|
|
# to make autoheader automatically recognize them all
|
|
case "$driver" in
|
|
linux_proc) AC_DEFINE(USE_LINUX_PROC, "linux_proc", [enable linux proc driver]);;
|
|
freebsd_sysctl) AC_DEFINE(USE_FREEBSD_SYSCTL, "freebsd_sysctl", [enable freebsd sysctl driver]);;
|
|
netbsd_ioctl) AC_DEFINE(USE_NETBSD_IOCTL, "netbsd_ioctl", [enable nebsd ioctl driver]);;
|
|
solaris_fpppd) AC_DEFINE(USE_SOLARIS_FPPPD, "solaris_fpppd", [solaris streams pppd]);;
|
|
solaris_kstat) AC_DEFINE(USE_SOLARIS_KSTAT, "solaris_kstat", [enable solaris kstat driver]);;
|
|
irix_pcp) AC_DEFINE(USE_IRIX_PCP, "irix_pcp", [IRIX Performance Co-Pilot]);;
|
|
generic_snmp) AC_DEFINE(USE_GENERIC_SNMP, "generic_snmp", [Generic SNMP module]);;
|
|
*) AC_MSG_ERROR([unknown driver name $driver]);;
|
|
esac
|
|
|
|
drivers="$drivers $driver"
|
|
done
|
|
|
|
|
|
# Dummy driver
|
|
ARG_DISABLE(dummy-driver,
|
|
[AS_HELP_STRING([--disable-dummy-driver],
|
|
[disable the dummy driver])],,
|
|
[
|
|
drivers="$drivers testing_dummy"
|
|
AC_DEFINE(USE_TESTING_DUMMY, "testing_dummy", [fallback driver])
|
|
])
|
|
|
|
# trend support
|
|
ARG_DISABLE(trend,
|
|
[AS_HELP_STRING([--disable-trend], [disable trend support])],,
|
|
[AC_DEFINE(USE_TREND,, [trend support])]
|
|
)
|
|
|
|
# debugging
|
|
ARG_ENABLE(debug,
|
|
[AS_HELP_STRING(
|
|
[--enable-debug],
|
|
[find the meaning of life, and everything])],,
|
|
[AC_DEFINE(NDEBUG, 42, [shameless(tm)])]
|
|
)
|
|
|
|
# display modes selection
|
|
ARG_ENABLE(modes,
|
|
[AS_HELP_STRING(
|
|
[--enable-modes="..."],
|
|
[manually select visual modes. defaults to all])],,
|
|
[enable_modes="traditional mgraph waveform wmwave wmnet sepgraphs twisted charts needle lines"]
|
|
)
|
|
for mode in $enable_modes;
|
|
do
|
|
# we must repeat the define constants many times
|
|
# to make autoheader automatically recognize them all
|
|
case "$mode" in
|
|
traditional) AC_DEFINE(USE_DRW_TRADITIONAL,, [traditional drawing mode]);;
|
|
mgraph) AC_DEFINE(USE_DRW_MGRAPH,, [mgraph drawing mode]);;
|
|
waveform) AC_DEFINE(USE_DRW_WAVEFORM,, [waveform drawing mode]);;
|
|
wmwave) AC_DEFINE(USE_DRW_WMWAVE,, [wmwave drawing mode]);;
|
|
wmnet) AC_DEFINE(USE_DRW_WMNET,, [wmnet drawing mode]);;
|
|
sepgraphs) AC_DEFINE(USE_DRW_SEPGRAPHS,, [sepgraphs drawing mode]);;
|
|
twisted) AC_DEFINE(USE_DRW_TWISTED,, [twisted drawing mode]);;
|
|
charts) AC_DEFINE(USE_DRW_CHARTS,, [charts drawing mode]);;
|
|
needle) AC_DEFINE(USE_DRW_NEEDLE,, [needle drawing mode]);;
|
|
lines) AC_DEFINE(USE_DRW_LINES,, [lines drawing mode]);;
|
|
*) AC_MSG_ERROR([unknown display mode $mode]);;
|
|
esac
|
|
|
|
dspmodes="$dspmodes $mode"
|
|
done
|
|
|
|
|
|
# check for inline statement useability
|
|
AC_C_INLINE
|
|
|
|
# check for basic type sizes
|
|
AC_CHECK_SIZEOF(unsigned int)
|
|
AC_CHECK_SIZEOF(unsigned long)
|
|
|
|
# output files
|
|
AC_CONFIG_FILES([
|
|
Makefile
|
|
src/Makefile
|
|
])
|
|
|
|
AC_OUTPUT
|
|
|
|
AC_MSG_NOTICE([configuration:
|
|
|
|
disable trend support: ${disable_trend:-no}
|
|
enabled drivers: ${drivers:- none}
|
|
enabled display modes:${dspmodes:- none}
|
|
])
|