~ubuntu-branches/ubuntu/saucy/rrdtool/saucy-proposed

« back to all changes in this revision

Viewing changes to acinclude.m4

  • Committer: Bazaar Package Importer
  • Author(s): Clint Byrum
  • Date: 2010-07-22 08:07:01 UTC
  • mfrom: (1.2.8 upstream) (3.1.6 sid)
  • Revision ID: james.westby@ubuntu.com-20100722080701-k46mgdfz6euxwqsm
Tags: 1.4.3-1ubuntu1
* Merge from debian unstable, Remaining changes:
  - debian/control: Don't build against ruby1.9 as we don't want
    it in main.
* require libdbi >= 0.8.3 to prevent aborts when using dbi datasources

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
dnl Helper Functions for the RRDtool configure.ac script
2
 
dnl 
3
 
dnl this file gets included into aclocal.m4 when runnning aclocal
4
 
dnl
5
 
dnl
6
 
dnl
7
 
dnl Check for the presence of a particular library and its header files
8
 
dnl if this check fails set the environment variable EX_CHECK_ALL_ERR to YES
9
 
dnl and prints out a helful message
10
 
dnl
11
 
dnl
12
 
dnl EX_CHECK_ALL(library, function, header, pkgconf name, tested-version, homepage, cppflags)
13
 
dnl              $1       $2        $3      $4            $5              $6        $7
14
 
dnl
15
 
dnl
16
 
AC_DEFUN([EX_CHECK_ALL],
17
 
[
18
 
 AC_LANG_PUSH(C)
19
 
 EX_CHECK_STATE=NO
20
 
 ex_check_save_LIBS=${LIBS}
21
 
 ex_check_save_CPPFLAGS=${CPPFLAGS}
22
 
 ex_check_save_LDFLAGS=${LDFLAGS}
23
 
 if test "x$7" != "x"; then
24
 
   CPPFLAGS="$CPPFLAGS -I$7"
25
 
 fi
26
 
 dnl try compiling naked first
27
 
 AC_CHECK_LIB($1,$2, [
28
 
    AC_CHECK_HEADER($3,[LIBS="-l$1 ${LIBS}";EX_CHECK_STATE=YES],[])],[])
29
 
 if test $EX_CHECK_STATE = NO; then
30
 
    dnl now asking pkg-config for help
31
 
    AC_CHECK_PROGS(PKGCONFIG,[pkg-config],no)
32
 
    if test "$PKGCONFIG" != "no"; then
33
 
          if $PKGCONFIG --exists $4; then
34
 
             CPPFLAGS=${CPPFLAGS}" "`$PKGCONFIG --cflags $4`
35
 
             LDFLAGS=${LDFLAGS}" "`$PKGCONFIG --libs-only-L $4`
36
 
             LDFLAGS=${LDFLAGS}" "`$PKGCONFIG --libs-only-other $4`
37
 
             LIBS=${LIBS}" "`$PKGCONFIG --libs-only-l $4`
38
 
             dnl remove the cached value and test again
39
 
             unset ac_cv_lib_`echo $1 | sed ['s/[^_a-zA-Z0-9]/_/g;s/^[0-9]/_/']`_$2
40
 
             AC_CHECK_LIB($1,$2,[
41
 
                 unset ac_cv_header_`echo $3 | sed ['s/[^_a-zA-Z0-9]/_/g;s/^[0-9]/_/']`
42
 
                 AC_CHECK_HEADER($3,[EX_CHECK_STATE=YES],[])
43
 
             ],[])
44
 
          else
45
 
             AC_MSG_WARN([
46
 
----------------------------------------------------------------------------
47
 
* I found a copy of pkgconfig, but there is no $4.pc file around.
48
 
  You may want to set the PKG_CONFIG_PATH variable to point to its
49
 
  location.
50
 
----------------------------------------------------------------------------
51
 
                        ])
52
 
           fi
53
 
     fi
54
 
  fi  
55
 
 
56
 
  if test ${EX_CHECK_STATE} = NO; then
57
 
     AC_MSG_WARN([
58
 
----------------------------------------------------------------------------
59
 
* I could not find a working copy of $4. Check config.log for hints on why
60
 
  this is the case. Maybe you need to set LDFLAGS and CPPFLAGS appropriately
61
 
  so that compiler and the linker can find lib$1 and its header files. If
62
 
  you have not installed $4, you can get it either from its original home on
63
 
 
64
 
     $6
65
 
 
66
 
  You can find also find an archive copy on
67
 
 
68
 
     http://oss.oetiker.ch/rrdtool/pub/libs
69
 
 
70
 
  The last tested version of $4 is $5.
71
 
 
72
 
       LIBS=$LIBS
73
 
   LDFLAGS=$LDFLAGS
74
 
  CPPFLAGS=$CPPFLAGS
75
 
 
76
 
----------------------------------------------------------------------------
77
 
                ])
78
 
       EX_CHECK_ALL_ERR=YES
79
 
       LIBS="${ex_check_save_LIBS}"
80
 
       CPPFLAGS="${ex_check_save_CPPFLAGS}"
81
 
       LDFLAGS="${ex_check_save_LDFLAGS}"
82
 
    fi
83
 
    AC_LANG_POP(C)
84
 
]
85
 
)
86
 
 
87
 
dnl
88
 
dnl  Ptherad check from http://autoconf-archive.cryp.to/acx_pthread.m4
89
 
dnl
90
 
dnl @synopsis ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
91
 
dnl
92
 
dnl This macro figures out how to build C programs using POSIX threads.
93
 
dnl It sets the PTHREAD_LIBS output variable to the threads library and
94
 
dnl linker flags, and the PTHREAD_CFLAGS output variable to any special
95
 
dnl C compiler flags that are needed. (The user can also force certain
96
 
dnl compiler flags/libs to be tested by setting these environment
97
 
dnl variables.)
98
 
dnl
99
 
dnl Also sets PTHREAD_CC to any special C compiler that is needed for
100
 
dnl multi-threaded programs (defaults to the value of CC otherwise).
101
 
dnl (This is necessary on AIX to use the special cc_r compiler alias.)
102
 
dnl
103
 
dnl NOTE: You are assumed to not only compile your program with these
104
 
dnl flags, but also link it with them as well. e.g. you should link
105
 
dnl with $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS
106
 
dnl $LIBS
107
 
dnl
108
 
dnl If you are only building threads programs, you may wish to use
109
 
dnl these variables in your default LIBS, CFLAGS, and CC:
110
 
dnl
111
 
dnl        LIBS="$PTHREAD_LIBS $LIBS"
112
 
dnl        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
113
 
dnl        CC="$PTHREAD_CC"
114
 
dnl
115
 
dnl In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute
116
 
dnl constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to
117
 
dnl that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
118
 
dnl
119
 
dnl ACTION-IF-FOUND is a list of shell commands to run if a threads
120
 
dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands to
121
 
dnl run it if it is not found. If ACTION-IF-FOUND is not specified, the
122
 
dnl default action will define HAVE_PTHREAD.
123
 
dnl
124
 
dnl Please let the authors know if this macro fails on any platform, or
125
 
dnl if you have any other suggestions or comments. This macro was based
126
 
dnl on work by SGJ on autoconf scripts for FFTW (www.fftw.org) (with
127
 
dnl help from M. Frigo), as well as ac_pthread and hb_pthread macros
128
 
dnl posted by Alejandro Forero Cuervo to the autoconf macro repository.
129
 
dnl We are also grateful for the helpful feedback of numerous users.
130
 
dnl
131
 
dnl @category InstalledPackages
132
 
dnl @author Steven G. Johnson <stevenj@alum.mit.edu>
133
 
dnl @version 2005-01-14
134
 
dnl @license GPLWithACException
135
 
 
136
 
AC_DEFUN([ACX_PTHREAD], [
137
 
AC_REQUIRE([AC_CANONICAL_HOST])
138
 
AC_LANG_PUSH(C)
139
 
acx_pthread_ok=no
140
 
 
141
 
# We used to check for pthread.h first, but this fails if pthread.h
142
 
# requires special compiler flags (e.g. on True64 or Sequent).
143
 
# It gets checked for in the link test anyway.
144
 
 
145
 
# First of all, check if the user has set any of the PTHREAD_LIBS,
146
 
# etcetera environment variables, and if threads linking works using
147
 
# them:
148
 
if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
149
 
        save_CFLAGS="$CFLAGS"
150
 
        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
151
 
        save_LIBS="$LIBS"
152
 
        LIBS="$PTHREAD_LIBS $LIBS"
153
 
        AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
154
 
        AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes)
155
 
        AC_MSG_RESULT($acx_pthread_ok)
156
 
        if test x"$acx_pthread_ok" = xno; then
157
 
                PTHREAD_LIBS=""
158
 
                PTHREAD_CFLAGS=""
159
 
        fi
160
 
        LIBS="$save_LIBS"
161
 
        CFLAGS="$save_CFLAGS"
162
 
fi
163
 
 
164
 
# We must check for the threads library under a number of different
165
 
# names; the ordering is very important because some systems
166
 
# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
167
 
# libraries is broken (non-POSIX).
168
 
 
169
 
# Create a list of thread flags to try.  Items starting with a "-" are
170
 
# C compiler flags, and other items are library names, except for "none"
171
 
# which indicates that we try without any flags at all, and "pthread-config"
172
 
# which is a program returning the flags for the Pth emulation library.
173
 
 
174
 
acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
175
 
 
176
 
# The ordering *is* (sometimes) important.  Some notes on the
177
 
# individual items follow:
178
 
 
179
 
# pthreads: AIX (must check this before -lpthread)
180
 
# none: in case threads are in libc; should be tried before -Kthread and
181
 
#       other compiler flags to prevent continual compiler warnings
182
 
# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
183
 
# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
184
 
# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
185
 
# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
186
 
# -pthreads: Solaris/gcc
187
 
# -mthreads: Mingw32/gcc, Lynx/gcc
188
 
# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
189
 
#      doesn't hurt to check since this sometimes defines pthreads too;
190
 
#      also defines -D_REENTRANT)
191
 
# pthread: Linux, etcetera
192
 
# --thread-safe: KAI C++
193
 
# pthread-config: use pthread-config program (for GNU Pth library)
194
 
 
195
 
case "${host_cpu}-${host_os}" in
196
 
        *solaris*)
197
 
 
198
 
        # On Solaris (at least, for some versions), libc contains stubbed
199
 
        # (non-functional) versions of the pthreads routines, so link-based
200
 
        # tests will erroneously succeed.  (We need to link with -pthread or
201
 
        # -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather
202
 
        # a function called by this macro, so we could check for that, but
203
 
        # who knows whether they'll stub that too in a future libc.)  So,
204
 
        # we'll just look for -pthreads and -lpthread first:
205
 
 
206
 
        acx_pthread_flags="-pthread -pthreads pthread -mt $acx_pthread_flags"
207
 
        ;;
208
 
esac
209
 
 
210
 
if test x"$acx_pthread_ok" = xno; then
211
 
for flag in $acx_pthread_flags; do
212
 
 
213
 
        case $flag in
214
 
                none)
215
 
                AC_MSG_CHECKING([whether pthreads work without any flags])
216
 
                ;;
217
 
 
218
 
                -*)
219
 
                AC_MSG_CHECKING([whether pthreads work with $flag])
220
 
                PTHREAD_CFLAGS="$flag"
221
 
                ;;
222
 
 
223
 
                pthread-config)
224
 
                AC_CHECK_PROG(acx_pthread_config, pthread-config, yes, no)
225
 
                if test x"$acx_pthread_config" = xno; then continue; fi
226
 
                PTHREAD_CFLAGS="`pthread-config --cflags`"
227
 
                PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
228
 
                ;;
229
 
 
230
 
                *)
231
 
                AC_MSG_CHECKING([for the pthreads library -l$flag])
232
 
                PTHREAD_LIBS="-l$flag"
233
 
                ;;
234
 
        esac
235
 
 
236
 
        save_LIBS="$LIBS"
237
 
        save_CFLAGS="$CFLAGS"
238
 
        LIBS="$PTHREAD_LIBS $LIBS"
239
 
        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
240
 
 
241
 
        # Check for various functions.  We must include pthread.h,
242
 
        # since some functions may be macros.  (On the Sequent, we
243
 
        # need a special flag -Kthread to make this header compile.)
244
 
        # We check for pthread_join because it is in -lpthread on IRIX
245
 
        # while pthread_create is in libc.  We check for pthread_attr_init
246
 
        # due to DEC craziness with -lpthreads.  We check for
247
 
        # pthread_cleanup_push because it is one of the few pthread
248
 
        # functions on Solaris that doesn't have a non-functional libc stub.
249
 
        # We try pthread_create on general principles.
250
 
        AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]], [[pthread_t th; pthread_join(th, 0);
251
 
                     pthread_attr_init(0); pthread_cleanup_push(0, 0);
252
 
                     pthread_create(0,0,0,0); pthread_cleanup_pop(0); ]])],[acx_pthread_ok=yes],[])
253
 
 
254
 
        LIBS="$save_LIBS"
255
 
        CFLAGS="$save_CFLAGS"
256
 
 
257
 
        AC_MSG_RESULT($acx_pthread_ok)
258
 
        if test "x$acx_pthread_ok" = xyes; then
259
 
                break;
260
 
        fi
261
 
 
262
 
        PTHREAD_LIBS=""
263
 
        PTHREAD_CFLAGS=""
264
 
done
265
 
fi
266
 
 
267
 
# Various other checks:
268
 
if test "x$acx_pthread_ok" = xyes; then
269
 
        save_LIBS="$LIBS"
270
 
        LIBS="$PTHREAD_LIBS $LIBS"
271
 
        save_CFLAGS="$CFLAGS"
272
 
        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
273
 
 
274
 
        # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
275
 
        AC_MSG_CHECKING([for joinable pthread attribute])
276
 
        attr_name=unknown
277
 
        for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
278
 
            AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]], [[int attr=$attr;]])],[attr_name=$attr; break],[])
279
 
        done
280
 
        AC_MSG_RESULT($attr_name)
281
 
        if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
282
 
            AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name,
283
 
                               [Define to necessary symbol if this constant
284
 
                                uses a non-standard name on your system.])
285
 
        fi
286
 
 
287
 
        AC_MSG_CHECKING([if more special flags are required for pthreads])
288
 
        x_rflag=no
289
 
        case "${host_cpu}-${host_os}" in
290
 
            *-aix* | *-freebsd* | *-darwin*) x_rflag="-D_THREAD_SAFE";;
291
 
            *solaris* | *-osf* | *-hpux*) x_rflag="-D_REENTRANT";;
292
 
            *-linux*)
293
 
            if test x"$PTHREAD_CFLAGS" = "x-pthread"; then
294
 
                # For Linux/gcc "-pthread" implies "-lpthread". We need, however, to make this explicit
295
 
                # in PTHREAD_LIBS such that a shared library to be built properly depends on libpthread.
296
 
                PTHREAD_LIBS="-lpthread $PTHREAD_LIBS"
297
 
            fi;;
298
 
        esac
299
 
        AC_MSG_RESULT(${x_rflag})
300
 
        if test "x$x_rflag" != xno; then
301
 
            PTHREAD_CFLAGS="$x_rflag $PTHREAD_CFLAGS"
302
 
        fi
303
 
 
304
 
        LIBS="$save_LIBS"
305
 
        CFLAGS="$save_CFLAGS"
306
 
 
307
 
        # More AIX lossage: must compile with cc_r
308
 
        AC_CHECK_PROG(PTHREAD_CC, cc_r, cc_r, ${CC})
309
 
else
310
 
        PTHREAD_CC="$CC"
311
 
fi
312
 
 
313
 
AC_SUBST(PTHREAD_LIBS)
314
 
AC_SUBST(PTHREAD_CFLAGS)
315
 
AC_SUBST(PTHREAD_CC)
316
 
 
317
 
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
318
 
if test x"$acx_pthread_ok" = xyes; then
319
 
        ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
320
 
        :
321
 
else
322
 
        acx_pthread_ok=no
323
 
        $2
324
 
fi
325
 
AC_LANG_POP(C)
326
 
])dnl ACX_PTHREAD
327
 
 
328
 
 
329
 
dnl
330
 
dnl determine how to get IEEE math working
331
 
dnl AC_IEEE(MESSAGE, set rd_cv_ieee_[var] variable, INCLUDES,
332
 
dnl   FUNCTION-BODY, [ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]])
333
 
dnl
334
 
 
335
 
dnl substitute them in all the files listed in AC_OUTPUT
336
 
AC_SUBST(PERLFLAGS)
337
 
 
338
 
AC_DEFUN([AC_IEEE], [
339
 
AC_MSG_CHECKING([if IEEE math works $1])
340
 
AC_CACHE_VAL([rd_cv_ieee_$2],
341
 
[AC_RUN_IFELSE([AC_LANG_SOURCE([[$3
342
 
 
343
 
#if HAVE_MATH_H
344
 
#  include <math.h>
345
 
#endif
346
 
 
347
 
#if HAVE_FLOAT_H
348
 
#  include <float.h>  
349
 
#endif
350
 
 
351
 
#if HAVE_IEEEFP_H
352
 
#  include <ieeefp.h>
353
 
#endif
354
 
 
355
 
#if HAVE_FP_CLASS_H
356
 
#  include <fp_class.h>
357
 
#endif
358
 
 
359
 
/* Solaris */
360
 
#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASS))
361
 
#  define HAVE_ISINF 1
362
 
#  define isinf(a) (fpclass(a) == FP_NINF || fpclass(a) == FP_PINF)
363
 
#endif
364
 
 
365
 
/* solaris 10 it defines isnan such that only forte can compile it ... bad bad  */
366
 
#if (defined(HAVE_ISNAN) && defined(isnan) && defined(HAVE_FPCLASS))
367
 
#  undef isnan
368
 
#  define isnan(a) (fpclass(a) == FP_SNAN || fpclass(a) == FP_QNAN)
369
 
#endif
370
 
 
371
 
/* Digital UNIX */
372
 
#if (! defined(HAVE_ISINF) && defined(HAVE_FP_CLASS) && defined(HAVE_FP_CLASS_H))
373
 
#  define HAVE_ISINF 1
374
 
#  define isinf(a) (fp_class(a) == FP_NEG_INF || fp_class(a) == FP_POS_INF)
375
 
#endif 
376
 
 
377
 
/* AIX */
378
 
#if (! defined(HAVE_ISINF) && defined(HAVE_CLASS))
379
 
#  define HAVE_ISINF 1
380
 
#  define isinf(a) (class(a) == FP_MINUS_INF || class(a) == FP_PLUS_INF)
381
 
#endif
382
 
 
383
 
#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_PLUS_INF) && defined(FP_MINUS_INF))
384
 
#  define HAVE_ISINF 1
385
 
#  define isinf(a) (fpclassify(a) == FP_MINUS_INF || fpclassify(a) == FP_PLUS_INF)
386
 
#endif
387
 
 
388
 
#if (! defined(HAVE_ISINF) && defined(HAVE_FPCLASSIFY) && defined(FP_INFINITE))
389
 
#  define HAVE_ISINF 1
390
 
#  define isinf(a) (fpclassify(a) == FP_INFINITE)
391
 
#endif
392
 
 
393
 
#include <stdio.h>
394
 
int main(void){
395
 
    double rrdnan,rrdinf,rrdc,rrdzero;
396
 
    $4;
397
 
    /* some math to see if we get a floating point exception */
398
 
    rrdzero=sin(0.0); /* don't let the compiler optimize us away */
399
 
    rrdnan=0.0/rrdzero; /* especially here */
400
 
    rrdinf=1.0/rrdzero; /* and here. I want to know if it can do the magic */
401
 
                  /* at run time without sig fpe */
402
 
    rrdc = rrdinf + rrdnan;
403
 
    rrdc = rrdinf / rrdnan;
404
 
    if (! isnan(rrdnan)) {printf ("not isnan(NaN) ... "); return 1;}
405
 
    if (rrdnan == rrdnan) {printf ("nan == nan ... "); return 1;}
406
 
    if (! isinf(rrdinf)) {printf ("not isinf(oo) ... "); return 1;}
407
 
    if (! isinf(-rrdinf)) {printf ("not isinf(-oo) ... "); return 1;}
408
 
    if (! rrdinf > 0) {printf ("not inf > 0 ... "); return 1;}
409
 
    if (! -rrdinf < 0) {printf ("not -inf < 0 ... "); return 1;}
410
 
    return 0;
411
 
 }]])],[rd_cv_ieee_$2=yes],[rd_cv_ieee_$2=no],[:])])
412
 
dnl these we run regardles is cached or not
413
 
if test x${rd_cv_ieee_$2} = "xyes"; then
414
 
 AC_MSG_RESULT(yes)
415
 
 $5
416
 
else
417
 
 AC_MSG_RESULT(no)
418
 
 $6
419
 
fi
420
 
 
421
 
])
422
 
 
423
 
AC_DEFUN([AC_FULL_IEEE],[
424
 
AC_LANG_PUSH(C)
425
 
_cflags=${CFLAGS}
426
 
AC_IEEE([out of the box], works, , , ,
427
 
  [CFLAGS="$_cflags -ieee"
428
 
  AC_IEEE([with the -ieee switch], switch, , , ,
429
 
    [CFLAGS="$_cflags -qfloat=nofold"
430
 
    AC_IEEE([with the -qfloat=nofold switch], nofold, , , ,
431
 
      [CFLAGS="$_cflags -w -qflttrap=enable:zerodivide"
432
 
      AC_IEEE([with the -w -qflttrap=enable:zerodivide], flttrap, , , ,
433
 
       [CFLAGS="$_cflags -mieee"
434
 
       AC_IEEE([with the -mieee switch], mswitch, , , ,
435
 
         [CFLAGS="$_cflags -q float=rndsngl"
436
 
         AC_IEEE([with the -q float=rndsngl switch], qswitch, , , ,
437
 
           [CFLAGS="$_cflags -OPT:IEEE_NaN_inf=ON"
438
 
           AC_IEEE([with the -OPT:IEEE_NaN_inf=ON switch], ieeenaninfswitch, , , ,
439
 
             [CFLAGS="$_cflags -OPT:IEEE_comparisons=ON"
440
 
             AC_IEEE([with the -OPT:IEEE_comparisons=ON switch], ieeecmpswitch, , , ,
441
 
               [CFLAGS=$_cflags
442
 
               AC_IEEE([with fpsetmask(0)], mask,
443
 
                 [#include <floatingpoint.h>], [fpsetmask(0)],
444
 
                 [AC_DEFINE(MUST_DISABLE_FPMASK)
445
 
                 PERLFLAGS="CCFLAGS=-DMUST_DISABLE_FPMASK"],
446
 
                 [AC_IEEE([with signal(SIGFPE,SIG_IGN)], sigfpe,
447
 
                   [#include <signal.h>], [signal(SIGFPE,SIG_IGN)],
448
 
                   [AC_DEFINE(MUST_DISABLE_SIGFPE)
449
 
                   PERLFLAGS="CCFLAGS=-DMUST_DISABLE_SIGFPE"],          
450
 
                   AC_MSG_ERROR([
451
 
Your Compiler does not do propper IEEE math ... Please find out how to
452
 
make IEEE math work with your compiler and let me know (tobi@oetiker.ch).
453
 
Check config.log to see what went wrong ...
454
 
]))])])])])])])])])])
455
 
 
456
 
AC_LANG_POP(C)
457
 
 
458
 
])
459
 
 
460
 
 
461
 
dnl a macro to check for ability to create python extensions
462
 
dnl  AM_CHECK_PYTHON_HEADERS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE])
463
 
dnl function also defines PYTHON_INCLUDES
464
 
AC_DEFUN([AM_CHECK_PYTHON_HEADERS],
465
 
[AC_REQUIRE([AM_PATH_PYTHON])
466
 
AC_MSG_CHECKING(for headers required to compile python extensions)
467
 
dnl deduce PYTHON_INCLUDES
468
 
py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
469
 
py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"`
470
 
PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
471
 
if test "$py_prefix" != "$py_exec_prefix"; then
472
 
  PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
473
 
fi
474
 
AC_SUBST(PYTHON_INCLUDES)
475
 
dnl check if the headers exist:
476
 
save_CPPFLAGS="$CPPFLAGS"
477
 
CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES"
478
 
AC_TRY_CPP([#include <Python.h>],dnl
479
 
[AC_MSG_RESULT(found)
480
 
$1],dnl
481
 
[AC_MSG_RESULT(not found)
482
 
$2])
483
 
CPPFLAGS="$save_CPPFLAGS"
484
 
])
485
 
 
486
 
dnl a macro to add some color to the build process.
487
 
dnl CONFIGURE_PART(MESSAGE)
488
 
 
489
 
AC_DEFUN([CONFIGURE_PART],[
490
 
case $TERM in
491
 
       #   for the most important terminal types we directly know the sequences
492
 
       xterm|xterm*|vt220|vt220*)
493
 
               T_MD=`awk 'BEGIN { printf("%c%c%c%c", 27, 91, 49, 109); }' </dev/null 2>/dev/null`
494
 
               T_ME=`awk 'BEGIN { printf("%c%c%c", 27, 91, 109); }' </dev/null 2>/dev/null`
495
 
       ;;
496
 
       vt100|vt100*|cygwin)
497
 
               T_MD=`awk 'BEGIN { printf("%c%c%c%c%c%c", 27, 91, 49, 109, 0, 0); }' </dev/null 2>/dev/null`
498
 
               T_ME=`awk 'BEGIN { printf("%c%c%c%c%c", 27, 91, 109, 0, 0); }' </dev/null 2>/dev/null`
499
 
       ;;
500
 
       *)
501
 
               T_MD=''
502
 
               T_ME=''
503
 
       ;;
504
 
esac
505
 
  AC_MSG_RESULT()
506
 
  AC_MSG_RESULT([${T_MD}$1${T_ME}])
507
 
])
508
 
 
509
 
dnl check 
510
 
 
511
 
AC_DEFUN([CHECK_FOR_WORKING_MS_ASYNC], [
512
 
AC_MSG_CHECKING([if msync with MS_ASYNC updates the files mtime])
513
 
AC_CACHE_VAL([rd_cv_ms_async],
514
 
[AC_RUN_IFELSE([AC_LANG_SOURCE([[
515
 
#include <fcntl.h>
516
 
#include <sys/types.h>
517
 
#include <sys/stat.h>
518
 
#include <unistd.h>
519
 
#include <stdio.h>
520
 
#include <sys/mman.h>
521
 
#include <stdlib.h>
522
 
#include <utime.h>
523
 
int main(void){
524
 
        int fd;
525
 
        struct stat stbuf;
526
 
        char *addr;
527
 
        int res;
528
 
        char temp[] = "mmaptestXXXXXX";
529
 
        struct utimbuf newtime;
530
 
 
531
 
        time_t create_ts;
532
 
        fd = mkstemp(temp);
533
 
        if (fd == -1){
534
 
            perror(temp);
535
 
            return 1;
536
 
        }
537
 
        write(fd,"12345\n", 6);        
538
 
        stat(temp, &stbuf);
539
 
        create_ts = stbuf.st_mtime;
540
 
        newtime.actime = 0;
541
 
        newtime.modtime = 0;
542
 
        utime(temp,&newtime);
543
 
        addr = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
544
 
        if (addr == MAP_FAILED) {
545
 
            perror("mmap");
546
 
            goto bad_exit;
547
 
        }
548
 
        addr[0]='x';
549
 
        res = msync(addr, 4, MS_ASYNC);
550
 
        if (res == -1) {
551
 
           perror("msync");
552
 
           goto bad_exit;
553
 
        }
554
 
        res = close(fd);        
555
 
        if (res == -1) {
556
 
           perror("close");
557
 
           goto bad_exit;
558
 
        }
559
 
        /* The ASYNC means that we schedule the msync and return immediately.
560
 
           Since we want to see if the modification time is updated upon
561
 
           msync(), we have to make sure that our asynchronous request
562
 
           completes before we stat below. In a real application, the
563
 
           request would be completed at a random time in the future
564
 
           but for this test we do not want to wait an arbitrary amount of
565
 
           time, so force a commit now.  */
566
 
        sync();
567
 
        stat(temp, &stbuf);
568
 
        if (create_ts > stbuf.st_mtime){
569
 
           goto bad_exit;
570
 
        }      
571
 
        unlink(temp);  
572
 
        return 0;
573
 
     bad_exit:
574
 
        unlink(temp);
575
 
        return 1;
576
 
}
577
 
]])],[rd_cv_ms_async=ok],[rd_cv_ms_async=broken],[:])])
578
 
 
579
 
 
580
 
if test "${rd_cv_ms_async}" = "ok"; then
581
 
 AC_MSG_RESULT(yes)
582
 
else
583
 
 AC_DEFINE_UNQUOTED(HAVE_BROKEN_MS_ASYNC, 1 , [set to 1 if msync with MS_ASYNC fails to update mtime])
584
 
 AC_MSG_RESULT(no)
585
 
 AC_MSG_WARN([With mmap access, your platform fails to update the files])
586
 
 AC_MSG_WARN([mtime. RRDtool will work around this problem by calling utime on each])
587
 
 AC_MSG_WARN([file it opens for rw access.])
588
 
 sleep 2
589
 
fi
590
 
 
591
 
])
592