[FFmpeg-devel] [FFmpeg-cvslog] avutil/x86/Makefile: Make building and linking of emms.c conditional

Ronald S. Bultje rsbultje at gmail.com
Wed Apr 8 21:29:42 CEST 2015


Hi,

On Wed, Apr 8, 2015 at 1:36 PM, James Almer <jamrial at gmail.com> wrote:

> > ffmpeg | branch: master | Ronald S. Bultje <rsbultje at gmail.com> |
> Wed Apr  8 17:17:24 2015 +0200| [b926f02e81165378e615ca619f1283358dac26e4]
> | committer: Michael Niedermayer
> >
> > avutil/x86/Makefile: Make building and linking of emms.c conditional
> >
> > Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> >
> > >
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b926f02e81165378e615ca619f1283358dac26e4
> > ---
> >
> >  libavutil/x86/Makefile |    4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/libavutil/x86/Makefile b/libavutil/x86/Makefile
> > index ad3bdfc..768ef85 100644
> > --- a/libavutil/x86/Makefile
> > +++ b/libavutil/x86/Makefile
> > @@ -4,8 +4,10 @@ OBJS += x86/cpu.o
>                  \
> >
> >  OBJS-$(CONFIG_PIXELUTILS) += x86/pixelutils_init.o
> \
> >
> > +EMMS_OBJS_$(HAVE_INLINE_MMX)_$(HAVE_EXTERNAL_MMX)_$(HAVE_MM_EMPTY) =
> x86/emms.o
>
> HAVE_MMX_INLINE/EXTERNAL.
>
> > +
> >  YASM-OBJS += x86/cpuid.o
> \
> > -             x86/emms.o
>  \
> > +             $(EMMS_OBJS_NO_NO_NO)
> \
>
> This is also wrong. AFAICS the variables are never set to "NO", only "yes"
> (in lowercase) when the relevant configure
> test succeeds. Otherwise they remain unset.
>
> Also, what is this patch trying to do? emms.asm is used/needed only if
> HAVE_MM_EMPTY and HAVE_MMX_INLINE
> are not set, and of course can only be assembled if HAVE_EXTERNAL_MMX is
> set.
> Something like $(EMMS_OBJS__yes_) would assemble it only when really
> needed, but nonetheless this all seems like
> unnecessary complexity to prevent a ~200 bytes object to be assembled and
> included in the library.


Yeah I didn't test it. Anyway, the goal is indeed to remove 200 bytes. I
don't care about the 200 bytes. I care that a vp9-decoder-only build has
about 100 source files, most of which are obviously not needed. I care
about the sum of the parts, not any part alone. Some examples of what code
my beautifully small libav* was compiling:

libavformat: id3v1.o, id3v2.o, sdp.o, riff.o, mux.o
libavcodec: vorbis_parser.o, xiph.o, avdct.o, audioconvert.o, bswapdsp.o,
dv_profile.o, imgconvert.o, qsv_api.o, resample.o, resample2.o
libavutil: EVERYTHING
external libs linked: xlib, zlib, vda, xcb, iconv, bzlib, lzma

I'm happy to do some work on each of the above and make it easier to create
minimal libav* builds; the emms is obviously insignificant in and by
itself, but we can certainly do better than this and the overall effect
would be useful.

Ronald


More information about the ffmpeg-devel mailing list