1 dnl RRDtool AutoConf script ...
2 dnl ---------------------------
4 dnl Created by Jeff Allen, Tobi Oetiker, Blair Zajac
6 dnl Inspiration from http://autoconf-archive.cryp.to
8 dnl tell automake the this script is for rrdtool
10 dnl the official version number is
12 AC_INIT([rrdtool],[1.3rc2])
14 dnl for testing a numberical version number comes handy
15 dnl the released version are
17 dnl the devel versions will be something like
19 NUMVERS=1.299908051600
22 dnl for the linker to understand which version the library is compatible with
23 dnl we must keep a separate library version cout of the format c:r:a if any
24 dnl functionality is changed do c++ prior to release
25 dnl if only implementation changed but all interfaces are kept, do r++
26 dnl when only functionality was added, do a++ if any functionality was
29 dnl see http://sourceware.org/autobook/autobook/autobook_91.html
38 AC_CONFIG_HEADERS([rrd_config.h])
40 dnl all our local stuff like install scripts and include files
44 dnl determine the type of system we are running on
48 AC_PREFIX_DEFAULT( /usr/local/rrdtool-$PACKAGE_VERSION )
50 dnl Minimum Autoconf version required.
53 dnl At the TOP of the HEADER
59 /* IEEE can be prevented from raising signals with fpsetmask(0) */
60 #undef MUST_DISABLE_FPMASK
62 /* IEEE math only works if SIGFPE gets actively set to IGNORE */
64 #undef MUST_DISABLE_SIGFPE
66 /* realloc does not support NULL as argument */
67 #undef NO_NULL_REALLOC
69 /* lets enable madvise defines in NetBSD */
70 #if defined(__NetBSD__)
71 # if !defined(_NETBSD_SOURCE)
72 # define _NETBSD_SOURCE
79 /* make sure that we pickup the correct stuff from all headers */
80 #ifdef HAVE_FEATURES_H
81 #undef _XOPEN_SOURCE /* keep unmodified */
82 #undef _BSD_SOURCE /* keep unmodified */
83 #define _XOPEN_SOURCE 600
85 # include <features.h>
88 /* FreeBSD 4.8 wants this included BEFORE sys/types.h */
89 #ifdef HAVE_SYS_MMAN_H
90 # include <sys/mman.h>
93 #ifdef HAVE_SYS_TYPES_H
94 # include <sys/types.h>
97 #ifdef HAVE_SYS_PARAM_H
98 # include <sys/param.h>
102 # define MAXPATH PATH_MAX
106 /* else try the BSD variant */
108 # define MAXPATH MAXPATHLEN
116 #if !defined HAVE_MADVISE && defined HAVE_POSIX_MADVISE
117 /* use posix_madvise family */
118 # define madvise posix_madvise
119 # define MADV_NORMAL POSIX_MADV_NORMAL
120 # define MADV_RANDOM POSIX_MADV_RANDOM
121 # define MADV_SEQUENTIAL POSIX_MADV_SEQUENTIAL
122 # define MADV_WILLNEED POSIX_MADV_WILLNEED
123 # define MADV_DONTNEED POSIX_MADV_DONTNEED
125 #if defined HAVE_MADVISE || defined HAVE_POSIX_MADVISE
126 # define USE_MADVISE 1
129 #ifdef HAVE_SYS_STAT_H
130 # include <sys/stat.h>
141 #ifdef TIME_WITH_SYS_TIME
142 # include <sys/time.h>
145 # ifdef HAVE_SYS_TIME_H
146 # include <sys/time.h>
152 #ifdef HAVE_SYS_TIMES_H
153 # include <sys/times.h>
156 #ifdef HAVE_SYS_RESOURCE_H
157 # include <sys/resource.h>
158 #if (defined(__svr4__) && defined(__sun__))
159 /* Solaris headers (pre 2.6) do not have a getrusage prototype.
161 extern int getrusage(int, struct rusage *);
162 #endif /* __svr4__ && __sun__ */
166 /* define strrchr, strchr and memcpy, memmove in terms of bsd funcs
167 make sure you are NOT using bcopy, index or rindex in the code */
173 # define strchr index
174 # define strrchr rindex
176 char *strchr (), *strrchr ();
177 # ifndef HAVE_MEMMOVE
178 # define memcpy(d, s, n) bcopy ((s), (d), (n))
179 # define memmove(d, s, n) bcopy ((s), (d), (n))
183 #ifdef NO_NULL_REALLOC
184 # define rrd_realloc(a,b) ( (a) == NULL ? malloc( (b) ) : realloc( (a) , (b) ))
186 # define rrd_realloc(a,b) realloc((a), (b))
189 #ifdef NEED_MALLOC_MALLOC_H
190 # include <malloc/malloc.h>
207 # define NAMLEN(dirent) strlen((dirent)->d_name)
209 # define dirent direct
210 # define NAMLEN(dirent) (dirent)->d_namlen
211 # ifdef HAVE_SYS_NDIR_H
212 # include <sys/ndir.h>
214 # ifdef HAVE_SYS_DIR_H
215 # include <sys/dir.h>
222 #ifdef MUST_DISABLE_SIGFPE
226 #ifdef MUST_DISABLE_FPMASK
227 # include <floatingpoint.h>
243 #ifdef HAVE_FP_CLASS_H
244 # include <fp_class.h>
248 #if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASS))
249 # define HAVE_ISINF 1
251 # undef isinf /* confuse autoconf */
253 # define isinf(a) (fpclass(a) == FP_NINF || fpclass(a) == FP_PINF)
256 /* solaris 10 it defines isnan such that only forte can compile it ... bad bad */
257 #if (defined(HAVE_ISNAN) && defined(isnan) && defined(HAVE_FPCLASS))
258 # undef isnan /* confuse autoconf to NOT remove this */
259 # define isnan(a) (fpclass(a) == FP_SNAN || fpclass(a) == FP_QNAN)
262 /* for OSF1 Digital Unix */
263 #if (! defined(HAVE_ISINF) && defined(HAVE_FP_CLASS) && defined(HAVE_FP_CLASS_H))
264 # define HAVE_ISINF 1
265 # define isinf(a) (fp_class(a) == FP_NEG_INF || fp_class(a) == FP_POS_INF)
268 #if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_PLUS_INF) && defined(FP_MINUS_INF))
269 # define HAVE_ISINF 1
270 # define isinf(a) (fpclassify(a) == FP_MINUS_INF || fpclassify(a) == FP_PLUS_INF)
273 #if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_INFINITE))
274 # define HAVE_ISINF 1
275 # define isinf(a) (fpclassify(a) == FP_INFINITE)
279 #if (! defined(HAVE_ISINF) && defined(HAVE_CLASS))
280 # define HAVE_ISINF 1
281 # define isinf(a) (class(a) == FP_MINUS_INF || class(a) == FP_PLUS_INF)
284 #if (! defined (HAVE_FINITE) && defined (HAVE_ISFINITE))
285 # define HAVE_FINITE 1
286 # define finite(a) isfinite(a)
289 #if (! defined(HAVE_FINITE) && defined(HAVE_ISNAN) && defined(HAVE_ISINF))
290 # define HAVE_FINITE 1
291 # define finite(a) (! isnan(a) && ! isinf(a))
295 #error "Can't compile without finite function"
299 #error "Can't compile without isinf function"
302 #if (! defined(HAVE_FDATASYNC) && defined(HAVE_FSYNC))
303 #define fdatasync fsync
306 #if (!defined(HAVE_FDATASYNC) && !defined(HAVE_FSYNC))
307 #error "Can't compile with without fsync and fdatasync"
310 #endif /* RRD_CONFIG_H */
313 dnl Process Special Options
314 dnl -----------------------------------
316 dnl How the vertical axis label is printed
317 AC_ARG_VAR(RRDGRAPH_YLEGEND_ANGLE,
318 [Vertical label angle: -90.0 (default) or 90.0])
319 AC_DEFINE_UNQUOTED(RRDGRAPH_YLEGEND_ANGLE,${RRDGRAPH_YLEGEND_ANGLE:-90.0},
320 [Vertical label angle: -90.0 (default) or 90.0])
322 AC_ARG_ENABLE(rrdcgi,[ --disable-rrdcgi disable building of rrdcgi],
323 [],[enable_rrdcgi=yes])
325 dnl Check if we run on a system that has fonts
326 AC_ARG_WITH(rrd-default-font,
327 [ --with-rrd-default-font=[OPTIONS] set the full path to your default font.],
328 [RRD_DEFAULT_FONT=$withval],[
329 if test -d ${WINDIR:-nodir}/cour.ttf ; then
330 RRD_DEFAULT_FONT=`cd $WINDIR;pwd`/cour.ttf
332 RRD_DEFAULT_FONT='"DejaVu Sans Mono,Bitstream Vera Sans Mono,monospace,Courier"'
336 dnl Use mmap in rrd_update instead of seek+write
337 AC_ARG_ENABLE([mmap],
338 [ --disable-mmap disable mmap in rrd_update, use seek+write instead],
342 AC_ARG_ENABLE(pthread,[ --disable-pthread disable multithread support],
343 [],[enable_pthread=yes])
345 AC_ARG_ENABLE(static-programs,
346 [ --enable-static-programs Build static programs],
347 [case "${enableval}" in
348 yes) staticprogs=yes ;;
349 no) staticprogs=no ;;
350 *) AC_MSG_ERROR(bad value ${enableval} for --enable-static-programs) ;;
351 esac],[staticprogs=no])
352 AM_CONDITIONAL(STATIC_PROGRAMS,[test "x$staticprogs" = "xyes"])
355 CONFIGURE_PART(Audit Compilation Environment)
358 dnl Check for the compiler and static/shared library creation.
363 dnl Try to detect/use GNU features
364 CFLAGS="$CFLAGS -D_GNU_SOURCE"
366 dnl which flags does the compiler support?
367 if test "x$GCC" = "xyes"; then
368 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
370 CFLAGS="$CFLAGS $flag"
371 cachename=rd_cv_gcc_flag_`echo $flag|sed 's/[[^A-Za-z]]/_/g'`
372 AC_CACHE_CHECK([if gcc likes the $flag flag], $cachename,
373 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[return 0 ]])],[eval $cachename=yes],[eval $cachename=no])])
374 if eval test \$$cachename = no; then
382 AC_SUBST(RRD_DEFAULT_FONT)
384 CONFIGURE_PART(Checking for Header Files)
386 dnl Checks for header files.
389 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)
391 dnl Checks for typedefs, structures, and compiler characteristics.
396 CONFIGURE_PART(Test Library Functions)
398 dnl Checks for libraries.
399 AC_CHECK_FUNC(acos, , AC_CHECK_LIB(m, acos))
403 dnl add pic flag in any case this makes sure all our code is relocatable
404 eval `./libtool --config | grep pic_flag`
405 CFLAGS="$CFLAGS $pic_flag"
408 dnl Checks for library functions.
414 dnl for each function found we get a definition in config.h
415 dnl of the form HAVE_FUNCTION
417 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)
419 CONFIGURE_PART(Map/Fadvis/Madvise checking)
421 dnl Could use these to know if we need to provide a prototype
422 dnl AC_CHECK_DECLS(fdatasync, [], [], [#include <unistd.h>])
424 dnl check for fdatasync. Solaris has fdatasync in the librt
426 AC_CHECK_FUNCS(fdatasync, [], AC_CHECK_LIB(rt, fdatasync, [LIBS="${LIBS} -lrt"; AC_DEFINE(HAVE_FDATASYNC)],[]))
427 dnl if there is no fdatasync we may get lucky with fsync
428 AC_CHECK_FUNCS(fsync)
431 dnl XXX: dunno about windows.. add AC_CHECK_FUNCS(munmap) there too?
432 if test "x$enable_mmap" = "xyes"; then
435 # the normal mmap test does not work in cygwin
437 if test "x$ac_cv_func_mmap" = "xyes"; then
438 ac_cv_func_mmap_fixed_mapped=yes
442 AC_CHECK_HEADERS(sys/mman.h)
444 AC_CHECK_FUNCS(mmap munmap msync)
445 AC_CHECK_DECLS(madvise, [], [], [#ifdef HAVE_SYS_MMAN_H
446 # include <sys/mman.h>
448 if test "x$ac_cv_have_decl_madvise" = "xyes";
450 AC_CHECK_FUNCS(madvise)
452 AC_CHECK_FUNCS(posix_madvise)
453 if test "x$ac_cv_func_posix_madvise" != "xyes"; then
454 AC_MSG_WARN([madvise() nor posix_madvise() found.])
459 if test "x$ac_cv_func_mmap" != "xyes";
461 AC_MSG_ERROR([--enable-mmap requested but mmap() was not detected])
466 dnl can we use posix_fadvise
467 AC_CHECK_DECLS(posix_fadvise, [], [], [#define _XOPEN_SOURCE 600
469 AC_CHECK_FUNCS(posix_fadvise)
471 CONFIGURE_PART(Libintl Processing)
475 GETTEXT_PACKAGE=rrdtool
476 AC_SUBST(GETTEXT_PACKAGE)
477 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[Gettext package])
479 AM_GLIB_GNU_GETTEXT()
480 IT_PROG_INTLTOOL([0.35.0],[no-xml])
482 AC_ARG_ENABLE(libintl,[ --disable-libintl i18n support (libintl)],
483 [],[enable_libintl=yes])
485 if test x$enable_libintl = xyes; then
487 AC_CHECK_HEADERS(libintl.h,[],[AC_MSG_RESULT(disabeling libintl build); enable_libintl=no])
489 if test x$enable_libintl = xyes ; then
490 dnl it seems bsd synstems need to link against libintl
491 dnl when compiling rrdupdate. lets check
492 AC_CHECK_LIB(intl, libintl_gettext,[LIB_LIBINTL="-lintl"])
496 dnl use for linking rrdupdate
497 AC_SUBST(LIB_LIBINTL)
499 dnl do not touch the po stuff if we are not going to build intl
500 AM_CONDITIONAL(BUILD_LIBINTL,[test x$enable_libintl = xyes])
503 CONFIGURE_PART(IEEE Math Checks)
506 dnl actual code to check if this works
507 AC_CHECK_FUNCS(fpclassify, ,
508 [AC_MSG_CHECKING(for fpclassify with <math.h>)
509 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <math.h>
510 volatile int x;volatile float f; ]], [[x = fpclassify(f)]])],[AC_MSG_RESULT(yes)
511 AC_DEFINE(HAVE_FPCLASSIFY,1)],[AC_MSG_RESULT(no)])])
513 AC_CHECK_FUNCS(isinf, ,
514 [AC_MSG_CHECKING(for isinf with <math.h>)
515 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <math.h>
516 volatile int x;volatile float f; ]], [[x = isinf(f)]])],[AC_MSG_RESULT(yes)
517 AC_DEFINE(HAVE_ISINF)],[AC_MSG_RESULT(no)])])
519 dnl finite is BSD, isfinite is C99, so prefer the latter
520 AC_CACHE_CHECK([whether isfinite is broken],[have_broken_isfinite],[
532 if (!isfinite(LDBL_MAX)) return 1;
535 if (!isfinite(DBL_MAX)) return 1;
540 have_broken_isfinite=no],have_broken_isfinite=yes,[
542 hppa*-*-hpux*) have_broken_isfinite=yes ;;
543 *) have_broken_isfinite=no ;;
546 if test "x$have_broken_isfinite" = "xno"; then
547 AC_DEFINE(HAVE_ISFINITE)
549 AC_CHECK_FUNCS(finite,[],
550 [AC_CHECK_FUNCS(isfinite,[],
551 [AC_MSG_CHECKING(for isfinite with <math.h>)
552 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <math.h>
553 volatile int x;volatile float f; ]],[[x = isfinite(f)]])],[AC_MSG_RESULT(yes)
554 AC_DEFINE(HAVE_ISFINITE)],[AC_MSG_RESULT(no)])])])
559 CONFIGURE_PART(Resolve Portability Issues)
561 dnl what does realloc do if it gets called with a NULL pointer
563 AC_CACHE_CHECK([if realloc can deal with NULL], rd_cv_null_realloc,
564 [AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>
568 if (x==NULL) return 1;
570 }]])],[rd_cv_null_realloc=yes],[rd_cv_null_realloc=nope],[:])])
572 if test x"$rd_cv_null_realloc" = xnope; then
573 AC_DEFINE(NO_NULL_REALLOC)
577 dnl solaris has some odd defines it needs in order to propperly compile ctime_r
578 AC_MSG_CHECKING([if ctime_r need special care to act posixly correct])
581 [[#include <time.h>]],
582 [[ctime_r(NULL,NULL,0)]]
584 [ CPPFLAGS="$CPPFLAGS -D_POSIX_PTHREAD_SEMANTICS"
587 [[#include <time.h>]],
588 [[ctime_r(NULL,NULL)]]
590 [AC_MSG_RESULT([yes, this seems to be solaris style])],
591 [AC_MSG_ERROR([Can't figure how to compile ctime_r])]
596 [[#include <time.h>]],
597 [[ctime_r(NULL,NULL)]]
600 [AC_MSG_ERROR([Can't figure how to compile ctime_r])]
606 dnl Check for pthreads
607 dnl http://autoconf-archive.cryp.to/acx_pthread.m4
609 AC_SUBST(MULTITHREAD_CFLAGS)
610 AC_SUBST(MULTITHREAD_LDFLAGS)
612 if test $enable_pthread != no; then
614 MULTITHREAD_CFLAGS=$PTHREAD_CFLAGS
615 MULTITHREAD_LDFLAGS=$PTHREAD_LIBS
620 dnl since we use lots of *_r functions all over the code we better
621 dnl make sure they are known
623 if test "x$x_rflag" != "xno"; then
624 CPPFLAGS="$CPPFLAGS $x_rflag"
627 AM_CONDITIONAL(BUILD_MULTITHREAD,[test $enable_pthread != no])
630 dnl see if we have to include malloc/malloc.h
631 AC_MSG_CHECKING([do we need malloc/malloc.h])
634 [[#include <stdlib.h>]],
637 [ AC_MSG_RESULT([nope, works out of the box]) ],
640 [[#include <stdlib.h>
641 #include <malloc/malloc.h>]],
644 [AC_DEFINE(NEED_MALLOC_MALLOC_H)
645 AC_MSG_RESULT([yes we do])],
646 [AC_MSG_ERROR([Can not figure how to compile malloc])]
652 CONFIGURE_PART(Find 3rd-Party Libraries)
655 AM_CONDITIONAL(BUILD_RRDCGI,[test $enable_rrdcgi != no])
660 dnl EX_CHECK_ALL(z, zlibVersion, zlib.h, zlib, 1.2.3, http://www.gzip.org/zlib/, "")
661 dnl EX_CHECK_ALL(png, png_access_version_number, png.h, libpng, 1.2.10, http://prdownloads.sourceforge.net/libpng/, "")
662 dnl EX_CHECK_ALL(freetype, FT_Init_FreeType, ft2build.h, freetype2, 2.1.10, http://prdownloads.sourceforge.net/freetype/, /usr/include/freetype2)
663 dnl EX_CHECK_ALL(fontconfig, FcInit, fontconfig.h, fontconfig, 2.3.1, http://fontconfig.org/release/, /usr/include)
664 EX_CHECK_ALL(cairo, cairo_font_options_create, cairo.h, cairo-png, 1.4.6, http://cairographics.org/releases/, "")
665 EX_CHECK_ALL(cairo, cairo_svg_surface_create, cairo-svg.h, cairo-svg, 1.4.6, http://cairographics.org/releases/, "")
666 EX_CHECK_ALL(cairo, cairo_pdf_surface_create, cairo-pdf.h, cairo-pdf, 1.4.6, http://cairographics.org/releases/, "")
667 EX_CHECK_ALL(cairo, cairo_ps_surface_create, cairo-ps.h, cairo-ps, 1.4.6, http://cairographics.org/releases/, "")
668 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/, "")
669 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, "")
670 EX_CHECK_ALL(xml2, xmlParseFile, libxml/parser.h, libxml-2.0, 2.6.31, http://xmlsoft.org/downloads.html, /usr/include/libxml2)
672 if test "$EX_CHECK_ALL_ERR" = "YES"; then
673 AC_MSG_ERROR([Please fix the library issues listed above and try again.])
682 CONFIGURE_PART(Prep for Building Language Bindings)
684 dnl Check for Perl and friends
685 PATH=$PATH:/usr/perl5/bin
687 AC_PATH_PROG(PERL, perl, no)
688 AC_PATH_PROG(POD2MAN, pod2man, no)
689 AC_PATH_PROG(POD2HTML, pod2html, no)
692 AC_ARG_ENABLE(perl,[ --disable-perl do not build the perl modules],
693 [],[enable_perl=yes])
696 AC_ARG_VAR(PERLCC, [[] C compiler for Perl modules])
697 AC_ARG_VAR(PERLCCFLAGS, [[] CC flags for Perl modules])
698 AC_ARG_VAR(PERLLD, [[same as PERLCC] Linker for Perl modules])
699 AC_ARG_VAR(PERLLDFLAGS, [[] LD flags for Perl modules])
701 if test "x$PERL" = "xno" -o x$enable_perl = xno; then
704 COMP_PERL="perl_piped perl_shared"
705 AC_MSG_CHECKING(for the perl version you are running)
706 PERL_VERSION=`$PERL -MConfig -e 'print $Config{version}'`
707 AC_MSG_RESULT($PERL_VERSION)
708 if test -z "$PERLCC"; then
709 AC_MSG_CHECKING(for the C compiler perl wants to use to build its modules)
710 perlcc=`$PERL -MConfig -e 'print $Config{cc}'`
711 AC_MSG_RESULT($perlcc)
712 if test ! -x "$perlcc"; then
713 AC_PATH_PROG(PERL_CC, ${perlcc}, no)
714 if test "$PERL_CC" = "no"; then
716 I would not find the Compiler ($perlcc) that was originally used to compile
717 your perl binary. You should either make sure that this compiler is
718 available on your system, pick an other compiler and set PERLCC
719 appropriately, or use a different perl setup that was compiled locally.
721 I will disable the compilation of the RRDs perl module for now.
723 COMP_PERL="perl_piped"
729 AC_MSG_CHECKING(Perl Modules to build)
730 AC_MSG_RESULT(${COMP_PERL:-No Perl Modules will be built})
732 # Options to pass when configuring perl module
734 test "$ppref" = "NONE" && ppref=$ac_default_prefix
736 PERL_MAKE_OPTIONS="PREFIX=$ppref LIB=$ppref/lib/perl/$PERL_VERSION"
738 dnl pass additional perl options when generating Makefile from Makefile.PL
739 AC_ARG_ENABLE(perl-site-install,
740 [ --enable-perl-site-install by default the rrdtool perl modules are installed
741 together with rrdtool in $prefix/lib/perl. You have to
742 put a 'use lib qw($prefix/lib/perl)' into your scripts
743 when you want to use them. When you set this option
744 the perl modules will get installed wherever
745 your perl setup thinks it is best.],
746 [PERL_MAKE_OPTIONS=],[])
748 if test ! -z "$PERLCC"; then
749 PERL_MAKE_OPTIONS="$PERL_MAKE_OPTIONS CC=$PERLCC"
751 if test ! -z "$PERLCCFLAGS"; then
752 PERL_MAKE_OPTIONS="$PERL_MAKE_OPTIONS CCFLAGS=$PERLCCFLAGS"
755 if test -z "$PERLLD"; then
758 PERL_MAKE_OPTIONS="$PERL_MAKE_OPTIONS LD=$PERLLD"
760 if test ! -z "$PERLLDFLAGS"; then
761 PERL_MAKE_OPTIONS="$PERL_MAKE_OPTIONS LDFLAGS=$PERLLDFLAGS"
765 AC_ARG_WITH(perl-options,
766 [ --with-perl-options=[OPTIONS] options to pass on command-line when
767 generating Makefile from Makefile.PL. If you set this
768 option, interesting things may happen unless you know
769 what you are doing!],
770 [PERL_MAKE_OPTIONS=$withval])
772 AC_SUBST(PERL_MAKE_OPTIONS)
775 AC_SUBST(PERL_VERSION)
778 AC_PATH_PROG(RUBY, ruby, no)
780 AC_ARG_ENABLE(ruby,[ --disable-ruby do not build the ruby modules],
781 [],[enable_ruby=yes])
783 AC_MSG_CHECKING(if ruby modules can be built)
785 if test "x$RUBY" = "xno" -o x$enable_ruby = xno; then
787 AC_MSG_RESULT(No .. Ruby not found or disabled)
789 if $RUBY -e 'require "mkmf"' >/dev/null 2>&1; then
794 AC_MSG_RESULT(Ruby found but mkmf is missing! Install the -dev package)
799 dnl pass additional ruby options when generating Makefile from Makefile.PL
800 AC_ARG_ENABLE(ruby-site-install,
801 [ --enable-ruby-site-install by default the rrdtool ruby modules are installed
802 together with rrdtool in $prefix/lib/ruby. You have to
803 add $prefix/lib/ruby/$ruby_version/$sitearch to you $: variable
804 for ruby to find the RRD.so file.],
805 [RUBY_MAKE_OPTIONS=],[RUBY_MAKE_OPTIONS="sitedir="'$(DESTDIR)'"$prefix/lib/ruby"])
808 AC_ARG_WITH(ruby-options,
809 [ --with-ruby-options=[OPTIONS] options to pass on command-line when
810 generating Makefile from extconf.rb. If you set this
811 option, interesting things may happen unless you know
812 what you are doing!],
813 [RUBY_MAKE_OPTIONS=$withval])
815 AC_SUBST(RUBY_MAKE_OPTIONS)
822 AC_ARG_ENABLE(tcl,[ --disable-tcl do not build the tcl modules],
825 if test "$enable_tcl" = "yes"; then
828 AC_ARG_WITH(tcllib,[ --with-tcllib=DIR location of the tclConfig.sh])
830 for dir in $withval /usr/lib /usr/local/lib /usr/lib/tcl8.4 /usr/lib/tcl8.3 ; do
831 AC_MSG_CHECKING(for tclConfig.sh in $dir)
832 if test -f "$dir/tclConfig.sh" ; then
833 tcl_config=$dir/tclConfig.sh
842 if test "$enable_tcl" = "no"; then
843 AC_MSG_WARN([tclConfig.sh not found - Tcl interface will not be built])
846 TCL_PACKAGE_DIR="$TCL_PACKAGE_PATH/tclrrd$VERSION"
848 AC_ARG_ENABLE(tcl,[ --enable-tcl-site install the tcl extension in the tcl tree],
849 [],[enable_tcl_site=yes])
853 AM_CONDITIONAL(BUILD_TCL, test "$enable_tcl" = "yes" )
854 AM_CONDITIONAL(BUILD_TCL_SITE, test "$enable_tcl_site" = "yes" )
858 AC_SUBST(TCL_SHLIB_CFLAGS)
859 AC_SUBST(TCL_SHLIB_LD)
860 AC_SUBST(TCL_SHLIB_SUFFIX)
861 AC_SUBST(TCL_PACKAGE_PATH)
862 AC_SUBST(TCL_LD_SEARCH_FLAGS)
863 AC_SUBST(TCL_STUB_LIB_SPEC)
864 AC_SUBST(TCL_VERSION)
865 AC_SUBST(TCL_PACKAGE_DIR)
866 AC_SUBST(TCL_INC_DIR)
868 AC_ARG_ENABLE(python,[ --disable-python do not build the python modules],
869 [],[enable_python=yes])
871 if test "$enable_python" = "yes"; then
873 AM_PATH_PYTHON(2.3,[],[enable_python=no])
874 AM_CHECK_PYTHON_HEADERS(,[enable_python=no;AC_MSG_WARN(could not find Python headers)])
877 if test x$enable_python = xno; then
883 AC_SUBST(COMP_PYTHON)
886 AC_PATH_PROGS(NROFF, gnroff nroff)
887 AC_PATH_PROGS(TROFF, groff troff)
889 AC_ARG_VAR(RRDDOCDIR, [[DATADIR/doc/PACKAGE-VERSION] Documentation directory])
890 if test -z "$RRDDOCDIR"; then
891 RRDDOCDIR='${datadir}/doc/${PACKAGE}-${VERSION}'; fi
894 CONFIGURE_PART(Apply Configuration Information)
896 AC_CONFIG_FILES([examples/shared-demo.pl])
897 AC_CONFIG_FILES([examples/piped-demo.pl])
898 AC_CONFIG_FILES([examples/stripes.pl])
899 AC_CONFIG_FILES([examples/bigtops.pl])
900 AC_CONFIG_FILES([examples/minmax.pl])
901 AC_CONFIG_FILES([examples/4charts.pl])
902 AC_CONFIG_FILES([examples/perftest.pl])
903 AC_CONFIG_FILES([examples/Makefile])
904 AC_CONFIG_FILES([doc/Makefile])
905 AC_CONFIG_FILES([po/Makefile.in])
906 AC_CONFIG_FILES([src/Makefile])
907 AC_CONFIG_FILES([bindings/Makefile])
908 AC_CONFIG_FILES([bindings/tcl/Makefile])
909 AC_CONFIG_FILES([bindings/tcl/ifOctets.tcl])
910 AC_CONFIG_FILES([Makefile])
912 AC_CONFIG_COMMANDS([default],[[ chmod +x examples/*.pl]],[[]])
916 AC_MSG_RESULT(and out again)
918 echo $ECHO_N "ordering CD from http://tobi.oetiker.ch/wish $ECHO_C" 1>&6
920 echo $ECHO_N ".$ECHO_C" 1>&6
922 echo $ECHO_N ".$ECHO_C" 1>&6
924 echo $ECHO_N ".$ECHO_C" 1>&6
926 echo $ECHO_N ".$ECHO_C" 1>&6
928 AC_MSG_RESULT([ just kidding ;-)])
930 echo "----------------------------------------------------------------"
931 echo "Config is DONE!"
933 echo " With MMAP IO: $enable_mmap"
934 echo " Static programs: $staticprogs"
935 echo " Perl Modules: $COMP_PERL"
936 echo " Perl Binary: $PERL"
937 echo " Perl Version: $PERL_VERSION"
938 echo " Perl Options: $PERL_MAKE_OPTIONS"
939 echo " Ruby Modules: $COMP_RUBY"
940 echo " Ruby Binary: $RUBY"
941 echo " Ruby Options: $RUBY_MAKE_OPTIONS"
942 echo " Build Tcl Bindings: $enable_tcl"
943 echo " Build Python Bindings: $enable_python"
944 echo " Build rrdcgi: $enable_rrdcgi"
945 echo " Build librrd MT: $enable_pthread"
946 echo " Link with libintl: $enable_libintl"
948 echo " Libraries: $ALL_LIBS"
950 echo "Type 'make' to compile the software and use 'make install' to "
951 echo "install everything to: $prefix."
953 echo " ... that wishlist is NO JOKE. If you find RRDtool useful"
954 echo "make me happy. Go to http://tobi.oetiker.ch/wish and"
955 echo "place an order."
957 echo " -- Tobi Oetiker <tobi@oetiker.ch>"
958 echo "----------------------------------------------------------------"