annotate src/libsamplerate-0.1.8/M4/clip_mode.m4 @ 83:ae30d91d2ffe

Replace these with versions built using an older toolset (so as to avoid ABI compatibilities when linking on Ubuntu 14.04 for packaging purposes)
author Chris Cannam
date Fri, 07 Feb 2020 11:51:13 +0000
parents c7265573341e
children
rev   line source
Chris@0 1 dnl @synopsis AC_C_CLIP_MODE
Chris@0 2 dnl
Chris@0 3 dnl Determine the clipping mode when converting float to int.
Chris@0 4 dnl @version 1.0 May 17 2003
Chris@0 5 dnl @author Erik de Castro Lopo <erikd AT mega-nerd DOT com>
Chris@0 6 dnl
Chris@0 7 dnl Permission to use, copy, modify, distribute, and sell this file for any
Chris@0 8 dnl purpose is hereby granted without fee, provided that the above copyright
Chris@0 9 dnl and this permission notice appear in all copies. No representations are
Chris@0 10 dnl made about the suitability of this software for any purpose. It is
Chris@0 11 dnl provided "as is" without express or implied warranty.
Chris@0 12
Chris@0 13
Chris@0 14
Chris@0 15
Chris@0 16
Chris@0 17
Chris@0 18
Chris@0 19 dnl Find the clipping mode in the following way:
Chris@0 20 dnl 1) If we are not cross compiling test it.
Chris@0 21 dnl 2) IF we are cross compiling, assume that clipping isn't done correctly.
Chris@0 22
Chris@0 23 AC_DEFUN([AC_C_CLIP_MODE],
Chris@0 24 [AC_CACHE_CHECK(processor clipping capabilities,
Chris@0 25 ac_cv_c_clip_type,
Chris@0 26
Chris@0 27 # Initialize to unknown
Chris@0 28 ac_cv_c_clip_positive=unknown
Chris@0 29 ac_cv_c_clip_negative=unknown
Chris@0 30
Chris@0 31
Chris@0 32 if test $ac_cv_c_clip_positive = unknown ; then
Chris@0 33 AC_TRY_RUN(
Chris@0 34 [[
Chris@0 35 #define _ISOC9X_SOURCE 1
Chris@0 36 #define _ISOC99_SOURCE 1
Chris@0 37 #define __USE_ISOC99 1
Chris@0 38 #define __USE_ISOC9X 1
Chris@0 39 #include <math.h>
Chris@0 40 int main (void)
Chris@0 41 { double fval ;
Chris@0 42 int k, ival ;
Chris@0 43
Chris@0 44 fval = 1.0 * 0x7FFFFFFF ;
Chris@0 45 for (k = 0 ; k < 100 ; k++)
Chris@0 46 { ival = (lrint (fval)) >> 24 ;
Chris@0 47 if (ival != 127)
Chris@0 48 return 1 ;
Chris@0 49
Chris@0 50 fval *= 1.2499999 ;
Chris@0 51 } ;
Chris@0 52
Chris@0 53 return 0 ;
Chris@0 54 }
Chris@0 55 ]],
Chris@0 56 ac_cv_c_clip_positive=yes,
Chris@0 57 ac_cv_c_clip_positive=no,
Chris@0 58 ac_cv_c_clip_positive=unknown
Chris@0 59 )
Chris@0 60
Chris@0 61 AC_TRY_RUN(
Chris@0 62 [[
Chris@0 63 #define _ISOC9X_SOURCE 1
Chris@0 64 #define _ISOC99_SOURCE 1
Chris@0 65 #define __USE_ISOC99 1
Chris@0 66 #define __USE_ISOC9X 1
Chris@0 67 #include <math.h>
Chris@0 68 int main (void)
Chris@0 69 { double fval ;
Chris@0 70 int k, ival ;
Chris@0 71
Chris@0 72 fval = -8.0 * 0x10000000 ;
Chris@0 73 for (k = 0 ; k < 100 ; k++)
Chris@0 74 { ival = (lrint (fval)) >> 24 ;
Chris@0 75 if (ival != -128)
Chris@0 76 return 1 ;
Chris@0 77
Chris@0 78 fval *= 1.2499999 ;
Chris@0 79 } ;
Chris@0 80
Chris@0 81 return 0 ;
Chris@0 82 }
Chris@0 83 ]],
Chris@0 84 ac_cv_c_clip_negative=yes,
Chris@0 85 ac_cv_c_clip_negative=no,
Chris@0 86 ac_cv_c_clip_negative=unknown
Chris@0 87 )
Chris@0 88 fi
Chris@0 89
Chris@0 90 if test $ac_cv_c_clip_positive = yes ; then
Chris@0 91 ac_cv_c_clip_positive=1
Chris@0 92 else
Chris@0 93 ac_cv_c_clip_positive=0
Chris@0 94 fi
Chris@0 95
Chris@0 96 if test $ac_cv_c_clip_negative = yes ; then
Chris@0 97 ac_cv_c_clip_negative=1
Chris@0 98 else
Chris@0 99 ac_cv_c_clip_negative=0
Chris@0 100 fi
Chris@0 101
Chris@0 102 [[
Chris@0 103 case "$ac_cv_c_clip_positive$ac_cv_c_clip_negative" in
Chris@0 104 "00")
Chris@0 105 ac_cv_c_clip_type="none"
Chris@0 106 ;;
Chris@0 107 "10")
Chris@0 108 ac_cv_c_clip_type="positive"
Chris@0 109 ;;
Chris@0 110 "01")
Chris@0 111 ac_cv_c_clip_type="negative"
Chris@0 112 ;;
Chris@0 113 "11")
Chris@0 114 ac_cv_c_clip_type="both"
Chris@0 115 ;;
Chris@0 116 esac
Chris@0 117 ]]
Chris@0 118
Chris@0 119 )
Chris@0 120 ]
Chris@0 121
Chris@0 122 )# AC_C_CLIP_MODE
Chris@0 123
Chris@0 124