1 dnl RRDtool AutoConf script ...
2 dnl ---------------------------
3 dnl $Id: configure.ac 2267 2012-01-24 10:08:48Z oetiker $
4 dnl
5 dnl Created by Jeff Allen, Tobi Oetiker, Blair Zajac
6 dnl
7 dnl Inspiration from http://autoconf-archive.cryp.to
9 dnl tell automake the this script is for rrdtool
11 dnl Minimum Autoconf version required.
12 AC_PREREQ(2.59)
14 dnl the official version number is
15 dnl a.b.c
16 AC_INIT([rrdtool],[1.4.7])
18 dnl for testing a numberical version number comes handy
19 dnl the released version are
20 dnl a.bccc
21 dnl the devel versions will be something like
22 dnl a.b999yymmddhh
23 NUMVERS=1.4007
24 AC_SUBST(NUMVERS)
26 dnl for the linker to understand which versions the library are compatible with
27 dnl each other we must keep a separate library version cout of the format c:r:a.
28 dnl - if only implementation changed but all interfaces are kept, do r++
29 dnl - if only functionality was added do c++,r=0,a++
30 dnl - if any functionality was removed do c++,r=0,a=0.
31 dnl
32 dnl see http://sourceware.org/autobook/autobook/autobook_91.html
33 dnl
34 LIBVERS=6:0:2
35 AC_SUBST(LIBVERS)
37 AC_CANONICAL_TARGET
38 m4_version_prereq(2.60, [AC_USE_SYSTEM_EXTENSIONS], [#])
39 AM_INIT_AUTOMAKE
40 AM_MAINTAINER_MODE
41 # Enable silent build rules by default, requires at least
42 # Automake-1.11. Disable by either passing --disable-silent-rules to
43 # configure or passing V=1 to make
44 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
45 AC_CONFIG_HEADERS([rrd_config.h])
46 AC_CONFIG_MACRO_DIR([m4])
48 dnl all our local stuff like install scripts and include files
49 dnl is in there
52 dnl determine the type of system we are running on
54 AC_SUBST(VERSION)
56 AC_PREFIX_DEFAULT( /opt/rrdtool-$PACKAGE_VERSION )
58 dnl At the TOP of the HEADER
60 AH_TOP([
61 #ifndef RRD_CONFIG_H
62 #define RRD_CONFIG_H
64 /* IEEE can be prevented from raising signals with fpsetmask(0) */
65 #undef MUST_DISABLE_FPMASK
67 /* IEEE math only works if SIGFPE gets actively set to IGNORE */
68 #undef MUST_DISABLE_SIGFPE
70 /* realloc does not support NULL as argument */
71 #undef NO_NULL_REALLOC
73 /* lets enable madvise defines in NetBSD */
74 #if defined(__NetBSD__)
75 # if !defined(_NETBSD_SOURCE)
76 # define _NETBSD_SOURCE
77 # endif
78 #endif
80 ])
82 AH_BOTTOM([
84 #ifdef MUST_HAVE_MALLOC_MALLOC_H
85 # include <malloc/malloc.h>
86 #endif
88 #include "src/rrd_config_bottom.h"
90 #endif
91 ])
93 dnl Process Special Options
94 dnl -----------------------------------
96 dnl How the vertical axis label is printed
97 AC_ARG_VAR(RRDGRAPH_YLEGEND_ANGLE,
98 [Vertical label angle: -90.0 (default) or 90.0])
99 AC_DEFINE_UNQUOTED(RRDGRAPH_YLEGEND_ANGLE,${RRDGRAPH_YLEGEND_ANGLE:-90.0},
100 [Vertical label angle: -90.0 (default) or 90.0])
102 AC_ARG_ENABLE(rrdcgi,AS_HELP_STRING([--disable-rrdcgi],[disable building of rrdcgi]),
103 [],[enable_rrdcgi=yes])
105 AM_CONDITIONAL(BUILD_RRDCGI,[test $enable_rrdcgi != no])
107 AC_ARG_ENABLE(rrd_graph,AS_HELP_STRING([--disable-rrd_graph],[disable all rrd_graph functions]),
108 [enable_rrdcgi=no],[enable_rrd_graph=yes])
110 if test $enable_rrd_graph != no; then
111 AC_DEFINE([HAVE_RRD_GRAPH], [], [is rrd_graph supported by this install])
112 fi
114 dnl Check if we run on a system that has fonts
115 AC_ARG_WITH(rrd-default-font,
116 [ --with-rrd-default-font=[OPTIONS] set the full path to your default font.],
117 [RRD_DEFAULT_FONT=$withval],[
118 if test -d ${WINDIR:-nodir}/cour.ttf ; then
119 RRD_DEFAULT_FONT=`cd $WINDIR;pwd`/cour.ttf
120 else
121 RRD_DEFAULT_FONT='"DejaVu Sans Mono,Bitstream Vera Sans Mono,monospace,Courier"'
122 fi
123 ])
125 dnl Use mmap in rrd_update instead of seek+write
126 AC_ARG_ENABLE([mmap],
127 AS_HELP_STRING([--disable-mmap],[disable mmap in rrd_update, use seek+write instead]),
128 [],
129 [enable_mmap=yes])
131 AC_ARG_ENABLE(pthread,AS_HELP_STRING([--disable-pthread],[disable multithread support]),
132 [],[enable_pthread=yes])
134 AC_ARG_ENABLE(static-programs,
135 AS_HELP_STRING([--enable-static-programs],[Build static programs]),
136 [case "${enableval}" in
137 yes) staticprogs=yes ;;
138 no) staticprogs=no ;;
139 *) AC_MSG_ERROR(bad value ${enableval} for --enable-static-programs) ;;
140 esac],[staticprogs=no])
141 AM_CONDITIONAL(STATIC_PROGRAMS,[test "x$staticprogs" = "xyes"])
144 CONFIGURE_PART(Audit Compilation Environment)
147 dnl Check for the compiler and static/shared library creation.
148 AC_PROG_CPP
149 AC_PROG_CC
150 AM_PROG_CC_C_O
151 AC_PROG_LIBTOOL
153 dnl Try to detect/use GNU features
154 CFLAGS="$CFLAGS -D_GNU_SOURCE"
156 dnl check for -Werror separatly
157 dnl (quite a few autotool checks do not work with -Werror; also, the
158 dnl check for -Werror fails after checking and adding the other flags)
159 AC_CACHE_CHECK([if gcc likes the -Werror flag], rd_cv_gcc_flag__Werror,
160 [AC_COMPILE_IFELSE(
161 [AC_LANG_PROGRAM([[]], [[return 0 ]])],
162 [rd_cv_gcc_flag__Werror="yes"],
163 [rd_cv_gcc_flag__Werror="no"])])
164 if test "x$rd_cv_gcc_flag__Werror" = "xyes"; then
165 WERROR="-Werror"
166 else
167 WERROR=""
168 fi
169 AC_SUBST(WERROR)
171 dnl which flags does the compiler support?
172 if test "x$GCC" = "xyes"; then
173 for flag in -fno-strict-aliasing -Wall -std=gnu99 -pedantic -Wundef -Wshadow -Wpointer-arith -Wcast-align -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Winline -Wold-style-definition -W; do
174 oCFLAGS="$CFLAGS"
175 CFLAGS="$CFLAGS $flag"
176 cachename=rd_cv_gcc_flag_`echo $flag|sed 's/[[^A-Za-z]]/_/g'`
177 AC_CACHE_CHECK([if gcc likes the $flag flag], $cachename,
178 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[return 0 ]])],[eval $cachename=yes],[eval $cachename=no])])
179 if eval test \$$cachename = no; then
180 CFLAGS="$oCFLAGS"
181 fi
182 done
183 fi
187 AC_SUBST(RRD_DEFAULT_FONT)
189 CONFIGURE_PART(Checking for Header Files)
191 dnl Checks for header files.
192 AC_HEADER_STDC
193 AC_HEADER_DIRENT
194 AC_CHECK_HEADERS(langinfo.h stdint.h inttypes.h libgen.h features.h sys/stat.h sys/types.h fcntl.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)
196 dnl Checks for typedefs, structures, and compiler characteristics.
197 AC_C_CONST
198 AC_HEADER_TIME
199 AC_STRUCT_TM
201 CONFIGURE_PART(Test Library Functions)
203 dnl Checks for libraries.
204 AC_CHECK_FUNC(acos, , AC_CHECK_LIB(m, acos))
207 dnl add pic flag in any case this makes sure all our code is relocatable
208 eval `./libtool --config | grep pic_flag=`
209 CFLAGS="$CFLAGS $pic_flag"
212 dnl Checks for library functions.
213 AC_FUNC_STRFTIME
214 AC_FUNC_VPRINTF
216 AC_C_BIGENDIAN
218 dnl for each function found we get a definition in config.h
219 dnl of the form HAVE_FUNCTION
221 AC_CHECK_FUNCS(nl_langinfo tzset round rint fsync mbstowcs opendir readdir chdir chroot getuid strerror snprintf vsnprintf vasprintf fpclass class fp_class isnan memmove strchr mktime getrusage gettimeofday)
223 AC_FUNC_STRERROR_R
225 CONFIGURE_PART(Map/Fadvis/Madvise checking)
227 dnl Could use these to know if we need to provide a prototype
228 dnl AC_CHECK_DECLS(fdatasync, [], [], [#include <unistd.h>])
230 dnl check for fdatasync. Solaris has fdatasync in the librt
232 AC_CHECK_FUNCS(fdatasync, [], AC_CHECK_LIB(rt, fdatasync, [LIBS="${LIBS} -lrt"; AC_DEFINE(HAVE_FDATASYNC)],[]))
233 dnl if there is no fdatasync we may get lucky with fsync
234 AC_CHECK_FUNCS(fsync)
236 dnl check for socket and nsl solaris again ... we need this for the new rrd_daemon stuff
238 AC_CHECK_FUNCS(socket, [], AC_CHECK_LIB(socket, socket, [LIBS="${LIBS} -lsocket"; AC_DEFINE(HAVE_SOCKET)],[]))
239 AC_CHECK_FUNCS(getaddrinfo, [], AC_CHECK_LIB(nsl, getaddrinfo, [LIBS="${LIBS} -lnsl"; AC_DEFINE(HAVE_GETADDRINFO)],[]))
243 dnl XXX: dunno about windows.. add AC_CHECK_FUNCS(munmap) there too?
244 if test "x$enable_mmap" = "xyes"; then
245 case "$host" in
246 *cygwin*)
247 # the normal mmap test does not work in cygwin
248 AC_CHECK_FUNCS(mmap)
249 if test "x$ac_cv_func_mmap" = "xyes"; then
250 ac_cv_func_mmap_fixed_mapped=yes
251 fi
252 ;;
253 *)
254 AC_CHECK_HEADERS(sys/mman.h)
255 AC_FUNC_MMAP
256 AC_CHECK_FUNCS(mmap munmap msync)
257 AC_CHECK_DECLS(madvise, [], [], [#ifdef HAVE_SYS_MMAN_H
258 # include <sys/mman.h>
259 #endif])
260 if test "x$ac_cv_have_decl_madvise" = "xyes";
261 then
262 AC_CHECK_FUNCS(madvise)
263 else
264 AC_CHECK_FUNCS(posix_madvise)
265 if test "x$ac_cv_func_posix_madvise" != "xyes"; then
266 AC_MSG_WARN([madvise() nor posix_madvise() found.])
267 fi
268 fi
269 ;;
270 esac
271 if test "x$ac_cv_func_mmap" != "xyes";
272 then
273 AC_MSG_ERROR([--enable-mmap requested but mmap() was not detected])
274 dnl enable_mmap="no"
275 fi
276 fi
278 dnl can we use posix_fadvise
279 AC_CHECK_DECLS(posix_fadvise, [], [], [#define _XOPEN_SOURCE 600
280 #include <fcntl.h>])
281 AC_CHECK_FUNCS(posix_fadvise)
283 CONFIGURE_PART(Libintl Processing)
285 AM_GNU_GETTEXT_VERSION(0.17)
286 AM_GNU_GETTEXT(external)
288 CONFIGURE_PART(IEEE Math Checks)
291 dnl actual code to check if this works
292 AC_CHECK_FUNCS(fpclassify, ,
293 [AC_MSG_CHECKING(for fpclassify with <math.h>)
294 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <math.h>
295 volatile int x;volatile float f; ]], [[x = fpclassify(f)]])],[AC_MSG_RESULT(yes)
296 AC_DEFINE(HAVE_FPCLASSIFY)],[AC_MSG_RESULT(no)])])
298 AC_CHECK_FUNCS(isinf, ,
299 [AC_MSG_CHECKING(for isinf with <math.h>)
300 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <math.h>
301 volatile int x;volatile float f; ]], [[x = isinf(f)]])],[AC_MSG_RESULT(yes)
302 AC_DEFINE(HAVE_ISINF)],[AC_MSG_RESULT(no)])])
304 dnl finite is BSD, isfinite is C99, so prefer the latter
305 AC_CACHE_CHECK([whether isfinite is broken],[ac_cv_have_broken_isfinite],[
306 AC_TRY_RUN([
307 #ifdef HAVE_MATH_H
308 #include <math.h>
309 #endif
310 #ifdef HAVE_FLOAT_H
311 #include <float.h>
312 #endif
313 int main ()
314 {
315 #ifdef isfinite
316 #ifdef LDBL_MAX
317 if (!isfinite(LDBL_MAX)) return 1;
318 #endif
319 #ifdef DBL_MAX
320 if (!isfinite(DBL_MAX)) return 1;
321 #endif
322 #endif
323 return 0;
324 }],[ac_cv_have_broken_isfinite=no],[ac_cv_have_broken_isfinite=yes],[
325 case "${target}" in
326 hppa*-*-hpux*) ac_cv_have_broken_isfinite=yes ;;
327 *-solaris2.8) ac_cv_have_broken_isfinite=yes ;;
328 *-solaris2.9) ac_cv_have_broken_isfinite=yes ;;
329 *) ac_cv_have_broken_isfinite=no ;;
330 esac])
331 ])
333 dnl the test does not seem to work on solaris 2.8
334 dnl so lets fix this by hand
335 case "${target}" in
336 *-solaris2.8) ac_cv_have_broken_isfinite=yes ;;
337 *-solaris2.9) ac_cv_have_broken_isfinite=yes ;;
338 esac
340 if test "x$ac_cv_have_broken_isfinite" = "xno"; then
341 AC_DEFINE(HAVE_ISFINITE)
342 else
343 AC_CHECK_FUNCS(finite,[],
344 [AC_CHECK_FUNCS(isfinite,[],
345 [AC_MSG_CHECKING(for isfinite with <math.h>)
346 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <math.h>
347 volatile int x;volatile float f; ]],[[x = isfinite(f)]])],[AC_MSG_RESULT(yes)
348 AC_DEFINE(HAVE_ISFINITE)],[AC_MSG_RESULT(no)])])])
349 fi
351 AC_FULL_IEEE
353 CONFIGURE_PART(Resolve Portability Issues)
355 GC_TIMEZONE()
357 CHECK_FOR_WORKING_MS_ASYNC
359 dnl do we have nl_langinfo(_NL_TIME_WEEK_1STDAY)
360 AC_CHECK_FUNCS(_NL_TIME_WEEK_1STDAY, ,
361 [AC_MSG_CHECKING([for nl_langinfo(_NL_TIME_WEEK_1STDAY) with langinfo.h])
362 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <langinfo.h>]], [[nl_langinfo(_NL_TIME_WEEK_1STDAY)]])],[AC_MSG_RESULT(yes)
363 AC_DEFINE(HAVE__NL_TIME_WEEK_1STDAY)],[AC_MSG_RESULT(no)])])
365 dnl Do we need getopt_long
367 dnl even when including our own getopt implementation
368 dnl we may want to make sure we use the external
369 dnl defined by libc to not run into linker resolve trouble
371 AC_CACHE_CHECK([for opterr], rd_cv_var_int_opterr,
372 [AC_TRY_LINK([#include <unistd.h>],
373 [extern int opterr; opterr = 1;],
374 [rd_cv_var_int_opterr=yes],
375 [rd_cv_var_int_opterr=no])])
376 if test x"$rd_cv_var_int_opterr" = x"yes"; then
377 AC_DEFINE(HAVE_INT_OPTERR, 1, [Define to 1 if you have the global variable 'int opterr'.])
378 fi
380 build_getopt=no
381 RRD_GETOPT_LONG="LIBC_HAS_GETOPT_LONG"
382 AC_CHECK_FUNC(getopt_long,[],[
383 RRD_GETOPT_LONG="getopt_long"
384 build_getopt=yes
385 ])
386 AC_SUBST(RRD_GETOPT_LONG)
387 AM_CONDITIONAL(BUILD_GETOPT,[test $build_getopt = yes])
389 dnl what does realloc do if it gets called with a NULL pointer
391 AC_CACHE_CHECK([if realloc can deal with NULL], rd_cv_null_realloc,
392 [AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>
393 int main(void){
394 char *x = NULL;
395 x = realloc (x,10);
396 if (x==NULL) return 1;
397 return 0;
398 }]])],[rd_cv_null_realloc=yes],[rd_cv_null_realloc=nope],[:])])
400 if test x"$rd_cv_null_realloc" = xnope; then
401 AC_DEFINE(NO_NULL_REALLOC)
402 fi
404 AC_LANG_PUSH(C)
405 dnl solaris has some odd defines it needs in order to propperly compile ctime_r
406 AC_MSG_CHECKING([if ctime_r need special care to act posixly correct])
407 AC_LINK_IFELSE(
408 AC_LANG_PROGRAM(
409 [[#include <time.h>]],
410 [[ctime_r(NULL,NULL,0)]]
411 ),
412 [ CPPFLAGS="$CPPFLAGS -D_POSIX_PTHREAD_SEMANTICS"
413 AC_LINK_IFELSE(
414 AC_LANG_PROGRAM(
415 [[#include <time.h>]],
416 [[ctime_r(NULL,NULL)]]
417 ),
418 [AC_MSG_RESULT([yes, this seems to be solaris style])],
419 [AC_MSG_ERROR([Can't figure how to compile ctime_r])]
420 )
421 ],
422 [ AC_LINK_IFELSE(
423 AC_LANG_PROGRAM(
424 [[#include <time.h>]],
425 [[ctime_r(NULL,NULL)]]
426 ),
427 [AC_MSG_RESULT(no)],
428 [AC_MSG_ERROR([Can't figure how to compile ctime_r])]
429 )
430 ]
431 )
432 AC_LANG_POP(C)
434 dnl Check for pthreads
435 dnl http://autoconf-archive.cryp.to/acx_pthread.m4
437 AC_SUBST(MULTITHREAD_CFLAGS)
438 AC_SUBST(MULTITHREAD_LDFLAGS)
440 if test $enable_pthread != no; then
441 ACX_PTHREAD([
442 MULTITHREAD_CFLAGS=$PTHREAD_CFLAGS
443 MULTITHREAD_LDFLAGS=$PTHREAD_LIBS
444 ],
445 [])
446 fi
448 dnl since we use lots of *_r functions all over the code we better
449 dnl make sure they are known
451 if test "x$x_rflag" != "xno"; then
452 CPPFLAGS="$CPPFLAGS $x_rflag"
453 fi
455 AM_CONDITIONAL(BUILD_MULTITHREAD,[test $enable_pthread != no])
457 AC_LANG_PUSH(C)
458 dnl see if we have to include malloc/malloc.h
459 AC_MSG_CHECKING([do we need malloc/malloc.h])
460 AC_LINK_IFELSE(
461 AC_LANG_PROGRAM(
462 [[#include <stdlib.h>]],
463 [[malloc(1)]]
464 ),
465 [ AC_MSG_RESULT([nope, works out of the box]) ],
466 [ AC_LINK_IFELSE(
467 AC_LANG_PROGRAM(
468 [[#include <stdlib.h>
469 #include <malloc/malloc.h>]],
470 [[malloc(1)]]
471 ),[
472 AC_DEFINE([MUST_HAVE_MALLOC_MALLOC_H])
473 AC_MSG_RESULT([yes we do])],
474 [AC_MSG_ERROR([Can not figure how to compile malloc])]
475 )
476 ]
477 )
479 dnl is time_t 32 of 64 bit ?
480 AC_DEFINE([TIME_T_IS_32BIT], [], [time_t is 32bit])
481 AC_DEFINE([TIME_T_IS_64BIT], [], [time_t is 64bit])
482 AC_MSG_CHECKING([the type of time_t])
483 AC_CHECK_SIZEOF([time_t])
484 if test "x$ac_cv_sizeof_time_t" = "x4"; then
485 AC_MSG_RESULT([time_t is 32 bit])
486 AC_DEFINE([TIME_T_IS_32BIT])
487 elif test "x$ac_cv_sizeof_time_t" = "x8"; then
488 AC_MSG_RESULT([time_t is 64 bit])
489 AC_DEFINE([TIME_T_IS_64BIT])
490 else
491 AC_MSG_ERROR([can not figure type of time_t])
492 fi
494 AC_LANG_POP(C)
496 CONFIGURE_PART(Find 3rd-Party Libraries)
498 have_libdbi=no
500 AC_ARG_ENABLE(libdbi,AS_HELP_STRING([--disable-libdbi],[do not build in support for libdbi]),[],[
501 AC_CHECK_HEADER(dbi/dbi.h, [
502 AC_CHECK_LIB(dbi, dbi_initialize, [
503 AC_DEFINE(HAVE_LIBDBI,[1],[have got libdbi installed])
504 LIBS="${LIBS} -ldbi -ldl"
505 have_libdbi=yes
506 ])
507 ])
508 ])
510 AM_CONDITIONAL(BUILD_LIBDBI,[test $have_libdbi != no])
512 have_libwrap=no
514 AC_ARG_ENABLE(libwrap, AS_HELP_STRING([--disable-libwrap], [do not build in support for libwrap (tcp wrapper)]),[],[
515 AC_CHECK_HEADER(tcpd.h,[
516 AC_CHECK_FUNCS(hosts_access, [
517 AC_DEFINE(HAVE_LIBWRAP,[1],[have got libwrap installed])
518 have_libwrap=yes
519 ],
520 [
521 AC_CHECK_LIB(wrap, hosts_access, [
522 AC_DEFINE(HAVE_LIBWRAP,[1],[have got libwrap installed])
523 LIBS="${LIBS} -lwrap"
524 have_libwrap=yes
525 ])
526 ])
527 ])
528 ])
531 AM_CONDITIONAL(BUILD_LIBWRAP,[test $have_libwrap != no])
533 AM_CONDITIONAL(BUILD_RRDGRAPH,[test $enable_rrd_graph != no])
536 CORE_LIBS="$LIBS"
538 if test $enable_rrd_graph != no; then
539 dnl EX_CHECK_ALL(z, zlibVersion, zlib.h, zlib, 1.2.5, http://zlib.net/, "")
540 dnl EX_CHECK_ALL(png, png_access_version_number, png.h, libpng, 1.4.8, ftp://ftp.simplesystems.org/pub/libpng/png/src/, "")
541 dnl EX_CHECK_ALL(freetype, FT_Init_FreeType, ft2build.h, freetype2, 2.4.6, http://download.savannah.gnu.org/releases/freetype/, /usr/include/freetype2)
542 dnl EX_CHECK_ALL(fontconfig, FcInit, fontconfig.h, fontconfig, 2.8.0, http://www.freedesktop.org/software/fontconfig/release/, /usr/include)
543 EX_CHECK_ALL(cairo, cairo_font_options_create, cairo.h, cairo-png, 1.10.2, http://cairographics.org/releases/, "")
544 EX_CHECK_ALL(cairo, cairo_svg_surface_create, cairo-svg.h, cairo-svg, 1.10.2, http://cairographics.org/releases/, "")
545 EX_CHECK_ALL(cairo, cairo_pdf_surface_create, cairo-pdf.h, cairo-pdf, 1.10.2, http://cairographics.org/releases/, "")
546 EX_CHECK_ALL(cairo, cairo_ps_surface_create, cairo-ps.h, cairo-ps, 1.10.2, http://cairographics.org/releases/, "")
547 EX_CHECK_ALL(pangocairo-1.0, pango_cairo_context_set_font_options, pango/pango.h, pangocairo, 1.28.4, http://ftp.gnome.org/pub/GNOME/sources/pango/1.28, "")
549 fi
550 EX_CHECK_ALL(glib-2.0, glib_check_version, glib.h, glib-2.0, 2.28.7, ftp://ftp.gtk.org/pub/glib/2.28/, "")
551 EX_CHECK_ALL(xml2, xmlParseFile, libxml/parser.h, libxml-2.0, 2.7.8, http://xmlsoft.org/downloads.html, /usr/include/libxml2)
553 if test "$EX_CHECK_ALL_ERR" = "YES"; then
554 AC_MSG_ERROR([Please fix the library issues listed above and try again.])
555 fi
557 ALL_LIBS="$LIBS"
558 LIBS=
560 AC_SUBST(CORE_LIBS)
561 AC_SUBST(ALL_LIBS)
563 CONFIGURE_PART(Prep for Building Language Bindings)
565 dnl Check for Perl and friends
566 PATH=$PATH:/usr/perl5/bin
567 export PATH
568 AC_PATH_PROG(PERL, perl, no)
569 AC_PATH_PROG(POD2MAN, pod2man, no)
570 AC_PATH_PROG(POD2HTML, pod2html, no)
573 AC_ARG_ENABLE(perl,AS_HELP_STRING([--disable-perl],[do not build the perl modules]),
574 [],[enable_perl=yes])
577 AC_ARG_VAR(PERLCC, [C compiler for Perl modules])
578 AC_ARG_VAR(PERLCCFLAGS, [CC flags for Perl modules])
579 AC_ARG_VAR(PERLLD, [Linker for Perl modules])
580 AC_ARG_VAR(PERLLDFLAGS, [LD flags for Perl modules])
582 if test "x$PERL" = "xno" -o x$enable_perl = xno; then
583 COMP_PERL=
584 else
585 COMP_PERL="perl_piped perl_shared"
586 AC_MSG_CHECKING(for the perl version you are running)
587 PERL_VERSION=`$PERL -MConfig -e 'print $Config{version}'`
588 AC_MSG_RESULT($PERL_VERSION)
589 if test -z "$PERLCC"; then
590 AC_MSG_CHECKING(for the C compiler perl wants to use to build its modules)
591 perlcc=`$PERL -MConfig -e 'print $Config{cc}'`
592 AC_MSG_RESULT($perlcc)
593 if test ! -x "$perlcc"; then
594 AC_PATH_PROG(PERL_CC, ${perlcc}, no)
595 if test "$PERL_CC" = "no"; then
596 AC_MSG_WARN([
597 I would not find the Compiler ($perlcc) that was originally used to compile
598 your perl binary. You should either make sure that this compiler is
599 available on your system, pick an other compiler and set PERLCC
600 appropriately, or use a different perl setup that was compiled locally.
602 I will disable the compilation of the RRDs perl module for now.
603 ])
604 COMP_PERL="perl_piped"
605 fi
606 fi
607 fi
608 fi
610 AC_MSG_CHECKING(Perl Modules to build)
611 AC_MSG_RESULT(${COMP_PERL:-No Perl Modules will be built})
613 # Options to pass when configuring perl module
614 langpref=$prefix
615 test "$langpref" = '$(DESTDIR)NONE' && langpref='$(DESTDIR)'$ac_default_prefix
616 test "$langpref" = "NONE" && langpref=$ac_default_prefix
618 PERL_MAKE_OPTIONS="PREFIX=$langpref LIB=$langpref/lib/perl/$PERL_VERSION"
620 dnl pass additional perl options when generating Makefile from Makefile.PL
621 AC_ARG_ENABLE(perl-site-install,
622 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.]),
623 [PERL_MAKE_OPTIONS=],[])
625 if test ! -z "$PERLCC"; then
626 PERL_MAKE_OPTIONS="$PERL_MAKE_OPTIONS CC=$PERLCC"
628 if test ! -z "$PERLCCFLAGS"; then
629 PERL_MAKE_OPTIONS="$PERL_MAKE_OPTIONS CCFLAGS=$PERLCCFLAGS"
630 fi
632 if test -z "$PERLLD"; then
633 PERLLD=$PERLCC
634 fi
635 PERL_MAKE_OPTIONS="$PERL_MAKE_OPTIONS LD=$PERLLD"
637 if test ! -z "$PERLLDFLAGS"; then
638 PERL_MAKE_OPTIONS="$PERL_MAKE_OPTIONS LDFLAGS=$PERLLDFLAGS"
639 fi
640 fi
642 AC_ARG_WITH(perl-options,
643 [ --with-perl-options=[OPTIONS] options to pass on command-line when
644 generating Makefile from Makefile.PL. If you set this
645 option, interesting things may happen unless you know
646 what you are doing!],
647 [PERL_MAKE_OPTIONS=$withval])
649 AC_SUBST(PERL_MAKE_OPTIONS)
650 AC_SUBST(PERL)
651 AC_SUBST(COMP_PERL)
652 AC_SUBST(PERL_VERSION)
654 dnl Check for Ruby.
655 AC_PATH_PROG(RUBY, ruby, no)
657 AC_ARG_ENABLE(ruby,AS_HELP_STRING([--disable-ruby],[do not build the ruby modules]),
658 [],[enable_ruby=yes])
660 AC_MSG_CHECKING(if ruby modules can be built)
662 if test "x$RUBY" = "xno" -o x$enable_ruby = xno; then
663 COMP_RUBY=
664 AC_MSG_RESULT(No .. Ruby not found or disabled)
665 else
666 if $RUBY -e 'require "mkmf"' >/dev/null 2>&1; then
667 COMP_RUBY="ruby"
668 AC_MSG_RESULT(YES)
669 else
670 COMP_RUBY=
671 AC_MSG_RESULT(Ruby found but mkmf is missing! Install the -dev package)
672 fi
673 fi
675 dnl pass additional ruby options when generating Makefile from Makefile.PL
676 AC_ARG_ENABLE(ruby-site-install,
677 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.]),
678 [RUBY_MAKE_OPTIONS=],[RUBY_MAKE_OPTIONS="sitedir=$langpref/lib/ruby"])
681 AC_ARG_WITH(ruby-options,
682 [ --with-ruby-options=[OPTIONS] options to pass on command-line when
683 generating Makefile from extconf.rb. If you set this
684 option, interesting things may happen unless you know
685 what you are doing!],
686 [RUBY_MAKE_OPTIONS=$withval])
688 AC_SUBST(RUBY_MAKE_OPTIONS)
689 AC_SUBST(RUBY)
690 AC_SUBST(COMP_RUBY)
692 dnl Check for Lua.
693 AC_PATH_PROG(LUA, lua, no)
695 AC_ARG_ENABLE(lua,AS_HELP_STRING([--disable-lua],[do not build the lua modules]),
696 [],[enable_lua=yes])
698 COMP_LUA=
699 if test "$LUA" = "no" -o "$enable_lua" = "no"; then
700 enable_lua=no
701 else
702 AC_MSG_CHECKING(for lua >= 5.0)
703 read LUA_MAJOR LUA_MINOR LUA_POINT <<LUA_EOF
704 $($LUA -v 2>&1 | cut -f2 -d' ' | sed -e 's/\./ /g')
705 LUA_EOF
706 if test 0$LUA_MAJOR -lt 5; then
707 AC_MSG_RESULT([no, version found is $LUA_MAJOR.$LUA_MINOR])
708 else
709 AC_MSG_RESULT([$LUA_MAJOR.$LUA_MINOR found])
710 lua_vdot=$LUA_MAJOR.$LUA_MINOR
711 lua_vndot=$LUA_MAJOR$LUA_MINOR
712 lua_version=$LUA_MAJOR.$LUA_MINOR.$LUA_POINT
713 AC_CHECK_HEADERS(lua$lua_vndot/lua.h,
714 [AC_CHECK_HEADERS(lua$lua_vndot/lualib.h,
715 [AC_CHECK_HEADER(lua$lua_vndot/lauxlib.h,
716 [lua_headerdir=lua$lua_vndot],
717 [])],
718 [])],
719 [AC_CHECK_HEADERS(lua$lua_vdot/lua.h,
720 [AC_CHECK_HEADERS(lua$lua_vdot/lualib.h,
721 [AC_CHECK_HEADER(lua$lua_vdot/lauxlib.h,
722 [lua_headerdir=lua$lua_vdot],
723 [])],
724 [])],
725 [AC_CHECK_HEADERS(lua.h,
726 [AC_CHECK_HEADERS(lualib.h,
727 [AC_CHECK_HEADER(lauxlib.h,
728 [lua_headerdir=""],
729 [lua_headerdir="no"])],
730 [])],
731 [])])])
733 if test "$lua_headerdir" = "no"; then
734 enable_lua=no
735 else
736 COMP_LUA=lua
737 fi
739 if test "$COMP_LUA" != "lua"; then
740 enable_lua=no
741 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])
742 else
743 # OK, headers found, let's check the libraries (LIBS is not used)
744 LIBS=
745 lua_havelib=no
746 LUA_HAVE_COMPAT51=DONT_HAVE_COMPAT51
747 AC_SEARCH_LIBS(lua_call, lua$lua_vdot lua$lua_vndot lua,
748 [AC_SEARCH_LIBS(luaL_register, lua$lua_vdot lua$lua_vndot lua,
749 [lua_havelib=LUA$lua_vndot],
750 [AC_SEARCH_LIBS(luaL_module, lualib$lua_vndot lualib$lua_vdot lualib,
751 [lua_havelib=$lua_vndot; $LUA -l compat-5.1 2>/dev/null;
752 test "$?" = "0" && LUA_HAVE_COMPAT51=HAVE_COMPAT51],
753 [AC_SEARCH_LIBS(luaL_openlib, lualib$lua_vdot lualib$lua_vndot lualib,
754 [lua_havelib=$lua_vndot],
755 [COMP_LUA=], [-lm])], [-lm])], [-lm])],
756 [COMP_LUA=], [-lm])
757 lua_libs=$LIBS
758 LIBS=
760 # Options to pass when configuring Lua module
761 if test "$lua_havelib" != "no"; then
762 # OK, headers and libs found. Try to set lua flags
763 # and modules installation dirs with pkg-config
764 if test "$PKGCONFIG" != "no"; then
765 if test "$lua_vndot" = "50"; then
766 lua_pkg_prefix=lualib
767 else
768 lua_pkg_prefix=lua
769 fi
770 # try with dot, without dot and finally without version
771 for f in $lua_pkg_prefix$lua_vdot $lua_pkg_prefix$lua_vndot $lua_pkg_prefix; do
772 lua_exec_prefix=`$PKGCONFIG --variable=prefix $f 2>/dev/null`
773 # same binaries?
774 if test "$lua_exec_prefix/bin/lua" = "$LUA"; then
775 # OK, found CFLAGS. Get Lua LFLAGS and modules install dir
776 LUA_CFLAGS=`$PKGCONFIG --cflags $f 2>/dev/null`
777 LUA_LFLAGS=`$PKGCONFIG --libs $f 2>/dev/null`
778 LUA_INSTALL_CMOD=`$PKGCONFIG --variable=INSTALL_CMOD $f 2>/dev/null`
779 LUA_INSTALL_LMOD=`$PKGCONFIG --variable=INSTALL_LMOD $f 2>/dev/null`
780 break
781 fi
782 done
783 fi
785 LUA_RRD_LIBDIR="$langpref/lib/lua/$lua_vdot"
786 # if lua 5.0 can't find compat-5.1, force installation of
787 # compat-5.1.lua together with RRDtool.
788 if test "$lua_vdot" = "5.0" -a "$LUA_HAVE_COMPAT51" != "HAVE_COMPAT51"; then
789 lua_need_compat51=1
790 LUA_INSTALL_LMOD="$LUA_RRD_LIBDIR"
791 fi
793 # if not set with pkg-config, use default values in src packages compat-5.1, lua 5.1
794 if test "$LUA_CFLAGS" = ""; then
795 AC_MSG_WARN(Setting Lua include and lib flags to defaults in compat-5.1 and lua 5.1 sources)
796 LUA_CFLAGS="-I/usr/local/include -I/usr/local/include/lua -I/usr/local/include/lua/$lua_vdot"
797 LUA_LFLAGS="-L/usr/local/lib -L/usr/local/lib/lua -L/usr/local/lib/lua/$lua_vdot $lua_libs"
798 LUA_INSTALL_CMOD="/usr/local/lib/lua/$lua_vdot"
799 fi
801 dnl pass additional lua options
802 dnl if lua-site-install is not set, overwrite LUA_INSTALL_CMOD already
803 dnl found and install together with RRDtool, under $langpref.
804 AC_ARG_ENABLE(lua-site-install,
805 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.]),
806 [],
807 [LUA_INSTALL_CMOD="$LUA_RRD_LIBDIR"; LUA_INSTALL_LMOD="$LUA_RRD_LIBDIR"])
809 LUA_DEFINES="-DLUA$lua_vndot -D$LUA_HAVE_COMPAT51"
810 AC_SUBST(LUA)
811 AC_SUBST(COMP_LUA)
812 AC_SUBST(LUA_INSTALL_CMOD)
813 AC_SUBST(LUA_INSTALL_LMOD)
814 AC_SUBST(LUA_CFLAGS)
815 AC_SUBST(LUA_LFLAGS)
816 AC_SUBST(LUA_DEFINES)
817 else
818 enable_lua=no
819 AC_MSG_RESULT([Lua headers found but not the libraries! Please reinstall the dev packages for Lua $LUA_MAJOR.$LUA_MINOR])
820 fi
821 fi
822 fi
823 fi
824 dnl If Lua 5.0, we need compat-5.1. Add ours unless already
825 dnl integrated as in Debian/Ubuntu 5.0 -dev packages.
826 AM_CONDITIONAL(LUA_NEED_OUR_COMPAT51,
827 [test "$lua_vdot" = "5.0" -a "$LUA_HAVE_COMPAT51" != "HAVE_COMPAT51"])
828 AM_CONDITIONAL(LUA_SITE_CINSTALL, [test "$LUA_INSTALL_CMOD" != "$LUA_RRD_LIBDIR"])
829 AM_CONDITIONAL(LUA_SITE_LINSTALL, [test "$LUA_INSTALL_LMOD" != "$LUA_RRD_LIBDIR"])
830 AM_CONDITIONAL(LUA50, [test "$lua_vndot" = "50"])
831 AM_CONDITIONAL(BUILD_LUA, [test "$enable_lua" = "yes"])
833 enable_tcl_site=no
835 AC_ARG_ENABLE(tcl,AS_HELP_STRING([--disable-tcl],[do not build the tcl modules]),
836 [],[enable_tcl=yes])
838 if test "$enable_tcl" = "yes"; then
839 dnl Check for Tcl.
840 withval=""
841 AC_ARG_WITH(tcllib,[ --with-tcllib=DIR location of the tclConfig.sh])
842 enable_tcl=no
843 for dir in $withval /usr/lib /usr/lib64 /usr/local/lib /usr/lib/tcl8.4 /usr/lib/tcl8.3 ; do
844 AC_MSG_CHECKING(for tclConfig.sh in $dir)
845 if test -f "$dir/tclConfig.sh" ; then
846 tcl_config=$dir/tclConfig.sh
847 enable_tcl=yes
848 AC_MSG_RESULT(yes)
849 break
850 else
851 AC_MSG_RESULT(no)
852 fi
853 done
855 if test "$enable_tcl" = "no"; then
856 AC_MSG_WARN([tclConfig.sh not found - Tcl interface will not be built])
857 else
858 . $tcl_config
859 TCL_PACKAGE_DIR="$TCL_PACKAGE_PATH/tclrrd$VERSION"
860 if test -n "$TCL_INC_DIR"; then
861 TCL_INCLUDE_SPEC="$TCL_INCLUDE_SPEC -I$TCL_INC_DIR"
862 fi
863 fi
864 AC_ARG_ENABLE(tcl-site,AS_HELP_STRING([--enable-tcl-site],[install the tcl extension in the tcl tree]),
865 [],[enable_tcl_site=yes])
867 fi
869 AM_CONDITIONAL(BUILD_TCL, test "$enable_tcl" = "yes" )
870 AM_CONDITIONAL(BUILD_TCL_SITE, test "$enable_tcl_site" = "yes" )
873 AC_SUBST(TCL_PREFIX)
874 AC_SUBST(TCL_SHLIB_CFLAGS)
875 AC_SUBST(TCL_SHLIB_LD)
876 AC_SUBST(TCL_SHLIB_SUFFIX)
877 AC_SUBST(TCL_PACKAGE_PATH)
878 AC_SUBST(TCL_LD_SEARCH_FLAGS)
879 AC_SUBST(TCL_STUB_LIB_SPEC)
880 AC_SUBST(TCL_VERSION)
881 AC_SUBST(TCL_PACKAGE_DIR)
882 AC_SUBST(TCL_INCLUDE_SPEC)
884 AC_ARG_ENABLE(python,AS_HELP_STRING([--disable-python],[do not build the python modules]),
885 [],[enable_python=yes])
887 if test "$enable_python" = "yes"; then
888 dnl Check for python
889 AM_PATH_PYTHON(2.3,[],[enable_python=no])
890 AM_CHECK_PYTHON_HEADERS(,[enable_python=no;AC_MSG_WARN(could not find Python headers)])
891 fi
893 if test x$enable_python = xno; then
894 COMP_PYTHON=
895 else
896 COMP_PYTHON="python"
897 fi
899 AC_SUBST(COMP_PYTHON)
901 dnl Check for nroff
902 AC_ARG_VAR(NROFF, [path to the local nroff version])
903 AC_PATH_PROGS(NROFF, [gnroff nroff])
904 if test x$NROFF = x; then
905 AC_MSG_ERROR([I need a copy of *nroff to format the documentation])
906 fi
907 AC_ARG_VAR(TROFF, [path to the local troff version])
908 AC_PATH_PROGS(TROFF, [groff troff])
909 if test x$TROFF = x; then
910 AC_MSG_ERROR([I need a copy of *troff to format the documentation])
911 fi
913 AC_ARG_VAR(RRDDOCDIR, [[DATADIR/doc/PACKAGE-VERSION] Documentation directory])
914 if test -z "$RRDDOCDIR"; then
915 RRDDOCDIR='${datadir}/doc/${PACKAGE}-${VERSION}'; fi
918 CONFIGURE_PART(Apply Configuration Information)
920 AC_CONFIG_FILES([examples/shared-demo.pl])
921 AC_CONFIG_FILES([examples/piped-demo.pl])
922 AC_CONFIG_FILES([examples/stripes.pl])
923 AC_CONFIG_FILES([examples/bigtops.pl])
924 AC_CONFIG_FILES([examples/minmax.pl])
925 AC_CONFIG_FILES([examples/4charts.pl])
926 AC_CONFIG_FILES([examples/perftest.pl])
927 AC_CONFIG_FILES([examples/Makefile])
928 AC_CONFIG_FILES([examples/rrdcached/Makefile])
929 AC_CONFIG_FILES([doc/Makefile])
930 AC_CONFIG_FILES([po/Makefile.in])
931 AC_CONFIG_FILES([src/Makefile])
932 AC_CONFIG_FILES([src/librrd.sym.in])
933 AC_CONFIG_FILES([src/librrd.pc])
934 AC_CONFIG_FILES([bindings/Makefile])
935 AC_CONFIG_FILES([bindings/tcl/Makefile])
936 AC_CONFIG_FILES([bindings/tcl/ifOctets.tcl])
937 AC_CONFIG_FILES([Makefile])
938 AC_CONFIG_FILES([bindings/lua/Makefile])
940 AC_CONFIG_COMMANDS([default],[[ chmod +x examples/*.pl]],[[]])
942 dnl intl requires our config to be called config.h. indulge it.
943 AC_CONFIG_COMMANDS_POST([ test -f config.h || ln -s rrd_config.h config.h ])
945 AC_OUTPUT
947 AC_MSG_CHECKING(in)
948 AC_MSG_RESULT(and out again)
950 echo $ECHO_N "ordering CD from http://tobi.oetiker.ch/wish $ECHO_C" 1>&6
951 sleep 1
952 echo $ECHO_N ".$ECHO_C" 1>&6
953 sleep 1
954 echo $ECHO_N ".$ECHO_C" 1>&6
955 sleep 1
956 echo $ECHO_N ".$ECHO_C" 1>&6
957 sleep 1
958 echo $ECHO_N ".$ECHO_C" 1>&6
959 sleep 1
960 AC_MSG_RESULT([ just kidding ;-)])
961 echo
962 echo "----------------------------------------------------------------"
963 echo "Config is DONE!"
964 echo
965 echo " With MMAP IO: $enable_mmap"
966 echo " Build rrd_getopt: $build_getopt"
967 echo " Build rrd_graph: $enable_rrd_graph"
968 echo " Static programs: $staticprogs"
969 echo " Perl Modules: $COMP_PERL"
970 echo " Perl Binary: $PERL"
971 echo " Perl Version: $PERL_VERSION"
972 echo " Perl Options: $PERL_MAKE_OPTIONS"
973 echo " Ruby Modules: $COMP_RUBY"
974 echo " Ruby Binary: $RUBY"
975 echo " Ruby Options: $RUBY_MAKE_OPTIONS"
976 echo " Build Lua Bindings: $enable_lua"
977 if test "$enable_lua" = "yes"; then
978 echo " Lua Binary: $LUA"
979 echo " Lua Version: $lua_version"
980 echo " Lua C-modules dir: $LUA_INSTALL_CMOD"
981 if test "$lua_need_compat51" = "1"; then
982 echo " Lua Lua-modules dir: $LUA_INSTALL_LMOD"
983 fi
984 fi
985 echo " Build Tcl Bindings: $enable_tcl"
986 echo " Build Python Bindings: $enable_python"
987 echo " Build rrdcgi: $enable_rrdcgi"
988 echo " Build librrd MT: $enable_pthread"
989 echo " Use gettext: $USE_NLS"
990 echo " With libDBI: $have_libdbi"
991 echo " With libwrap: $have_libwrap"
992 echo
993 echo " Libraries: $ALL_LIBS"
994 echo
995 echo "Type 'make' to compile the software and use 'make install' to "
996 echo "install everything to: $prefix."
997 echo
998 echo " ... that wishlist is NO JOKE. If you find RRDtool useful"
999 echo "make me happy. Go to http://tobi.oetiker.ch/wish and"
1000 echo "place an order."
1001 echo
1002 echo " -- Tobi Oetiker <tobi@oetiker.ch>"
1003 echo "----------------------------------------------------------------"