X-Git-Url: https://git.octo.it/?p=rrdtool.git;a=blobdiff_plain;f=configure.ac;h=b64d480159542312b1cac4bdc85442f8867875cc;hp=0b1d5def3d5733a59b548440fed40ec3d0d2d7bb;hb=342b22c3e74a10d7049285c2cea7383676bcfc95;hpb=cbf27bf2f97c7f893934c3d064879b170bf671a5 diff --git a/configure.ac b/configure.ac index 0b1d5de..b64d480 100644 --- a/configure.ac +++ b/configure.ac @@ -4,17 +4,17 @@ dnl dnl Created by Jeff Allen, Tobi Oetiker, Blair Zajac dnl dnl Inspiration from http://autoconf-archive.cryp.to - + dnl tell automake the this script is for rrdtool dnl the official version number is dnl a.b.c -AC_INIT([rrdtool],[1.2.9]) +AC_INIT([rrdtool],[1.2.12]) dnl for testing a numberical version number comes handy dnl the released version are dnl a.bccc dnl the devl versions will be something like dnl a.b999yymmddhh -NUMVERS=1.2009 +NUMVERS=1.2012 AC_SUBST(NUMVERS) AC_CANONICAL_TARGET AM_INIT_AUTOMAKE @@ -26,7 +26,6 @@ dnl is in there dnl determine the type of system we are running on - AC_SUBST(VERSION) AC_PREFIX_DEFAULT( /usr/local/rrdtool-$PACKAGE_VERSION ) @@ -78,6 +77,10 @@ char *strchr (), *strrchr (); # define rrd_realloc(a,b) realloc((a), (b)) #endif +#if NEED_MALLOC_MALLOC_H +# include +#endif + #if HAVE_MATH_H # include #endif @@ -143,12 +146,17 @@ char *strchr (), *strrchr (); #endif /* CONFIG_H */ ]) +dnl Process Special Options +dnl ----------------------------------- +dnl How the vertical axis label is printed +AC_ARG_VAR(RRDGRAPH_YLEGEND_ANGLE, + [Vertical label angle: 90.0 (default) or 270.0]) +AC_DEFINE_UNQUOTED(RRDGRAPH_YLEGEND_ANGLE,${RRDGRAPH_YLEGEND_ANGLE:-90.0}, + [Vertical label angle: 90.0 (default) or 270.0]) -dnl Check for the compiler and static/shared library creation. -AC_PROG_CC -AC_PROG_CPP -AC_PROG_LIBTOOL +AC_ARG_ENABLE(rrdcgi,[ --disable-rrdcgi disable building of rrdcgi], +[],[enable_rrdcgi=yes]) dnl Check if we run on a system that has fonts AC_ARG_WITH(rrd-default-font, @@ -161,8 +169,31 @@ AC_ARG_WITH(rrd-default-font, fi ]) +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], +[], +[enable_mmap=yes]) + + + AC_ARG_ENABLE(pthread,[ --disable-pthread disable multithread support], +[],[enable_pthread=yes]) + + + +CONFIGURE_PART(Audit Compilation Environment) + + +dnl Check for the compiler and static/shared library creation. +AC_PROG_CC +AC_PROG_CPP +AC_PROG_LIBTOOL + + AC_SUBST(RRD_DEFAULT_FONT) +CONFIGURE_PART(Checking for Header Files) + dnl Checks for header files. AC_HEADER_STDC AC_HEADER_DIRENT @@ -180,6 +211,8 @@ 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" +CONFIGURE_PART(Test Library Functions) + dnl Checks for library functions. AC_FUNC_STRFTIME AC_FUNC_VPRINTF @@ -191,72 +224,61 @@ dnl of the form HAVE_FUNCTION 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) -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], -[], -[enable_mmap=yes]) if test "x$enable_mmap" = xyes; then - AC_FUNC_MMAP + case "$host" in + *cygwin*) + # the normal mmap test does not work in cygwin + AC_CHECK_FUNCS(mmap) + if [ "x${ac_cv_func_mmap}" = xyes ]; then + ac_cv_func_mmap_fixed_mapped=yes + fi + ;; + *) + AC_FUNC_MMAP + ;; + esac fi + +CONFIGURE_PART(IEEE Math Checks) + dnl HP-UX 11.00 does not have finite but does have isfinite as a macro so we need dnl actual code to check if this works AC_CHECK_FUNCS(fpclassify, , [AC_MSG_CHECKING(for fpclassify with ) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[float f = 0.0; fpclassify(f)]])],[AC_MSG_RESULT(yes) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include +volatile int x;volatile float f; ]], [[x = fpclassify(f)]])],[AC_MSG_RESULT(yes) AC_DEFINE(HAVE_FPCLASSIFY)],[AC_MSG_RESULT(no)])]) AC_CHECK_FUNCS(finite, , [AC_CHECK_FUNCS(isfinite, , [AC_MSG_CHECKING(for isfinite with ) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[float f = 0.0; isfinite(f)]])],[AC_MSG_RESULT(yes) + 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)])])]) AC_CHECK_FUNCS(isinf, , [AC_MSG_CHECKING(for isinf with ) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[float f = 0.0; isinf(f)]])],[AC_MSG_RESULT(yes) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include +volatile int x;volatile float f; ]], [[x = isinf(f)]])],[AC_MSG_RESULT(yes) AC_DEFINE(HAVE_ISINF)],[AC_MSG_RESULT(no)])]) AC_FULL_IEEE -dnl How the vertical axis label is printed -AC_ARG_VAR(RRDGRAPH_YLEGEND_ANGLE, - [Vertical label angle: 90.0 (default) or 270.0]) -AC_DEFINE_UNQUOTED(RRDGRAPH_YLEGEND_ANGLE,${RRDGRAPH_YLEGEND_ANGLE:-90.0}, - [Vertical label angle: 90.0 (default) or 270.0]) - - -AC_ARG_ENABLE(rrdcgi,[ --disable-rrdcgi disable building of rrdcgi], -[],[enable_rrdcgi=yes]) -AM_CONDITIONAL(BUILD_RRDCGI,[test $enable_rrdcgi != no]) +CONFIGURE_PART(Resolve Portability Issues) -EX_CHECK_ALL(art_lgpl_2, art_vpath_add_point, libart_lgpl/libart.h, libart-2.0, 2.3.17, ftp://ftp.gnome.org/pub/GNOME/sources/libart_lgpl/2.3/, /usr/include/libart-2.0) -EX_CHECK_ALL(z, zlibVersion, zlib.h, zlib, 1.2.2, http://www.gzip.org/zlib/, "") -EX_CHECK_ALL(png, png_access_version_number, png.h, libpng, 1.2.8, http://prdownloads.sourceforge.net/libpng/, "") -EX_CHECK_ALL(freetype, FT_Init_FreeType, ft2build.h, freetype2, 2.1.9, http://prdownloads.sourceforge.net/freetype/, /usr/include/freetype2) - -save_LIBS=${LIBS} -save_CPPFLAGS=${CPPFLAGS} -save_LDFLAGS=${LDFLAGS} - -if test $enable_rrdcgi != no; then -EX_CHECK_ALL(cgi, cgiInit, cgi.h, cgilib, 0.5, http://www.infodrom.org/projects/cgilib, "") -fi - -CGI_LIBS=${LIBS} -CGI_CPPFLAGS=${CPPFLAGS} -CGI_LDFLAGS=${LDFLAGS} - -AC_SUBST(CGI_LIBS) -AC_SUBST(CGI_CPPFLAGS) -AC_SUBST(CGI_LDFLAGS) +dnl what does realloc do if it gets called with a NULL pointer -LIBS=${save_LIBS} -CPPFLAGS=${save_CPPFLAGS} -LDFLAGS=${save_LDFLAGS} +AC_CACHE_CHECK([if realloc can deal with NULL], rd_cv_null_realloc, +[AC_RUN_IFELSE([AC_LANG_SOURCE([[#include + int main(void){ + char *x = NULL; + x = realloc (x,10); + if (x==NULL) return 1; + return 0; + }]])],[rd_cv_null_realloc=yes],[rd_cv_null_realloc=nope],[:])]) -if test "$EX_CHECK_ALL_ERR" = "YES"; then - AC_MSG_ERROR([Please fix the library issues listed above and try again.]) +if test x"$rd_cv_null_realloc" = xnope; then +AC_DEFINE(NO_NULL_REALLOC) fi AC_LANG_PUSH(C) @@ -295,11 +317,6 @@ dnl http://autoconf-archive.cryp.to/acx_pthread.m4 AC_SUBST(MULTITHREAD_CFLAGS) AC_SUBST(MULTITHREAD_LDFLAGS) - -AC_ARG_ENABLE(pthread,[ --disable-pthread disable multithread support], -[],[enable_pthread=yes]) - - if test $enable_pthread != no; then ACX_PTHREAD([ MULTITHREAD_CFLAGS=$PTHREAD_CFLAGS @@ -315,8 +332,47 @@ if test "x$x_rflag" != "xno"; then CPPFLAGS="$CPPFLAGS $x_rflag" fi - AM_CONDITIONAL(BUILD_MULTITHREAD,[test $enable_pthread != no]) + +AC_LANG_PUSH(C) +dnl see if we have to include malloc/malloc.h +AC_MSG_CHECKING([do we need malloc/malloc.h]) +AC_LINK_IFELSE( + AC_LANG_PROGRAM( + [[#include ]], + [[malloc(1)]] + ), + [ AC_MSG_RESULT([nope, works out of the box]) ], + [ AC_LINK_IFELSE( + AC_LANG_PROGRAM( + [[#include + #include ]], + [[malloc(1)]] + ), + [AC_DEFINE(NEED_MALLOC_MALLOC_H) + AC_MSG_RESULT([yes we do])], + [AC_MSG_ERROR([Can't figure how to compile malloc])] + ) + ] +) +AC_LANG_POP(C) + +CONFIGURE_PART(Findr 3rd-Party Libraries) + + +AM_CONDITIONAL(BUILD_RRDCGI,[test $enable_rrdcgi != no]) + +EX_CHECK_ALL(art_lgpl_2, art_vpath_add_point, libart_lgpl/libart.h, libart-2.0, 2.3.17, ftp://ftp.gnome.org/pub/GNOME/sources/libart_lgpl/2.3/, /usr/include/libart-2.0) +EX_CHECK_ALL(z, zlibVersion, zlib.h, zlib, 1.2.3, http://www.gzip.org/zlib/, "") +EX_CHECK_ALL(png, png_access_version_number, png.h, libpng, 1.2.10, http://prdownloads.sourceforge.net/libpng/, "") +EX_CHECK_ALL(freetype, FT_Init_FreeType, ft2build.h, freetype2, 2.1.10, http://prdownloads.sourceforge.net/freetype/, /usr/include/freetype2) + +if test "$EX_CHECK_ALL_ERR" = "YES"; then + AC_MSG_ERROR([Please fix the library issues listed above and try again.]) +fi + + +CONFIGURE_PART(Prep for Building Language Bindings) dnl Check for Perl. AC_PATH_PROG(PERL, perl, no) @@ -325,6 +381,11 @@ AC_ARG_ENABLE(perl,[ --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]) + if test "x$PERL" = "xno" -o x$enable_perl = xno; then COMP_PERL= else @@ -332,23 +393,27 @@ else AC_MSG_CHECKING(for the perl version you are running) PERL_VERSION=`$PERL -MConfig -e 'print $Config{version}'` AC_MSG_RESULT($PERL_VERSION) - AC_MSG_CHECKING(for the C compiler perl wants to use to build its modules) - perlcc=`$PERL -MConfig -e 'print $Config{cc}'` - AC_MSG_RESULT($perlcc) - if test ! -x "$perlcc"; then - AC_PATH_PROG(PERLCC, "${perlcc}", no) - if test "$PERLCC" = "no"; then - AC_MSG_WARN([ -I would not find the Compiler ($perlcc) that was originally used to compile your -perl binary. You should either make sure that this compiler is available on your -system, or use a different perl setup that was compiled with $CC. - -I will disable the compilation of the RRDs perl module. + if test -z "$PERLCC"; then + AC_MSG_CHECKING(for the C compiler perl wants to use to build its modules) + perlcc=`$PERL -MConfig -e 'print $Config{cc}'` + AC_MSG_RESULT($perlcc) + if test ! -x "$perlcc"; then + AC_PATH_PROG(PERL_CC, "${perlcc}", no) + if test "$PERL_CC" = "no"; then + AC_MSG_WARN([ +I would not find the Compiler ($perlcc) that was originally used to compile +your perl binary. You should either make sure that this compiler is +available on your system, pick an other compiler and set PERLCC +appropriately, or use a different perl setup that was compiled locally. + +I will disable the compilation of the RRDs perl module for now. ]) - COMP_PERL="perl_piped" - fi + COMP_PERL="perl_piped" + fi + fi fi fi + AC_MSG_CHECKING(Perl Modules to build) AC_MSG_RESULT(${COMP_PERL:-No Perl Modules will be built}) @@ -368,6 +433,23 @@ AC_ARG_ENABLE(perl-site-install, your perl setup thinks it is best.], [PERL_MAKE_OPTIONS=],[]) +if test ! -z "$PERLCC"; then + PERL_MAKE_OPTIONS="$PERL_MAKE_OPTIONS CC=$PERLCC" + + if test ! -z "$PERLCCFLAGS"; then + PERL_MAKE_OPTIONS="$PERL_MAKE_OPTIONS CCFLAGS=$PERLCCFLAGS" + fi + + if test -z "$PERLLD"; then + PERLLD=$PERLCC + fi + PERL_MAKE_OPTIONS="$PERL_MAKE_OPTIONS LD=$PERLLD" + + if test ! -z "$PERLLDFLAGS"; then + PERL_MAKE_OPTIONS="$PERL_MAKE_OPTIONS LDFLAGS=$PERLLDFLAGS" + fi +fi + AC_ARG_WITH(perl-options, [ --with-perl-options=[OPTIONS] options to pass on command-line when generating Makefile from Makefile.PL. If you set this @@ -380,6 +462,8 @@ AC_SUBST(PERL) AC_SUBST(COMP_PERL) AC_SUBST(PERL_VERSION) +enable_tcl_site=no + AC_ARG_ENABLE(tcl,[ --disable-tcl do not build the tcl modules], [],[enable_tcl=yes]) @@ -406,9 +490,13 @@ if test "$enable_tcl" = "yes"; then . $tcl_config TCL_PACKAGE_DIR="$TCL_PACKAGE_PATH/tclrrd$VERSION" fi + AC_ARG_ENABLE(tcl,[ --enable-tcl-site install the tcl extension in the tcl tree], + [],[enable_tcl_site=yes]) + fi AM_CONDITIONAL(BUILD_TCL, test "$enable_tcl" = "yes" ) +AM_CONDITIONAL(BUILD_TCL_SITE, test "$enable_tcl_site" = "yes" ) AC_SUBST(TCL_PREFIX) AC_SUBST(TCL_SHLIB_CFLAGS) @@ -416,6 +504,7 @@ AC_SUBST(TCL_SHLIB_LD) AC_SUBST(TCL_SHLIB_SUFFIX) AC_SUBST(TCL_PACKAGE_PATH) AC_SUBST(TCL_LD_SEARCH_FLAGS) +AC_SUBST(TCL_STUB_LIB_SPEC) AC_SUBST(TCL_VERSION) AC_SUBST(TCL_PACKAGE_DIR) @@ -434,10 +523,14 @@ dnl Check for nroff AC_PATH_PROGS(NROFF, gnroff nroff) AC_PATH_PROGS(TROFF, groff troff) +AC_ARG_VAR(RRDDOCDIR, [[DATADIR/doc/PACKAGE-VERSION] Documentation directory]) +if test -z "$RRDDOCDIR"; then + RRDDOCDIR='${datadir}/doc/${PACKAGE}-${VERSION}'; fi + dnl Does the compiler like -Wall and -pedantic? if test "$GCC" = "yes"; then oCFLAGS=$CFLAGS - CFLAGS="$CFLAGS -Wall -pedantic -Wshadow -Wpointer-arith -Wcast-align -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Winline -W" + CFLAGS="$CFLAGS -fno-strict-aliasing -Wall -pedantic -Wshadow -Wpointer-arith -Wcast-align -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Winline -W" AC_CACHE_CHECK(if we can use GCC-specific compiler options, rd_cv_gcc_opt, [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[return 0 ]])],[rd_cv_gcc_opt=yes],[rd_cv_gcc_opt=no ]) ] @@ -447,44 +540,32 @@ if test "$GCC" = "yes"; then fi fi -dnl what does realloc do if it gets called with a NULL pointer -AC_CACHE_CHECK([if realloc can deal with NULL], rd_cv_null_realloc, -[AC_RUN_IFELSE([AC_LANG_SOURCE([[#include - int main(void){ - char *x = NULL; - x = realloc (x,10); - if (x==NULL) return 1; - return 0; - }]])],[rd_cv_null_realloc=yes],[rd_cv_null_realloc=nope],[:])]) - -if test x"$rd_cv_null_realloc" = xnope; then -AC_DEFINE(NO_NULL_REALLOC) -fi - -AC_CONFIG_FILES([examples/shared-demo.pl \ - examples/piped-demo.pl \ - examples/stripes.pl \ - examples/bigtops.pl \ - examples/minmax.pl \ - examples/cgi-demo.cgi \ - examples/4charts.pl \ - examples/Makefile \ - doc/Makefile \ - src/Makefile \ - bindings/Makefile \ - bindings/tcl/Makefile \ - bindings/tcl/ifOctets.tcl \ - bindings/python/Makefile \ - Makefile]) -AC_CONFIG_COMMANDS([default],[[\ - chmod +x examples/*.cgi examples/*.pl]],[[]]) +CONFIGURE_PART(Apply Configuration Information) + +AC_CONFIG_FILES([examples/shared-demo.pl]) +AC_CONFIG_FILES([examples/piped-demo.pl]) +AC_CONFIG_FILES([examples/stripes.pl]) +AC_CONFIG_FILES([examples/bigtops.pl]) +AC_CONFIG_FILES([examples/minmax.pl]) +AC_CONFIG_FILES([examples/cgi-demo.cgi]) +AC_CONFIG_FILES([examples/4charts.pl]) +AC_CONFIG_FILES([examples/Makefile]) +AC_CONFIG_FILES([doc/Makefile]) +AC_CONFIG_FILES([src/Makefile]) +AC_CONFIG_FILES([bindings/Makefile]) +AC_CONFIG_FILES([bindings/tcl/Makefile]) +AC_CONFIG_FILES([bindings/tcl/ifOctets.tcl]) +AC_CONFIG_FILES([bindings/python/Makefile]) +AC_CONFIG_FILES([Makefile]) + +AC_CONFIG_COMMANDS([default],[[ chmod +x examples/*.cgi examples/*.pl]],[[]]) AC_OUTPUT AC_MSG_CHECKING(in) AC_MSG_RESULT(and out again) -echo $ECHO_N "ordering CD from http://people.ee.ethz.ch/~oetiker/wish $ECHO_C" 1>&6 +echo $ECHO_N "ordering CD from http://people.ee.ethz.ch/oetiker/wish $ECHO_C" 1>&6 sleep 1 echo $ECHO_N ".$ECHO_C" 1>&6 sleep 1