X-Git-Url: https://git.octo.it/?p=rrdtool.git;a=blobdiff_plain;f=configure.ac;h=b64d480159542312b1cac4bdc85442f8867875cc;hp=03c920f7f328c9021018ce7473907384c1976c83;hb=342b22c3e74a10d7049285c2cea7383676bcfc95;hpb=c44fb9ef30bd171074c3221a8f3f55179c6c59d3 diff --git a/configure.ac b/configure.ac index 03c920f..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.10]) +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.2010 +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]) - -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} +CONFIGURE_PART(Resolve Portability Issues) -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) @@ -357,6 +413,7 @@ I will disable the compilation of the RRDs perl module for now. fi fi fi + AC_MSG_CHECKING(Perl Modules to build) AC_MSG_RESULT(${COMP_PERL:-No Perl Modules will be built}) @@ -405,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]) @@ -431,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) @@ -441,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) @@ -466,7 +530,7 @@ if test -z "$RRDDOCDIR"; then 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 ]) ] @@ -476,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