From: oetiker Date: Wed, 27 May 2009 13:39:44 +0000 (+0000) Subject: the get ready for 1.4rc patch X-Git-Url: https://git.octo.it/?p=rrdtool.git;a=commitdiff_plain;h=377af7db1b7a7eef72d891328bb36a209ed23790;ds=sidebyside the get ready for 1.4rc patch * updated to automake 1.11 with silet build, with this warnings stand out much better in the build process. use make V=1 to see all as before * switched from intltoolize to autopoint for gettext support * moved m4 bits into their own subdirectory --tobi git-svn-id: svn://svn.oetiker.ch/rrdtool/trunk/program@1819 a5681a0c-68f1-0310-ab6d-d61299d08faa --- diff --git a/MakeMakefile b/MakeMakefile index 2765238..bfcfddf 100755 --- a/MakeMakefile +++ b/MakeMakefile @@ -3,8 +3,8 @@ # Run this script after the first cvs checkout to build # makefiles and friends -#PATH="/usr/sepp/bin:$PATH" -#export PATH +PATH="/usr/pack/automake-1.11-to/amd64-linux-ubuntu8.04/bin:$PATH" +export PATH vcheck (){ perl <= $AUTOMAKE_VER" ERROR=1 else - automake=automake-1.9 - aclocal="aclocal-1.9" - for d in /usr/pack/automake-1.9.5-to/share/aclocal-1.9 /usr/share/aclocal-1.9 /usr/share/aclocal /usr/pack/rrdtool-1.3svn-to/share/aclocal /usr/pack/intltool-0.37.0-to/share/aclocal ; do - [ -d $d ] && aclocal="$aclocal -I $d" - done + AUTOMAKE="automake-1.11" + ACLOCAL="aclocal-1.11" + export AUTOMAKE ACLOCAL fi -else - automake="automake" - aclocal="aclocal" -# aclocal="aclocal -I /usr/pack/libtool-1.5.14-to/share/aclocal" fi + if vcheck $AUTOCONF_VER "autoconf --version" then echo "get a copy of GNU autoconf >= $autoconf_ver" ERROR=1 fi -if vcheck $INTLTOOL_VER "intltoolize --version" -then - echo "get a copy of GNU intltoolize >= $INTLTOOL_VER" - ERROR=1 -fi - if [ $ERROR -ne 0 ] then exit 1 fi -# remove the bits we are going to recreate - -echo Removing old Makefiles -touch Makefile -find . -name "Makefile" -or -name "Makefile.in" -print0 | xargs -0 rm -echo Cleaning out other leftovers -for x in configure install-sh intltool-merge.in rrd_config.h.in \ - missing intltool-update po/Makefile.in.in config.sub \ - intltool-extract intltool-extract.in config.guess \ - depcomp intltool-update.in autom4te.cache \ - intltool-merge compile; do - [ ! -L $x -a -d $x ] && rm -r "$x" - [ ! -L $x -a -f $x ] && rm "$x" -done -set -x -intltoolize --automake -c -f -$aclocal -libtoolize --copy --force -autoheader --force -$aclocal -$automake --foreign --add-missing --force-missing --copy -autoconf --force +./autogen.sh # vim: set syntax=sh : diff --git a/Makefile.am b/Makefile.am index 78903cb..c1a12cf 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2,17 +2,11 @@ RSYNC = rsync --rsh=ssh # build the following subdirectories -if BUILD_LIBINTL -PO=po -else -PO= -endif -SUBDIRS = $(PO) src examples doc bindings +SUBDIRS = po src examples doc bindings intl # the following files are not mentioned in any other Makefile EXTRA_DIST = COPYRIGHT CHANGES WIN32-BUILD-TIPS.txt TODO CONTRIBUTORS THREADS \ - intltool-extract.in intltool-merge.in intltool-update.in \ rrdtool.spec favicon.ico win32/Makefile win32/config.h \ win32/rrd.dsp win32/rrd.sln win32/rrd.vcproj \ win32/rrd_config.h.msvc win32/rrdlib.vcproj win32/rrdtool.dsp \ @@ -27,7 +21,7 @@ CLEANFILES = config.cache AUTOMAKE_OPTIONS= foreign # where we keep local rules for automake - +ACLOCAL_AMFLAGS=-I m4 ACLOCAL_M4= $(top_srcdir)/aclocal.m4 #AUTOHEADER = @AUTOHEADER@ --localdir=$(top_srcdir)/config #AUTOCONF = @AUTOCONF@ --localdir=$(top_srcdir)/config diff --git a/acinclude.m4 b/acinclude.m4 deleted file mode 100644 index 5ea34f0..0000000 --- a/acinclude.m4 +++ /dev/null @@ -1,592 +0,0 @@ -dnl Helper Functions for the RRDtool configure.ac script -dnl -dnl this file gets included into aclocal.m4 when runnning aclocal -dnl -dnl -dnl -dnl Check for the presence of a particular library and its header files -dnl if this check fails set the environment variable EX_CHECK_ALL_ERR to YES -dnl and prints out a helful message -dnl -dnl -dnl EX_CHECK_ALL(library, function, header, pkgconf name, tested-version, homepage, cppflags) -dnl $1 $2 $3 $4 $5 $6 $7 -dnl -dnl -AC_DEFUN([EX_CHECK_ALL], -[ - AC_LANG_PUSH(C) - EX_CHECK_STATE=NO - ex_check_save_LIBS=${LIBS} - ex_check_save_CPPFLAGS=${CPPFLAGS} - ex_check_save_LDFLAGS=${LDFLAGS} - if test "x$7" != "x"; then - CPPFLAGS="$CPPFLAGS -I$7" - fi - dnl try compiling naked first - AC_CHECK_LIB($1,$2, [ - AC_CHECK_HEADER($3,[LIBS="-l$1 ${LIBS}";EX_CHECK_STATE=YES],[])],[]) - if test $EX_CHECK_STATE = NO; then - dnl now asking pkg-config for help - AC_CHECK_PROGS(PKGCONFIG,[pkg-config],no) - if test "$PKGCONFIG" != "no"; then - if $PKGCONFIG --exists $4; then - CPPFLAGS=${CPPFLAGS}" "`$PKGCONFIG --cflags $4` - LDFLAGS=${LDFLAGS}" "`$PKGCONFIG --libs-only-L $4` - LDFLAGS=${LDFLAGS}" "`$PKGCONFIG --libs-only-other $4` - LIBS=${LIBS}" "`$PKGCONFIG --libs-only-l $4` - dnl remove the cached value and test again - unset ac_cv_lib_`echo $1 | sed ['s/[^_a-zA-Z0-9]/_/g;s/^[0-9]/_/']`_$2 - AC_CHECK_LIB($1,$2,[ - unset ac_cv_header_`echo $3 | sed ['s/[^_a-zA-Z0-9]/_/g;s/^[0-9]/_/']` - AC_CHECK_HEADER($3,[EX_CHECK_STATE=YES],[]) - ],[]) - else - AC_MSG_WARN([ ----------------------------------------------------------------------------- -* I found a copy of pkgconfig, but there is no $4.pc file around. - You may want to set the PKG_CONFIG_PATH variable to point to its - location. ----------------------------------------------------------------------------- - ]) - fi - fi - fi - - if test ${EX_CHECK_STATE} = NO; then - AC_MSG_WARN([ ----------------------------------------------------------------------------- -* I could not find a working copy of $4. Check config.log for hints on why - this is the case. Maybe you need to set LDFLAGS and CPPFLAGS appropriately - so that compiler and the linker can find lib$1 and its header files. If - you have not installed $4, you can get it either from its original home on - - $6 - - You can find also find an archive copy on - - http://oss.oetiker.ch/rrdtool/pub/libs - - The last tested version of $4 is $5. - - LIBS=$LIBS - LDFLAGS=$LDFLAGS - CPPFLAGS=$CPPFLAGS - ----------------------------------------------------------------------------- - ]) - EX_CHECK_ALL_ERR=YES - LIBS="${ex_check_save_LIBS}" - CPPFLAGS="${ex_check_save_CPPFLAGS}" - LDFLAGS="${ex_check_save_LDFLAGS}" - fi - AC_LANG_POP(C) -] -) - -dnl -dnl Ptherad check from http://autoconf-archive.cryp.to/acx_pthread.m4 -dnl -dnl @synopsis ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) -dnl -dnl This macro figures out how to build C programs using POSIX threads. -dnl It sets the PTHREAD_LIBS output variable to the threads library and -dnl linker flags, and the PTHREAD_CFLAGS output variable to any special -dnl C compiler flags that are needed. (The user can also force certain -dnl compiler flags/libs to be tested by setting these environment -dnl variables.) -dnl -dnl Also sets PTHREAD_CC to any special C compiler that is needed for -dnl multi-threaded programs (defaults to the value of CC otherwise). -dnl (This is necessary on AIX to use the special cc_r compiler alias.) -dnl -dnl NOTE: You are assumed to not only compile your program with these -dnl flags, but also link it with them as well. e.g. you should link -dnl with $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS -dnl $LIBS -dnl -dnl If you are only building threads programs, you may wish to use -dnl these variables in your default LIBS, CFLAGS, and CC: -dnl -dnl LIBS="$PTHREAD_LIBS $LIBS" -dnl CFLAGS="$CFLAGS $PTHREAD_CFLAGS" -dnl CC="$PTHREAD_CC" -dnl -dnl In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute -dnl constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to -dnl that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX). -dnl -dnl ACTION-IF-FOUND is a list of shell commands to run if a threads -dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands to -dnl run it if it is not found. If ACTION-IF-FOUND is not specified, the -dnl default action will define HAVE_PTHREAD. -dnl -dnl Please let the authors know if this macro fails on any platform, or -dnl if you have any other suggestions or comments. This macro was based -dnl on work by SGJ on autoconf scripts for FFTW (www.fftw.org) (with -dnl help from M. Frigo), as well as ac_pthread and hb_pthread macros -dnl posted by Alejandro Forero Cuervo to the autoconf macro repository. -dnl We are also grateful for the helpful feedback of numerous users. -dnl -dnl @category InstalledPackages -dnl @author Steven G. Johnson -dnl @version 2005-01-14 -dnl @license GPLWithACException - -AC_DEFUN([ACX_PTHREAD], [ -AC_REQUIRE([AC_CANONICAL_HOST]) -AC_LANG_PUSH(C) -acx_pthread_ok=no - -# We used to check for pthread.h first, but this fails if pthread.h -# requires special compiler flags (e.g. on True64 or Sequent). -# It gets checked for in the link test anyway. - -# First of all, check if the user has set any of the PTHREAD_LIBS, -# etcetera environment variables, and if threads linking works using -# them: -if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $PTHREAD_CFLAGS" - save_LIBS="$LIBS" - LIBS="$PTHREAD_LIBS $LIBS" - AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) - AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes) - AC_MSG_RESULT($acx_pthread_ok) - if test x"$acx_pthread_ok" = xno; then - PTHREAD_LIBS="" - PTHREAD_CFLAGS="" - fi - LIBS="$save_LIBS" - CFLAGS="$save_CFLAGS" -fi - -# We must check for the threads library under a number of different -# names; the ordering is very important because some systems -# (e.g. DEC) have both -lpthread and -lpthreads, where one of the -# libraries is broken (non-POSIX). - -# Create a list of thread flags to try. Items starting with a "-" are -# C compiler flags, and other items are library names, except for "none" -# which indicates that we try without any flags at all, and "pthread-config" -# which is a program returning the flags for the Pth emulation library. - -acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" - -# The ordering *is* (sometimes) important. Some notes on the -# individual items follow: - -# pthreads: AIX (must check this before -lpthread) -# none: in case threads are in libc; should be tried before -Kthread and -# other compiler flags to prevent continual compiler warnings -# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) -# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) -# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) -# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) -# -pthreads: Solaris/gcc -# -mthreads: Mingw32/gcc, Lynx/gcc -# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it -# doesn't hurt to check since this sometimes defines pthreads too; -# also defines -D_REENTRANT) -# pthread: Linux, etcetera -# --thread-safe: KAI C++ -# pthread-config: use pthread-config program (for GNU Pth library) - -case "${host_cpu}-${host_os}" in - *solaris*) - - # On Solaris (at least, for some versions), libc contains stubbed - # (non-functional) versions of the pthreads routines, so link-based - # tests will erroneously succeed. (We need to link with -pthread or - # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather - # a function called by this macro, so we could check for that, but - # who knows whether they'll stub that too in a future libc.) So, - # we'll just look for -pthreads and -lpthread first: - - acx_pthread_flags="-pthread -pthreads pthread -mt $acx_pthread_flags" - ;; -esac - -if test x"$acx_pthread_ok" = xno; then -for flag in $acx_pthread_flags; do - - case $flag in - none) - AC_MSG_CHECKING([whether pthreads work without any flags]) - ;; - - -*) - AC_MSG_CHECKING([whether pthreads work with $flag]) - PTHREAD_CFLAGS="$flag" - ;; - - pthread-config) - AC_CHECK_PROG(acx_pthread_config, pthread-config, yes, no) - if test x"$acx_pthread_config" = xno; then continue; fi - PTHREAD_CFLAGS="`pthread-config --cflags`" - PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" - ;; - - *) - AC_MSG_CHECKING([for the pthreads library -l$flag]) - PTHREAD_LIBS="-l$flag" - ;; - esac - - save_LIBS="$LIBS" - save_CFLAGS="$CFLAGS" - LIBS="$PTHREAD_LIBS $LIBS" - CFLAGS="$CFLAGS $PTHREAD_CFLAGS" - - # Check for various functions. We must include pthread.h, - # since some functions may be macros. (On the Sequent, we - # need a special flag -Kthread to make this header compile.) - # We check for pthread_join because it is in -lpthread on IRIX - # while pthread_create is in libc. We check for pthread_attr_init - # due to DEC craziness with -lpthreads. We check for - # pthread_cleanup_push because it is one of the few pthread - # functions on Solaris that doesn't have a non-functional libc stub. - # We try pthread_create on general principles. - AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[pthread_t th; pthread_join(th, 0); - pthread_attr_init(0); pthread_cleanup_push(0, 0); - pthread_create(0,0,0,0); pthread_cleanup_pop(0); ]])],[acx_pthread_ok=yes],[]) - - LIBS="$save_LIBS" - CFLAGS="$save_CFLAGS" - - AC_MSG_RESULT($acx_pthread_ok) - if test "x$acx_pthread_ok" = xyes; then - break; - fi - - PTHREAD_LIBS="" - PTHREAD_CFLAGS="" -done -fi - -# Various other checks: -if test "x$acx_pthread_ok" = xyes; then - save_LIBS="$LIBS" - LIBS="$PTHREAD_LIBS $LIBS" - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $PTHREAD_CFLAGS" - - # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. - AC_MSG_CHECKING([for joinable pthread attribute]) - attr_name=unknown - for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do - AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[int attr=$attr;]])],[attr_name=$attr; break],[]) - done - AC_MSG_RESULT($attr_name) - if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then - AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name, - [Define to necessary symbol if this constant - uses a non-standard name on your system.]) - fi - - AC_MSG_CHECKING([if more special flags are required for pthreads]) - x_rflag=no - case "${host_cpu}-${host_os}" in - *-aix* | *-freebsd* | *-darwin*) x_rflag="-D_THREAD_SAFE";; - *solaris* | *-osf* | *-hpux*) x_rflag="-D_REENTRANT";; - *-linux*) - if test x"$PTHREAD_CFLAGS" = "x-pthread"; then - # For Linux/gcc "-pthread" implies "-lpthread". We need, however, to make this explicit - # in PTHREAD_LIBS such that a shared library to be built properly depends on libpthread. - PTHREAD_LIBS="-lpthread $PTHREAD_LIBS" - fi;; - esac - AC_MSG_RESULT(${x_rflag}) - if test "x$x_rflag" != xno; then - PTHREAD_CFLAGS="$x_rflag $PTHREAD_CFLAGS" - fi - - LIBS="$save_LIBS" - CFLAGS="$save_CFLAGS" - - # More AIX lossage: must compile with cc_r - AC_CHECK_PROG(PTHREAD_CC, cc_r, cc_r, ${CC}) -else - PTHREAD_CC="$CC" -fi - -AC_SUBST(PTHREAD_LIBS) -AC_SUBST(PTHREAD_CFLAGS) -AC_SUBST(PTHREAD_CC) - -# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: -if test x"$acx_pthread_ok" = xyes; then - ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1]) - : -else - acx_pthread_ok=no - $2 -fi -AC_LANG_POP(C) -])dnl ACX_PTHREAD - - -dnl -dnl determine how to get IEEE math working -dnl AC_IEEE(MESSAGE, set rd_cv_ieee_[var] variable, INCLUDES, -dnl FUNCTION-BODY, [ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]]) -dnl - -dnl substitute them in all the files listed in AC_OUTPUT -AC_SUBST(PERLFLAGS) - -AC_DEFUN([AC_IEEE], [ -AC_MSG_CHECKING([if IEEE math works $1]) -AC_CACHE_VAL([rd_cv_ieee_$2], -[AC_RUN_IFELSE([AC_LANG_SOURCE([[$3 - -#if HAVE_MATH_H -# include -#endif - -#if HAVE_FLOAT_H -# include -#endif - -#if HAVE_IEEEFP_H -# include -#endif - -#if HAVE_FP_CLASS_H -# include -#endif - -/* Solaris */ -#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASS)) -# define HAVE_ISINF 1 -# define isinf(a) (fpclass(a) == FP_NINF || fpclass(a) == FP_PINF) -#endif - -/* solaris 10 it defines isnan such that only forte can compile it ... bad bad */ -#if (defined(HAVE_ISNAN) && defined(isnan) && defined(HAVE_FPCLASS)) -# undef isnan -# define isnan(a) (fpclass(a) == FP_SNAN || fpclass(a) == FP_QNAN) -#endif - -/* Digital UNIX */ -#if (! defined(HAVE_ISINF) && defined(HAVE_FP_CLASS) && defined(HAVE_FP_CLASS_H)) -# define HAVE_ISINF 1 -# define isinf(a) (fp_class(a) == FP_NEG_INF || fp_class(a) == FP_POS_INF) -#endif - -/* AIX */ -#if (! defined(HAVE_ISINF) && defined(HAVE_CLASS)) -# define HAVE_ISINF 1 -# define isinf(a) (class(a) == FP_MINUS_INF || class(a) == FP_PLUS_INF) -#endif - -#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_PLUS_INF) && defined(FP_MINUS_INF)) -# define HAVE_ISINF 1 -# define isinf(a) (fpclassify(a) == FP_MINUS_INF || fpclassify(a) == FP_PLUS_INF) -#endif - -#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_INFINITE)) -# define HAVE_ISINF 1 -# define isinf(a) (fpclassify(a) == FP_INFINITE) -#endif - -#include -int main(void){ - double rrdnan,rrdinf,rrdc,rrdzero; - $4; - /* some math to see if we get a floating point exception */ - rrdzero=sin(0.0); /* don't let the compiler optimize us away */ - rrdnan=0.0/rrdzero; /* especially here */ - rrdinf=1.0/rrdzero; /* and here. I want to know if it can do the magic */ - /* at run time without sig fpe */ - rrdc = rrdinf + rrdnan; - rrdc = rrdinf / rrdnan; - if (! isnan(rrdnan)) {printf ("not isnan(NaN) ... "); return 1;} - if (rrdnan == rrdnan) {printf ("nan == nan ... "); return 1;} - if (! isinf(rrdinf)) {printf ("not isinf(oo) ... "); return 1;} - if (! isinf(-rrdinf)) {printf ("not isinf(-oo) ... "); return 1;} - if (! rrdinf > 0) {printf ("not inf > 0 ... "); return 1;} - if (! -rrdinf < 0) {printf ("not -inf < 0 ... "); return 1;} - return 0; - }]])],[rd_cv_ieee_$2=yes],[rd_cv_ieee_$2=no],[:])]) -dnl these we run regardles is cached or not -if test x${rd_cv_ieee_$2} = "xyes"; then - AC_MSG_RESULT(yes) - $5 -else - AC_MSG_RESULT(no) - $6 -fi - -]) - -AC_DEFUN([AC_FULL_IEEE],[ -AC_LANG_PUSH(C) -_cflags=${CFLAGS} -AC_IEEE([out of the box], works, , , , - [CFLAGS="$_cflags -ieee" - AC_IEEE([with the -ieee switch], switch, , , , - [CFLAGS="$_cflags -qfloat=nofold" - AC_IEEE([with the -qfloat=nofold switch], nofold, , , , - [CFLAGS="$_cflags -w -qflttrap=enable:zerodivide" - AC_IEEE([with the -w -qflttrap=enable:zerodivide], flttrap, , , , - [CFLAGS="$_cflags -mieee" - AC_IEEE([with the -mieee switch], mswitch, , , , - [CFLAGS="$_cflags -q float=rndsngl" - AC_IEEE([with the -q float=rndsngl switch], qswitch, , , , - [CFLAGS="$_cflags -OPT:IEEE_NaN_inf=ON" - AC_IEEE([with the -OPT:IEEE_NaN_inf=ON switch], ieeenaninfswitch, , , , - [CFLAGS="$_cflags -OPT:IEEE_comparisons=ON" - AC_IEEE([with the -OPT:IEEE_comparisons=ON switch], ieeecmpswitch, , , , - [CFLAGS=$_cflags - AC_IEEE([with fpsetmask(0)], mask, - [#include ], [fpsetmask(0)], - [AC_DEFINE(MUST_DISABLE_FPMASK) - PERLFLAGS="CCFLAGS=-DMUST_DISABLE_FPMASK"], - [AC_IEEE([with signal(SIGFPE,SIG_IGN)], sigfpe, - [#include ], [signal(SIGFPE,SIG_IGN)], - [AC_DEFINE(MUST_DISABLE_SIGFPE) - PERLFLAGS="CCFLAGS=-DMUST_DISABLE_SIGFPE"], - AC_MSG_ERROR([ -Your Compiler does not do propper IEEE math ... Please find out how to -make IEEE math work with your compiler and let me know (tobi@oetiker.ch). -Check config.log to see what went wrong ... -]))])])])])])])])])]) - -AC_LANG_POP(C) - -]) - - -dnl a macro to check for ability to create python extensions -dnl AM_CHECK_PYTHON_HEADERS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE]) -dnl function also defines PYTHON_INCLUDES -AC_DEFUN([AM_CHECK_PYTHON_HEADERS], -[AC_REQUIRE([AM_PATH_PYTHON]) -AC_MSG_CHECKING(for headers required to compile python extensions) -dnl deduce PYTHON_INCLUDES -py_prefix=`$PYTHON -c "import sys; print sys.prefix"` -py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"` -PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}" -if test "$py_prefix" != "$py_exec_prefix"; then - PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}" -fi -AC_SUBST(PYTHON_INCLUDES) -dnl check if the headers exist: -save_CPPFLAGS="$CPPFLAGS" -CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES" -AC_TRY_CPP([#include ],dnl -[AC_MSG_RESULT(found) -$1],dnl -[AC_MSG_RESULT(not found) -$2]) -CPPFLAGS="$save_CPPFLAGS" -]) - -dnl a macro to add some color to the build process. -dnl CONFIGURE_PART(MESSAGE) - -AC_DEFUN([CONFIGURE_PART],[ -case $TERM in - # for the most important terminal types we directly know the sequences - xterm|xterm*|vt220|vt220*) - T_MD=`awk 'BEGIN { printf("%c%c%c%c", 27, 91, 49, 109); }' /dev/null` - T_ME=`awk 'BEGIN { printf("%c%c%c", 27, 91, 109); }' /dev/null` - ;; - vt100|vt100*|cygwin) - T_MD=`awk 'BEGIN { printf("%c%c%c%c%c%c", 27, 91, 49, 109, 0, 0); }' /dev/null` - T_ME=`awk 'BEGIN { printf("%c%c%c%c%c", 27, 91, 109, 0, 0); }' /dev/null` - ;; - *) - T_MD='' - T_ME='' - ;; -esac - AC_MSG_RESULT() - AC_MSG_RESULT([${T_MD}$1${T_ME}]) -]) - -dnl check - -AC_DEFUN([CHECK_FOR_WORKING_MS_ASYNC], [ -AC_MSG_CHECKING([if msync with MS_ASYNC updates the files mtime]) -AC_CACHE_VAL([rd_cv_ms_async], -[AC_RUN_IFELSE([AC_LANG_SOURCE([[ -#include -#include -#include -#include -#include -#include -#include -#include -int main(void){ - int fd; - struct stat stbuf; - char *addr; - int res; - char temp[] = "mmaptestXXXXXX"; - struct utimbuf newtime; - - time_t create_ts; - fd = mkstemp(temp); - if (fd == -1){ - perror(temp); - return 1; - } - write(fd,"12345\n", 6); - stat(temp, &stbuf); - create_ts = stbuf.st_mtime; - newtime.actime = 0; - newtime.modtime = 0; - utime(temp,&newtime); - addr = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); - if (addr == MAP_FAILED) { - perror("mmap"); - goto bad_exit; - } - addr[0]='x'; - res = msync(addr, 4, MS_ASYNC); - if (res == -1) { - perror("msync"); - goto bad_exit; - } - res = close(fd); - if (res == -1) { - perror("close"); - goto bad_exit; - } - /* The ASYNC means that we schedule the msync and return immediately. - Since we want to see if the modification time is updated upon - msync(), we have to make sure that our asynchronous request - completes before we stat below. In a real application, the - request would be completed at a random time in the future - but for this test we do not want to wait an arbitrary amount of - time, so force a commit now. */ - sync(); - stat(temp, &stbuf); - if (create_ts > stbuf.st_mtime){ - goto bad_exit; - } - unlink(temp); - return 0; - bad_exit: - unlink(temp); - return 1; -} -]])],[rd_cv_ms_async=ok],[rd_cv_ms_async=broken],[:])]) - - -if test "${rd_cv_ms_async}" = "ok"; then - AC_MSG_RESULT(yes) -else - AC_DEFINE_UNQUOTED(HAVE_BROKEN_MS_ASYNC, 1 , [set to 1 if msync with MS_ASYNC fails to update mtime]) - AC_MSG_RESULT(no) - AC_MSG_WARN([With mmap access, your platform fails to update the files]) - AC_MSG_WARN([mtime. RRDtool will work around this problem by calling utime on each]) - AC_MSG_WARN([file it opens for rw access.]) - sleep 2 -fi - -]) - diff --git a/autogen.sh b/autogen.sh new file mode 100755 index 0000000..5963868 --- /dev/null +++ b/autogen.sh @@ -0,0 +1,4 @@ +#!/bin/sh +PATH="/usr/pack/automake-1.11-to/amd64-linux-ubuntu8.04/bin:$PATH" +export PATH +autoreconf --force --install --verbose -I config -I m4 diff --git a/bindings/Makefile.am b/bindings/Makefile.am index 4b5d6d4..70beba1 100644 --- a/bindings/Makefile.am +++ b/bindings/Makefile.am @@ -20,10 +20,10 @@ EXTRA_DIST = perl-piped/MANIFEST perl-piped/README perl-piped/Makefile.PL perl-p all-local: @COMP_PERL@ @COMP_RUBY@ @COMP_PYTHON@ install-data-local: - test -f perl-piped/Makefile && cd perl-piped && $(MAKE) install || true - test -f perl-shared/Makefile && cd perl-shared && $(MAKE) install || true - test -f ruby/Makefile && cd ruby && $(MAKE) EPREFIX=$(DESTDIR)$(exec_prefix) $(RUBY_MAKE_OPTIONS) install || true - test -d python/build && cd python && env BUILDLIBDIR=../../src/.libs $(PYTHON) setup.py install --skip-build --prefix=$(DESTDIR)$(prefix) --exec-prefix=$(DESTDIR)$(exec_prefix) || true + $(AM_V_GEN)test -f perl-piped/Makefile && cd perl-piped && $(MAKE) install || true + $(AM_V_GEN)test -f perl-shared/Makefile && cd perl-shared && $(MAKE) install || true + $(AM_V_GEN)test -f ruby/Makefile && cd ruby && $(MAKE) EPREFIX=$(DESTDIR)$(exec_prefix) $(RUBY_MAKE_OPTIONS) install || true + $(AM_V_GEN)test -d python/build && cd python && env BUILDLIBDIR=../../src/.libs $(PYTHON) setup.py install --skip-build --prefix=$(DESTDIR)$(prefix) --exec-prefix=$(DESTDIR)$(exec_prefix) || true # rules for building the ruby module # RUBYARCHDIR= is to work around in a makefile quirk not sure diff --git a/configure.ac b/configure.ac index 8647eb0..7d3dde7 100644 --- a/configure.ac +++ b/configure.ac @@ -9,14 +9,14 @@ dnl tell automake the this script is for rrdtool dnl the official version number is dnl a.b.c -AC_INIT([rrdtool],[1.3.2]) +AC_INIT([rrdtool],[1.3.999]) dnl for testing a numberical version number comes handy dnl the released version are dnl a.bccc dnl the devel versions will be something like dnl a.b999yymmddhh -NUMVERS=1.3002 +NUMVERS=1.3999 AC_SUBST(NUMVERS) dnl for the linker to understand which versions the library are compatible with @@ -27,14 +27,16 @@ dnl - if any functionality was removed do c++,r=0,a=0. dnl dnl see http://sourceware.org/autobook/autobook/autobook_91.html dnl -LIBVERS=4:1:0 +LIBVERS=5:0:1 AC_SUBST(LIBVERS) AC_CANONICAL_TARGET -AM_INIT_AUTOMAKE +AC_USE_SYSTEM_EXTENSIONS +AM_INIT_AUTOMAKE([silent-rules]) AM_MAINTAINER_MODE - +AM_SILENT_RULES([yes]) AC_CONFIG_HEADERS([rrd_config.h]) +AC_CONFIG_MACRO_DIR([m4]) dnl all our local stuff like install scripts and include files dnl is in there @@ -139,7 +141,7 @@ dnl Try to detect/use GNU features CFLAGS="$CFLAGS -D_GNU_SOURCE" dnl check for -Werror separatly -dnl (quite a few autotool checks don't work with -Werror; also, the +dnl (quite a few autotool checks do not work with -Werror; also, the dnl check for -Werror fails after checking and adding the other flags) AC_CACHE_CHECK([if gcc likes the -Werror flag], rd_cv_gcc_flag__Werror, [AC_COMPILE_IFELSE( @@ -262,44 +264,8 @@ AC_CHECK_FUNCS(posix_fadvise) CONFIGURE_PART(Libintl Processing) -dnl gettext -GETTEXT_PACKAGE=rrdtool -AC_SUBST(GETTEXT_PACKAGE) -AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[Gettext package]) - -AM_GLIB_GNU_GETTEXT() - -AC_ARG_ENABLE(libintl,AS_HELP_STRING([--disable-libintl],[i18n support (libintl)]), -[],[enable_libintl=yes]) - -if test x$enable_libintl = xyes; then - IT_PROG_INTLTOOL([0.35.0],[no-xml]) -fi - -if test x$enable_libintl = xyes -a x$MSGFMT = xno; then - AC_MSG_WARN(I could not find msgfmt. Diabeling libintl build.) - enable_libintl=no -fi - -if test x$enable_libintl = xyes; then - AC_CHECK_HEADERS(libintl.h,[],[AC_MSG_RESULT(disabeling libintl build); enable_libintl=no]) -fi - -if test x$enable_libintl = xyes ; then - dnl it seems bsd synstems need to link against libintl - dnl when compiling rrdupdate. lets check - AC_CHECK_LIB(intl, libintl_gettext,[LIB_LIBINTL="-lintl"]) -fi - -dnl use for linking rrdupdate -AC_SUBST(LIB_LIBINTL) - -dnl do not touch the po stuff if we are not going to build intl -AM_CONDITIONAL(BUILD_LIBINTL,[test x$enable_libintl = xyes]) - -if test x$enable_libintl = xyes; then - AC_DEFINE([BUILD_LIBINTL], [], [Use this in code sections to mark them for libintl build]) -fi +AM_GNU_GETTEXT_VERSION([0.17]) +AM_GNU_GETTEXT() CONFIGURE_PART(IEEE Math Checks) @@ -585,7 +551,7 @@ AC_MSG_RESULT(${COMP_PERL:-No Perl Modules will be built}) # Options to pass when configuring perl module langpref=$prefix -test "$langpref" = "$(DESTDIR)NONE" && langpref='$(DESTDIR)'$ac_default_prefix +test "$langpref" = '$(DESTDIR)NONE' && langpref='$(DESTDIR)'$ac_default_prefix test "$langpref" = "NONE" && langpref=$ac_default_prefix PERL_MAKE_OPTIONS="PREFIX=$langpref LIB=$langpref/lib/perl/$PERL_VERSION" @@ -892,7 +858,8 @@ AC_CONFIG_FILES([examples/perftest.pl]) AC_CONFIG_FILES([examples/Makefile]) AC_CONFIG_FILES([examples/rrdcached/Makefile]) AC_CONFIG_FILES([doc/Makefile]) -AC_CONFIG_FILES([po/Makefile.in]) +AC_CONFIG_FILES([po/Makefile.in]) +AC_CONFIG_FILES([intl/Makefile]) AC_CONFIG_FILES([src/Makefile]) AC_CONFIG_FILES([src/librrd.sym.in]) AC_CONFIG_FILES([src/librrd.pc]) @@ -946,7 +913,7 @@ echo " Build Tcl Bindings: $enable_tcl" echo " Build Python Bindings: $enable_python" echo " Build rrdcgi: $enable_rrdcgi" echo " Build librrd MT: $enable_pthread" -echo " Link with libintl: $enable_libintl" +echo " Use gettext: $USE_NLS" echo " With libDBI: $have_libdbi" echo echo " Libraries: $ALL_LIBS" diff --git a/doc/Makefile.am b/doc/Makefile.am index 40b0b38..617beb3 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -46,22 +46,22 @@ all-local: link txt man html-local perl -n -e 'if (/^=include\s+(\S+)/){open F,"$$1.inc" || die $$?;print ; close F} else {print}' $< > $@ .pod.1 .pm.1 .pl.1: - @POD2MAN@ --release=$(VERSION) --center=rrdtool $< > $@ + $(AM_V_GEN)@POD2MAN@ --release=$(VERSION) --center=rrdtool $< > $@ .1.txt: - GROFF_NO_SGR=1 @NROFF@ -man -Tlp $< > $@ + $(AM_V_GEN)GROFF_NO_SGR=1 @NROFF@ -man -Tlp $< > $@ .1.pdf: - @TROFF@ -man $< | ps2pdf - $@ + $(AM_V_GEN)@TROFF@ -man $< | ps2pdf - $@ .pm.html .pod.html .pl.html: - @POD2HTML@ --infile=$< --outfile=$@ --noindex --htmlroot=. --podpath=. --title=$* + $(AM_V_GEN)@POD2HTML@ --infile=$< --outfile=$@ --noindex --htmlroot=. --podpath=. --title=$* RRDs.pod: - $(LN_S) $(top_srcdir)/bindings/perl-shared/RRDs.pm RRDs.pod + $(AM_V_GEN)$(LN_S) $(top_srcdir)/bindings/perl-shared/RRDs.pm RRDs.pod RRDp.pod: - $(LN_S) $(top_srcdir)/bindings/perl-piped/RRDp.pm RRDp.pod + $(AM_V_GEN)$(LN_S) $(top_srcdir)/bindings/perl-piped/RRDp.pm RRDp.pod link: RRDp.pod RRDs.pod @@ -76,4 +76,4 @@ pdf-local: $(PDF) pod: $(POD) install-data-hook: - cd $(DESTDIR)$(ihtmldir) && rm -f index.html && $(LN_S) rrdtool.html index.html + $(AM_V_GEN)cd $(DESTDIR)$(ihtmldir) && rm -f index.html && $(LN_S) rrdtool.html index.html diff --git a/m4/acinclude.m4 b/m4/acinclude.m4 new file mode 100644 index 0000000..5ea34f0 --- /dev/null +++ b/m4/acinclude.m4 @@ -0,0 +1,592 @@ +dnl Helper Functions for the RRDtool configure.ac script +dnl +dnl this file gets included into aclocal.m4 when runnning aclocal +dnl +dnl +dnl +dnl Check for the presence of a particular library and its header files +dnl if this check fails set the environment variable EX_CHECK_ALL_ERR to YES +dnl and prints out a helful message +dnl +dnl +dnl EX_CHECK_ALL(library, function, header, pkgconf name, tested-version, homepage, cppflags) +dnl $1 $2 $3 $4 $5 $6 $7 +dnl +dnl +AC_DEFUN([EX_CHECK_ALL], +[ + AC_LANG_PUSH(C) + EX_CHECK_STATE=NO + ex_check_save_LIBS=${LIBS} + ex_check_save_CPPFLAGS=${CPPFLAGS} + ex_check_save_LDFLAGS=${LDFLAGS} + if test "x$7" != "x"; then + CPPFLAGS="$CPPFLAGS -I$7" + fi + dnl try compiling naked first + AC_CHECK_LIB($1,$2, [ + AC_CHECK_HEADER($3,[LIBS="-l$1 ${LIBS}";EX_CHECK_STATE=YES],[])],[]) + if test $EX_CHECK_STATE = NO; then + dnl now asking pkg-config for help + AC_CHECK_PROGS(PKGCONFIG,[pkg-config],no) + if test "$PKGCONFIG" != "no"; then + if $PKGCONFIG --exists $4; then + CPPFLAGS=${CPPFLAGS}" "`$PKGCONFIG --cflags $4` + LDFLAGS=${LDFLAGS}" "`$PKGCONFIG --libs-only-L $4` + LDFLAGS=${LDFLAGS}" "`$PKGCONFIG --libs-only-other $4` + LIBS=${LIBS}" "`$PKGCONFIG --libs-only-l $4` + dnl remove the cached value and test again + unset ac_cv_lib_`echo $1 | sed ['s/[^_a-zA-Z0-9]/_/g;s/^[0-9]/_/']`_$2 + AC_CHECK_LIB($1,$2,[ + unset ac_cv_header_`echo $3 | sed ['s/[^_a-zA-Z0-9]/_/g;s/^[0-9]/_/']` + AC_CHECK_HEADER($3,[EX_CHECK_STATE=YES],[]) + ],[]) + else + AC_MSG_WARN([ +---------------------------------------------------------------------------- +* I found a copy of pkgconfig, but there is no $4.pc file around. + You may want to set the PKG_CONFIG_PATH variable to point to its + location. +---------------------------------------------------------------------------- + ]) + fi + fi + fi + + if test ${EX_CHECK_STATE} = NO; then + AC_MSG_WARN([ +---------------------------------------------------------------------------- +* I could not find a working copy of $4. Check config.log for hints on why + this is the case. Maybe you need to set LDFLAGS and CPPFLAGS appropriately + so that compiler and the linker can find lib$1 and its header files. If + you have not installed $4, you can get it either from its original home on + + $6 + + You can find also find an archive copy on + + http://oss.oetiker.ch/rrdtool/pub/libs + + The last tested version of $4 is $5. + + LIBS=$LIBS + LDFLAGS=$LDFLAGS + CPPFLAGS=$CPPFLAGS + +---------------------------------------------------------------------------- + ]) + EX_CHECK_ALL_ERR=YES + LIBS="${ex_check_save_LIBS}" + CPPFLAGS="${ex_check_save_CPPFLAGS}" + LDFLAGS="${ex_check_save_LDFLAGS}" + fi + AC_LANG_POP(C) +] +) + +dnl +dnl Ptherad check from http://autoconf-archive.cryp.to/acx_pthread.m4 +dnl +dnl @synopsis ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) +dnl +dnl This macro figures out how to build C programs using POSIX threads. +dnl It sets the PTHREAD_LIBS output variable to the threads library and +dnl linker flags, and the PTHREAD_CFLAGS output variable to any special +dnl C compiler flags that are needed. (The user can also force certain +dnl compiler flags/libs to be tested by setting these environment +dnl variables.) +dnl +dnl Also sets PTHREAD_CC to any special C compiler that is needed for +dnl multi-threaded programs (defaults to the value of CC otherwise). +dnl (This is necessary on AIX to use the special cc_r compiler alias.) +dnl +dnl NOTE: You are assumed to not only compile your program with these +dnl flags, but also link it with them as well. e.g. you should link +dnl with $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS +dnl $LIBS +dnl +dnl If you are only building threads programs, you may wish to use +dnl these variables in your default LIBS, CFLAGS, and CC: +dnl +dnl LIBS="$PTHREAD_LIBS $LIBS" +dnl CFLAGS="$CFLAGS $PTHREAD_CFLAGS" +dnl CC="$PTHREAD_CC" +dnl +dnl In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute +dnl constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to +dnl that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX). +dnl +dnl ACTION-IF-FOUND is a list of shell commands to run if a threads +dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands to +dnl run it if it is not found. If ACTION-IF-FOUND is not specified, the +dnl default action will define HAVE_PTHREAD. +dnl +dnl Please let the authors know if this macro fails on any platform, or +dnl if you have any other suggestions or comments. This macro was based +dnl on work by SGJ on autoconf scripts for FFTW (www.fftw.org) (with +dnl help from M. Frigo), as well as ac_pthread and hb_pthread macros +dnl posted by Alejandro Forero Cuervo to the autoconf macro repository. +dnl We are also grateful for the helpful feedback of numerous users. +dnl +dnl @category InstalledPackages +dnl @author Steven G. Johnson +dnl @version 2005-01-14 +dnl @license GPLWithACException + +AC_DEFUN([ACX_PTHREAD], [ +AC_REQUIRE([AC_CANONICAL_HOST]) +AC_LANG_PUSH(C) +acx_pthread_ok=no + +# We used to check for pthread.h first, but this fails if pthread.h +# requires special compiler flags (e.g. on True64 or Sequent). +# It gets checked for in the link test anyway. + +# First of all, check if the user has set any of the PTHREAD_LIBS, +# etcetera environment variables, and if threads linking works using +# them: +if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) + AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes) + AC_MSG_RESULT($acx_pthread_ok) + if test x"$acx_pthread_ok" = xno; then + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" + fi + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" +fi + +# We must check for the threads library under a number of different +# names; the ordering is very important because some systems +# (e.g. DEC) have both -lpthread and -lpthreads, where one of the +# libraries is broken (non-POSIX). + +# Create a list of thread flags to try. Items starting with a "-" are +# C compiler flags, and other items are library names, except for "none" +# which indicates that we try without any flags at all, and "pthread-config" +# which is a program returning the flags for the Pth emulation library. + +acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" + +# The ordering *is* (sometimes) important. Some notes on the +# individual items follow: + +# pthreads: AIX (must check this before -lpthread) +# none: in case threads are in libc; should be tried before -Kthread and +# other compiler flags to prevent continual compiler warnings +# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) +# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) +# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) +# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) +# -pthreads: Solaris/gcc +# -mthreads: Mingw32/gcc, Lynx/gcc +# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it +# doesn't hurt to check since this sometimes defines pthreads too; +# also defines -D_REENTRANT) +# pthread: Linux, etcetera +# --thread-safe: KAI C++ +# pthread-config: use pthread-config program (for GNU Pth library) + +case "${host_cpu}-${host_os}" in + *solaris*) + + # On Solaris (at least, for some versions), libc contains stubbed + # (non-functional) versions of the pthreads routines, so link-based + # tests will erroneously succeed. (We need to link with -pthread or + # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather + # a function called by this macro, so we could check for that, but + # who knows whether they'll stub that too in a future libc.) So, + # we'll just look for -pthreads and -lpthread first: + + acx_pthread_flags="-pthread -pthreads pthread -mt $acx_pthread_flags" + ;; +esac + +if test x"$acx_pthread_ok" = xno; then +for flag in $acx_pthread_flags; do + + case $flag in + none) + AC_MSG_CHECKING([whether pthreads work without any flags]) + ;; + + -*) + AC_MSG_CHECKING([whether pthreads work with $flag]) + PTHREAD_CFLAGS="$flag" + ;; + + pthread-config) + AC_CHECK_PROG(acx_pthread_config, pthread-config, yes, no) + if test x"$acx_pthread_config" = xno; then continue; fi + PTHREAD_CFLAGS="`pthread-config --cflags`" + PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" + ;; + + *) + AC_MSG_CHECKING([for the pthreads library -l$flag]) + PTHREAD_LIBS="-l$flag" + ;; + esac + + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Check for various functions. We must include pthread.h, + # since some functions may be macros. (On the Sequent, we + # need a special flag -Kthread to make this header compile.) + # We check for pthread_join because it is in -lpthread on IRIX + # while pthread_create is in libc. We check for pthread_attr_init + # due to DEC craziness with -lpthreads. We check for + # pthread_cleanup_push because it is one of the few pthread + # functions on Solaris that doesn't have a non-functional libc stub. + # We try pthread_create on general principles. + AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); ]])],[acx_pthread_ok=yes],[]) + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + + AC_MSG_RESULT($acx_pthread_ok) + if test "x$acx_pthread_ok" = xyes; then + break; + fi + + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" +done +fi + +# Various other checks: +if test "x$acx_pthread_ok" = xyes; then + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. + AC_MSG_CHECKING([for joinable pthread attribute]) + attr_name=unknown + for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do + AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[int attr=$attr;]])],[attr_name=$attr; break],[]) + done + AC_MSG_RESULT($attr_name) + if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then + AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name, + [Define to necessary symbol if this constant + uses a non-standard name on your system.]) + fi + + AC_MSG_CHECKING([if more special flags are required for pthreads]) + x_rflag=no + case "${host_cpu}-${host_os}" in + *-aix* | *-freebsd* | *-darwin*) x_rflag="-D_THREAD_SAFE";; + *solaris* | *-osf* | *-hpux*) x_rflag="-D_REENTRANT";; + *-linux*) + if test x"$PTHREAD_CFLAGS" = "x-pthread"; then + # For Linux/gcc "-pthread" implies "-lpthread". We need, however, to make this explicit + # in PTHREAD_LIBS such that a shared library to be built properly depends on libpthread. + PTHREAD_LIBS="-lpthread $PTHREAD_LIBS" + fi;; + esac + AC_MSG_RESULT(${x_rflag}) + if test "x$x_rflag" != xno; then + PTHREAD_CFLAGS="$x_rflag $PTHREAD_CFLAGS" + fi + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + + # More AIX lossage: must compile with cc_r + AC_CHECK_PROG(PTHREAD_CC, cc_r, cc_r, ${CC}) +else + PTHREAD_CC="$CC" +fi + +AC_SUBST(PTHREAD_LIBS) +AC_SUBST(PTHREAD_CFLAGS) +AC_SUBST(PTHREAD_CC) + +# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: +if test x"$acx_pthread_ok" = xyes; then + ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1]) + : +else + acx_pthread_ok=no + $2 +fi +AC_LANG_POP(C) +])dnl ACX_PTHREAD + + +dnl +dnl determine how to get IEEE math working +dnl AC_IEEE(MESSAGE, set rd_cv_ieee_[var] variable, INCLUDES, +dnl FUNCTION-BODY, [ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]]) +dnl + +dnl substitute them in all the files listed in AC_OUTPUT +AC_SUBST(PERLFLAGS) + +AC_DEFUN([AC_IEEE], [ +AC_MSG_CHECKING([if IEEE math works $1]) +AC_CACHE_VAL([rd_cv_ieee_$2], +[AC_RUN_IFELSE([AC_LANG_SOURCE([[$3 + +#if HAVE_MATH_H +# include +#endif + +#if HAVE_FLOAT_H +# include +#endif + +#if HAVE_IEEEFP_H +# include +#endif + +#if HAVE_FP_CLASS_H +# include +#endif + +/* Solaris */ +#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASS)) +# define HAVE_ISINF 1 +# define isinf(a) (fpclass(a) == FP_NINF || fpclass(a) == FP_PINF) +#endif + +/* solaris 10 it defines isnan such that only forte can compile it ... bad bad */ +#if (defined(HAVE_ISNAN) && defined(isnan) && defined(HAVE_FPCLASS)) +# undef isnan +# define isnan(a) (fpclass(a) == FP_SNAN || fpclass(a) == FP_QNAN) +#endif + +/* Digital UNIX */ +#if (! defined(HAVE_ISINF) && defined(HAVE_FP_CLASS) && defined(HAVE_FP_CLASS_H)) +# define HAVE_ISINF 1 +# define isinf(a) (fp_class(a) == FP_NEG_INF || fp_class(a) == FP_POS_INF) +#endif + +/* AIX */ +#if (! defined(HAVE_ISINF) && defined(HAVE_CLASS)) +# define HAVE_ISINF 1 +# define isinf(a) (class(a) == FP_MINUS_INF || class(a) == FP_PLUS_INF) +#endif + +#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_PLUS_INF) && defined(FP_MINUS_INF)) +# define HAVE_ISINF 1 +# define isinf(a) (fpclassify(a) == FP_MINUS_INF || fpclassify(a) == FP_PLUS_INF) +#endif + +#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_INFINITE)) +# define HAVE_ISINF 1 +# define isinf(a) (fpclassify(a) == FP_INFINITE) +#endif + +#include +int main(void){ + double rrdnan,rrdinf,rrdc,rrdzero; + $4; + /* some math to see if we get a floating point exception */ + rrdzero=sin(0.0); /* don't let the compiler optimize us away */ + rrdnan=0.0/rrdzero; /* especially here */ + rrdinf=1.0/rrdzero; /* and here. I want to know if it can do the magic */ + /* at run time without sig fpe */ + rrdc = rrdinf + rrdnan; + rrdc = rrdinf / rrdnan; + if (! isnan(rrdnan)) {printf ("not isnan(NaN) ... "); return 1;} + if (rrdnan == rrdnan) {printf ("nan == nan ... "); return 1;} + if (! isinf(rrdinf)) {printf ("not isinf(oo) ... "); return 1;} + if (! isinf(-rrdinf)) {printf ("not isinf(-oo) ... "); return 1;} + if (! rrdinf > 0) {printf ("not inf > 0 ... "); return 1;} + if (! -rrdinf < 0) {printf ("not -inf < 0 ... "); return 1;} + return 0; + }]])],[rd_cv_ieee_$2=yes],[rd_cv_ieee_$2=no],[:])]) +dnl these we run regardles is cached or not +if test x${rd_cv_ieee_$2} = "xyes"; then + AC_MSG_RESULT(yes) + $5 +else + AC_MSG_RESULT(no) + $6 +fi + +]) + +AC_DEFUN([AC_FULL_IEEE],[ +AC_LANG_PUSH(C) +_cflags=${CFLAGS} +AC_IEEE([out of the box], works, , , , + [CFLAGS="$_cflags -ieee" + AC_IEEE([with the -ieee switch], switch, , , , + [CFLAGS="$_cflags -qfloat=nofold" + AC_IEEE([with the -qfloat=nofold switch], nofold, , , , + [CFLAGS="$_cflags -w -qflttrap=enable:zerodivide" + AC_IEEE([with the -w -qflttrap=enable:zerodivide], flttrap, , , , + [CFLAGS="$_cflags -mieee" + AC_IEEE([with the -mieee switch], mswitch, , , , + [CFLAGS="$_cflags -q float=rndsngl" + AC_IEEE([with the -q float=rndsngl switch], qswitch, , , , + [CFLAGS="$_cflags -OPT:IEEE_NaN_inf=ON" + AC_IEEE([with the -OPT:IEEE_NaN_inf=ON switch], ieeenaninfswitch, , , , + [CFLAGS="$_cflags -OPT:IEEE_comparisons=ON" + AC_IEEE([with the -OPT:IEEE_comparisons=ON switch], ieeecmpswitch, , , , + [CFLAGS=$_cflags + AC_IEEE([with fpsetmask(0)], mask, + [#include ], [fpsetmask(0)], + [AC_DEFINE(MUST_DISABLE_FPMASK) + PERLFLAGS="CCFLAGS=-DMUST_DISABLE_FPMASK"], + [AC_IEEE([with signal(SIGFPE,SIG_IGN)], sigfpe, + [#include ], [signal(SIGFPE,SIG_IGN)], + [AC_DEFINE(MUST_DISABLE_SIGFPE) + PERLFLAGS="CCFLAGS=-DMUST_DISABLE_SIGFPE"], + AC_MSG_ERROR([ +Your Compiler does not do propper IEEE math ... Please find out how to +make IEEE math work with your compiler and let me know (tobi@oetiker.ch). +Check config.log to see what went wrong ... +]))])])])])])])])])]) + +AC_LANG_POP(C) + +]) + + +dnl a macro to check for ability to create python extensions +dnl AM_CHECK_PYTHON_HEADERS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE]) +dnl function also defines PYTHON_INCLUDES +AC_DEFUN([AM_CHECK_PYTHON_HEADERS], +[AC_REQUIRE([AM_PATH_PYTHON]) +AC_MSG_CHECKING(for headers required to compile python extensions) +dnl deduce PYTHON_INCLUDES +py_prefix=`$PYTHON -c "import sys; print sys.prefix"` +py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"` +PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}" +if test "$py_prefix" != "$py_exec_prefix"; then + PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}" +fi +AC_SUBST(PYTHON_INCLUDES) +dnl check if the headers exist: +save_CPPFLAGS="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES" +AC_TRY_CPP([#include ],dnl +[AC_MSG_RESULT(found) +$1],dnl +[AC_MSG_RESULT(not found) +$2]) +CPPFLAGS="$save_CPPFLAGS" +]) + +dnl a macro to add some color to the build process. +dnl CONFIGURE_PART(MESSAGE) + +AC_DEFUN([CONFIGURE_PART],[ +case $TERM in + # for the most important terminal types we directly know the sequences + xterm|xterm*|vt220|vt220*) + T_MD=`awk 'BEGIN { printf("%c%c%c%c", 27, 91, 49, 109); }' /dev/null` + T_ME=`awk 'BEGIN { printf("%c%c%c", 27, 91, 109); }' /dev/null` + ;; + vt100|vt100*|cygwin) + T_MD=`awk 'BEGIN { printf("%c%c%c%c%c%c", 27, 91, 49, 109, 0, 0); }' /dev/null` + T_ME=`awk 'BEGIN { printf("%c%c%c%c%c", 27, 91, 109, 0, 0); }' /dev/null` + ;; + *) + T_MD='' + T_ME='' + ;; +esac + AC_MSG_RESULT() + AC_MSG_RESULT([${T_MD}$1${T_ME}]) +]) + +dnl check + +AC_DEFUN([CHECK_FOR_WORKING_MS_ASYNC], [ +AC_MSG_CHECKING([if msync with MS_ASYNC updates the files mtime]) +AC_CACHE_VAL([rd_cv_ms_async], +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ +#include +#include +#include +#include +#include +#include +#include +#include +int main(void){ + int fd; + struct stat stbuf; + char *addr; + int res; + char temp[] = "mmaptestXXXXXX"; + struct utimbuf newtime; + + time_t create_ts; + fd = mkstemp(temp); + if (fd == -1){ + perror(temp); + return 1; + } + write(fd,"12345\n", 6); + stat(temp, &stbuf); + create_ts = stbuf.st_mtime; + newtime.actime = 0; + newtime.modtime = 0; + utime(temp,&newtime); + addr = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); + if (addr == MAP_FAILED) { + perror("mmap"); + goto bad_exit; + } + addr[0]='x'; + res = msync(addr, 4, MS_ASYNC); + if (res == -1) { + perror("msync"); + goto bad_exit; + } + res = close(fd); + if (res == -1) { + perror("close"); + goto bad_exit; + } + /* The ASYNC means that we schedule the msync and return immediately. + Since we want to see if the modification time is updated upon + msync(), we have to make sure that our asynchronous request + completes before we stat below. In a real application, the + request would be completed at a random time in the future + but for this test we do not want to wait an arbitrary amount of + time, so force a commit now. */ + sync(); + stat(temp, &stbuf); + if (create_ts > stbuf.st_mtime){ + goto bad_exit; + } + unlink(temp); + return 0; + bad_exit: + unlink(temp); + return 1; +} +]])],[rd_cv_ms_async=ok],[rd_cv_ms_async=broken],[:])]) + + +if test "${rd_cv_ms_async}" = "ok"; then + AC_MSG_RESULT(yes) +else + AC_DEFINE_UNQUOTED(HAVE_BROKEN_MS_ASYNC, 1 , [set to 1 if msync with MS_ASYNC fails to update mtime]) + AC_MSG_RESULT(no) + AC_MSG_WARN([With mmap access, your platform fails to update the files]) + AC_MSG_WARN([mtime. RRDtool will work around this problem by calling utime on each]) + AC_MSG_WARN([file it opens for rw access.]) + sleep 2 +fi + +]) + diff --git a/po/ChangeLog b/po/ChangeLog index 8251db8..f738a7b 100644 --- a/po/ChangeLog +++ b/po/ChangeLog @@ -1 +1,12 @@ -# no change log yet +2009-05-26 gettextize + + * Makefile.in.in: New file, from gettext-0.17. + * Rules-quot: New file, from gettext-0.17. + * boldquot.sed: New file, from gettext-0.17. + * en@boldquot.header: New file, from gettext-0.17. + * en@quot.header: New file, from gettext-0.17. + * insert-header.sin: New file, from gettext-0.17. + * quot.sed: New file, from gettext-0.17. + * remove-potcdate.sin: New file, from gettext-0.17. + * POTFILES.in: New file. + diff --git a/po/Makevars b/po/Makevars new file mode 100644 index 0000000..c450650 --- /dev/null +++ b/po/Makevars @@ -0,0 +1,41 @@ +# Makefile variables for PO directory in any package using GNU gettext. + +# Usually the message domain is the same as the package name. +DOMAIN = $(PACKAGE) + +# These two variables depend on the location of this directory. +subdir = po +top_builddir = .. + +# These options get passed to xgettext. +XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ + +# This is the copyright holder that gets inserted into the header of the +# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding +# package. (Note that the msgstr strings, extracted from the package's +# sources, belong to the copyright holder of the package.) Translators are +# expected to transfer the copyright for their translations to this person +# or entity, or to disclaim their copyright. The empty string stands for +# the public domain; in this case the translators are expected to disclaim +# their copyright. +COPYRIGHT_HOLDER = Tobias Oetiker + +# This is the email address or URL to which the translators shall report +# bugs in the untranslated strings: +# - Strings which are not entire sentences, see the maintainer guidelines +# in the GNU gettext documentation, section 'Preparing Strings'. +# - Strings which use unclear terms or require additional context to be +# understood. +# - Strings which make invalid assumptions about notation of date, time or +# money. +# - Pluralisation problems. +# - Incorrect English spelling. +# - Incorrect formatting. +# It can be your email address, or a mailing list address where translators +# can write to without being subscribed, or the URL of a web page through +# which the translators can contact you. +MSGID_BUGS_ADDRESS = http://oss.oetiker.ch/rrdtool-trac/newticket + +# This is the list of locale categories, beyond LC_MESSAGES, for which the +# message catalogs shall be used. It is usually empty. +EXTRA_LOCALE_CATEGORIES = diff --git a/src/Makefile.am b/src/Makefile.am index 5cfc523..97b4f44 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -124,4 +124,4 @@ EXTRA_DIST= librrd.pc.in strftime.c strftime.h rrd_getopt.c rrd_getopt1.c rrd_g librrd.sym: librrd.sym.in - grep -v LIBC_HAS_GETOPT_LONG librrd.sym.in >$@ + $(AM_V_GEN)grep -v LIBC_HAS_GETOPT_LONG librrd.sym.in >$@ diff --git a/src/rrd_i18n.h b/src/rrd_i18n.h index 9f640ef..36d79e7 100644 --- a/src/rrd_i18n.h +++ b/src/rrd_i18n.h @@ -11,18 +11,18 @@ extern "C" { #ifndef _RRD_I18N_H #define _RRD_I18N_H -#ifndef _ -/* This is for other GNU distributions with internationalized messages. - When compiling libc, the _ macro is predefined. */ -#if defined(HAVE_LIBINTL_H) && defined(BUILD_LIBINTL) -# include -#define _(String) gettext (String) +#ifdef ENABLE_NLS +# ifdef _LIBC +# include +# else +# include "gettext.h" +# define _(String) gettext (String) +# endif #else -#define _(String) (String) -#endif -#define N_(String) (String) +# define _(String) (String) #endif +#define N_(String) String #endif