123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- dnl Copyright (C) 2012-2023 Xiph.Org Foundation
- dnl
- dnl Redistribution and use in source and binary forms, with or without
- dnl modification, are permitted provided that the following conditions
- dnl are met:
- dnl
- dnl - Redistributions of source code must retain the above copyright
- dnl notice, this list of conditions and the following disclaimer.
- dnl
- dnl - Redistributions in binary form must reproduce the above copyright
- dnl notice, this list of conditions and the following disclaimer in the
- dnl documentation and/or other materials provided with the distribution.
- dnl
- dnl - Neither the name of the Xiph.org Foundation nor the names of its
- dnl contributors may be used to endorse or promote products derived from
- dnl this software without specific prior written permission.
- dnl
- dnl THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- dnl ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- dnl LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- dnl A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
- dnl CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- dnl EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- dnl PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- dnl PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- dnl LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- dnl NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- dnl SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- dnl @synopsis XIPH_C_FIND_ENDIAN
- dnl
- dnl Determine endian-ness of target processor.
- dnl @version 1.1 Mar 03 2002
- dnl @author Erik de Castro Lopo <[email protected]>
- dnl
- dnl Majority written from scratch to replace the standard autoconf macro
- dnl AC_C_BIGENDIAN. Only part remaining from the original is the invocation
- dnl of the AC_RUN_IFELSE([AC_LANG_SOURCE([[]])],[],[],[]) macro.
- dnl
- dnl Find endian-ness in the following way:
- dnl 1) Look in <endian.h>.
- dnl 2) If 1) fails, look in <sys/types.h> and <sys/param.h>.
- dnl 3) If 1) and 2) fails and not cross compiling run a test program.
- dnl 4) If 1) and 2) fails and cross compiling then guess based on target.
- AC_DEFUN([XIPH_C_FIND_ENDIAN],
- [AC_CACHE_CHECK(processor byte ordering,
- ac_cv_c_byte_order,
- # Initialize to unknown
- ac_cv_c_byte_order=unknown
- if test x$ac_cv_header_endian_h = xyes ; then
- # First try <endian.h> which should set BYTE_ORDER.
- [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
- #include <endian.h>
- #if BYTE_ORDER != LITTLE_ENDIAN
- not big endian
- #endif
- ]], [[return 0 ;]])],[ac_cv_c_byte_order=little
- ],[])]
- [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
- #include <endian.h>
- #if BYTE_ORDER != BIG_ENDIAN
- not big endian
- #endif
- ]], [[return 0 ;]])],[ac_cv_c_byte_order=big
- ],[])]
- fi
- if test $ac_cv_c_byte_order = unknown ; then
- [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
- #include <sys/types.h>
- #include <sys/param.h>
- #if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
- bogus endian macros
- #endif
- ]], [[return 0 ;]])],[_au_m4_changequote([,])AC_TRY_LINK([
- #include <sys/types.h>
- #include <sys/param.h>
- #if BYTE_ORDER != LITTLE_ENDIAN
- not big endian
- #endif
- ], return 0 ;,
- ac_cv_c_byte_order=little
- )
- _au_m4_changequote([,])AC_TRY_LINK([
- #include <sys/types.h>
- #include <sys/param.h>
- #if BYTE_ORDER != LITTLE_ENDIAN
- not big endian
- #endif
- ], return 0 ;,
- ac_cv_c_byte_order=little
- )
- ],[])]
- fi
- if test $ac_cv_c_byte_order = unknown ; then
- if test $cross_compiling = yes ; then
- # This is the last resort. Try to guess the target processor endian-ness
- # by looking at the target CPU type.
- [
- case "$target_cpu" in
- alpha* | i?86* | mipsel* | ia64*)
- ac_cv_c_byte_order=little
- ;;
- m68* | mips* | powerpc* | hppa* | sparc*)
- ac_cv_c_byte_order=big
- ;;
- esac
- ]
- else
- AC_RUN_IFELSE([AC_LANG_SOURCE([[[
- int main (void)
- { /* Are we little or big endian? From Harbison&Steele. */
- union
- { long l ;
- char c [sizeof (long)] ;
- } u ;
- u.l = 1 ;
- return (u.c [sizeof (long) - 1] == 1);
- }
- ]]])],[],[ac_cv_c_byte_order=big],[])
- AC_RUN_IFELSE([AC_LANG_SOURCE([[[int main (void)
- { /* Are we little or big endian? From Harbison&Steele. */
- union
- { long l ;
- char c [sizeof (long)] ;
- } u ;
- u.l = 1 ;
- return (u.c [0] == 1);
- }]]])],[],[ac_cv_c_byte_order=little],[])
- fi
- fi
- )
- if test $ac_cv_c_byte_order = big ; then
- ac_cv_c_big_endian=1
- ac_cv_c_little_endian=0
- elif test $ac_cv_c_byte_order = little ; then
- ac_cv_c_big_endian=0
- ac_cv_c_little_endian=1
- else
- ac_cv_c_big_endian=0
- ac_cv_c_little_endian=0
- AC_MSG_WARN([[*****************************************************************]])
- AC_MSG_WARN([[*** Not able to determine endian-ness of target processor. ]])
- AC_MSG_WARN([[*** The constants CPU_IS_BIG_ENDIAN and CPU_IS_LITTLE_ENDIAN in ]])
- AC_MSG_WARN([[*** config.h may need to be hand editied. ]])
- AC_MSG_WARN([[*****************************************************************]])
- fi
- ]
- )# XIPH_C_FIND_ENDIAN
|