X-Git-Url: https://git.octo.it/?p=rrdtool.git;a=blobdiff_plain;f=configure.ac;h=e9a0467f3a0084900fd4319b4b81393eb091cbf4;hp=3784061529824d15ec3918b8301eb7bf660254de;hb=eb8ef47ab8f2f2932a6854a6b678f8edbca3380c;hpb=8845a95ca394cd3215e6d677c1a206124b4ab38c diff --git a/configure.ac b/configure.ac index 3784061..e9a0467 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,6 @@ dnl RRDtool AutoConf script ... dnl --------------------------- +dnl $Id$ dnl dnl Created by Jeff Allen, Tobi Oetiker, Blair Zajac dnl @@ -7,35 +8,42 @@ dnl Inspiration from http://autoconf-archive.cryp.to dnl tell automake the this script is for rrdtool +dnl Minimum Autoconf version required. +AC_PREREQ(2.59) + dnl the official version number is dnl a.b.c -AC_INIT([rrdtool],[1.3rc7]) +AC_INIT([rrdtool],[1.3.999]) dnl for testing a numberical version number comes handy dnl the released version are dnl a.bccc dnl the devel versions will be something like dnl a.b999yymmddhh -NUMVERS=1.299908053100 +NUMVERS=1.3999 AC_SUBST(NUMVERS) -dnl for the linker to understand which version the library is compatible with -dnl we must keep a separate library version cout of the format c:r:a if any -dnl functionality is changed do c++ prior to release -dnl if only implementation changed but all interfaces are kept, do r++ -dnl when only functionality was added, do a++ if any functionality was -dnl removed do a=0. +dnl for the linker to understand which versions the library are compatible with +dnl each other we must keep a separate library version cout of the format c:r:a. +dnl - if only implementation changed but all interfaces are kept, do r++ +dnl - if only functionality was added do c++,r=0,a++ +dnl - if any functionality was removed do c++,r=0,a=0. dnl dnl see http://sourceware.org/autobook/autobook/autobook_91.html dnl -LIBVERS=4:0:0 +LIBVERS=5:0:1 AC_SUBST(LIBVERS) AC_CANONICAL_TARGET +m4_version_prereq(2.60, [AC_USE_SYSTEM_EXTENSIONS], [#]) AM_INIT_AUTOMAKE AM_MAINTAINER_MODE - +# Enable silent build rules by default, requires at least +# Automake-1.11. Disable by either passing --disable-silent-rules to +# configure or passing V=1 to make +m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) AC_CONFIG_HEADERS([rrd_config.h]) +AC_CONFIG_MACRO_DIR([m4]) dnl all our local stuff like install scripts and include files dnl is in there @@ -45,22 +53,18 @@ dnl determine the type of system we are running on AC_SUBST(VERSION) -AC_PREFIX_DEFAULT( /usr/local/rrdtool-$PACKAGE_VERSION ) - -dnl Minimum Autoconf version required. -AC_PREREQ(2.59) +AC_PREFIX_DEFAULT( /opt/rrdtool-$PACKAGE_VERSION ) dnl At the TOP of the HEADER AH_TOP([ - #ifndef RRD_CONFIG_H #define RRD_CONFIG_H + /* IEEE can be prevented from raising signals with fpsetmask(0) */ #undef MUST_DISABLE_FPMASK /* IEEE math only works if SIGFPE gets actively set to IGNORE */ - #undef MUST_DISABLE_SIGFPE /* realloc does not support NULL as argument */ @@ -73,241 +77,17 @@ AH_TOP([ # endif #endif - ]) +]) AH_BOTTOM([ -/* make sure that we pickup the correct stuff from all headers */ -#ifdef HAVE_FEATURES_H -#undef _XOPEN_SOURCE /* keep unmodified */ -#undef _BSD_SOURCE /* keep unmodified */ -#define _XOPEN_SOURCE 600 -#define _BSD_SOURCE 1 -# include -#endif - -/* FreeBSD 4.8 wants this included BEFORE sys/types.h */ -#ifdef HAVE_SYS_MMAN_H -# include -#endif - -#ifdef HAVE_SYS_TYPES_H -# include -#endif - -#ifdef HAVE_SYS_PARAM_H -# include -#endif -#ifndef MAXPATH -# ifdef PATH_MAX -# define MAXPATH PATH_MAX -# endif -#endif -#ifndef MAXPATH -/* else try the BSD variant */ -# ifdef MAXPATHLEN -# define MAXPATH MAXPATHLEN -# endif -#endif - -#ifdef HAVE_ERRNO_H -# include -#endif - -#if !defined HAVE_MADVISE && defined HAVE_POSIX_MADVISE -/* use posix_madvise family */ -# define madvise posix_madvise -# define MADV_NORMAL POSIX_MADV_NORMAL -# define MADV_RANDOM POSIX_MADV_RANDOM -# define MADV_SEQUENTIAL POSIX_MADV_SEQUENTIAL -# define MADV_WILLNEED POSIX_MADV_WILLNEED -# define MADV_DONTNEED POSIX_MADV_DONTNEED -#endif -#if defined HAVE_MADVISE || defined HAVE_POSIX_MADVISE -# define USE_MADVISE 1 -#endif - -#ifdef HAVE_SYS_STAT_H -# include -#endif - -#ifdef HAVE_FCNTL_H -#include -#endif - -#ifdef HAVE_UNISTD_H -# include -#endif - -#ifdef TIME_WITH_SYS_TIME -# include -# include -#else -# ifdef HAVE_SYS_TIME_H -# include -# else -# include -# endif -#endif - -#ifdef HAVE_SYS_TIMES_H -# include -#endif - -#ifdef HAVE_SYS_RESOURCE_H -# include -#if (defined(__svr4__) && defined(__sun__)) -/* Solaris headers (pre 2.6) do not have a getrusage prototype. - Use this instead. */ -extern int getrusage(int, struct rusage *); -#endif /* __svr4__ && __sun__ */ -#endif - -/* define strrchr, strchr and memcpy, memmove in terms of bsd funcs - make sure you are NOT using bcopy, index or rindex in the code */ - -#ifdef STDC_HEADERS -# include -#else -# ifndef HAVE_STRCHR -# define strchr index -# define strrchr rindex -# endif -char *strchr (), *strrchr (); -# ifndef HAVE_MEMMOVE -# define memcpy(d, s, n) bcopy ((s), (d), (n)) -# define memmove(d, s, n) bcopy ((s), (d), (n)) -# endif -#endif - -#ifdef NO_NULL_REALLOC -# define rrd_realloc(a,b) ( (a) == NULL ? malloc( (b) ) : realloc( (a) , (b) )) -#else -# define rrd_realloc(a,b) realloc((a), (b)) -#endif - -#ifdef NEED_MALLOC_MALLOC_H +#ifdef MUST_HAVE_MALLOC_MALLOC_H # include #endif -#ifdef HAVE_STDIO_H -# include -#endif - -#ifdef HAVE_STDLIB_H -# include -#endif - -#ifdef HAVE_CTYPE_H -# include -#endif - -#ifdef HAVE_DIRENT_H -# include -# define NAMLEN(dirent) strlen((dirent)->d_name) -#else -# define dirent direct -# define NAMLEN(dirent) (dirent)->d_namlen -# ifdef HAVE_SYS_NDIR_H -# include -# endif -# ifdef HAVE_SYS_DIR_H -# include -# endif -# ifdef HAVE_NDIR_H -# include -# endif -#endif - -#ifdef MUST_DISABLE_SIGFPE -# include -#endif - -#ifdef MUST_DISABLE_FPMASK -# include -#endif - - -#ifdef HAVE_MATH_H -# include -#endif - -#ifdef HAVE_FLOAT_H -# include -#endif - -#ifdef HAVE_IEEEFP_H -# include -#endif - -#ifdef HAVE_FP_CLASS_H -# include -#endif - -/* for Solaris */ -#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASS)) -# define HAVE_ISINF 1 -# ifdef isinf -# undef isinf /* confuse autoconf */ -# endif -# define isinf(a) (fpclass(a) == FP_NINF || fpclass(a) == FP_PINF) -#endif - -/* solaris 10 it defines isnan such that only forte can compile it ... bad bad */ -#if (defined(HAVE_ISNAN) && defined(isnan) && defined(HAVE_FPCLASS)) -# undef isnan /* confuse autoconf to NOT remove this */ -# define isnan(a) (fpclass(a) == FP_SNAN || fpclass(a) == FP_QNAN) -#endif - -/* for OSF1 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 - -#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 +#include -#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_INFINITE)) -# define HAVE_ISINF 1 -# define isinf(a) (fpclassify(a) == FP_INFINITE) #endif - -/* for 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_FINITE) && defined (HAVE_ISFINITE)) -# define HAVE_FINITE 1 -# define finite(a) isfinite(a) -#endif - -#if (! defined(HAVE_FINITE) && defined(HAVE_ISNAN) && defined(HAVE_ISINF)) -# define HAVE_FINITE 1 -# define finite(a) (! isnan(a) && ! isinf(a)) -#endif - -#ifndef HAVE_FINITE -#error "Can't compile without finite function" -#endif - -#ifndef HAVE_ISINF -#error "Can't compile without isinf function" -#endif - -#if (! defined(HAVE_FDATASYNC) && defined(HAVE_FSYNC)) -#define fdatasync fsync -#endif - -#if (!defined(HAVE_FDATASYNC) && !defined(HAVE_FSYNC)) -#error "Can't compile with without fsync and fdatasync" -#endif - -#endif /* RRD_CONFIG_H */ ]) dnl Process Special Options @@ -319,7 +99,7 @@ AC_ARG_VAR(RRDGRAPH_YLEGEND_ANGLE, AC_DEFINE_UNQUOTED(RRDGRAPH_YLEGEND_ANGLE,${RRDGRAPH_YLEGEND_ANGLE:-90.0}, [Vertical label angle: -90.0 (default) or 90.0]) -AC_ARG_ENABLE(rrdcgi,[ --disable-rrdcgi disable building of rrdcgi], +AC_ARG_ENABLE(rrdcgi,AS_HELP_STRING([--disable-rrdcgi],[disable building of rrdcgi]), [],[enable_rrdcgi=yes]) dnl Check if we run on a system that has fonts @@ -335,15 +115,15 @@ AC_ARG_WITH(rrd-default-font, dnl Use mmap in rrd_update instead of seek+write AC_ARG_ENABLE([mmap], -[ --disable-mmap disable mmap in rrd_update, use seek+write instead], +AS_HELP_STRING([--disable-mmap],[disable mmap in rrd_update, use seek+write instead]), [], [enable_mmap=yes]) -AC_ARG_ENABLE(pthread,[ --disable-pthread disable multithread support], +AC_ARG_ENABLE(pthread,AS_HELP_STRING([--disable-pthread],[disable multithread support]), [],[enable_pthread=yes]) AC_ARG_ENABLE(static-programs, - [ --enable-static-programs Build static programs], + AS_HELP_STRING([--enable-static-programs],[Build static programs]), [case "${enableval}" in yes) staticprogs=yes ;; no) staticprogs=no ;; @@ -356,13 +136,29 @@ CONFIGURE_PART(Audit Compilation Environment) dnl Check for the compiler and static/shared library creation. -AC_PROG_CC AC_PROG_CPP +AC_PROG_CC +AM_PROG_CC_C_O AC_PROG_LIBTOOL dnl Try to detect/use GNU features CFLAGS="$CFLAGS -D_GNU_SOURCE" +dnl check for -Werror separatly +dnl (quite a few autotool checks do not work with -Werror; also, the +dnl check for -Werror fails after checking and adding the other flags) +AC_CACHE_CHECK([if gcc likes the -Werror flag], rd_cv_gcc_flag__Werror, + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[]], [[return 0 ]])], + [rd_cv_gcc_flag__Werror="yes"], + [rd_cv_gcc_flag__Werror="no"])]) +if test "x$rd_cv_gcc_flag__Werror" = "xyes"; then + WERROR="-Werror" +else + WERROR="" +fi +AC_SUBST(WERROR) + dnl which flags does the compiler support? if test "x$GCC" = "xyes"; then for flag in -fno-strict-aliasing -Wall -std=c99 -pedantic -Wundef -Wshadow -Wpointer-arith -Wcast-align -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Winline -Wold-style-definition -W; do @@ -386,7 +182,7 @@ CONFIGURE_PART(Checking for Header Files) dnl Checks for header files. AC_HEADER_STDC AC_HEADER_DIRENT -AC_CHECK_HEADERS(features.h sys/stat.h sys/types.h fcntl.h locale.h fp_class.h malloc.h unistd.h ieeefp.h math.h sys/times.h sys/param.h sys/resource.h signal.h float.h stdio.h stdlib.h errno.h string.h ctype.h) +AC_CHECK_HEADERS(stdint.h inttypes.h libgen.h features.h sys/stat.h sys/types.h fcntl.h locale.h fp_class.h malloc.h unistd.h ieeefp.h math.h sys/times.h sys/param.h sys/resource.h signal.h float.h stdio.h stdlib.h errno.h string.h ctype.h) dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST @@ -399,7 +195,6 @@ dnl Checks for libraries. AC_CHECK_FUNC(acos, , AC_CHECK_LIB(m, acos)) - 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" @@ -414,7 +209,9 @@ 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 fsync mbstowcs opendir readdir chdir chroot getuid setlocale strerror strerror_r snprintf vsnprintf fpclass class fp_class isnan memmove strchr mktime getrusage gettimeofday) +AC_CHECK_FUNCS(tzset fsync mbstowcs opendir readdir chdir chroot getuid setlocale strerror snprintf vsnprintf vasprintf fpclass class fp_class isnan memmove strchr mktime getrusage gettimeofday) + +AC_FUNC_STRERROR_R CONFIGURE_PART(Map/Fadvis/Madvise checking) @@ -470,45 +267,8 @@ AC_CHECK_FUNCS(posix_fadvise) CONFIGURE_PART(Libintl Processing) - -dnl gettext -GETTEXT_PACKAGE=rrdtool -AC_SUBST(GETTEXT_PACKAGE) -AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[Gettext package]) - -AM_GLIB_GNU_GETTEXT() - -AC_ARG_ENABLE(libintl,[ --disable-libintl i18n support (libintl)], -[],[enable_libintl=yes]) - -if test x$enable_libintl = xyes; then - IT_PROG_INTLTOOL([0.35.0],[no-xml]) -fi - -if test x$enable_libintl = xyes -a x$MSGFMT = xno; then - AC_MSG_WARN(I could not find msgfmt. Diabeling libintl build.) - enable_libintl=no -fi - -if test x$enable_libintl = xyes; then - AC_CHECK_HEADERS(libintl.h,[],[AC_MSG_RESULT(disabeling libintl build); enable_libintl=no]) -fi - -if test x$enable_libintl = xyes ; then - dnl it seems bsd synstems need to link against libintl - dnl when compiling rrdupdate. lets check - AC_CHECK_LIB(intl, libintl_gettext,[LIB_LIBINTL="-lintl"]) -fi - -dnl use for linking rrdupdate -AC_SUBST(LIB_LIBINTL) - -dnl do not touch the po stuff if we are not going to build intl -AM_CONDITIONAL(BUILD_LIBINTL,[test x$enable_libintl = xyes]) - -if test x$enable_libintl = xyes; then - AC_DEFINE([BUILD_LIBINTL], [], [Use this in code sections to mark them for libintl build]) -fi +AM_GNU_GETTEXT_VERSION(0.14.4) +AM_GNU_GETTEXT() CONFIGURE_PART(IEEE Math Checks) @@ -527,7 +287,7 @@ volatile int x;volatile float f; ]], [[x = isinf(f)]])],[AC_MSG_RESULT(yes) AC_DEFINE(HAVE_ISINF)],[AC_MSG_RESULT(no)])]) dnl finite is BSD, isfinite is C99, so prefer the latter -AC_CACHE_CHECK([whether isfinite is broken],[have_broken_isfinite],[ +AC_CACHE_CHECK([whether isfinite is broken],[ac_cv_have_broken_isfinite],[ AC_TRY_RUN([ #ifdef HAVE_MATH_H #include @@ -546,28 +306,63 @@ int main () #endif #endif return 0; -}],[ -have_broken_isfinite=no],have_broken_isfinite=yes,[ +}],[ac_cv_have_broken_isfinite=no],[ac_cv_have_broken_isfinite=yes],[ case "${target}" in - hppa*-*-hpux*) have_broken_isfinite=yes ;; - *) have_broken_isfinite=no ;; + hppa*-*-hpux*) ac_cv_have_broken_isfinite=yes ;; + *-solaris2.8) ac_cv_have_broken_isfinite=yes ;; + *-solaris2.9) ac_cv_have_broken_isfinite=yes ;; + *) ac_cv_have_broken_isfinite=no ;; esac]) ]) -if test "x$have_broken_isfinite" = "xno"; then + +dnl the test does not seem to work on solaris 2.8 +dnl so lets fix this by hand +case "${target}" in + *-solaris2.8) ac_cv_have_broken_isfinite=yes ;; + *-solaris2.9) ac_cv_have_broken_isfinite=yes ;; +esac + +if test "x$ac_cv_have_broken_isfinite" = "xno"; then AC_DEFINE(HAVE_ISFINITE) else -AC_CHECK_FUNCS(finite,[], - [AC_CHECK_FUNCS(isfinite,[], - [AC_MSG_CHECKING(for isfinite with ) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include + AC_CHECK_FUNCS(finite,[], + [AC_CHECK_FUNCS(isfinite,[], + [AC_MSG_CHECKING(for isfinite with ) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include volatile int x;volatile float f; ]],[[x = isfinite(f)]])],[AC_MSG_RESULT(yes) AC_DEFINE(HAVE_ISFINITE)],[AC_MSG_RESULT(no)])])]) -fi +fi AC_FULL_IEEE CONFIGURE_PART(Resolve Portability Issues) +CHECK_FOR_WORKING_MS_ASYNC + +dnl Do we need getopt_long + +dnl even when including our own getopt implementation +dnl we may want to make sure we use the external +dnl defined by libc to not run into linker resolve trouble + +AC_CACHE_CHECK([for opterr], rd_cv_var_int_opterr, +[AC_TRY_LINK([#include ], + [extern int opterr; opterr = 1;], + [rd_cv_var_int_opterr=yes], + [rd_cv_var_int_opterr=no])]) +if test x"$rd_cv_var_int_opterr" = x"yes"; then + AC_DEFINE(HAVE_INT_OPTERR, 1, [Define to 1 if you have the global variable 'int opterr'.]) +fi + +build_getopt=no +RRD_GETOPT_LONG="LIBC_HAS_GETOPT_LONG" +AC_CHECK_FUNC(getopt_long,[],[ +RRD_GETOPT_LONG="getopt_long" +build_getopt=yes +]) +AC_SUBST(RRD_GETOPT_LONG) +AM_CONDITIONAL(BUILD_GETOPT,[test $build_getopt = yes]) + 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, @@ -650,17 +445,62 @@ AC_LINK_IFELSE( [[#include #include ]], [[malloc(1)]] - ), - [AC_DEFINE(NEED_MALLOC_MALLOC_H) + ),[ + AC_DEFINE([MUST_HAVE_MALLOC_MALLOC_H]) AC_MSG_RESULT([yes we do])], [AC_MSG_ERROR([Can not figure how to compile malloc])] ) ] ) + +dnl is time_t long or long long ? +AC_DEFINE([TIME_T_IS_LONG], [], [time_t is long]) +AC_DEFINE([TIME_T_IS_LONG_LONG], [], [time_t is long long]) +AC_MSG_CHECKING([the type of time_t]) +AC_RUN_IFELSE( + AC_LANG_PROGRAM( + [[#include ]], + [[if (sizeof(long) != sizeof(time_t)) return 1; ]] + ), + [ AC_MSG_RESULT([time_t is long]) + AC_DEFINE([TIME_T_IS_LONG]) + ], + [ AC_RUN_IFELSE( + AC_LANG_PROGRAM( + [[#include ]], + [[if (sizeof(long long) != sizeof(time_t)) return 1; ]] + ), + [ + AC_MSG_RESULT([time_t is long long]) + AC_DEFINE([TIME_T_IS_LONG_LONG]) + ], + [AC_MSG_ERROR([can not figure type of time_t])] + ) + ] +) + AC_LANG_POP(C) CONFIGURE_PART(Find 3rd-Party Libraries) +AC_ARG_ENABLE(libdbi,AS_HELP_STRING([--disable-libdbi],[do not build in support for libdbi]),[have_libdbi=no],[ + XXX=$LIBS + LIBS="$LIBS -ldbi -ldl" + AC_MSG_CHECKING(for libdbi) + AC_LINK_IFELSE( + [AC_LANG_PROGRAM([[#include ]], + [[dbi_initialize(NULL)]] + ) + ],[AC_DEFINE(HAVE_LIBDBI,[1],[have got libdbi installed]) + AC_MSG_RESULT([yes]) + have_libdbi=yes + ],[LIBS=$XXX + AC_MSG_RESULT([no]) + have_libdbi=no + ] + ) +]) +AM_CONDITIONAL(BUILD_LIBDBI,[test $have_libdbi != no]) AM_CONDITIONAL(BUILD_RRDCGI,[test $enable_rrdcgi != no]) @@ -675,7 +515,7 @@ EX_CHECK_ALL(cairo, cairo_font_options_create, cairo.h, EX_CHECK_ALL(cairo, cairo_svg_surface_create, cairo-svg.h, cairo-svg, 1.4.6, http://cairographics.org/releases/, "") EX_CHECK_ALL(cairo, cairo_pdf_surface_create, cairo-pdf.h, cairo-pdf, 1.4.6, http://cairographics.org/releases/, "") EX_CHECK_ALL(cairo, cairo_ps_surface_create, cairo-ps.h, cairo-ps, 1.4.6, http://cairographics.org/releases/, "") -dnl EX_CHECK_ALL(glib-2.0, glib_check_version, glib.h, glib-2.0, 2.12.12, ftp://ftp.gtk.org/pub/glib/2.12/, "") +EX_CHECK_ALL(glib-2.0, glib_check_version, glib.h, glib-2.0, 2.12.12, ftp://ftp.gtk.org/pub/glib/2.12/, "") EX_CHECK_ALL(pango-1.0, pango_cairo_context_set_font_options, pango/pango.h, pangocairo, 1.17, http://ftp.gnome.org/pub/GNOME/sources/pango/1.17, "") EX_CHECK_ALL(xml2, xmlParseFile, libxml/parser.h, libxml-2.0, 2.6.31, http://xmlsoft.org/downloads.html, /usr/include/libxml2) @@ -699,14 +539,14 @@ AC_PATH_PROG(POD2MAN, pod2man, no) AC_PATH_PROG(POD2HTML, pod2html, no) -AC_ARG_ENABLE(perl,[ --disable-perl do not build the perl modules], +AC_ARG_ENABLE(perl,AS_HELP_STRING([--disable-perl],[do not build the perl modules]), [],[enable_perl=yes]) -AC_ARG_VAR(PERLCC, [[] C compiler for Perl modules]) -AC_ARG_VAR(PERLCCFLAGS, [[] CC flags for Perl modules]) -AC_ARG_VAR(PERLLD, [[same as PERLCC] Linker for Perl modules]) -AC_ARG_VAR(PERLLDFLAGS, [[] LD flags for Perl modules]) +AC_ARG_VAR(PERLCC, [C compiler for Perl modules]) +AC_ARG_VAR(PERLCCFLAGS, [CC flags for Perl modules]) +AC_ARG_VAR(PERLLD, [Linker for Perl modules]) +AC_ARG_VAR(PERLLDFLAGS, [LD flags for Perl modules]) if test "x$PERL" = "xno" -o x$enable_perl = xno; then COMP_PERL= @@ -740,19 +580,15 @@ AC_MSG_CHECKING(Perl Modules to build) AC_MSG_RESULT(${COMP_PERL:-No Perl Modules will be built}) # Options to pass when configuring perl module -ppref=$prefix -test "$ppref" = "NONE" && ppref=$ac_default_prefix +langpref=$prefix +test "$langpref" = '$(DESTDIR)NONE' && langpref='$(DESTDIR)'$ac_default_prefix +test "$langpref" = "NONE" && langpref=$ac_default_prefix -PERL_MAKE_OPTIONS="PREFIX=$ppref LIB=$ppref/lib/perl/$PERL_VERSION" +PERL_MAKE_OPTIONS="PREFIX=$langpref LIB=$langpref/lib/perl/$PERL_VERSION" dnl pass additional perl options when generating Makefile from Makefile.PL AC_ARG_ENABLE(perl-site-install, -[ --enable-perl-site-install by default the rrdtool perl modules are installed - together with rrdtool in $prefix/lib/perl. You have to - put a 'use lib qw($prefix/lib/perl)' into your scripts - when you want to use them. When you set this option - the perl modules will get installed wherever - your perl setup thinks it is best.], +AS_HELP_STRING([--enable-perl-site-install],[by default the rrdtool perl modules are installed together with rrdtool in $prefix/lib/perl. You have to put a 'use lib qw($prefix/lib/perl)' into your scripts when you want to use them. When you set this option the perl modules will get installed wherever your perl setup thinks it is best.]), [PERL_MAKE_OPTIONS=],[]) if test ! -z "$PERLCC"; then @@ -787,7 +623,7 @@ AC_SUBST(PERL_VERSION) dnl Check for Ruby. AC_PATH_PROG(RUBY, ruby, no) -AC_ARG_ENABLE(ruby,[ --disable-ruby do not build the ruby modules], +AC_ARG_ENABLE(ruby,AS_HELP_STRING([--disable-ruby],[do not build the ruby modules]), [],[enable_ruby=yes]) AC_MSG_CHECKING(if ruby modules can be built) @@ -805,14 +641,10 @@ else fi fi - dnl pass additional ruby options when generating Makefile from Makefile.PL AC_ARG_ENABLE(ruby-site-install, -[ --enable-ruby-site-install by default the rrdtool ruby modules are installed - together with rrdtool in $prefix/lib/ruby. You have to - add $prefix/lib/ruby/$ruby_version/$sitearch to you $: variable - for ruby to find the RRD.so file.], -[RUBY_MAKE_OPTIONS=],[RUBY_MAKE_OPTIONS="sitedir="'$(DESTDIR)'"$prefix/lib/ruby"]) +AS_HELP_STRING([--enable-ruby-site-install],[by default the rrdtool ruby modules are installed together with rrdtool in $prefix/lib/ruby. You have to add $prefix/lib/ruby/$ruby_version/$sitearch to your $: variable for ruby to find the RRD.so file.]), +[RUBY_MAKE_OPTIONS=],[RUBY_MAKE_OPTIONS="sitedir=$langpref/lib/ruby"]) AC_ARG_WITH(ruby-options, @@ -826,10 +658,150 @@ AC_SUBST(RUBY_MAKE_OPTIONS) AC_SUBST(RUBY) AC_SUBST(COMP_RUBY) +dnl Check for Lua. +AC_PATH_PROG(LUA, lua, no) + +AC_ARG_ENABLE(lua,AS_HELP_STRING([--disable-lua],[do not build the lua modules]), +[],[enable_lua=yes]) + +COMP_LUA= +if test "$LUA" = "no" -o "$enable_lua" = "no"; then + enable_lua=no +else + AC_MSG_CHECKING(for lua >= 5.0) + read LUA_MAJOR LUA_MINOR LUA_POINT <&1 | cut -f2 -d' ' | sed -e 's/\./ /g') +LUA_EOF + if test 0$LUA_MAJOR -lt 5; then + AC_MSG_RESULT([no, version found is $LUA_MAJOR.$LUA_MINOR]) + else + AC_MSG_RESULT([$LUA_MAJOR.$LUA_MINOR found]) + lua_vdot=$LUA_MAJOR.$LUA_MINOR + lua_vndot=$LUA_MAJOR$LUA_MINOR + lua_version=$LUA_MAJOR.$LUA_MINOR.$LUA_POINT + AC_CHECK_HEADERS(lua$lua_vndot/lua.h, + [AC_CHECK_HEADERS(lua$lua_vndot/lualib.h, + [AC_CHECK_HEADER(lua$lua_vndot/lauxlib.h, + [lua_headerdir=lua$lua_vndot], + [])], + [])], + [AC_CHECK_HEADERS(lua$lua_vdot/lua.h, + [AC_CHECK_HEADERS(lua$lua_vdot/lualib.h, + [AC_CHECK_HEADER(lua$lua_vdot/lauxlib.h, + [lua_headerdir=lua$lua_vdot], + [])], + [])], + [AC_CHECK_HEADERS(lua.h, + [AC_CHECK_HEADERS(lualib.h, + [AC_CHECK_HEADER(lauxlib.h, + [lua_headerdir=""], + [lua_headerdir="no"])], + [])], + [])])]) + + if test "$lua_headerdir" = "no"; then + enable_lua=no + else + COMP_LUA=lua + fi + + if test "$COMP_LUA" != "lua"; then + enable_lua=no + AC_MSG_WARN([Lua $lua_vdot found but not lua.h, lualib.h and lauxlib.h! Please install the -dev packages for Lua $lua_vdot]) + else + # OK, headers found, let's check the libraries (LIBS is not used) + LIBS= + lua_havelib=no + LUA_HAVE_COMPAT51=DONT_HAVE_COMPAT51 + AC_SEARCH_LIBS(lua_call, lua$lua_vdot lua$lua_vndot lua, + [AC_SEARCH_LIBS(luaL_register, lua$lua_vdot lua$lua_vndot lua, + [lua_havelib=LUA$lua_vndot], + [AC_SEARCH_LIBS(luaL_module, lualib$lua_vndot lualib$lua_vdot lualib, + [lua_havelib=$lua_vndot; $LUA -l compat-5.1 2>/dev/null; + test "$?" = "0" && LUA_HAVE_COMPAT51=HAVE_COMPAT51], + [AC_SEARCH_LIBS(luaL_openlib, lualib$lua_vdot lualib$lua_vndot lualib, + [lua_havelib=$lua_vndot], + [COMP_LUA=], [-lm])], [-lm])], [-lm])], + [COMP_LUA=], [-lm]) + lua_libs=$LIBS + LIBS= + + # Options to pass when configuring Lua module + if test "$lua_havelib" != "no"; then + # OK, headers and libs found. Try to set lua flags + # and modules installation dirs with pkg-config + if test "$PKGCONFIG" != "no"; then + if test "$lua_vndot" = "50"; then + lua_pkg_prefix=lualib + else + lua_pkg_prefix=lua + fi + # try with dot, without dot and finally without version + for f in $lua_pkg_prefix$lua_vdot $lua_pkg_prefix$lua_vndot $lua_pkg_prefix; do + lua_exec_prefix=`$PKGCONFIG --variable=prefix $f 2>/dev/null` + # same binaries? + if test "$lua_exec_prefix/bin/lua" = "$LUA"; then + # OK, found CFLAGS. Get Lua LFLAGS and modules install dir + LUA_CFLAGS=`$PKGCONFIG --cflags $f 2>/dev/null` + LUA_LFLAGS=`$PKGCONFIG --libs $f 2>/dev/null` + LUA_INSTALL_CMOD=`$PKGCONFIG --variable=INSTALL_CMOD $f 2>/dev/null` + LUA_INSTALL_LMOD=`$PKGCONFIG --variable=INSTALL_LMOD $f 2>/dev/null` + break + fi + done + fi + + LUA_RRD_LIBDIR="$langpref/lib/lua/$lua_vdot" + # if lua 5.0 can't find compat-5.1, force installation of + # compat-5.1.lua together with RRDtool. + if test "$lua_vdot" = "5.0" -a "$LUA_HAVE_COMPAT51" != "HAVE_COMPAT51"; then + lua_need_compat51=1 + LUA_INSTALL_LMOD="$LUA_RRD_LIBDIR" + fi + + # if not set with pkg-config, use default values in src packages compat-5.1, lua 5.1 + if test "$LUA_CFLAGS" = ""; then + AC_MSG_WARN(Setting Lua include and lib flags to defaults in compat-5.1 and lua 5.1 sources) + LUA_CFLAGS="-I/usr/local/include -I/usr/local/include/lua -I/usr/local/include/lua/$lua_vdot" + LUA_LFLAGS="-L/usr/local/lib -L/usr/local/lib/lua -L/usr/local/lib/lua/$lua_vdot $lua_libs" + LUA_INSTALL_CMOD="/usr/local/lib/lua/$lua_vdot" + fi + + dnl pass additional lua options + dnl if lua-site-install is not set, overwrite LUA_INSTALL_CMOD already + dnl found and install together with RRDtool, under $langpref. + AC_ARG_ENABLE(lua-site-install, + AS_HELP_STRING([--enable-lua-site-install],[by default the lua module is installed together with rrdtool in $prefix/lib/lua/$lua_version. You have to add $prefix/lib/lua/$lua_version/?.so to package.cpath for lua to find 'rrd.so'. For lua 5.0 you may also need to change LUA_PATH to the same dir, to require 'compat-5.1'. When you set this option the lua modules will get installed wherever your Lua setup thinks it is best. WARNING: if you set this option, system lua modules compat-5.1.lua and rrd.so, if any, may be overwritten.]), + [], + [LUA_INSTALL_CMOD="$LUA_RRD_LIBDIR"; LUA_INSTALL_LMOD="$LUA_RRD_LIBDIR"]) + + LUA_DEFINES="-DLUA$lua_vndot -D$LUA_HAVE_COMPAT51" + AC_SUBST(LUA) + AC_SUBST(COMP_LUA) + AC_SUBST(LUA_INSTALL_CMOD) + AC_SUBST(LUA_INSTALL_LMOD) + AC_SUBST(LUA_CFLAGS) + AC_SUBST(LUA_LFLAGS) + AC_SUBST(LUA_DEFINES) + else + enable_lua=no + AC_MSG_RESULT([Lua headers found but not the libraries! Please reinstall the dev packages for Lua $LUA_MAJOR.$LUA_MINOR]) + fi + fi + fi +fi +dnl If Lua 5.0, we need compat-5.1. Add ours unless already +dnl integrated as in Debian/Ubuntu 5.0 -dev packages. +AM_CONDITIONAL(LUA_NEED_OUR_COMPAT51, + [test "$lua_vdot" = "5.0" -a "$LUA_HAVE_COMPAT51" != "HAVE_COMPAT51"]) +AM_CONDITIONAL(LUA_SITE_CINSTALL, [test "$LUA_INSTALL_CMOD" != "$LUA_RRD_LIBDIR"]) +AM_CONDITIONAL(LUA_SITE_LINSTALL, [test "$LUA_INSTALL_LMOD" != "$LUA_RRD_LIBDIR"]) +AM_CONDITIONAL(LUA50, [test "$lua_vndot" = "50"]) +AM_CONDITIONAL(BUILD_LUA, [test "$enable_lua" = "yes"]) enable_tcl_site=no -AC_ARG_ENABLE(tcl,[ --disable-tcl do not build the tcl modules], +AC_ARG_ENABLE(tcl,AS_HELP_STRING([--disable-tcl],[do not build the tcl modules]), [],[enable_tcl=yes]) if test "$enable_tcl" = "yes"; then @@ -854,8 +826,11 @@ if test "$enable_tcl" = "yes"; then else . $tcl_config TCL_PACKAGE_DIR="$TCL_PACKAGE_PATH/tclrrd$VERSION" + if test -n "$TCL_INC_DIR"; then + TCL_INCLUDE_SPEC="$TCL_INCLUDE_SPEC -I$TCL_INC_DIR" + fi fi - AC_ARG_ENABLE(tcl,[ --enable-tcl-site install the tcl extension in the tcl tree], + AC_ARG_ENABLE(tcl,AS_HELP_STRING([--enable-tcl-site],[install the tcl extension in the tcl tree]), [],[enable_tcl_site=yes]) fi @@ -873,9 +848,9 @@ AC_SUBST(TCL_LD_SEARCH_FLAGS) AC_SUBST(TCL_STUB_LIB_SPEC) AC_SUBST(TCL_VERSION) AC_SUBST(TCL_PACKAGE_DIR) -AC_SUBST(TCL_INC_DIR) +AC_SUBST(TCL_INCLUDE_SPEC) -AC_ARG_ENABLE(python,[ --disable-python do not build the python modules], +AC_ARG_ENABLE(python,AS_HELP_STRING([--disable-python],[do not build the python modules]), [],[enable_python=yes]) if test "$enable_python" = "yes"; then @@ -911,15 +886,24 @@ AC_CONFIG_FILES([examples/minmax.pl]) AC_CONFIG_FILES([examples/4charts.pl]) AC_CONFIG_FILES([examples/perftest.pl]) AC_CONFIG_FILES([examples/Makefile]) +AC_CONFIG_FILES([examples/rrdcached/Makefile]) AC_CONFIG_FILES([doc/Makefile]) -AC_CONFIG_FILES([po/Makefile.in]) +AC_CONFIG_FILES([po/Makefile.in]) +AC_CONFIG_FILES([intl/Makefile]) AC_CONFIG_FILES([src/Makefile]) +AC_CONFIG_FILES([src/librrd.sym.in]) +AC_CONFIG_FILES([src/librrd.pc]) AC_CONFIG_FILES([bindings/Makefile]) AC_CONFIG_FILES([bindings/tcl/Makefile]) AC_CONFIG_FILES([bindings/tcl/ifOctets.tcl]) AC_CONFIG_FILES([Makefile]) +AC_CONFIG_FILES([bindings/lua/Makefile]) AC_CONFIG_COMMANDS([default],[[ chmod +x examples/*.pl]],[[]]) + +dnl intl requires our config to be called config.h. indulge it. +AC_CONFIG_COMMANDS_POST([ test -f config.h || ln -s rrd_config.h config.h ]) + AC_OUTPUT AC_MSG_CHECKING(in) @@ -941,6 +925,7 @@ echo "----------------------------------------------------------------" echo "Config is DONE!" echo echo " With MMAP IO: $enable_mmap" +echo " Build rrd_getopt: $build_getopt" echo " Static programs: $staticprogs" echo " Perl Modules: $COMP_PERL" echo " Perl Binary: $PERL" @@ -949,11 +934,21 @@ echo " Perl Options: $PERL_MAKE_OPTIONS" echo " Ruby Modules: $COMP_RUBY" echo " Ruby Binary: $RUBY" echo " Ruby Options: $RUBY_MAKE_OPTIONS" +echo " Build Lua Bindings: $enable_lua" +if test "$enable_lua" = "yes"; then +echo " Lua Binary: $LUA" +echo " Lua Version: $lua_version" +echo " Lua C-modules dir: $LUA_INSTALL_CMOD" +if test "$lua_need_compat51" = "1"; then +echo " Lua Lua-modules dir: $LUA_INSTALL_LMOD" +fi +fi echo " Build Tcl Bindings: $enable_tcl" echo " Build Python Bindings: $enable_python" echo " Build rrdcgi: $enable_rrdcgi" echo " Build librrd MT: $enable_pthread" -echo " Link with libintl: $enable_libintl" +echo " Use gettext: $USE_NLS" +echo " With libDBI: $have_libdbi" echo echo " Libraries: $ALL_LIBS" echo