From 0b48f0e3fdc5c5fe8530345b165e7cd0aecb2b5b Mon Sep 17 00:00:00 2001 From: Nicolas Dufresne Date: Wed, 10 May 2017 21:20:05 -0400 Subject: [PATCH] Use a portable method to link against internal FFMPEG In the last iteration, we kept the original method to link the shared plugin and edited the .a and .la files so satisfy what cerbero needed. Unfortunately, that required adding .a file into the archive which is not allowed with iOS ar command for universal builds. This patch uses standard method to link a static library. One of the benefit is that it removes some libtool warning about portability. For the static case, we implement an install hook that installs FFMPEG internal .a files in the plugin directory (so it does not get confused with a possible system FFMPEG. This makes the static plugin usable without depending on cerbero recipe. --- configure.ac | 15 ++++++--------- ext/libav/Makefile.am | 31 +++++++++++-------------------- 2 files changed, 17 insertions(+), 29 deletions(-) diff --git a/configure.ac b/configure.ac index 113376b..7cdf8e2 100644 --- a/configure.ac +++ b/configure.ac @@ -319,15 +319,12 @@ else \$(top_builddir)/gst-libs/ext/libav/libavfilter/libavfilter.a \ \$(top_builddir)/gst-libs/ext/libav/libswresample/libswresample.a \ \$(top_builddir)/gst-libs/ext/libav/libavutil/libavutil.a" - if test "x$enable_static_plugins" = xyes; then - dnl with static linking we can't use the .a archive directly as they would - dnl be included in the final libgstlibav.a as a file and won't be usable. - dnl libav*.a must be copied to the final destination too - LIBAV_LIBS="-lavformat -lavcodec -lswresample -lavutil -lavfilter" - else - dnl libgstlibav.la: libs to statically link to - LIBAV_LIBS="$LIBAV_DEPS" - fi + + LIBAV_LIBS="-L\$(top_builddir)/gst-libs/ext/libav/libavformat -lavformat \ + -L\$(top_builddir)/gst-libs/ext/libav/libavcodec -lavcodec \ + -L\$(top_builddir)/gst-libs/ext/libav/libswresample -lswresample \ + -L\$(top_builddir)/gst-libs/ext/libav/libavutil -lavutil \ + -L\$(top_builddir)/gst-libs/ext/libav/libavfilter -lavfilter" dnl SWSCALE_CFLAGS="-I \$(top_srcdir)/gst-libs/ext/libav \ diff --git a/ext/libav/Makefile.am b/ext/libav/Makefile.am index af74510..ca6f5f5 100644 --- a/ext/libav/Makefile.am +++ b/ext/libav/Makefile.am @@ -31,32 +31,23 @@ libgstlibav_la_SOURCES = gstav.c \ libgstlibav_la_CFLAGS = $(LIBAV_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) libgstlibav_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS) -libgstlibav_la_LIBADD = - -if HAVE_LIBAV_UNINSTALLED -libgstlibav_la_LIBADD += $(LIBAV_DEPS) -libgstlibav_la_DEPENDENCIES = $(LIBAV_DEPS) -else -libgstlibav_la_LIBADD += $(LIBAV_LIBS) -endif - -libgstlibav_la_LIBADD += $(GST_PLUGINS_BASE_LIBS) \ +libgstlibav_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \ -lgstaudio-$(GST_API_VERSION) -lgstvideo-$(GST_API_VERSION) \ -lgstpbutils-$(GST_API_VERSION) $(GST_BASE_LIBS) \ - $(LIBM) $(WIN32_LIBS) -lz $(BZ2_LIBS) $(LZMA_LIBS) + $(LIBAV_LIBS) $(LIBM) $(WIN32_LIBS) -lz $(BZ2_LIBS) $(LZMA_LIBS) libgstlibav_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) $(DARWIN_LDFLAGS) if HAVE_LIBAV_UNINSTALLED +libgstlibav_la_DEPENDENCIES = $(LIBAV_DEPS) + if GST_PLUGIN_BUILD_STATIC -libgstlibav.la: $(libgstlibav_la_OBJECTS) $(libgstlibav_la_DEPENDENCIES) $(EXTRA_libgstlibav_la_DEPENDENCIES) - $(AM_V_CCLD)$(libgstlibav_la_LINK) -rpath $(plugindir) $(libgstlibav_la_OBJECTS) $(libgstlibav_la_LIBADD) $(LIBS) - $(AM_V_at)cp $@ $@.tmp - $(AM_V_at)cp .libs/$@i .libs/$@i.tmp - $(AM_V_at)rm $@ .libs/$@i - $(AM_V_at)$(AR) -d .libs/libgstlibav.a $(foreach dep,$(LIBAV_DEPS), $(notdir $(dep))) - $(AM_V_at)$(RANLIB) .libs/libgstlibav.a - $(AM_V_GEN)sed -e "s|^\(dependency_libs='\)|\1 $(LIBAV_LIBS)|" $@.tmp > $@ && rm $@.tmp - $(AM_V_GEN)sed -e "s|^\(dependency_libs='\)|\1 $(LIBAV_LIBS)|" .libs/$@i.tmp > .libs/$@i && rm .libs/$@i.tmp +libgstlibav_la = $(DESTDIR)$(plugindir)/libgstlibav.la + +install-data-hook: + $(AM_V_at)cp $(libgstlibav_la) $(libgstlibav_la).tmp + $(AM_V_GEN)sed -e "s|-L$(top_builddir)/gst-libs/ext/libav/lib[a-z]* ||g" \ + $(libgstlibav_la).tmp > $(libgstlibav_la) && rm $(libgstlibav_la).tmp + $(AM_V_at)$(INSTALL) -t$(DESTDIR)$(libdir) $(LIBAV_DEPS) endif endif -- 2.7.4