ref: 8c246bf5d0fe350928cd8622c16098791a944b52
parent: 71776af87ffbf28779b4164adc27224b24e5c8b3
author: Erik de Castro Lopo <erikd@mega-nerd.com>
date: Tue Feb 17 05:38:00 EST 2009
Add M4/ directory.
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-02-17 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
+
+ * Makefile.am configure.ac M4/*
+ Add M4 directory.
+
2009-02-14 Erik de Castro Lopo <erikd AT mega-nerd DOT com>
* src/common.h src/samplerate.c
--- /dev/null
+++ b/M4/Makefile.am
@@ -1,0 +1,4 @@
+## Process this file with automake to produce Makefile.in
+
+EXTRA_DIST = add_cflags.m4 endian.m4
+
--- /dev/null
+++ b/M4/add_cflags.m4
@@ -1,0 +1,17 @@
+dnl @synopsis AC_ADD_CFLAGS
+dnl
+dnl Add the given option to CFLAGS, if it doesn't break the compiler
+
+AC_DEFUN([AC_ADD_CFLAGS],
+[AC_MSG_CHECKING([if $CC accepts $1])
+ ac_add_cflags__old_cflags="$CFLAGS"
+ CFLAGS="$CFLAGS $1"
+ AC_TRY_LINK([
+ #include <stdio.h>
+ ],
+ [puts("Hello, World!"); return 0;],
+ AC_MSG_RESULT([yes]),
+ AC_MSG_RESULT([no])
+ CFLAGS="$ac_add_cflags__old_cflags"
+ )
+])# AC_ADD_CFLAGS
--- /dev/null
+++ b/M4/endian.m4
@@ -1,0 +1,159 @@
+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_big_endian=0
+ ac_cv_c_little_endian=1
+ ;;
+
+ m68* | mips* | powerpc* | hppa* | sparc*)
+ ac_cv_c_big_endian=1
+ ac_cv_c_little_endian=0
+ ;;
+
+ 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_cv_c_byte_order=unknown
+ )
+
+ 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,
+ ac_cv_c_byte_order=unknown
+ )
+ 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
+
+
--- a/Makefile.am
+++ b/Makefile.am
@@ -2,7 +2,7 @@
DISTCHECK_CONFIGURE_FLAGS = --enable-gcc-werror
-SUBDIRS = src doc examples tests
+SUBDIRS = M4 src doc examples tests
DIST_SUBDIRS = Win32 $(SUBDIRS)
EXTRA_DIST = autogen.sh libsamplerate.spec.in samplerate.pc.in Make.bat
--- a/configure.ac
+++ b/configure.ac
@@ -273,7 +273,8 @@
AC_SUBST(SNDFILE_CFLAGS)
AC_SUBST(SNDFILE_LIBS)
-AC_CONFIG_FILES([Makefile src/Version_script Win32/Makefile Win32/Makefile.mingw \
+AC_CONFIG_FILES([Makefile M4/Makefile src/Version_script \
+ Win32/Makefile Win32/Makefile.mingw \
src/Makefile examples/Makefile tests/Makefile doc/Makefile \
libsamplerate.spec samplerate.pc])
AC_OUTPUT