[FFmpeg-devel] [PATCH] Coremake support - ffmpeg_nommx.patch (1/1) - ffmpeg-nommx.patch (1/1)

Diego Biurrun diego
Tue May 22 20:18:11 CEST 2007


On Tue, May 22, 2007 at 12:48:51AM -0400, Ronald S. Bultje wrote:
> 
> In article <20070521224139.GD2143 at biurrun.de>,
>  Diego Biurrun <diego at biurrun.de> wrote:
> > On Mon, May 21, 2007 at 09:40:19AM -0400, Ronald S. Bultje wrote:
> > > In file included from dct-test.c:33:
> > > dsputil.h: In function 'copy_block2':
> > > dsputil.h:688: warning: implicit declaration of function 'ST16'
> > > dsputil.h:688: warning: implicit declaration of function 'LD16'
> > > dsputil.h: In function 'copy_block4':
> > > dsputil.h:699: warning: implicit declaration of function 'ST32'
> > > dsputil.h:699: warning: implicit declaration of function 'LD32'
> > > dct-test.c: In function 'idct248_ref':
> > > dct-test.c:333: warning: implicit declaration of function 'sqrt'
> > > dct-test.c:333: warning: incompatible implicit declaration of built-in 
> > > function 'sqrt'
> > > dct-test.c:334: warning: implicit declaration of function 'cos'
> > > dct-test.c:334: warning: incompatible implicit declaration of built-in 
> > > function 'cos'
> > > dct-test.c:334: error: 'M_PI' undeclared (first use in this function)
> > > dct-test.c:334: error: (Each undeclared identifier is reported only once
> > > dct-test.c:334: error: for each function it appears in.)
> > > dct-test.c:342: warning: incompatible implicit declaration of built-in 
> > > function 'sqrt'
> > > dct-test.c:343: warning: incompatible implicit declaration of built-in 
> > > function 'cos'
> > > dct-test.c:350: warning: incompatible implicit declaration of built-in 
> > > function 'sqrt'
> > > dct-test.c:393: warning: implicit declaration of function 'rint'
> > > dct-test.c:393: warning: incompatible implicit declaration of built-in 
> > > function 'rint'
> > > 
> > > I can work around this by adding an include for math.h.
> > 
> > What environment are you compiling on?  It works fine here on x86,
> > Debian stable.
> 
> This is OSX 10.4.9. I think Linux sort-of automatically includes most 
> math.h functions with other standard headers, so Linux doesn't really 
> need include math.h. I think it's proper to add the include for 
> portability reasons.

It compiles fine for me on OS X 10.4.x (don't remember which x offhand)
on my PowerBook...

> > > In file included from fft-test.c:26:
> > > dsputil.h: In function 'copy_block2':
> > > dsputil.h:688: warning: implicit declaration of function 'ST16'
> > > dsputil.h:688: warning: implicit declaration of function 'LD16'
> > > dsputil.h: In function 'copy_block4':
> > > dsputil.h:699: warning: implicit declaration of function 'ST32'
> > > dsputil.h:699: warning: implicit declaration of function 'LD32'
> > > fft-test.c: In function 'frandom':
> > > fft-test.c:129: warning: implicit declaration of function 'random'
> > > fft-test.c: In function 'help':
> > > fft-test.c:161: warning: implicit declaration of function 'exit'
> > > fft-test.c:161: warning: incompatible implicit declaration of built-in 
> > > function 'exit'
> > > fft-test.c: In function 'main':
> > > fft-test.c:198: warning: implicit declaration of function 'atoi'
> > > fft-test.c:249: warning: implicit declaration of function 'memcpy'
> > > fft-test.c:249: warning: incompatible implicit declaration of built-in 
> > > function 'memcpy'
> > > fft-test.c:276: warning: incompatible implicit declaration of built-in 
> > > function 'memcpy'
> > > 
> > > I can work around this by adding includes for stdlib.h and string.h to 
> > > fft-test.c.
> > 
> > Here is what I get:
> > 
> > gcc -Wl,--warn-common  -Wl,--as-needed 
> > -Wl,-rpath-link,"/usr/src/ffmpeg"/libavcodec 
> > -Wl,-rpath-link,"/usr/src/ffmpeg"/libavformat 
> > -Wl,-rpath-link,"/usr/src/ffmpeg"/libavutil -o fft-test fft-test.o 
> > libavcodec.a mdct.o fft.o -L"/usr/src/ffmpeg"/libavutil -lavutil -lm -lz
>   ^^^^^^^^^^^^ ^^^^^^ ^^^^^
> > mdct.o: In function `ff_mdct_calc':
> > /usr/src/ffmpeg/libavcodec/mdct.c:133: multiple definition of `ff_mdct_calc'
> > libavcodec.a(mdct.o):/usr/src/ffmpeg/libavcodec/mdct.c:133: first defined 
> > here
> > mdct.o: In function `ff_mdct_end':
> > /usr/src/ffmpeg/libavcodec/mdct.c:173: multiple definition of `ff_mdct_end'
> > libavcodec.a(mdct.o):/usr/src/ffmpeg/libavcodec/mdct.c:173: first defined 
> > here
> > mdct.o: In function `ff_mdct_init':
> > /usr/src/ffmpeg/libavcodec/mdct.c:32: multiple definition of `ff_mdct_init'
> > libavcodec.a(mdct.o):/usr/src/ffmpeg/libavcodec/mdct.c:32: first defined here
> > mdct.o: In function `ff_imdct_calc':
> > /usr/src/ffmpeg/libavcodec/mdct.c:81: multiple definition of `ff_imdct_calc'
> > libavcodec.a(mdct.o):/usr/src/ffmpeg/libavcodec/mdct.c:81: first defined here
> > fft.o: In function `ff_fft_calc_c':
> > /usr/src/ffmpeg/libavcodec/fft.c:162: multiple definition of `ff_fft_calc_c'
> > libavcodec.a(fft.o):/usr/src/ffmpeg/libavcodec/fft.c:162: first defined here
> > fft.o: In function `ff_fft_permute':
> > /usr/src/ffmpeg/libavcodec/fft.c:239: multiple definition of `ff_fft_permute'
> > libavcodec.a(fft.o):/usr/src/ffmpeg/libavcodec/fft.c:239: first defined here
> > fft.o: In function `ff_fft_end':
> > /usr/src/ffmpeg/libavcodec/fft.c:257: multiple definition of `ff_fft_end'
> > libavcodec.a(fft.o):/usr/src/ffmpeg/libavcodec/fft.c:257: first defined here
> > fft.o: In function `ff_fft_init':
> > /usr/src/ffmpeg/libavcodec/fft.c:34: multiple definition of `ff_fft_init'
> > libavcodec.a(fft.o):/usr/src/ffmpeg/libavcodec/fft.c:34: first defined here
> > collect2: ld returned 1 exit status
> > make: *** [fft-test] Error 1
> 
> You're including fft.o/mdct.o twice, once manually and once through 
> libavcodec.a.

Yes, thanks for pointing out the obvious, fixed.

> Oh, did I mention I don't use the ffmpeg build system? 
> Maybe I should include patches to that in my next patch so that it 
> actually builds for you guys, also. :-).

Haha, we still have more tests compiling than you ;-p

> > > --- ffmpeg.orig/libavcodec/dct-test.c	2007-03-22 01:00:46.000000000 -0400
> > > +++ ffmpeg/libavcodec/dct-test.c	2007-05-21 09:28:31.000000000 -0400
> > > @@ -39,8 +40,6 @@
> > >  #define MAX(a, b)  (((a) > (b)) ? (a) : (b))
> > >  #endif
> > >  
> > > -#undef printf
> > 
> > Probably wrong.
> > 
> > > --- ffmpeg.orig/libavcodec/motion_test.c	2007-03-22 01:00:50.000000000 
> > > -0400
> > > +++ ffmpeg/libavcodec/motion_test.c	2007-05-21 09:06:35.000000000 -0400
> > > @@ -31,24 +31,24 @@
> > >  
> > > -#undef printf
> > 
> > dito
> 
> If I remove HAVE_AV_CONFIG_H, the #undef printf becomes unneeded, it's 
> solely there because we define HAVE_AV_CONFIG_H, which defines printf to 
> please_use_av_log or so. Michael suggested to get rid of 
> HAVE_AV_CONFIG_H, which makes the undef unneeded. I'll put this stuff in 
> several smaller patches which are better-documented and hopefully 
> prevent confusion, sorry for now...

Could the removal of HAVE_AV_CONFIG_H possibly be the reason for all
your compilation failures?

And yes, please send small, self-contained patches, they will likely all
get applied.

Diego




More information about the ffmpeg-devel mailing list