mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-04 15:36:35 +00:00
7b0a5ad309
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.
135 lines
3.8 KiB
Makefile
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)
|