mirror of
				https://github.com/cookiengineer/audacity
				synced 2025-11-04 16:14:00 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			178 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			178 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
dnl Copyright (C) 2012  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 <erikd@mega-nerd.com>
 | 
						|
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_TRY_RUN 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_TRY_LINK([
 | 
						|
		#include <endian.h>
 | 
						|
		#if BYTE_ORDER != LITTLE_ENDIAN
 | 
						|
			not big endian
 | 
						|
		#endif
 | 
						|
		], return 0 ;,
 | 
						|
			ac_cv_c_byte_order=little
 | 
						|
		)]
 | 
						|
 | 
						|
	[AC_TRY_LINK([
 | 
						|
		#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_TRY_LINK([
 | 
						|
		#include <sys/types.h>
 | 
						|
		#include <sys/param.h>
 | 
						|
		#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
 | 
						|
			bogus endian macros
 | 
						|
		#endif
 | 
						|
		], return 0 ;,
 | 
						|
 | 
						|
		[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
 | 
						|
			)]
 | 
						|
 | 
						|
		[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_TRY_RUN(
 | 
						|
		[[
 | 
						|
		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_TRY_RUN(
 | 
						|
		[[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
 |