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