libsndfile source files.
[Faustine.git] / interpretor / libsndfile-1.0.25 / M4 / clip_mode.m4
diff --git a/interpretor/libsndfile-1.0.25/M4/clip_mode.m4 b/interpretor/libsndfile-1.0.25/M4/clip_mode.m4
new file mode 100644 (file)
index 0000000..4556b93
--- /dev/null
@@ -0,0 +1,124 @@
+dnl @synopsis MN_C_CLIP_MODE
+dnl
+dnl Determine the clipping mode when converting float to int.
+dnl @version 1.0       May 17 2003
+dnl @author Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+dnl
+dnl Permission to use, copy, modify, distribute, and sell this file for any 
+dnl purpose is hereby granted without fee, provided that the above copyright 
+dnl and this permission notice appear in all copies.  No representations are
+dnl made about the suitability of this software for any purpose.  It is 
+dnl provided "as is" without express or implied warranty.
+
+
+
+
+
+
+
+dnl Find the clipping mode in the following way:
+dnl    1) If we are not cross compiling test it.
+dnl    2) IF we are cross compiling, assume that clipping isn't done correctly.
+
+AC_DEFUN([MN_C_CLIP_MODE],
+[AC_CACHE_CHECK(processor clipping capabilities, 
+       ac_cv_c_clip_type,
+
+# Initialize to unknown
+ac_cv_c_clip_positive=unknown
+ac_cv_c_clip_negative=unknown
+
+
+if test $ac_cv_c_clip_positive = unknown ; then
+       AC_TRY_RUN(
+       [[
+       #define _ISOC9X_SOURCE  1
+       #define _ISOC99_SOURCE  1
+       #define __USE_ISOC99    1
+       #define __USE_ISOC9X    1
+       #include <math.h>
+       int main (void)
+       {       double  fval ;
+               int k, ival ;
+
+               fval = 1.0 * 0x7FFFFFFF ;
+               for (k = 0 ; k < 100 ; k++)
+               {       ival = (lrint (fval)) >> 24 ;
+                       if (ival != 127)
+                               return 1 ;
+               
+                       fval *= 1.2499999 ;
+                       } ;
+               
+                       return 0 ;
+               }
+               ]],
+               ac_cv_c_clip_positive=yes,
+               ac_cv_c_clip_positive=no,
+               ac_cv_c_clip_positive=unknown
+               )
+
+       AC_TRY_RUN(
+       [[
+       #define _ISOC9X_SOURCE  1
+       #define _ISOC99_SOURCE  1
+       #define __USE_ISOC99    1
+       #define __USE_ISOC9X    1
+       #include <math.h>
+       int main (void)
+       {       double  fval ;
+               int k, ival ;
+
+               fval = -8.0 * 0x10000000 ;
+               for (k = 0 ; k < 100 ; k++)
+               {       ival = (lrint (fval)) >> 24 ;
+                       if (ival != -128)
+                               return 1 ;
+               
+                       fval *= 1.2499999 ;
+                       } ;
+               
+                       return 0 ;
+               }
+               ]],
+               ac_cv_c_clip_negative=yes,
+               ac_cv_c_clip_negative=no,
+               ac_cv_c_clip_negative=unknown
+               )
+       fi
+
+if test $ac_cv_c_clip_positive = yes ; then
+       ac_cv_c_clip_positive=1
+else
+       ac_cv_c_clip_positive=0
+       fi
+
+if test $ac_cv_c_clip_negative = yes ; then
+       ac_cv_c_clip_negative=1
+else
+       ac_cv_c_clip_negative=0
+       fi
+
+[[
+case "$ac_cv_c_clip_positive$ac_cv_c_clip_negative" in
+       "00")
+               ac_cv_c_clip_type="none"
+               ;;
+       "10")
+               ac_cv_c_clip_type="positive"
+               ;;
+       "01")
+               ac_cv_c_clip_type="negative"
+               ;;
+       "11")
+               ac_cv_c_clip_type="both"
+               ;;
+       esac
+       ]]
+
+)
+]
+
+)# MN_C_CLIP_MODE
+
+