diff options
author | Nick Kurshev <nickols_k@mail.ru> | 2001-09-13 07:16:59 +0000 |
---|---|---|
committer | Nick Kurshev <nickols_k@mail.ru> | 2001-09-13 07:16:59 +0000 |
commit | 3d2043852d1533c79154c21c7a5f8bb453fa6e63 (patch) | |
tree | e049d288b3dd0d6c59c063dd8f81e0aa1d6066dc | |
parent | 544286b3d39365b30298ae07e66a755200b0895c (diff) | |
download | ffmpeg-3d2043852d1533c79154c21c7a5f8bb453fa6e63.tar.gz |
memalign autodetection
Originally committed as revision 115 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rwxr-xr-x | configure | 60 | ||||
-rw-r--r-- | libavcodec/utils.c | 24 |
2 files changed, 65 insertions, 19 deletions
@@ -1,5 +1,26 @@ #!/bin/sh +TMPC="ffmpeg-conf-${RANDOM}-$$-${RANDOM}.c" +TMPO="ffmpeg-conf-${RANDOM}-$$-${RANDOM}.o" +TMPS="ffmpeg-conf-${RANDOM}-$$-${RANDOM}.S" + +if [ ! -z "$TMPDIR" ]; then + TMPC="${TMPDIR}/${TMPC}" + TMPCPP="${TMPDIR}/${TMPCPP}" + TMPO="${TMPDIR}/${TMPO}" + TMPS="${TMPDIR}/${TMPS}" +elif [ ! -z "$TEMPDIR" ]; then + TMPC="${TEMPDIR}/${TMPC}" + TMPCPP="${TEMPDIR}/${TMPCPP}" + TMPO="${TEMPDIR}/${TMPO}" + TMPS="${TEMPDIR}/${TMPS}" +else + TMPC="/tmp/${TMPC}" + TMPCPP="/tmp/${TMPCPP}" + TMPO="/tmp/${TMPO}" + TMPS="/tmp/${TMPS}" +fi + # default parameters prefix="/usr/local" cc="gcc" @@ -75,6 +96,31 @@ if [ "$win32" = "yes" ] ; then grab="no" fi +# --- +# check availability of some header files + +cat > $TMPC << EOF +#include <malloc.h> +int main( void ) { return 0; } +EOF + +_memalign=no +_malloc_h=no +if $cc -o $TMPO $TMPC 2> /dev/null ; then +_malloc_h=yes +_memalign=yes +# check for memalign - atmos +cat > $TMPC << EOF +#include <malloc.h> +int main ( void ) { +char *string = NULL; +string = memalign(64, sizeof(char)); +return 0; +} +EOF +$cc -o $TMPO $TMPC 2> /dev/null || _memalign=no +fi + echo "Install prefix $prefix" echo "C compiler $cc" echo "CPU $cpu" @@ -136,3 +182,17 @@ if [ "$win32" = "yes" ] ; then echo "#define CONFIG_WIN32 1" >> config.h echo "CONFIG_WIN32=yes" >> config.mak fi + +if [ "$_malloc_h" = "yes" ]; then + echo "#define HAVE_MALLOC_H 1" >> config.h +else + echo "#undef HAVE_MALLOC_H" >> config.h +fi + +if [ "$_memalign" = "yes" ]; then + echo "#define HAVE_MEMALIGN 1" >> config.h +else + echo "#undef HAVE_MEMALIGN" >> config.h +fi + +rm -f $TMPO $TMPC $TMPS diff --git a/libavcodec/utils.c b/libavcodec/utils.c index f1253abfd9..78e12469e6 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -16,37 +16,23 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#include <stdlib.h> #include <stdio.h> #include <string.h> #include <errno.h> -#include <limits.h> /* __GLIBC__ and __GLIBC_MINOR__ are defined here */ -#if __GLIBC__ >=2 && __GLIBC_MINOR__ >= 1 /* Fixme about glibc-2.0 */ -#define HAVE_MEMALIGN 1 -#include <malloc.h> -#endif #include "common.h" #include "dsputil.h" #include "avcodec.h" +#ifdef HAVE_MALLOC_H +#include <malloc.h> +#else +#include <stdlib.h> +#endif /* memory alloc */ void *av_mallocz(int size) { void *ptr; #if defined ( ARCH_X86 ) && defined ( HAVE_MEMALIGN ) -/* - From glibc-2.1.x manuals: - ------------------------- - The address of a block returned by `malloc' or `realloc' in the GNU -system is always a multiple of eight (or sixteen on 64-bit systems). -If you need a block whose address is a multiple of a higher power of -two than that, use `memalign' or `valloc'. These functions are -declared in `stdlib.h'. - - With the GNU library, you can use `free' to free the blocks that -`memalign' and `valloc' return. That does not work in BSD, -however--BSD does not provide any way to free such blocks. -*/ ptr = memalign(64,size); /* Why 64? Indeed, we should align it: |