X-Git-Url: https://git.octo.it/?a=blobdiff_plain;ds=sidebyside;f=configure.ac;h=dc197e1f9c05484d87d3d3f5587992b597d13036;hb=e7094fb9bb30ba35b2a7e4262f747297bc428172;hp=83bf7e69bf4dbdfe61ca157e5a9c7d11baee8c1b;hpb=818549a636c390fb4a8390a7e2195a52293cd56b;p=rrdtool.git diff --git a/configure.ac b/configure.ac index 83bf7e6..dc197e1 100644 --- a/configure.ac +++ b/configure.ac @@ -8,13 +8,13 @@ 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.23]) +AC_INIT([rrdtool],[1.2.99907052400]) 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 the devel versions will be something like dnl a.b999yymmddhh -NUMVERS=1.2023 +NUMVERS=1.299907052400 AC_SUBST(NUMVERS) AC_CANONICAL_TARGET AM_INIT_AUTOMAKE @@ -54,15 +54,15 @@ AH_TOP([ AH_BOTTOM([ /* make sure that we pickup the correct stuff from all headers */ #define _XOPEN_SOURCE 600 -#if HAVE_FEATURES_H +#ifdef HAVE_FEATURES_H # include #endif -#if HAVE_SYS_TYPES_H +#ifdef HAVE_SYS_TYPES_H # include #endif -#if HAVE_SYS_PARAM_H +#ifdef HAVE_SYS_PARAM_H # include #endif #ifndef MAXPATH @@ -77,11 +77,11 @@ AH_BOTTOM([ # endif #endif -#if HAVE_ERRNO_H +#ifdef HAVE_ERRNO_H # include #endif -#if HAVE_SYS_MMAN_H +#ifdef HAVE_SYS_MMAN_H # include #endif #if !defined HAVE_MADVISE && defined HAVE_POSIX_MADVISE @@ -97,35 +97,34 @@ AH_BOTTOM([ # define USE_MADVISE 1 #endif -#if HAVE_SYS_STAT_H +#ifdef HAVE_SYS_STAT_H # include #endif -/* enable posix_fadvise on linux */ -#if defined(HAVE_POSIX_FADVISE) && defined(HAVE_FCNTL_H) +#ifdef HAVE_FCNTL_H #include #endif -#if HAVE_UNISTD_H +#ifdef HAVE_UNISTD_H # include #endif -#if TIME_WITH_SYS_TIME +#ifdef TIME_WITH_SYS_TIME # include # include #else -# if HAVE_SYS_TIME_H +# ifdef HAVE_SYS_TIME_H # include # else # include # endif #endif -#if HAVE_SYS_TIMES_H +#ifdef HAVE_SYS_TIMES_H # include #endif -#if HAVE_SYS_RESOURCE_H +#ifdef HAVE_SYS_RESOURCE_H # include #if (defined(__svr4__) && defined(__sun__)) /* Solaris headers (pre 2.6) don't have a getrusage prototype. @@ -162,31 +161,31 @@ char *strchr (), *strrchr (); # include #endif -#if HAVE_STDIO_H +#ifdef HAVE_STDIO_H # include #endif -#if HAVE_STDLIB_H +#ifdef HAVE_STDLIB_H # include #endif -#if HAVE_CTYPE_H +#ifdef HAVE_CTYPE_H # include #endif -#if HAVE_DIRENT_H +#ifdef HAVE_DIRENT_H # include # define NAMLEN(dirent) strlen((dirent)->d_name) #else # define dirent direct # define NAMLEN(dirent) (dirent)->d_namlen -# if HAVE_SYS_NDIR_H +# ifdef HAVE_SYS_NDIR_H # include # endif -# if HAVE_SYS_DIR_H +# ifdef HAVE_SYS_DIR_H # include # endif -# if HAVE_NDIR_H +# ifdef HAVE_NDIR_H # include # endif #endif @@ -300,6 +299,11 @@ AC_ARG_ENABLE([mmap], [], [enable_mmap=yes]) +dnl will most likely not work on compressed filesystems, i think.. *shrug* +AC_ARG_ENABLE([direct-io], +[ --enable-direct-io enable O_DIRECT if available], +[enable_direct_io=yes], +[]) AC_ARG_ENABLE(pthread,[ --disable-pthread disable multithread support], [],[enable_pthread=yes]) @@ -314,6 +318,9 @@ AC_PROG_CC AC_PROG_CPP AC_PROG_LIBTOOL +dnl Try to detect/use GNU features +CFLAGS="$CFLAGS -D_GNU_SOURCE" + dnl which flags does the compiler support? if test "x$GCC" = "xyes"; then for flag in -fno-strict-aliasing -Wall -std=c99 -pedantic -Wundef -Wshadow -Wpointer-arith -Wcast-align -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Winline -W; do @@ -339,6 +346,26 @@ AC_HEADER_STDC AC_HEADER_DIRENT 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) +if test "x$enable_direct_io" = "xyes"; then +AC_CACHE_CHECK([for O_DIRECT flag to open(2)],rrd_cv_HAVE_OPEN_O_DIRECT,[ +AC_TRY_COMPILE([ +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_FCNTL_H +#include +#endif], +[int fd = open("/dev/null", O_DIRECT);], +rrd_cv_HAVE_OPEN_O_DIRECT=yes,rrd_cv_HAVE_OPEN_O_DIRECT=no)]) + if test "x$rrd_cv_HAVE_OPEN_O_DIRECT" = "xyes"; then + AC_DEFINE(USE_DIRECT_IO,1,[Whether the open(2) accepts O_DIRECT]) + else + enable_direct_io="no" + fi +else + enable_direct_io="no" +fi + dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_HEADER_TIME @@ -362,12 +389,10 @@ AC_C_BIGENDIAN dnl for each function found we get a definition in config.h 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 posix_fadvise) +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 Could use these to know if we need to provide a prototype dnl AC_CHECK_DECLS(fdatasync, [], [], [#include ]) -dnl AC_CHECK_DECLS(posix_fadvise, [], [], [#define _XOPEN_SOURCE 600 -dnl #include ]) dnl XXX: dunno about windows.. add AC_CHECK_FUNCS(munmap) there too? if test "x$enable_mmap" = "xyes"; then @@ -383,7 +408,7 @@ if test "x$enable_mmap" = "xyes"; then AC_CHECK_HEADERS(sys/mman.h) AC_FUNC_MMAP AC_CHECK_FUNCS(mmap munmap) - AC_CHECK_DECLS(madvise, [], [], [#if HAVE_SYS_MMAN_H + AC_CHECK_DECLS(madvise, [], [], [#ifdef HAVE_SYS_MMAN_H # include #endif]) if test "x$ac_cv_have_decl_madvise" = "xyes"; @@ -400,9 +425,17 @@ if test "x$enable_mmap" = "xyes"; then if test "x$ac_cv_func_mmap" != "xyes"; then AC_MSG_ERROR([--enable-mmap requested but mmap() was not detected]) +dnl enable_mmap="no" fi fi +dnl use FD based I/O ? +if test "x$enable_mmap" = "xno";then + AC_CHECK_DECLS(posix_fadvise, [], [], [#define _XOPEN_SOURCE 600 +#include ]) + AC_CHECK_FUNCS(posix_fadvise) +fi + CONFIGURE_PART(IEEE Math Checks) @@ -818,7 +851,8 @@ echo echo "----------------------------------------------------------------" echo "Config is DONE!" echo -echo " With MMAP IO: $ac_cv_func_mmap_fixed_mapped" +echo " With MMAP IO: $enable_mmap" +echo " Use O_DIRECT: $enable_direct_io" echo " Perl Modules: $COMP_PERL" echo " Perl Binary: $PERL" echo " Perl Version: $PERL_VERSION"