gcc_version.m4 : Use cut instead of sed.
authorErik de Castro Lopo <erikd@mega-nerd.com>
Sun, 10 Mar 2013 01:30:49 +0000 (12:30 +1100)
committerErik de Castro Lopo <erikd@mega-nerd.com>
Sun, 10 Mar 2013 01:38:38 +0000 (12:38 +1100)
Add this and other macros to Makefile.am.

m4/Makefile.am
m4/endian.m4 [new file with mode: 0644]
m4/gcc_version.m4

index 71fac28..c5da5bb 100644 (file)
 #  distribution.
 
 EXTRA_DIST = \
+       add_cflags.m4 \
+       add_cxxflags.m4 \
+       bswap.m4 \
+       endian.m4 \
+       gcc_version.m4 \
        ogg.m4 \
        xmms.m4
diff --git a/m4/endian.m4 b/m4/endian.m4
new file mode 100644 (file)
index 0000000..87c1f49
--- /dev/null
@@ -0,0 +1,177 @@
+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
index a643ef2..1c53086 100644 (file)
@@ -2,6 +2,7 @@ dnl @synopsis XIPH_GCC_VERSION
 dnl
 dnl Find the version of gcc.
 dnl @version 1.0       Nov 05 2007
+dnl @version 1.1       Mar 10 2013
 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
@@ -19,10 +20,8 @@ if test "x$ac_cv_c_compiler_gnu" = "xyes" ; then
        GCC_VERSION=`$CC -dumpversion`
        AC_MSG_RESULT($GCC_VERSION)
 
-       changequote(,)dnl
-       GCC_MAJOR_VERSION=`echo $GCC_VERSION | sed "s/\..*//"`
-       GCC_MINOR_VERSION=`echo $GCC_VERSION | sed "s/$GCC_MAJOR_VERSION\.//" | sed "s/\..*//"`
-       changequote([,])dnl
+       GCC_MAJOR_VERSION=`echo $GCC_VERSION | cut -d. -f 1`
+       GCC_MINOR_VERSION=`echo $GCC_VERSION | cut -d. -f 2`
        fi
 
 AC_SUBST(GCC_VERSION)
@@ -30,4 +29,3 @@ AC_SUBST(GCC_MAJOR_VERSION)
 AC_SUBST(GCC_MINOR_VERSION)
 
 ])# XIPH_GCC_VERSION
-