gstreamer/gst-libs/ext/Makefile.am
Nicolas Dufresne 7b0a5ad309 plugin: Explicitly link to BZ2, LZMA and LZ
While all this information is in the .la files, libtool seems to get
confused with ordering in presence of static system libraries. This could
cause missing symbol error at link time. Adding these depenencies explicitly
workaround the issue.
2017-05-20 15:27:52 +02:00

135 lines
3.8 KiB
Makefile

# we have to put in a little hack here for integration to work well
# libav can't be in SUBDIRS, because then automake will try to descend in it
# and find conditionals it doesn't know.
# so,
# - don't put it in SUBDIRS so automake doesn't descend
# - put it in DIST_SUBDIRS so make dist picks up the subtree
# - add an all-local hook so it does get built
# this also satisfies make distcheck
SUBDIRS =
DIST_SUBDIRS = libav
TMP_DIST_DIR=libav-dist
DIST_DIR=$(TMP_DIST_DIR)/.libav
EXTRA_DIST=Makefile.am
MAINTAINERCLEANDIRS = $(DIST_SUBDIRS)
LIB_LIST=libavutil libswresample libavcodec libavformat libavfilter
define create_la
echo " GEN $1.la" && \
(echo "# $1.la - a libtool library file" && \
echo "# Generated by libtool (GNU libtool) 2.4.6" && \
echo "dlname=''" && \
echo "library_names=''" && \
echo "old_library='$1.a'" && \
echo "inherited_linker_flags=''" && \
echo "dependency_libs=' -L$(libdir) $(if $2,$(foreach dep,$2,$(abs_builddir)/$(dep).la)) $3 $(LIBM) '" && \
echo "weak_library_names=''" && \
echo "current=" && \
echo "age=" && \
echo "revision=" && \
echo "installed=no" && \
echo "shouldnotlink=no" && \
echo "dlopen=''" && \
echo "dlpreopen=''" && \
echo "libdir='$(libdir)'") > $1.la
endef
libavutil.la:
$(AM_V_at)$(call create_la,libavutil)
libswresample.la:
$(AM_V_at)$(call create_la,libswresample,libavutil)
libavcodec.la:
$(AM_V_at)$(call create_la,libavcodec,libswresample libavutil,-lz $(LZMA_LIBS))
libavformat.la:
$(AM_V_at)$(call create_la,libavformat,libavcodec libavutil,$(LIBM) -lz $(BZ2_LIBS))
libavfilter.la:
$(AM_V_at)$(call create_la,libavfilter,libavformat libavcodec libswresample libavutil)
all-local: $(foreach lib,$(LIB_LIST),$(lib).la)
cd libav && $(MAKE)
$(AM_V_at)$(MKDIR_P) .libs
$(AM_V_at)for lib in $(LIB_LIST); do \
if ! test -f .libs/$${lib}.a; then \
echo " CP $${lib}"; \
cp libav/$${lib}/$${lib}.a .libs/$${lib}.a; \
fi; \
done
if GST_PLUGIN_BUILD_STATIC
define install_la
echo " INSTALL $1.la" && \
sed -e "s|$(abs_builddir)|$(libdir)|g" \
-e "s|installed=no|installed=no|" \
$1.la > $(DESTDIR)$(libdir)/$1.la
endef
# Normally DATA is built before am-local, fix it
.libs/libavutil.a: all-local
.libs/libswresample.a: all-local
.libs/libavcodec.a: all-local
.libs/libavformat.a: all-local
.libs/libavfilter.a: all-local
depsdir = $(libdir)
nodist_deps_DATA = \
.libs/libavutil.a \
.libs/libswresample.a \
.libs/libavcodec.a \
.libs/libavformat.a \
.libs/libavfilter.a
install-data-hook:
$(AM_V_at)$(call install_la,libavutil)
$(AM_V_at)$(call install_la,libswresample)
$(AM_V_at)$(call install_la,libavcodec)
$(AM_V_at)$(call install_la,libavformat)
$(AM_V_at)$(call install_la,libavfilter)
endif
clean-local:
cd libav && $(MAKE) clean
rm -rf .libs
rm -f *.la
dist-clean:
cd libav && $(MAKE) distclean
rm -rf libav/$(TMP_DIST_DIR)
rm -f Makefile
rm -f libav/.version
rm -f libav/.config
distclean: dist-clean
maintainer-clean: distclean
rm -rf $(MAINTAINERCLEANDIRS)
maintainerclean: maintainer-clean
dist-local:
GIT_DIR=$(srcdir)/libav/.git git checkout-index --prefix=$(abs_builddir)/libav/$(TMP_DIST_DIR)/libav/ -a
touch libav/$(TMP_DIST_DIR)/libav/config.mak
echo "Patching libav ./configure"
sed -e '/Unknown option/ {N;N;s/exit 1//; }' libav/$(TMP_DIST_DIR)/libav/configure > libav/$(TMP_DIST_DIR)/libav/configure.tmp
mv libav/$(TMP_DIST_DIR)/libav/configure.tmp libav/$(TMP_DIST_DIR)/libav/configure
chmod +x libav/$(TMP_DIST_DIR)/libav/configure
distdir: dist-local
cp -r libav/$(TMP_DIST_DIR)/libav ${distdir}
cp -f $(top_srcdir)/gst-libs/ext/Makefile.am $(top_srcdir)/gst-libs/ext/Makefile.in ${distdir}
rm -rf libav/$(TMP_DIST_DIR)
dist: dist-local
cd libav/$(TMP_DIST_DIR) && tar -czf libav.tar.gz libav
mv libav/$(TMP_DIST_DIR)/libav.tar.gz ./
rm -rf libav/$(TMP_DIST_DIR)