annotate src/libsndfile-1.0.27/M4/endian.m4 @ 169:223a55898ab9 tip default

Add null config files
author Chris Cannam <cannam@all-day-breakfast.com>
date Mon, 02 Mar 2020 14:03:47 +0000
parents cd6cdf86811e
children
rev   line source
cannam@125 1 dnl @synopsis MN_C_FIND_ENDIAN
cannam@125 2 dnl
cannam@125 3 dnl Determine endian-ness of target processor.
cannam@125 4 dnl @version 1.1 Mar 03 2002
cannam@125 5 dnl @author Erik de Castro Lopo <erikd AT mega-nerd DOT com>
cannam@125 6 dnl
cannam@125 7 dnl Majority written from scratch to replace the standard autoconf macro
cannam@125 8 dnl AC_C_BIGENDIAN. Only part remaining from the original it the invocation
cannam@125 9 dnl of the AC_TRY_RUN macro.
cannam@125 10 dnl
cannam@125 11 dnl Permission to use, copy, modify, distribute, and sell this file for any
cannam@125 12 dnl purpose is hereby granted without fee, provided that the above copyright
cannam@125 13 dnl and this permission notice appear in all copies. No representations are
cannam@125 14 dnl made about the suitability of this software for any purpose. It is
cannam@125 15 dnl provided "as is" without express or implied warranty.
cannam@125 16
cannam@125 17 dnl Find endian-ness in the following way:
cannam@125 18 dnl 1) Look in <endian.h>.
cannam@125 19 dnl 2) If 1) fails, look in <sys/types.h> and <sys/param.h>.
cannam@125 20 dnl 3) If 1) and 2) fails and not cross compiling run a test program.
cannam@125 21 dnl 4) If 1) and 2) fails and cross compiling then guess based on target.
cannam@125 22
cannam@125 23 AC_DEFUN([MN_C_FIND_ENDIAN],
cannam@125 24 [AC_CACHE_CHECK(processor byte ordering,
cannam@125 25 ac_cv_c_byte_order,
cannam@125 26
cannam@125 27 # Initialize to unknown
cannam@125 28 ac_cv_c_byte_order=unknown
cannam@125 29
cannam@125 30 if test x$ac_cv_header_endian_h = xyes ; then
cannam@125 31
cannam@125 32 # First try <endian.h> which should set BYTE_ORDER.
cannam@125 33
cannam@125 34 [AC_TRY_LINK([
cannam@125 35 #include <endian.h>
cannam@125 36 #if BYTE_ORDER != LITTLE_ENDIAN
cannam@125 37 not big endian
cannam@125 38 #endif
cannam@125 39 ], return 0 ;,
cannam@125 40 ac_cv_c_byte_order=little
cannam@125 41 )]
cannam@125 42
cannam@125 43 [AC_TRY_LINK([
cannam@125 44 #include <endian.h>
cannam@125 45 #if BYTE_ORDER != BIG_ENDIAN
cannam@125 46 not big endian
cannam@125 47 #endif
cannam@125 48 ], return 0 ;,
cannam@125 49 ac_cv_c_byte_order=big
cannam@125 50 )]
cannam@125 51
cannam@125 52 fi
cannam@125 53
cannam@125 54 if test $ac_cv_c_byte_order = unknown ; then
cannam@125 55
cannam@125 56 [AC_TRY_LINK([
cannam@125 57 #include <sys/types.h>
cannam@125 58 #include <sys/param.h>
cannam@125 59 #if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
cannam@125 60 bogus endian macros
cannam@125 61 #endif
cannam@125 62 ], return 0 ;,
cannam@125 63
cannam@125 64 [AC_TRY_LINK([
cannam@125 65 #include <sys/types.h>
cannam@125 66 #include <sys/param.h>
cannam@125 67 #if BYTE_ORDER != LITTLE_ENDIAN
cannam@125 68 not big endian
cannam@125 69 #endif
cannam@125 70 ], return 0 ;,
cannam@125 71 ac_cv_c_byte_order=little
cannam@125 72 )]
cannam@125 73
cannam@125 74 [AC_TRY_LINK([
cannam@125 75 #include <sys/types.h>
cannam@125 76 #include <sys/param.h>
cannam@125 77 #if BYTE_ORDER != LITTLE_ENDIAN
cannam@125 78 not big endian
cannam@125 79 #endif
cannam@125 80 ], return 0 ;,
cannam@125 81 ac_cv_c_byte_order=little
cannam@125 82 )]
cannam@125 83
cannam@125 84 )]
cannam@125 85
cannam@125 86 fi
cannam@125 87
cannam@125 88 if test $ac_cv_c_byte_order = unknown ; then
cannam@125 89 if test $cross_compiling = yes ; then
cannam@125 90 # This is the last resort. Try to guess the target processor endian-ness
cannam@125 91 # by looking at the target CPU type.
cannam@125 92 [
cannam@125 93 case "$target_cpu" in
cannam@125 94 alpha* | i?86* | mipsel* | ia64*)
cannam@125 95 ac_cv_c_byte_order=little
cannam@125 96 ;;
cannam@125 97
cannam@125 98 m68* | mips* | powerpc* | hppa* | sparc*)
cannam@125 99 ac_cv_c_byte_order=big
cannam@125 100 ;;
cannam@125 101
cannam@125 102 esac
cannam@125 103 ]
cannam@125 104 else
cannam@125 105 AC_TRY_RUN(
cannam@125 106 [[
cannam@125 107 int main (void)
cannam@125 108 { /* Are we little or big endian? From Harbison&Steele. */
cannam@125 109 union
cannam@125 110 { long l ;
cannam@125 111 char c [sizeof (long)] ;
cannam@125 112 } u ;
cannam@125 113 u.l = 1 ;
cannam@125 114 return (u.c [sizeof (long) - 1] == 1);
cannam@125 115 }
cannam@125 116 ]], , ac_cv_c_byte_order=big,
cannam@125 117 )
cannam@125 118
cannam@125 119 AC_TRY_RUN(
cannam@125 120 [[int main (void)
cannam@125 121 { /* Are we little or big endian? From Harbison&Steele. */
cannam@125 122 union
cannam@125 123 { long l ;
cannam@125 124 char c [sizeof (long)] ;
cannam@125 125 } u ;
cannam@125 126 u.l = 1 ;
cannam@125 127 return (u.c [0] == 1);
cannam@125 128 }]], , ac_cv_c_byte_order=little,
cannam@125 129 )
cannam@125 130 fi
cannam@125 131 fi
cannam@125 132
cannam@125 133 )
cannam@125 134
cannam@125 135 if test $ac_cv_c_byte_order = big ; then
cannam@125 136 ac_cv_c_big_endian=1
cannam@125 137 ac_cv_c_little_endian=0
cannam@125 138 elif test $ac_cv_c_byte_order = little ; then
cannam@125 139 ac_cv_c_big_endian=0
cannam@125 140 ac_cv_c_little_endian=1
cannam@125 141 else
cannam@125 142 ac_cv_c_big_endian=0
cannam@125 143 ac_cv_c_little_endian=0
cannam@125 144
cannam@125 145 AC_MSG_WARN([[*****************************************************************]])
cannam@125 146 AC_MSG_WARN([[*** Not able to determine endian-ness of target processor. ]])
cannam@125 147 AC_MSG_WARN([[*** The constants CPU_IS_BIG_ENDIAN and CPU_IS_LITTLE_ENDIAN in ]])
cannam@125 148 AC_MSG_WARN([[*** src/config.h may need to be hand editied. ]])
cannam@125 149 AC_MSG_WARN([[*****************************************************************]])
cannam@125 150 fi
cannam@125 151
cannam@125 152 ]
cannam@125 153 )# MN_C_FIND_ENDIAN
cannam@125 154
cannam@125 155