dnl dnl $Id: configure.in 907 2007-12-14 23:35:57Z bernardli $ dnl dnl "Copyright (c) 2001 by Matt Massie and The Regents of the University dnl of California. All rights reserved." dnl dnl Permission to use, copy, modify, and distribute this software and its dnl documentation for any purpose, without fee, and without written agreement is dnl hereby granted, provided that the above copyright notice and the following dnl two paragraphs appear in all copies of this software. dnl dnl IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR dnl DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT dnl OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF dnl CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. dnl dnl THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, dnl INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY dnl AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS dnl ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO dnl PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. dnl AC_REVISION([$Revision: 907 $]) AC_INIT(gmond/gmond.c) AC_CONFIG_AUX_DIR(config) ### BEGIN RELEASE VARIABLES ############################ # On making a release... # If this release is just a minor bug fix release, increment # GANGLIA_MICRO_VERSION. # # If this release adds significant features or breaks backward compatibility, # increment GANGLIA_MINOR_VERSION and set GANGLIA_MICRO_VERSION to 0 (zero). # # If this release is a complete restructuring of # the overall architecture of ganglia, # increment GANGLIA_MAJOR_VERSION and set # GANGLIA_MINOR_VERSION and GANGLIA_MICRO_VERSION # to 0 (zero) GANGLIA_RELEASE_NAME="Foss" GANGLIA_MAJOR_VERSION=3 GANGLIA_MINOR_VERSION=0 GANGLIA_MICRO_VERSION=6 # If we are releasing a snapshot (beta), set GANGLIA_SNAPSHOT to "yes" # If we are creating an official release, set it to "no" GANGLIA_SNAPSHOT="no" # If there are any changes to libganglia in this release, you need to... # LIBGANGLIA_MICRO_VERSION += 1; # LIBGANGLIA_INTERFACE_AGE += 1; # LIBGANGLIA_BINARY_AGE += 1; # if any functions have been added, set LIBGANGLIA_INTERFACE_AGE to 0. # if backwards compatibility has been broken, # set LIBGANGLIA_BINARY_AGE _and_ LIBGANGLIA_INTERFACE_AGE to 0. LIBGANGLIA_MICRO_VERSION=0 LIBGANGLIA_INTERFACE_AGE=0 LIBGANGLIA_BINARY_AGE=0 ### END RELEASE VARIABLES ############################# GANGLIA_SNAPSHOT_DATE=`date +%Y%m%d%H%M` if test "$GANGLIA_SNAPSHOT" != yes; then GANGLIA_VERSION=$GANGLIA_MAJOR_VERSION.$GANGLIA_MINOR_VERSION.$GANGLIA_MICRO_VERSION else GANGLIA_VERSION=$GANGLIA_MAJOR_VERSION.$GANGLIA_MINOR_VERSION.$GANGLIA_MICRO_VERSION.$GANGLIA_SNAPSHOT_DATE fi AM_INIT_AUTOMAKE(ganglia, $GANGLIA_VERSION) AC_SUBST(GANGLIA_MAJOR_VERSION) AC_SUBST(GANGLIA_MINOR_VERSION) AC_SUBST(GANGLIA_MICRO_VERSION) AC_SUBST(GANGLIA_VERSION) AC_SUBST(GANGLIA_RELEASE_NAME) AC_SUBST(LIBGANGLIA_INTERFACE_AGE) AC_SUBST(LIBGANGLIA_BINARY_AGE) # libtool versioning # the LT_RELEASE variable is passed with the --release option... it is just # a way to tie our internal package library with the release numbers of ganglia in general LT_RELEASE=$GANGLIA_VERSION # The most current libganglia interface is MICRO - INTERFACE LT_CURRENT=`expr $LIBGANGLIA_MICRO_VERSION - $LIBGANGLIA_INTERFACE_AGE` # The implementation number of the current interface is simply LIBGANGLIA_INTERFACE_AGE LT_REVISION=$LIBGANGLIA_INTERFACE_AGE # The different between the new and oldest interfaces this library implements is BINARY-INTERFACE LT_AGE=`expr $LIBGANGLIA_BINARY_AGE - $LIBGANGLIA_INTERFACE_AGE` AC_SUBST(LT_RELEASE) AC_SUBST(LT_CURRENT) AC_SUBST(LT_REVISION) AC_SUBST(LT_AGE) # Define version stuff AC_DEFINE_UNQUOTED(GANGLIA_MAJOR_VERSION, $GANGLIA_MAJOR_VERSION, GANGLIA_MAJOR_VERSION) AC_DEFINE_UNQUOTED(GANGLIA_MINOR_VERSION, $GANGLIA_MINOR_VERSION, GANGLIA_MINOR_VERSION) AC_DEFINE_UNQUOTED(GANGLIA_MICRO_VERSION, $GANGLIA_MICRO_VERSION, GANGLIA_MICRO_VERSION) ######################## AC_CANONICAL_HOST AM_CONFIG_HEADER(config.h) dnl Install with /usr are the root by default AC_PREFIX_DEFAULT(/usr) dnl The following cpu_vendor_os string goes into config.h. dnl AC_DEFINE_UNQUOTED(HOST_OS, "$host_os", HOST_OS) AC_DEFINE_UNQUOTED(CPU_VENDOR_OS, "$host", CPU_VENDOR_OS) AC_CYGWIN # Configuring the source in the ./srclib... nl=' ' ganglia_popdir=`pwd` echo $ac_n "${nl}Configuring libmetrics ...${nl}" cd libmetrics && ./configure --cache-file=$ganglia_popdir/config.cache cd $ganglia_popdir echo $ac_n "${nl}Configuring expat ...${nl}" cd srclib/expat && ./configure --cache-file=$ganglia_popdir/config.cache cd $ganglia_popdir echo $ac_n "${nl}Configuring apr ...${nl}" cd srclib/apr && ./configure --cache-file=$ganglia_popdir/config.cache cd $ganglia_popdir echo $ac_n "${nl}Configuring libconfuse ...${nl}" cd srclib/confuse && ./configure --cache-file=$ganglia_popdir/config.cache --disable-nls cd $ganglia_popdir dnl ################################################################## dnl Checks for programs. dnl AC_PROG_CC AC_PROG_RANLIB AM_PROG_LIBTOOL dnl ################################################################## dnl Special parameters dnl AC_ARG_WITH( gmetad, [ --with-gmetad compile and install the Ganglia Meta Daemon], if test "$withval" = yes; then gmetad=yes; fi) AM_CONDITIONAL(BUILD_GMETAD, test x$gmetad = xyes) AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging output and compile options], [ CFLAGS="$CFLAGS -ggdb" AC_DEFINE(DEBUG, 1, DEBUG)]) # Turn off optimizations when debugging. #[ CFLAGS="$CFLAGS -O2" # AC_DEFINE(DEBUG, 0, DEBUG)]) AC_ARG_ENABLE(gexec, [ --enable-gexec turn on gexec support (platform-specific) ], AC_DEFINE(SUPPORT_GEXEC, 1, SUPPORT_GEXEC), AC_DEFINE(SUPPORT_GEXEC, 0, SUPPORT_GEXEC)) AC_ARG_ENABLE(pedantic, [ --enable-pedantic turn on pedantic mode during compile], [ CFLAGS="$CFLAGS --pedantic" ],) AC_ARG_ENABLE(memcheck, [ --enable-memcheck turn on memory checking during compile note: requires mpatrol from http://www.cbmamiga.demon.co.uk/mpatrol/], [ enable_memcheck="yes" ]) dnl ################################################################## dnl Checks for libraries. dnl The order of these tests is the *reverse* order of the libraries in dnl the LIBS variable that is constructed: each new one gets prepended, dnl not appended. dnl AC_CHECK_LIB(pthread, pthread_create) dnl if test "$ac_cv_lib_pthread_pthread_create" = yes ; then dnl CFLAGS="$CFLAGS -D_REENTRANT" dnl else AC_CHECK_LIB(pthreads, pthread_create) dnl if test "$ac_cv_lib_pthreads_pthread_create" = yes ; then dnl CFLAGS="$CFLAGS -D_REENTRANT" dnl fi dnl fi if test "$gmetad" = yes ; then AC_CHECK_LIB(rrd, rrd_create, [echo "The ganglia graphs are created using RRDTool (http://www.rrdtool.org/)"], [echo "rrd lib not found"], [-lm]) AC_CHECK_HEADERS(rrd.h) if test "$ac_cv_lib_rrd_rrd_create" != yes; then echo echo "The Ganglia Meta Daemon uses the Round-Robin Database Tool (rrdtool)" echo "for storing historical information. You have chosen to compile the " echo "monitoring core with gmetad but librrd.a could not be found. Please" echo "visit http://www.rrdtool.org/, download rrdtool and then try again" echo echo "NOTE: the rrdtool library (librrd) will NOT need to be installed on " echo "every machine running gmetad only the machine you are compiling gmetad" echo "on since librrd is statically linked." echo exit; fi fi AC_CHECK_LIB(rpc, xdr_string) AC_CHECK_LIB(socket, socket) AC_CHECK_LIB(nsl, inet_addr) AC_CHECK_LIB(nsl, gethostbyaddr_r) AC_CHECK_LIB(resolv, inet_aton) AC_CHECK_LIB(kstat, kstat_open) AC_CHECK_LIB(kvm, kvm_open) AC_CHECK_LIB(odm, odm_initialize) AC_CHECK_LIB(cfg, _system_configuration) AC_CHECK_LIB(perfstat, perfstat_cpu_total) AC_CHECK_LIB(dl, dlopen) dnl AC_CHECK_LIB(crypto, RSA_sign) dnl if test "$ac_cv_lib_crypto_RSA_sign" = no; then dnl echo "$PACKAGE $VERSION requires IPv4 OpenSSL." dnl echo "See http://www.openssl.org/." dnl exit; dnl fi dnl ################################################################## dnl Checks for header files. dnl dnl Check for stdlib.h stdarg.h string.h float.h AC_HEADER_STDC AC_CHECK_HEADERS(syslog.h pthread.h fcntl.h signal.h sys/time.h sys/types.h sys/stat.h sys/socket.h sys/ioctl.h netinet/in.h arpa/inet.h net/if.h netinet/tcp.h unistd.h stropts.h sys/sockio.h ctype.h errno.h netdb.h stdio.h sys/uio.h sys/wait.h sys/un.h sys/select.h sys/filio.h getopt.h net/if_dl.h net/raw.h poll.h) AC_CHECK_HEADERS(inttypes.h limits.h sys/param.h sys/mount.h sys/vfs.h sys/statfs.h sys/statvfs.h) dnl ################################################################## dnl Checks for typedefs. dnl dnl AC_TYPE_SIZE_T AC_HEADER_TIME dnl AC_SEARCH_TYPE is a custom macro in acinclude.m4 AC_SEARCH_TYPE(uchar_t, unsigned char) AC_SEARCH_TYPE(int8_t, signed char) AC_SEARCH_TYPE(uint8_t, unsigned char) AC_SEARCH_TYPE(int16_t, signed short) AC_SEARCH_TYPE(uint16_t, unsigned short) AC_SEARCH_TYPE(int32_t, signed int) AC_SEARCH_TYPE(uint32_t, unsigned int) AC_SEARCH_TYPE(size_t, unsigned int) AC_SEARCH_TYPE(ssize_t, signed int) AC_SEARCH_TYPE(socklen_t, unsigned int) AC_SEARCH_TYPE(time_t, long) dnl AC_CHECK_SIZEOF(char) dnl AC_CHECK_SIZEOF(short) dnl AC_CHECK_SIZEOF(int) dnl AC_CHECK_SIZEOF(long) dnl AC_CHECK_SIZEOF(void *) dnl ################################################################## dnl Check for structure definitions. dnl dnl ################################################################## dnl Check the compiler characteristics dnl dnl Don't need this now that all data is send in XDR AC_C_BIGENDIAN dnl ################################################################## dnl Checks for library functions. dnl dnl AC_FUNC_MEMCMP dnl ################################################################## dnl Check for function prototypes in headers. dnl AC_CHECK_FUNCS(getopt_long inet_ntop strdup) dnl AC_CHECK_FUNC(getopt_long) dnl AC_CHECK_FUNC(pthread_rwlock_rdlock, dnl [AC_DEFINE(HAVE_PTHREAD_RWLOCK, 1)]) dnl ################################################################## dnl Check for system services. dnl ################################################################## dnl If the compiler is gcc, enable all warnings. Main purpose is to dnl catch any function call where the function has not been prototyped. dnl dnl Add "-Wcast-qual again later"... dnl if test "$ac_cv_prog_gcc" = yes; then if test "$ac_cv_gcc" = yes; then CFLAGS="$CFLAGS -Wall -Wshadow -Wpointer-arith -Wcast-align -Wstrict-prototypes" fi if test "$enable_memcheck" = yes; then echo "Setting up for memory checking via mpatrol" CFLAGS="$CFLAGS -fcheck-memory-usage " LDFLAGS="$LDFLAGS -lmpatrol -lbfd -liberty " fi dnl Always use -Wall, even though its annoying. Like eating your vegetables. CFLAGS="$CFLAGS -Wall" dnl Some system-specific stuff ... dnl Some operating systems require additional flags in order to get all dnl the definitions that we're looking for in some system headers. dnl default VARSTATEDIR to /var/lib since that's the traditional location. dnl varstatedir="/var/lib" case "$host" in *linux*) CFLAGS="$CFLAGS -D_REENTRANT" AC_DEFINE(LINUX, 1, LINUX) dnl dnl For fsusage.c - disk usage. dnl AC_DEFINE(STAT_STATVFS, 1, STAT_STATVFS) AC_DEFINE(SUPPORT_GEXEC, 1, SUPPORT_GEXEC) ;; *ia64-*hpux*) CFLAGS="$CFLAGS -D_PSTAT64 -D_HPUX_SOURCE" LIBS="-lpthread $LIBS" AC_DEFINE(SUPPORT_GEXEC, 0, SUPPORT_GEXEC) AC_DEFINE(IA64,1,IA64) AC_DEFINE(HPUX,1,HPUX);; *aix*) CFLAGS="$CFLAGS -D_ALL_SOURCE -DAIX" AC_DEFINE(SUPPORT_GEXEC, 0, SUPPORT_GEXEC) if test "$ac_cv_lib_perfstat_perfstat_cpu_total" = yes ; then CFLAGS="$CFLAGS -DHAVE_PERFSTAT" else echo "libperfstat not detected." echo "For AIX 5 you need to install bos.perf.libperfstat" fi AC_DEFINE(AIX, 1, AIX);; *hpux*) CFLAGS="$CFLAGS -D_HPUX_SOURCE" LIBS="-lpthread $LIBS" AC_DEFINE(SUPPORT_GEXEC, 0, SUPPORT_GEXEC) AC_DEFINE(HPUX,1,HPUX);; *irix*) AC_DEFINE(SUPPORT_GEXEC, 0, SUPPORT_GEXEC) CFLAGS="$CFLAGS -D_IRIX_SOURCE" AC_DEFINE(IRIX,1,IRIX);; *osf*) metric_source="osf.c" CFLAGS="$CFLAGS -D_SOCKADDR_LEN" AC_DEFINE(OSF,1,OSF);; *darwin*) AC_DEFINE(DARWIN,1,DARWIN);; *solaris*) echo " *** WARNING: Please make sure you use a 64-bit compiler, linker and *** " echo " *** library set if you are running a 64-bit Solaris kernel! This *** " echo " *** applies if you are running Solaris 7 or later! *** " AC_DEFINE(SUPPORT_GEXEC, 0, SUPPORT_GEXEC) if test "$ac_cv_prog_gcc" = yes; then CFLAGS="$CFLAGS -D__EXTENSIONS__ -D_POSIX_C_SOURCE=199506L -DHAVE_STRERROR" else CFLAGS="$CFLAGS -D__STDC__ -D_POSIX_C_SOURCE=199506L -DHAVE_STRERROR" fi AC_DEFINE(SOLARIS,1,SOLARIS);; *freebsd*) CFLAGS="-pthread $CFLAGS -D_REENTRANT" AC_DEFINE(SUPPORT_GEXEC, 0, SUPPORT_GEXEC) varstatedir="/var/db" osreldate=`awk '/^\#define[[:space:]]*__FreeBSD_version/ { print $3 }' /usr/include/osreldate.h` if test $osreldate -lt 502102; then CFLAGS="-pthread $CFLAGS -D_REENTRANT" fi AC_DEFINE(FREEBSD, 1, FREEBSD);; *netbsd*) AC_DEFINE(SUPPORT_GEXEC, 0, SUPPORT_GEXEC) varstatedir="/var/db" AC_DEFINE(NETBSD, 1, NETBSD);; *openbsd*) AC_DEFINE(SUPPORT_GEXEC, 0, SUPPORT_GEXEC) varstatedir="/var/db" AC_DEFINE(OPENBSD, 1, OPENBSD);; *cygwin*) LDFLAGS="-liphlpapi" AC_DEFINE(CYGWIN, 1, CYGWIN) esac dnl Define VARSTATEDIR in config.h dnl AC_SUBST(varstatedir) AC_DEFINE_UNQUOTED(VARSTATEDIR, "$varstatedir", VARSTATEDIR) AC_OUTPUT(Makefile ganglia-config srclib/Makefile tests/Makefile ganglia.spec gmetad/Makefile lib/Makefile gmond/Makefile gmond/gstat/Makefile gmetric/Makefile web/version.php) echo "" echo "Welcome to.." echo " ______ ___" echo " / ____/___ _____ ____ _/ (_)___ _" echo " / / __/ __ \`/ __ \/ __ \`/ / / __ \`/" echo " / /_/ / /_/ / / / / /_/ / / / /_/ /" echo " \____/\__,_/_/ /_/\__, /_/_/\__,_/" echo " /____/" echo "" echo "Copyright (c) 2005 University of California, Berkeley" echo "" echo "Version: $GANGLIA_VERSION ($GANGLIA_RELEASE_NAME)" echo "Library: Release $LT_RELEASE $LT_CURRENT:$LT_REVISION:$LT_AGE" echo "" echo "Type \"make\" to compile."