shithub: libsamplerate

Download patch

ref: d2e7cb582b50cf8870fdc6a4e3c0146a95367360
parent: ca40d099f899e92080d0dda639eb59e27b08d625
author: David Seifert <soap@gentoo.org>
date: Tue Jun 13 05:24:06 EDT 2017

Use AC_C_BIGENDIAN for detecting $HOST endianness

* AC_C_BIGENDIAN is fully cross-compile aware

--- a/Win32/config.h
+++ b/Win32/config.h
@@ -43,10 +43,10 @@
 /* Target processor clips on positive float to int conversion. */
 #define CPU_CLIPS_POSITIVE 0
 
-/* Target processor is big endian. */
+/* Host processor is big endian. */
 #define CPU_IS_BIG_ENDIAN 0
 
-/* Target processor is little endian. */
+/* Host processor is little endian. */
 #define CPU_IS_LITTLE_ENDIAN 1
 
 /* Set to 1 to enable debugging. */
--- a/configure.ac
+++ b/configure.ac
@@ -112,12 +112,18 @@
 #====================================================================================
 # Determine endian-ness of target processor.
 
-AC_C_FIND_ENDIAN
+AC_C_BIGENDIAN([
+		dnl big-endian
+		ac_cv_c_big_endian=1
+		ac_cv_c_little_endian=0
+	], [
+		dnl little-endian
+		ac_cv_c_big_endian=0
+		ac_cv_c_little_endian=1
+	])
 
-AC_DEFINE_UNQUOTED(CPU_IS_BIG_ENDIAN, ${ac_cv_c_big_endian},
-        [Target processor is big endian.])
-AC_DEFINE_UNQUOTED(CPU_IS_LITTLE_ENDIAN, ${ac_cv_c_little_endian},
-        [Target processor is little endian.])
+AC_DEFINE_UNQUOTED([CPU_IS_BIG_ENDIAN], [${ac_cv_c_big_endian}], [Host processor is big endian.])
+AC_DEFINE_UNQUOTED([CPU_IS_LITTLE_ENDIAN], [${ac_cv_c_little_endian}], [Host processor is little endian.])
 
 #====================================================================================
 # Check for functions.
--- a/m4/endian.m4
+++ /dev/null
@@ -1,155 +1,0 @@
-dnl @synopsis AC_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 AT mega-nerd DOT com>
-dnl
-dnl Majority written from scratch to replace the standard autoconf macro 
-dnl AC_C_BIGENDIAN. Only part remaining from the original it the invocation
-dnl of the AC_TRY_RUN macro.
-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 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([AC_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([[*** src/config.h may need to be hand editied.                    ]])
-	AC_MSG_WARN([[*****************************************************************]])
-	fi
-
-]
-)# AC_C_FIND_ENDIAN
-
-