On Monday, April 30, 2007, at 05:48PM, <[EMAIL PROTECTED]> wrote:
>
>I should have waited 5 minutes before posting this. I took a look at the diff 
>for memcpy.c to verify what had changed from the last revision. I changed:
>
>.balign 16
>
>back to:
>
>.align 16
>
>and compilation gets past that file. It next dies on libtc/iodir.c with:
>
> gcc -DHAVE_CONFIG_H -I. -I.. -D_REENTRANT -I.. -I../src -Wall 
> -Wstrict-prototypes -Wmissing-prototypes -g -O2 -MT iodir.lo -MD -MP -MF 
> .deps/iodir.Tpo -c iodir.c  -fno-common -DPIC -o .libs/iodir.o
>In file included from iodir.c:25:
>iodir.h:40: error: 'PATH_MAX' undeclared here (not in a function)
>make[2]: *** [iodir.lo] Error 1
>make[1]: *** [all-recursive] Error 1
>make: *** [all] Error 2
>
>I modified libtc/iodir.h with the following line:
>
>#include <sys/param.h>  # pick up definition of PATH_MAX
>
>Compilation gets A LOT further after this. It next dies here:
>
> gcc -DHAVE_CONFIG_H -I. -I../.. -D_REENTRANT -I../.. -I../../src -Wall 
> -Wstrict-prototypes -Wmissing-prototypes -g -O2 -MT deinterlace.lo -MD -MP 
> -MF .deps/deinterlace.Tpo -c deinterlace.c  -fno-common -DPIC -o 
> .libs/deinterlace.o
>/var/tmp//cc5641dA.s:362:Unknown pseudo-op: .rept
>/var/tmp//cc5641dA.s:362:Rest of line ignored. 1st junk character valued 51 
>(3).
>/var/tmp//cc5641dA.s:389:Unknown pseudo-op: .endr
>make[3]: *** [deinterlace.lo] Error 1
>make[2]: *** [all-recursive] Error 1
>make[1]: *** [all-recursive] Error 1
>make: *** [all] Error 2
>
>This is located in filter/yuvdenoise/deinterlace.c and is more assembly. Based 
>on comments in the code, this is MMX assembly, so perhaps I should disable 
>that and try again. I'll do that and post back.
>

Passing '--disable-mmx' to configure and rebuilding the whole thing mostly 
works. It dies in the testsuite:

gcc -DHAVE_CONFIG_H -I. -I..  -D_REENTRANT 
-DMOD_PATH=\"/usr/local/lib/transcode\" 
-DPROF_PATH=\"/usr/local/share/transcode/profiles\" -I.. -I../src  -I../libtc   
-Wall -Wstrict-prototypes -Wmissing-prototypes -g -O2 -MT test-acmemcpy.o -MD 
-MP -MF .deps/test-acmemcpy.Tpo -c -o test-acmemcpy.o test-acmemcpy.c
test-acmemcpy.c:152: error: 'memcpy_mmx' undeclared here (not in a function)
test-acmemcpy.c:153: error: 'memcpy_sse' undeclared here (not in a function)
make[2]: *** [test-acmemcpy.o] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

Apparently the testsuite doesn't pick up that MMX has been disabled and tries 
to test it anyway. These MMX-specific tests should be disabled. 

So, I went into testsuite/test-acmemcpy.c and testsuite/test-acmemcpy-speed.c 
and "forced" it to use the backup C functions by adding #define outside of the 
conditionals like so:


/* Make sure all names are available, to simplify function table */
#if !defined(ARCH_X86)
# define memcpy_mmx memcpy
# define memcpy_sse memcpy
#endif
#if !defined(ARCH_X86_64)
# define memcpy_amd64 memcpy
#endif
/* added this so the test would use the C versions */
# define memcpy_mmx memcpy
# define memcpy_sse memcpy

This isn't a clean or proper fix, but it did allow me to successfully pass all 
tests.

Last, but not least, I ran into a linker error at the tail end. It can't find 
the symbol for 'strndup'

gcc -Wall -Wstrict-prototypes -Wmissing-prototypes -g -O2 -o test-tcstrdup 
test-tcstrdup.o  ../libtc/.libs/libtc.a /usr/lib/libiconv.dylib -lm -lz -ldl
/usr/bin/ld: Undefined symbols:
_strndup
collect2: ld returned 1 exit status
make[2]: *** [test-tcstrdup] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

Near as I can tell, 'strndup' is not part of stdlib on OSX. If I comment out 
the offending test code, it succeeds to the end. Since the linker only fails on 
this test, I am assuming strndup doesn't actually get used anywhere else within 
transcode so perhaps this test can be disabled permanently. 

So, I now have a completed transcode binary. Is there a test video that I 
should use to verify it is creating the correct output? After all, a running 
binary doesn't necessarily mean that transcode is working properly.

cr

Reply via email to