dnl
dnl Created by Jeff Allen, Tobi Oetiker, Blair Zajac
dnl
-dnl
+dnl Inspiration from http://autoconf-archive.cryp.to
dnl tell automake the this script is for rrdtool
-AC_INIT([rrdtool],[1.1.0])
+AC_INIT([rrdtool],[1.1.9901])
AC_CANONICAL_TARGET
AM_INIT_AUTOMAKE
-AM_CONFIG_HEADER(config.h)
-# AC_CONFIG_AUX_DIR(config)
+AC_CONFIG_HEADERS([config.h])
dnl all our local stuff like install scripts and include files
dnl is in there
AC_PREFIX_DEFAULT( /usr/local/rrdtool-1.1.0 )
dnl Minimum Autoconf version required.
-AC_PREREQ(2.58)
+AC_PREREQ(2.59)
dnl At the TOP of the HEADER
dnl Checks for libraries.
AC_CHECK_FUNC(acos, , AC_CHECK_LIB(m, acos))
-AC_DEFUN([EX_CHECK_ALL],
-[ AC_CHECK_LIB($1,$2,
- [ AC_CHECK_HEADER($3,[LIBS="-l$1 ${LIBS}"],[
- [ $echo "#include <$3>" | $CC -E - > /dev/null ]
- AC_MSG_ERROR([Adjust CPPFLAGS so that the $4 header $3 AND its dependencies gets found])
- ] ) ],
- [ AC_MSG_ERROR([
-############################################################################
-I could not find a working copy of $4. Check config.log for hints on why
-this is the case. Maybe you need to set LDFLAGS appropriately so that the
-linker can find lib$1. If you have not installed $4, you can get it
-either from its original home on
-
- $6
-
-Or you can find an archive copy on
-
- http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/libs
-
-The last tested version of $4 is $5.
-############################################################################
-])] )
-]
-)
-
+dnl add pic flag in any case this makes sure all our code is relocatable
+eval `./libtool --config | grep pic_flag`
+CFLAGS="$CFLAGS $pic_flag"
+
+dnl Checks for library functions.
+AC_FUNC_STRFTIME
+AC_FUNC_VPRINTF
+
+AC_C_BIGENDIAN
+
+dnl for each function found we get a definition in config.h
+dnl of the form HAVE_FUNCTION
+
+AC_CHECK_FUNCS(tzset opendir readdir chdir chroot getuid setlocale strerror strerror_r snprintf vsnprintf fpclass class fp_class isnan memmove strchr mktime getrusage gettimeofday)
+
+dnl HP-UX 11.00 does not have finite but does have isfinite as a macro so we need
+dnl actual code to check if this works
+AC_CHECK_FUNCS(fpclassify, ,
+ [AC_MSG_CHECKING(for fpclassify with <math.h>)
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]], [[float f = 0.0; fpclassify(f)]])],[AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_FPCLASSIFY)],[AC_MSG_RESULT(no)])])
+AC_CHECK_FUNCS(finite, ,
+ [AC_CHECK_FUNCS(isfinite, ,
+ [AC_MSG_CHECKING(for isfinite with <math.h>)
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]], [[float f = 0.0; isfinite(f)]])],[AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_ISFINITE)],[AC_MSG_RESULT(no)])])])
+AC_CHECK_FUNCS(isinf, ,
+ [AC_MSG_CHECKING(for isinf with <math.h>)
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]], [[float f = 0.0; isinf(f)]])],[AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_ISINF)],[AC_MSG_RESULT(no)])])
+
+AC_FULL_IEEE
+
dnl How the vertical axis label is printed
AC_ARG_VAR(RRDGRAPH_YLEGEND_ANGLE,
[Vertical label angle: 90.0 (default) or 270.0])
if test $enable_rrdcgi != no; then
EX_CHECK_ALL(cgi, cgiInit, cgi.h, cgilib, 0.5, http://www.infodrom.org/projects/cgilib)
fi
-EX_CHECK_ALL(art_lgpl_2, art_vpath_add_point, libart_lgpl/libart.h, libart_lgpl, 2.3.16, ftp://ftp.gnome.org/pub/GNOME/sources/libart_lgpl/2.3/)
+EX_CHECK_ALL(art_lgpl_2, art_vpath_add_point, libart_lgpl/libart.h, libart-2.0, 2.3.17, ftp://ftp.gnome.org/pub/GNOME/sources/libart_lgpl/2.3/)
EX_CHECK_ALL(z, zlibVersion, zlib.h, zlib, 1.2.1, http://www.gzip.org/zlib/)
-EX_CHECK_ALL(png, png_access_version_number, png.h, libpng, 1.2.5, http://prdownloads.sourceforge.net/libpng/)
-EX_CHECK_ALL(freetype, FT_Init_FreeType, ft2build.h, freetype, 2.1.5, http://prdownloads.sourceforge.net/freetype/)
-
-dnl Check for pthreads (pieces of code from Bert Driehuis)
+EX_CHECK_ALL(png, png_access_version_number, png.h, libpng, 1.2.8, http://prdownloads.sourceforge.net/libpng/)
+EX_CHECK_ALL(freetype, FT_Init_FreeType, ft2build.h, freetype2, 2.1.9, http://prdownloads.sourceforge.net/freetype/)
+
+if test "$EX_CHECK_ALL_ERR" = "YES"; then
+ AC_MSG_ERROR([Please fix the library issues listed above and try again.])
+fi
+
+AC_LANG_PUSH(C)
+dnl solaris has some odd define it need in order to propperly compile ctime_r
+AC_MSG_CHECKING([if ctime_r need special care to act posixly correct])
+AC_LINK_IFELSE(
+ AC_LANG_PROGRAM(
+ [[#include <time.h>]],
+ [[ctime_r(NULL,NULL,0)]]
+ ),
+ [ CPPFLAGS="$CPPFLAGS -D_POSIX_PTHREAD_SEMANTICS"
+ AC_LINK_IFELSE(
+ AC_LANG_PROGRAM(
+ [[#include <time.h>]],
+ [[ctime_r(NULL,NULL)]]
+ ),
+ [AC_MSG_RESULT([yes, this seems to be solaris style])],
+ [AC_MSG_ERROR([Can't figure how to compile ctime_r])]
+ )
+ ],
+ [ AC_LINK_IFELSE(
+ AC_LANG_PROGRAM(
+ [[#include <time.h>]],
+ [[ctime_r(NULL,NULL)]]
+ ),
+ [AC_MSG_RESULT(yes)],
+ [AC_MSG_ERROR([Can't figure how to compile ctime_r])]
+ )
+ ]
+)
+AC_LANG_POP(C)
+
+dnl Check for pthreads
+dnl http://autoconf-archive.cryp.to/acx_pthread.m4
AC_SUBST(MULTITHREAD_CFLAGS)
AC_SUBST(MULTITHREAD_LDFLAGS)
-AC_DEFUN(AC_CHECK_PTHREAD, [
- AC_MSG_CHECKING([pthreads: trying no flags])
- AC_CACHE_VAL(ac_cv_flag_pthread,[
- AC_TRY_LINK([
- #include <pthread.h>
- ],
- [pthread_exit(0);],
- eval "ac_cv_flag_pthread=no",
- [
- AC_MSG_RESULT([didn't work])
- AC_MSG_CHECKING([pthreads: trying to add -pthread])
- ac_save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -pthread"
- AC_TRY_LINK([
- #include <pthread.h>
- ],
- [pthread_exit(0);],
- eval "ac_cv_flag_pthread=yes",
- AC_MSG_ERROR([Can't figure out pthreads])
- )
- CFLAGS="$ac_save_CFLAGS"
- ])
- ])
-
- if test "$ac_cv_flag_pthread" = "no"; then
- AC_MSG_RESULT([good, -pthread flag not necessary])
- else
- AC_MSG_RESULT([adding -pthread flag])
- MULTITHREAD_CFLAGS="-pthread"
- fi
-
- AC_MSG_CHECKING([for libpthread])
- AC_CACHE_VAL(ac_cv_lib_pthread,[
- ac_save_LIBS="$LIBS"
- LIBS="-lpthread"
- AC_TRY_LINK([
- #include <pthread.h>
- ],
- [pthread_exit(0);],
- eval "ac_cv_lib_pthread=-lphtread",
- eval "ac_cv_lib_pthread=no"
- )
- LIBS="$ac_save_LIBS"
- ])
- if test "$ac_cv_lib_pthread" = "no"; then
- AC_MSG_RESULT([no -lpthread necessary])
- else
- AC_MSG_RESULT([adding -lpthread to LIBS])
- MULTITHREAD_LDFLAGS="-lpthread"
- fi
-])
AC_ARG_ENABLE(pthread,[ --disable-pthread disable multithread support],
[],[enable_pthread=yes])
if test $enable_pthread != no; then
- AC_CHECK_PTHREAD
+ ACX_PTHREAD([
+ MULTITHREAD_CFLAGS=$PTHREAD_CFLAGS
+ MULTITHREAD_LDFLAGS=$PTHREAD_LIBS
+ ],
+ [])
fi
+
+
AM_CONDITIONAL(BUILD_MULTITHREAD,[test $enable_pthread != no])
fi
fi
-dnl add pic flag in any case this makes sure all our code is relocatable
-CFLAGS="$CFLAGS "`grep pic_flag= libtool | head -1|sed -e 's/.*pic_flag=//' -e 's/"//g'`
-
-ZLIB_CFLAGS=$CFLAGS
-dnl it seems that hpux chockes on -fPIC for some reason
-case $target_os in
-*hpux*)
- ZLIB_CFLAGS=`echo $CFLAGS|sed -e 's/-fPIC/-fpic/g'`
-;;
-esac
-AC_SUBST(ZLIB_CFLAGS)
-
-dnl Checks for library functions.
-AC_FUNC_STRFTIME
-AC_FUNC_VPRINTF
-
-dnl for each function found we get a definition in config.h
-dnl of the form HAVE_FUNCTION
-
-AC_CHECK_FUNCS(tzset opendir readdir chdir chroot getuid setlocale strerror strerror_r snprintf vsnprintf fpclass class fp_class isnan memmove strchr mktime getrusage gettimeofday)
-
-dnl HP-UX 11.00 does not have finite but does have isfinite as a macro
-AC_CHECK_FUNCS(fpclassify, ,
- [AC_MSG_CHECKING(for fpclassify with <math.h>)
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]], [[float f = 0.0; fpclassify(f)]])],[AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_FPCLASSIFY)],[AC_MSG_RESULT(no)])])
-AC_CHECK_FUNCS(finite, ,
- [AC_CHECK_FUNCS(isfinite, ,
- [AC_MSG_CHECKING(for isfinite with <math.h>)
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]], [[float f = 0.0; isfinite(f)]])],[AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_ISFINITE)],[AC_MSG_RESULT(no)])])])
-AC_CHECK_FUNCS(isinf, ,
- [AC_MSG_CHECKING(for isinf with <math.h>)
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]], [[float f = 0.0; isinf(f)]])],[AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_ISINF)],[AC_MSG_RESULT(no)])])
-
dnl what does realloc do if it gets called with a NULL pointer
AC_CACHE_CHECK([if realloc can deal with NULL], rd_cv_null_realloc,
AC_DEFINE(NO_NULL_REALLOC)
fi
-dnl determine how to get IEEE math working
-dnl AC_IEEE(MESSAGE, set rd_cv_ieee_[var] variable, INCLUDES,
-dnl FUNCTION-BODY, [ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]])
-
-AC_C_BIGENDIAN
-
-AC_DEFUN([AC_IEEE],
-AC_MSG_CHECKING([if IEEE math works $1])
-AC_CACHE_VAL([rd_cv_ieee_$2],
-[AC_RUN_IFELSE([AC_LANG_SOURCE([[$3
-
-#if HAVE_MATH_H
-# include <math.h>
-#endif
-
-#if HAVE_FLOAT_H
-# include <float.h>
-#endif
-
-#if HAVE_IEEEFP_H
-# include <ieeefp.h>
-#endif
-
-#if HAVE_FP_CLASS_H
-# include <fp_class.h>
-#endif
-
-/* Solaris */
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASS))
-# define HAVE_ISINF 1
-# define isinf(a) (fpclass(a) == FP_NINF || fpclass(a) == FP_PINF)
-#endif
-
-/* Digital UNIX */
-#if (! defined(HAVE_ISINF) && defined(HAVE_FP_CLASS) && defined(HAVE_FP_CLASS_H))
-# define HAVE_ISINF 1
-# define isinf(a) (fp_class(a) == FP_NEG_INF || fp_class(a) == FP_POS_INF)
-#endif
-
-/* AIX */
-#if (! defined(HAVE_ISINF) && defined(HAVE_CLASS))
-# define HAVE_ISINF 1
-# define isinf(a) (class(a) == FP_MINUS_INF || class(a) == FP_PLUS_INF)
-#endif
-
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_PLUS_INF) && defined(FP_MINUS_INF))
-# define HAVE_ISINF 1
-# define isinf(a) (fpclassify(a) == FP_MINUS_INF || fpclassify(a) == FP_PLUS_INF)
-#endif
-
-#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_INFINITE))
-# define HAVE_ISINF 1
-# define isinf(a) (fpclassify(a) == FP_INFINITE)
-#endif
-
-#include <stdio.h>
-int main(void){
- double nan,inf,c,zero;
- $4;
- /* some math to see if we get a floating point exception */
- zero=sin(0.0); /* don't let the compiler optimize us away */
- nan=0.0/zero; /* especially here */
- inf=1.0/zero; /* and here. I want to know if it can do the magic */
- /* at run time without sig fpe */
- c = inf + nan;
- c = inf / nan;
- if (! isnan(nan)) {printf ("not isnan(NaN) ... "); return 1;}
- if (nan == nan) {printf ("nan == nan ... "); return 1;}
- if (! isinf(inf)) {printf ("not isinf(oo) ... "); return 1;}
- if (! isinf(-inf)) {printf ("not isinf(-oo) ... "); return 1;}
- if (! inf > 0) {printf ("not inf > 0 ... "); return 1;}
- if (! -inf < 0) {printf ("not -inf < 0 ... "); return 1;}
- return 0;
- }]])],[rd_cv_ieee_$2=yes],[rd_cv_ieee_$2=no],[:])])
-dnl these we run regardles is cached or not
-if test x${rd_cv_ieee_$2} = "xyes"; then
- AC_MSG_RESULT(yes)
- $5
-else
- AC_MSG_RESULT(no)
- $6
-fi
-
-)
-
-_cflags=${CFLAGS}
-AC_IEEE([out of the box], works, , , ,
- [CFLAGS="$_cflags -ieee"
- AC_IEEE([with the -ieee switch], switch, , , ,
- [CFLAGS="$_cflags -qfloat=nofold"
- AC_IEEE([with the -qfloat=nofold switch], nofold, , , ,
- [CFLAGS="$_cflags -w -qflttrap=enable:zerodivide"
- AC_IEEE([with the -w -qflttrap=enable:zerodivide], flttrap, , , ,
- [CFLAGS="$_cflags -mieee"
- AC_IEEE([with the -mieee switch], mswitch, , , ,
- [CFLAGS="$_cflags -q float=rndsngl"
- AC_IEEE([with the -q float=rndsngl switch], qswitch, , , ,
- [CFLAGS="$_cflags -OPT:IEEE_NaN_inf=ON"
- AC_IEEE([with the -OPT:IEEE_NaN_inf=ON switch], ieeenaninfswitch, , , ,
- [CFLAGS="$_cflags -OPT:IEEE_comparisons=ON"
- AC_IEEE([with the -OPT:IEEE_comparisons=ON switch], ieeecmpswitch, , , ,
- [CFLAGS=$_cflags
- AC_IEEE([with fpsetmask(0)], mask,
- [#include <floatingpoint.h>], [fpsetmask(0)],
- [AC_DEFINE(MUST_DISABLE_FPMASK)
- PERLFLAGS="CCFLAGS=-DMUST_DISABLE_FPMASK"],
- [AC_IEEE([with signal(SIGFPE,SIG_IGN)], sigfpe,
- [#include <signal.h>], [signal(SIGFPE,SIG_IGN)],
- [AC_DEFINE(MUST_DISABLE_SIGFPE)
- PERLFLAGS="CCFLAGS=-DMUST_DISABLE_SIGFPE"],
- AC_MSG_ERROR([
-Your Compiler does not do propper IEEE math ... Please find out how to
-make IEEE math work with your compiler and let me know (oetiker@ee.ethz.ch).
-Check config.log to see what went wrong ...
-]))])])])])])])])])])
-
-
AC_CONFIG_FILES([examples/shared-demo.pl \
examples/piped-demo.pl \
examples/stripes.pl \
examples/bigtops.pl \
examples/minmax.pl \
examples/cgi-demo.cgi \
+ examples/4charts.pl \
examples/Makefile \
doc/Makefile \
src/Makefile \