Code

added msync before unmap
[rrdtool-all.git] / program / configure.ac
1 dnl RRDtool AutoConf script ... 
2 dnl ---------------------------
3 dnl
4 dnl Created by Jeff Allen, Tobi Oetiker, Blair Zajac
5 dnl
6 dnl Inspiration from http://autoconf-archive.cryp.to
7  
8 dnl tell automake the this script is for rrdtool
9 dnl the official version number is
10 dnl a.b.c
11 AC_INIT([rrdtool],[1.2.99907080300])
12 dnl for testing a numberical version number comes handy
13 dnl the released version are
14 dnl a.bccc
15 dnl the devel versions will be something like
16 dnl a.b999yymmddhh 
17 NUMVERS=1.299907080300
18 AC_SUBST(NUMVERS)
19 AC_CANONICAL_TARGET
20 AM_INIT_AUTOMAKE
21 AC_CONFIG_HEADERS([rrd_config.h])
23 dnl all our local stuff like install scripts and include files
24 dnl is in there
27 dnl determine the type of system we are running on
29 AC_SUBST(VERSION)
31 AC_PREFIX_DEFAULT( /usr/local/rrdtool-$PACKAGE_VERSION )
33 dnl Minimum Autoconf version required.
34 AC_PREREQ(2.59)
36 dnl At the TOP of the HEADER
38 AH_TOP([
40 #ifndef RRD_CONFIG_H
41 #define RRD_CONFIG_H
42 /* IEEE can be prevented from raising signals with fpsetmask(0) */
43 #undef MUST_DISABLE_FPMASK
45 /* IEEE math only works if SIGFPE gets actively set to IGNORE */
47 #undef MUST_DISABLE_SIGFPE
49 /* realloc does not support NULL as argument */
50 #undef NO_NULL_REALLOC
52  ])
54 AH_BOTTOM([
55 /* make sure that we pickup the correct stuff from all headers */
56 #define _XOPEN_SOURCE 600
57 #ifdef HAVE_FEATURES_H
58 # include <features.h>
59 #endif
61 #ifdef HAVE_SYS_TYPES_H
62 # include <sys/types.h>
63 #endif
65 #ifdef HAVE_SYS_PARAM_H
66 # include <sys/param.h>
67 #endif
68 #ifndef MAXPATH
69 # ifdef PATH_MAX
70 #  define MAXPATH PATH_MAX
71 # endif
72 #endif
73 #ifndef MAXPATH
74 /* else try the BSD variant */
75 # ifdef MAXPATHLEN
76 #  define MAXPATH MAXPATHLEN
77 # endif
78 #endif
80 #ifdef HAVE_ERRNO_H
81 # include <errno.h>
82 #endif
84 #ifdef HAVE_SYS_MMAN_H
85 # include <sys/mman.h>
86 #endif
87 #if !defined HAVE_MADVISE && defined HAVE_POSIX_MADVISE
88 /* use posix_madvise family */
89 # define madvise posix_madvise
90 # define MADV_NORMAL POSIX_MADV_NORMAL
91 # define MADV_RANDOM POSIX_MADV_RANDOM
92 # define MADV_SEQUENTIAL POSIX_MADV_SEQUENTIAL
93 # define MADV_WILLNEED POSIX_MADV_WILLNEED
94 # define MADV_DONTNEED POSIX_MADV_DONTNEED
95 #endif
96 #if defined HAVE_MADVISE || defined HAVE_POSIX_MADVISE
97 # define USE_MADVISE 1
98 #endif
100 #ifdef HAVE_SYS_STAT_H
101 # include <sys/stat.h>
102 #endif
104 #ifdef HAVE_FCNTL_H
105 #include <fcntl.h>
106 #endif
108 #ifdef HAVE_UNISTD_H
109 # include <unistd.h>
110 #endif
112 #ifdef TIME_WITH_SYS_TIME
113 # include <sys/time.h>
114 # include <time.h>
115 #else
116 # ifdef HAVE_SYS_TIME_H
117 #  include <sys/time.h>
118 # else
119 #  include <time.h>
120 # endif
121 #endif
123 #ifdef HAVE_SYS_TIMES_H
124 # include <sys/times.h>
125 #endif
127 #ifdef HAVE_SYS_RESOURCE_H
128 # include <sys/resource.h>
129 #if (defined(__svr4__) && defined(__sun__))
130 /* Solaris headers (pre 2.6) don't have a getrusage prototype.
131    Use this instead. */
132 extern int getrusage(int, struct rusage *);
133 #endif /* __svr4__ && __sun__ */
134 #endif
137 /* define strrchr, strchr and memcpy, memmove in terms of bsd funcs
138    make sure you are NOT using bcopy, index or rindex in the code */
139       
140 #ifdef STDC_HEADERS
141 # include <string.h>
142 #else
143 # ifndef HAVE_STRCHR
144 #  define strchr index
145 #  define strrchr rindex
146 # endif
147 char *strchr (), *strrchr ();
148 # ifndef HAVE_MEMMOVE
149 #  define memcpy(d, s, n) bcopy ((s), (d), (n))
150 #  define memmove(d, s, n) bcopy ((s), (d), (n))
151 # endif
152 #endif
154 #ifdef NO_NULL_REALLOC
155 # define rrd_realloc(a,b) ( (a) == NULL ? malloc( (b) ) : realloc( (a) , (b) ))
156 #else
157 # define rrd_realloc(a,b) realloc((a), (b))
158 #endif
160 #ifdef NEED_MALLOC_MALLOC_H
161 #  include <malloc/malloc.h>
162 #endif
164 #ifdef HAVE_STDIO_H
165 # include <stdio.h>
166 #endif
168 #ifdef HAVE_STDLIB_H
169 # include <stdlib.h>
170 #endif
172 #ifdef HAVE_CTYPE_H
173 # include <ctype.h>
174 #endif
176 #ifdef HAVE_DIRENT_H
177 # include <dirent.h>
178 # define NAMLEN(dirent) strlen((dirent)->d_name)
179 #else
180 # define dirent direct
181 # define NAMLEN(dirent) (dirent)->d_namlen
182 # ifdef HAVE_SYS_NDIR_H
183 #  include <sys/ndir.h>
184 # endif
185 # ifdef HAVE_SYS_DIR_H
186 #  include <sys/dir.h>
187 # endif
188 # ifdef HAVE_NDIR_H
189 #  include <ndir.h>
190 # endif
191 #endif
193 #ifdef MUST_DISABLE_SIGFPE
194 # include <signal.h>
195 #endif
197 #ifdef MUST_DISABLE_FPMASK
198 # include <floatingpoint.h>
199 #endif
202 #ifdef HAVE_MATH_H
203 # include <math.h>
204 #endif
206 #ifdef HAVE_FLOAT_H
207 # include <float.h>
208 #endif
210 #ifdef HAVE_IEEEFP_H
211 # include <ieeefp.h>
212 #endif
214 #ifdef HAVE_FP_CLASS_H
215 # include <fp_class.h>
216 #endif
218 /* for Solaris */
219 #if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASS))
220 #  define HAVE_ISINF 1
221 #  define isinf(a) (fpclass(a) == FP_NINF || fpclass(a) == FP_PINF)
222 #endif
224 /* solaris 10 it defines isnan such that only forte can compile it ... bad bad  */
225 #if (defined(HAVE_ISNAN) && defined(isnan) && defined(HAVE_FPCLASS))
226 #  undef isnan
227 #  define isnan(a) (fpclass(a) == FP_SNAN || fpclass(a) == FP_QNAN)
228 #endif
230 /* for OSF1 Digital Unix */
231 #if (! defined(HAVE_ISINF) && defined(HAVE_FP_CLASS) && defined(HAVE_FP_CLASS_H))
232 #  define HAVE_ISINF 1
233 #  define isinf(a) (fp_class(a) == FP_NEG_INF || fp_class(a) == FP_POS_INF)
234 #endif
236 #if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_PLUS_INF) && defined(FP_MINUS_INF))
237 #  define HAVE_ISINF 1
238 #  define isinf(a) (fpclassify(a) == FP_MINUS_INF || fpclassify(a) == FP_PLUS_INF)
239 #endif
241 #if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_INFINITE))
242 #  define HAVE_ISINF 1
243 #  define isinf(a) (fpclassify(a) == FP_INFINITE)
244 #endif
246 /* for AIX */
247 #if (! defined(HAVE_ISINF) && defined(HAVE_CLASS))
248 #  define HAVE_ISINF 1
249 #  define isinf(a) (class(a) == FP_MINUS_INF || class(a) == FP_PLUS_INF)
250 #endif
252 #if (! defined (HAVE_FINITE) && defined (HAVE_ISFINITE))
253 #  define HAVE_FINITE 1
254 #  define finite(a) isfinite(a)
255 #endif
257 #if (! defined(HAVE_FINITE) && defined(HAVE_ISNAN) && defined(HAVE_ISINF))
258 #  define HAVE_FINITE 1
259 #  define finite(a) (! isnan(a) && ! isinf(a))
260 #endif
262 #ifndef HAVE_FINITE
263 #error "Can't compile without finite function"
264 #endif
266 #ifndef HAVE_ISINF
267 #error "Can't compile without isinf function"
268 #endif
270 #endif /* RRD_CONFIG_H */
271 ])
273 dnl Process Special Options
274 dnl -----------------------------------
276 dnl How the vertical axis label is printed
277 AC_ARG_VAR(RRDGRAPH_YLEGEND_ANGLE, 
278  [Vertical label angle: -90.0 (default) or 90.0])
279 AC_DEFINE_UNQUOTED(RRDGRAPH_YLEGEND_ANGLE,${RRDGRAPH_YLEGEND_ANGLE:-90.0},
280  [Vertical label angle: -90.0 (default) or 90.0])
282 AC_ARG_ENABLE(rrdcgi,[  --disable-rrdcgi        disable building of rrdcgi],
283 [],[enable_rrdcgi=yes])
285 dnl Check if we run on a system that has fonts
286 AC_ARG_WITH(rrd-default-font,
287 [  --with-rrd-default-font=[OPTIONS]  set the full path to your default font.],
288 [RRD_DEFAULT_FONT=$withval],[
289   if test -d ${WINDIR:-nodir}/cour.ttf ; then
290         RRD_DEFAULT_FONT=`cd $WINDIR;pwd`/cour.ttf
291   else
292         RRD_DEFAULT_FONT='"DejaVu Sans Mono,Bitstream Vera Sans Mono,monospace,Courier"'
293   fi
294 ])
296 dnl Use mmap in rrd_update instead of seek+write
297 AC_ARG_ENABLE([mmap],
298 [  --disable-mmap          disable mmap in rrd_update, use seek+write instead],
299 [],
300 [enable_mmap=yes])
302 AC_ARG_ENABLE(pthread,[  --disable-pthread       disable multithread support],
303 [],[enable_pthread=yes])
305 AC_ARG_ENABLE(static-programs,
306      [  --enable-static-programs  Build static programs],
307      [case "${enableval}" in
308        yes) staticprogs=yes ;;
309        no)  staticprogs=no ;;
310        *) AC_MSG_ERROR(bad value ${enableval} for --enable-static-programs) ;;
311      esac],[staticprogs=no])
312 AM_CONDITIONAL(STATIC_PROGRAMS,[test "x$staticprogs" = "xyes"])
315 CONFIGURE_PART(Audit Compilation Environment)
318 dnl Check for the compiler and static/shared library creation.
319 AC_PROG_CC
320 AC_PROG_CPP
321 AC_PROG_LIBTOOL
323 dnl Try to detect/use GNU features
324 CFLAGS="$CFLAGS -D_GNU_SOURCE"
326 dnl which flags does the compiler support?
327 if test "x$GCC" = "xyes"; then
328   for flag in -fno-strict-aliasing -Wall -std=c99 -pedantic -Wundef -Wshadow -Wpointer-arith -Wcast-align -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Winline -Wc++-compat -Wold-style-definition -W; do
329     oCFLAGS="$CFLAGS"
330     CFLAGS="$CFLAGS $flag"
331     cachename=rd_cv_gcc_flag_`echo $flag|sed 's/[[^A-Za-z]]/_/g'`
332     AC_CACHE_CHECK([if gcc likes the $flag flag], $cachename,
333        [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[return 0 ]])],[eval $cachename=yes],[eval $cachename=no])])
334     if eval test \$$cachename = no; then
335          CFLAGS="$oCFLAGS"
336     fi
337   done
338 fi
342 AC_SUBST(RRD_DEFAULT_FONT)
344 CONFIGURE_PART(Checking for Header Files)
345  
346 dnl Checks for header files.
347 AC_HEADER_STDC
348 AC_HEADER_DIRENT
349 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)
351 dnl Checks for typedefs, structures, and compiler characteristics.
352 AC_C_CONST
353 AC_HEADER_TIME
354 AC_STRUCT_TM
356 dnl Checks for libraries.
357 AC_CHECK_FUNC(acos, , AC_CHECK_LIB(m, acos))
359 dnl add pic flag in any case this makes sure all our code is relocatable
360 eval `./libtool --config | grep pic_flag`
361 CFLAGS="$CFLAGS $pic_flag"
363 CONFIGURE_PART(Test Library Functions)
365 dnl Checks for library functions.
366 AC_FUNC_STRFTIME
367 AC_FUNC_VPRINTF
369 AC_C_BIGENDIAN
371 dnl for each function found we get a definition in config.h 
372 dnl of the form HAVE_FUNCTION
374 AC_CHECK_FUNCS(tzset mbstowcs opendir readdir chdir chroot getuid setlocale strerror strerror_r snprintf vsnprintf fpclass class fp_class isnan memmove strchr mktime getrusage gettimeofday)
376 dnl Could use these to know if we need to provide a prototype
377 dnl AC_CHECK_DECLS(fdatasync, [], [], [#include <unistd.h>])
379 dnl XXX: dunno about windows.. add AC_CHECK_FUNCS(munmap) there too?
380 if test "x$enable_mmap" = "xyes"; then
381   case "$host" in
382   *cygwin*)
383     # the normal mmap test does not work in cygwin
384     AC_CHECK_FUNCS(mmap)
385     if test "x$ac_cv_func_mmap" = "xyes"; then
386       ac_cv_func_mmap_fixed_mapped=yes
387     fi
388   ;;
389   *)
390     AC_CHECK_HEADERS(sys/mman.h)
391     AC_FUNC_MMAP
392     AC_CHECK_FUNCS(mmap munmap msync)
393     AC_CHECK_DECLS(madvise, [], [], [#ifdef HAVE_SYS_MMAN_H
394                                      # include <sys/mman.h>
395                                      #endif])
396     if test "x$ac_cv_have_decl_madvise" = "xyes";
397     then
398       AC_CHECK_FUNCS(madvise)
399     else
400       AC_CHECK_FUNCS(posix_madvise)
401       if test "x$ac_cv_func_posix_madvise" != "xyes"; then
402         AC_MSG_WARN([madvise() nor posix_madvise() found.])
403       fi
404     fi
405   ;;
406   esac
407   if test "x$ac_cv_func_mmap" != "xyes";
408   then
409     AC_MSG_ERROR([--enable-mmap requested but mmap() was not detected])
410 dnl enable_mmap="no"
411   fi
412 fi
414 dnl can we use posix_fadvise
415 AC_CHECK_DECLS(posix_fadvise, [], [], [#define _XOPEN_SOURCE 600
416 #include <fcntl.h>])
417 AC_CHECK_FUNCS(posix_fadvise)
421 CONFIGURE_PART(IEEE Math Checks)
422  
424 dnl actual code to check if this works
425 AC_CHECK_FUNCS(fpclassify, ,
426   [AC_MSG_CHECKING(for fpclassify with <math.h>)
427     AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <math.h>
428 volatile int x;volatile float f; ]], [[x = fpclassify(f)]])],[AC_MSG_RESULT(yes)
429       AC_DEFINE(HAVE_FPCLASSIFY)],[AC_MSG_RESULT(no)])])
431 AC_CHECK_FUNCS(isinf, ,
432   [AC_MSG_CHECKING(for isinf with <math.h>)
433     AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <math.h>
434 volatile int x;volatile float f;  ]], [[x = isinf(f)]])],[AC_MSG_RESULT(yes)
435       AC_DEFINE(HAVE_ISINF)],[AC_MSG_RESULT(no)])])
437 dnl finite is BSD, isfinite is C99, so prefer the latter
438 AC_CACHE_CHECK([whether isfinite is broken],[have_broken_isfinite],[
439 AC_TRY_RUN([
440 #ifdef HAVE_MATH_H
441 #include <math.h>
442 #endif
443 #ifdef HAVE_FLOAT_H
444 #include <float.h>
445 #endif
446 int main ()
448 #ifdef isfinite
449 #ifdef LDBL_MAX
450   if (!isfinite(LDBL_MAX)) return 1;
451 #endif
452 #ifdef DBL_MAX
453   if (!isfinite(DBL_MAX)) return 1;
454 #endif
455 #endif
456 return 0;
457 }],[
458 have_broken_isfinite=no],have_broken_isfinite=yes,[
459 case "${target}" in
460   hppa*-*-hpux*) have_broken_isfinite=yes ;;
461   *) have_broken_isfinite=no ;;
462 esac])
463 ])
464 if test "x$have_broken_isfinite" = "xno"; then
465   AC_DEFINE(HAVE_ISFINITE)
466 else
467 AC_CHECK_FUNCS(finite,[],
468   [AC_CHECK_FUNCS(isfinite,[],
469       [AC_MSG_CHECKING(for isfinite with <math.h>)
470        AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <math.h>
471 volatile int x;volatile float f;  ]],[[x = isfinite(f)]])],[AC_MSG_RESULT(yes)
472                 AC_DEFINE(HAVE_ISFINITE)],[AC_MSG_RESULT(no)])])])
473 fi
475 AC_FULL_IEEE
477 CONFIGURE_PART(Resolve Portability Issues)
479 dnl what does realloc do if it gets called with a NULL pointer
481 AC_CACHE_CHECK([if realloc can deal with NULL], rd_cv_null_realloc,
482 [AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>
483               int main(void){
484               char *x = NULL;
485               x = realloc (x,10);
486               if (x==NULL) return 1;
487               return 0;
488              }]])],[rd_cv_null_realloc=yes],[rd_cv_null_realloc=nope],[:])])
490 if test x"$rd_cv_null_realloc" = xnope; then
491 AC_DEFINE(NO_NULL_REALLOC)
492 fi
494 AC_LANG_PUSH(C)
495 dnl solaris has some odd defines it needs in order to propperly compile ctime_r
496 AC_MSG_CHECKING([if ctime_r need special care to act posixly correct])
497 AC_LINK_IFELSE(
498     AC_LANG_PROGRAM(
499            [[#include <time.h>]],
500            [[ctime_r(NULL,NULL,0)]]
501                    ),
502     [ CPPFLAGS="$CPPFLAGS -D_POSIX_PTHREAD_SEMANTICS"
503       AC_LINK_IFELSE(
504           AC_LANG_PROGRAM(
505                 [[#include <time.h>]],
506                 [[ctime_r(NULL,NULL)]]
507                          ),
508           [AC_MSG_RESULT([yes, this seems to be solaris style])],
509           [AC_MSG_ERROR([Can't figure how to compile ctime_r])]
510       )
511     ],  
512     [ AC_LINK_IFELSE(
513           AC_LANG_PROGRAM(
514                 [[#include <time.h>]],
515                 [[ctime_r(NULL,NULL)]]
516                          ),
517           [AC_MSG_RESULT(no)],
518           [AC_MSG_ERROR([Can't figure how to compile ctime_r])]
519       )
520     ]  
522 AC_LANG_POP(C)
524 dnl Check for pthreads
525 dnl http://autoconf-archive.cryp.to/acx_pthread.m4
526  
527 AC_SUBST(MULTITHREAD_CFLAGS)
528 AC_SUBST(MULTITHREAD_LDFLAGS)
530 if test $enable_pthread != no; then 
531  ACX_PTHREAD([
532     MULTITHREAD_CFLAGS=$PTHREAD_CFLAGS
533     MULTITHREAD_LDFLAGS=$PTHREAD_LIBS
534              ],
535              [])
536 fi
538 dnl since we use lots of *_r functions all over the code we better
539 dnl make sure they are known
541 if test  "x$x_rflag" != "xno"; then
542    CPPFLAGS="$CPPFLAGS $x_rflag"
543 fi
545 AM_CONDITIONAL(BUILD_MULTITHREAD,[test $enable_pthread != no])
547 AC_LANG_PUSH(C)
548 dnl see if we have to include malloc/malloc.h
549 AC_MSG_CHECKING([do we need malloc/malloc.h])
550 AC_LINK_IFELSE(
551     AC_LANG_PROGRAM(
552            [[#include <stdlib.h>]],
553            [[malloc(1)]]
554                    ),
555     [ AC_MSG_RESULT([nope, works out of the box]) ],
556     [ AC_LINK_IFELSE(
557           AC_LANG_PROGRAM(
558                 [[#include <stdlib.h>
559                   #include <malloc/malloc.h>]],
560                 [[malloc(1)]]
561                          ),
562           [AC_DEFINE(NEED_MALLOC_MALLOC_H)
563            AC_MSG_RESULT([yes we do])],
564           [AC_MSG_ERROR([Can not figure how to compile malloc])]
565       )
566     ]  
568 AC_LANG_POP(C)
570 CONFIGURE_PART(Find 3rd-Party Libraries)
573 AM_CONDITIONAL(BUILD_RRDCGI,[test $enable_rrdcgi != no])
575 CORE_LIBS="$LIBS"
577 dnl EX_CHECK_ALL(z,          zlibVersion,               zlib.h,                 zlib,        1.2.3,  http://www.gzip.org/zlib/, "")
578 dnl EX_CHECK_ALL(png,        png_access_version_number, png.h,                  libpng,      1.2.10,  http://prdownloads.sourceforge.net/libpng/, "")
579 dnl EX_CHECK_ALL(freetype,   FT_Init_FreeType,          ft2build.h,                     freetype2,   2.1.10,  http://prdownloads.sourceforge.net/freetype/, /usr/include/freetype2)
580 dnl EX_CHECK_ALL(fontconfig, FcInit,                    fontconfig.h,               fontconfig,  2.3.1,  http://fontconfig.org/release/, /usr/include)
581 EX_CHECK_ALL(cairo,      cairo_font_options_create,     cairo.h,                cairo-png,   1.4.6,  http://cairographics.org/releases/, "")
582 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/, "")
583 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, "")
585 if test "$EX_CHECK_ALL_ERR" = "YES"; then
586   AC_MSG_ERROR([Please fix the library issues listed above and try again.])
587 fi
589 ALL_LIBS="$LIBS"
590 LIBS=
592 AC_SUBST(CORE_LIBS)
593 AC_SUBST(ALL_LIBS)
595 CONFIGURE_PART(Prep for Building Language Bindings)
596   
597 dnl Check for Perl.
598 AC_PATH_PROG(PERL, perl, no)
600 AC_ARG_ENABLE(perl,[  --disable-perl          do not build the perl modules],
601 [],[enable_perl=yes])
604 AC_ARG_VAR(PERLCC, [[] C compiler for Perl modules])
605 AC_ARG_VAR(PERLCCFLAGS, [[] CC flags for Perl modules])
606 AC_ARG_VAR(PERLLD, [[same as PERLCC] Linker for Perl modules])
607 AC_ARG_VAR(PERLLDFLAGS, [[] LD flags for Perl modules])
609 if test "x$PERL" = "xno" -o  x$enable_perl = xno; then
610         COMP_PERL=
611 else
612         COMP_PERL="perl_piped perl_shared"
613         AC_MSG_CHECKING(for the perl version you are running)
614         PERL_VERSION=`$PERL -MConfig -e 'print $Config{version}'`
615         AC_MSG_RESULT($PERL_VERSION)
616         if test -z "$PERLCC"; then
617             AC_MSG_CHECKING(for the C compiler perl wants to use to build its modules)
618             perlcc=`$PERL -MConfig -e 'print $Config{cc}'`
619             AC_MSG_RESULT($perlcc)
620             if test ! -x "$perlcc"; then
621                 AC_PATH_PROG(PERL_CC, ${perlcc}, no)
622                 if test "$PERL_CC" = "no"; then
623                     AC_MSG_WARN([
624 I would not find the Compiler ($perlcc) that was originally used to compile
625 your perl binary. You should either make sure that this compiler is
626 available on your system, pick an other compiler and set PERLCC
627 appropriately, or use a different perl setup that was compiled locally.
629 I will disable the compilation of the RRDs perl module for now.
630 ])
631                     COMP_PERL="perl_piped"
632                 fi
633             fi    
634         fi
635 fi
637 AC_MSG_CHECKING(Perl Modules to build)
638 AC_MSG_RESULT(${COMP_PERL:-No Perl Modules will be built})
640 # Options to pass when configuring perl module
641 ppref=$prefix
642 test "$ppref" = "NONE" && ppref=$ac_default_prefix
644 PERL_MAKE_OPTIONS="PREFIX=$ppref LIB=$ppref/lib/perl/$PERL_VERSION"
646 dnl pass additional perl options when generating Makefile from Makefile.PL
647 AC_ARG_ENABLE(perl-site-install,
648 [  --enable-perl-site-install   by default the rrdtool perl modules are installed
649                           together with rrdtool in $prefix/lib/perl. You have to
650                           put a 'use lib qw($prefix/lib/perl)' into your scripts
651                           when you want to use them. When you set this option
652                           the perl modules will get installed wherever
653                           your perl setup thinks it is best.],
654 [PERL_MAKE_OPTIONS=],[])
656 if test ! -z "$PERLCC"; then
657    PERL_MAKE_OPTIONS="$PERL_MAKE_OPTIONS CC=$PERLCC"
659    if test ! -z "$PERLCCFLAGS"; then
660        PERL_MAKE_OPTIONS="$PERL_MAKE_OPTIONS CCFLAGS=$PERLCCFLAGS"
661    fi
662    
663    if test -z "$PERLLD"; then
664        PERLLD=$PERLCC
665    fi
666    PERL_MAKE_OPTIONS="$PERL_MAKE_OPTIONS LD=$PERLLD"
667   
668    if test ! -z "$PERLLDFLAGS"; then
669        PERL_MAKE_OPTIONS="$PERL_MAKE_OPTIONS LDFLAGS=$PERLLDFLAGS"
670    fi
671 fi
672         
673 AC_ARG_WITH(perl-options,
674 [  --with-perl-options=[OPTIONS]  options to pass on command-line when
675                           generating Makefile from Makefile.PL. If you set this
676                           option, interesting things may happen unless you know
677                           what you are doing!],
678 [PERL_MAKE_OPTIONS=$withval])
680 AC_SUBST(PERL_MAKE_OPTIONS)
681 AC_SUBST(PERL)
682 AC_SUBST(COMP_PERL)
683 AC_SUBST(PERL_VERSION)
685 dnl Check for Ruby.
686 AC_PATH_PROG(RUBY, ruby, no)
688 AC_ARG_ENABLE(ruby,[  --disable-ruby          do not build the ruby modules],
689 [],[enable_ruby=yes])
691 AC_MSG_CHECKING(if ruby modules can be built)
693 if test "x$RUBY" = "xno" -o  x$enable_ruby = xno; then
694         COMP_RUBY=
695         AC_MSG_RESULT(No .. Ruby not found or disabled)
696 else
697         if $RUBY -e 'require "mkmf"' >/dev/null 2>&1; then
698                 COMP_RUBY="ruby"
699                 AC_MSG_RESULT(YES)
700         else
701                 COMP_RUBY=
702                 AC_MSG_RESULT(Ruby found but mkmf is missing! Install the -dev package)         
703         fi                              
704 fi
707 dnl pass additional ruby options when generating Makefile from Makefile.PL
708 AC_ARG_ENABLE(ruby-site-install,
709 [  --enable-ruby-site-install   by default the rrdtool ruby modules are installed
710                           together with rrdtool in $prefix/lib/ruby. You have to
711                           add $prefix/lib/ruby/$ruby_version/$sitearch to you $: variable
712                           for ruby to find the RRD.so file.],
713 [RUBY_MAKE_OPTIONS=],[RUBY_MAKE_OPTIONS="sitedir=$prefix/lib/ruby"])
715     
716 AC_ARG_WITH(ruby-options,
717 [  --with-ruby-options=[OPTIONS]  options to pass on command-line when
718                           generating Makefile from extconf.rb. If you set this
719                           option, interesting things may happen unless you know
720                           what you are doing!],
721 [RUBY_MAKE_OPTIONS=$withval])
723 AC_SUBST(RUBY_MAKE_OPTIONS)
724 AC_SUBST(RUBY)
725 AC_SUBST(COMP_RUBY)
728 enable_tcl_site=no
730 AC_ARG_ENABLE(tcl,[  --disable-tcl           do not build the tcl modules],
731 [],[enable_tcl=yes])
733 if test  "$enable_tcl" = "yes"; then
734   dnl Check for Tcl.
735   withval=""
736   AC_ARG_WITH(tcllib,[  --with-tcllib=DIR       location of the tclConfig.sh])
737   enable_tcl=no
738   for dir in $withval /usr/lib /usr/local/lib /usr/lib/tcl8.4 /usr/lib/tcl8.3 ; do
739     AC_MSG_CHECKING(for tclConfig.sh in $dir)
740     if test -f "$dir/tclConfig.sh" ; then
741         tcl_config=$dir/tclConfig.sh
742         enable_tcl=yes
743         AC_MSG_RESULT(yes)
744         break
745     else
746         AC_MSG_RESULT(no)
747     fi
748   done
750   if test "$enable_tcl" = "no"; then
751         AC_MSG_WARN([tclConfig.sh not found - Tcl interface won't be built])
752   else
753         . $tcl_config
754         TCL_PACKAGE_DIR="$TCL_PACKAGE_PATH/tclrrd$VERSION"
755   fi
756   AC_ARG_ENABLE(tcl,[  --enable-tcl-site        install the tcl extension in the tcl tree],
757   [],[enable_tcl_site=yes])
759 fi
761 AM_CONDITIONAL(BUILD_TCL, test "$enable_tcl" = "yes" )
762 AM_CONDITIONAL(BUILD_TCL_SITE, test "$enable_tcl_site" = "yes" )
764 AC_SUBST(TCL_PREFIX)
765 AC_SUBST(TCL_SHLIB_CFLAGS)
766 AC_SUBST(TCL_SHLIB_LD)
767 AC_SUBST(TCL_SHLIB_SUFFIX)
768 AC_SUBST(TCL_PACKAGE_PATH)
769 AC_SUBST(TCL_LD_SEARCH_FLAGS)
770 AC_SUBST(TCL_STUB_LIB_SPEC)
771 AC_SUBST(TCL_VERSION)
772 AC_SUBST(TCL_PACKAGE_DIR)
773 AC_SUBST(TCL_INC_DIR)
775 AC_ARG_ENABLE(python,[  --disable-python        do not build the python modules],
776 [],[enable_python=yes])
778 if test  "$enable_python" = "yes"; then
779 dnl Check for python
780 AM_PATH_PYTHON(2.3,[],[enable_python=no])
781 AM_CHECK_PYTHON_HEADERS(,[enable_python=no;AC_MSG_WARN(could not find Python headers)])
782 fi
784 if test  x$enable_python = xno; then
785         COMP_PYTHON=
786 else
787         COMP_PYTHON="python"
788 fi
790 AC_SUBST(COMP_PYTHON)
792 dnl Check for nroff
793 AC_PATH_PROGS(NROFF, gnroff nroff)
794 AC_PATH_PROGS(TROFF, groff troff)
796 AC_ARG_VAR(RRDDOCDIR, [[DATADIR/doc/PACKAGE-VERSION] Documentation directory])
797 if test -z "$RRDDOCDIR"; then
798    RRDDOCDIR='${datadir}/doc/${PACKAGE}-${VERSION}'; fi
801 CONFIGURE_PART(Apply Configuration Information)
802  
803 AC_CONFIG_FILES([examples/shared-demo.pl])
804 AC_CONFIG_FILES([examples/piped-demo.pl])
805 AC_CONFIG_FILES([examples/stripes.pl])
806 AC_CONFIG_FILES([examples/bigtops.pl])
807 AC_CONFIG_FILES([examples/minmax.pl])
808 AC_CONFIG_FILES([examples/4charts.pl])
809 AC_CONFIG_FILES([examples/perftest.pl])
810 AC_CONFIG_FILES([examples/Makefile])
811 AC_CONFIG_FILES([doc/Makefile])
812 AC_CONFIG_FILES([src/Makefile])
813 AC_CONFIG_FILES([bindings/Makefile])
814 AC_CONFIG_FILES([bindings/tcl/Makefile])
815 AC_CONFIG_FILES([bindings/tcl/ifOctets.tcl])
816 AC_CONFIG_FILES([Makefile])          
818 AC_CONFIG_COMMANDS([default],[[ chmod +x examples/*.pl]],[[]])
819 AC_OUTPUT
821 AC_MSG_CHECKING(in)
822 AC_MSG_RESULT(and out again)
824 echo $ECHO_N "ordering CD from http://tobi.oetiker.ch/wish $ECHO_C" 1>&6
825 sleep 1
826 echo $ECHO_N ".$ECHO_C" 1>&6
827 sleep 1
828 echo $ECHO_N ".$ECHO_C" 1>&6
829 sleep 1
830 echo $ECHO_N ".$ECHO_C" 1>&6
831 sleep 1
832 echo $ECHO_N ".$ECHO_C" 1>&6
833 sleep 1
834 AC_MSG_RESULT([ just kidding ;-)])
835 echo
836 echo "----------------------------------------------------------------"
837 echo "Config is DONE!"
838 echo
839 echo "          With MMAP IO: $enable_mmap"
840 echo "       Static programs: $staticprogs"
841 echo "          Perl Modules: $COMP_PERL"
842 echo "           Perl Binary: $PERL"
843 echo "          Perl Version: $PERL_VERSION"
844 echo "          Perl Options: $PERL_MAKE_OPTIONS"
845 echo "          Ruby Modules: $COMP_RUBY"
846 echo "           Ruby Binary: $RUBY"
847 echo "          Ruby Options: $RUBY_MAKE_OPTIONS"
848 echo "    Build Tcl Bindings: $enable_tcl"
849 echo " Build Python Bindings: $enable_python"
850 echo "          Build rrdcgi: $enable_rrdcgi"
851 echo "       Build librrd MT: $enable_pthread"
852 echo
853 echo
854 echo "Type 'make' to compile the software and use 'make install' to "
855 echo "install everything to: $prefix."
856 echo 
857 echo "       ... that wishlist is NO JOKE. If you find RRDtool useful"
858 echo "make me happy. Go to http://tobi.oetiker.ch/wish and"
859 echo "place an order."
860 echo 
861 echo "                               -- Tobi Oetiker <tobi@oetiker.ch>"
862 echo "----------------------------------------------------------------"