vlc/modules/genmf

156 lines
4.8 KiB
Bash
Executable File

#! /bin/sh
## genmf file for the VLC media player
##
## Copyright (C) 2005-2007 the VideoLAN team
##
## Authors: Sam Hocevar <sam@zoy.org>
## Rémi Denis-Courmont <rem # videolan # org>
cd $(dirname "$0")/.. || exit 1
while test "$1"
do
printf "."
dir="$1"
modf="modules/${dir}/Modules.am"
makf="modules/${dir}/Makefile.am"
basedir="`echo "${dir}" | cut -f1 -d/`"
# automake will not recurse for make dist if we don't define SUBDIRS = .
subdirs="`sed -ne 's,'modules/${dir}'/\([^/]*\)/Makefile,\1,p' configure.ac | xargs`"
mods="`sed -n -e 's/^ *SOURCES_\([^ ]*\).*/\1/p' < "${modf}" | xargs`"
extra_ltlibs=""
for mod in $mods
do
extra_ltlibs="${extra_ltlibs} lib${mod}_plugin.la"
done
rm -f "${makf}" && cat > "${makf}" << EOF
# ${makf} automatically generated from ${modf} by bootstrap
# DO NOT EDIT - edit Modules.am or \$(top_srcdir)/bootstrap instead
basedir = ${basedir}
mods = ${mods}
NULL =
libvlc_LTLIBRARIES =
EXTRA_DIST = Modules.am
BUILT_SOURCES =
CLEANFILES =
SUBDIRS = ${subdirs}
SUFFIXES = _plugin\$(LIBEXT) _plugin.la
libvlcdir = \$(libdir)/vlc/\$(basedir)
EXTRA_LTLIBRARIES = ${extra_ltlibs}
include Modules.am
if HAVE_PLUGINS
LTLIBVLC = \$(top_builddir)/src/libvlc.la
AM_LDFLAGS = -rpath '\$(libvlcdir)' -avoid-version \\
-module -no-undefined -shrext \$(LIBEXT)
if HAVE_COMPILER_EXPORT
AM_LDFLAGS += -export-dynamic
else
AM_LDFLAGS += -export-symbol-regex ^vlc_entry
endif
AM_LIBADD = \$(LTLIBVLC)
endif
all: all-modules
nice:
\$(top_builddir)/compile
# Find out which modules were enabled and tell make to build them
all-modules:
@set fnord \$\$MAKEFLAGS; amf=\$\$2; targets=\`\\
z=\$\$(\$(VLC_CONFIG) --list plugin); for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) echo lib\$\${mod}_plugin.la;; esac; done; \\
\`; case "\$\$targets" in *lib*) \$(MAKE) \$(AM_MAKEFLAGS) \$\$targets || case "\$\$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; ;; esac; \\
test -z "\$\$fail"
# Build a plugin with the adequate linker and linker's flags
_plugin.la_plugin\$(LIBEXT):
@mod="\$*" ; mod=\$\${mod#lib} ; \
ldfl="\`\$(VLC_CONFIG) --libs plugin \$\$mod\` \$(LIBVLC) -u \$(SYMPREF)\$(VLC_ENTRY)" ; \
case \`\$(VLC_CONFIG) --linkage \$\$mod\` in \\
c++) ld="\$(CXXLINK)" ;; \
objc) ld="\$(OBJCLINK)" ;; \
c|*) ld="\$(LINK)" ;; \
esac ; \
echo \$\$ld \$< \$\$ldfl ; \
\$\$ld \$< \$\$ldfl
if MAINTAINER_MODE
\$(srcdir)/Makefile.am: \$(srcdir)/Modules.am \$(top_srcdir)/modules/genmf
cd \$(top_srcdir) && \$(SHELL) modules/genmf ${dir}
endif
mostlyclean-local:
-rm -f -- *.la
### automake creates libvlcdir after running install-*-local
### so we have to create it ourselves first
install-exec-local: all-modules
@if test -z "\$(libvlc_LTLIBRARIES)"; then \
z=\$\$(\$(VLC_CONFIG) --list plugin); \
m=\`for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) printf " lib\$\${mod}_plugin.la" ;; esac; done\` ; \
test -z "\$\$m" || \
\$(MAKE) \$(AM_MAKEFLAGS) libvlc_LTLIBRARIES="\$\$m" install-libvlcLTLIBRARIES || exit \$\$? ; \
fi
uninstall-local:
@if test -z "\$(libvlc_LTLIBRARIES)"; then \
z=\$\$(\$(VLC_CONFIG) --list plugin); \
m=\`for mod in \$(mods); do case "\$\$z " in *\ \$\${mod}\ *) printf " lib\$\${mod}_plugin.la" ;; esac; done\` ; \
test -z "\$\$m" || \
\$(MAKE) \$(AM_MAKEFLAGS) libvlc_LTLIBRARIES="\$\$m" uninstall-libvlcLTLIBRARIES || exit \$\$?; \
fi
EOF
for mod in $mods
do
if grep '^nodist_SOURCES_'${mod}'' < "${modf}" >/dev/null 2>&1; then
NODIST=''; else
NODIST='#'; fi
cat >> m4/private.m4 << EOF
${mod}) list="\\\${list} ${dir}/lib${mod}" ;;
EOF
# Generation of modules/**/Makefile.am
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# - L_ is for LIBRARIES_, D_ for DATA_, B_ for BUILT_SOURCES_, F_ for LDFLAGS_,
# S_ for SOURCES_, _p is for _plugin, _b is for _builtin. This is to reduce
# the resulting file size.
# - *_CFLAGS, *_CXXFLAGS etc. because per-object CPPFLAGS does not seem to
# work properly with any automake version I tested.
cat >> "${makf}" << EOF
# The ${mod} plugin
EOF
cat >> "${makf}" << EOF
lib${mod}_plugin_la_SOURCES = \$(SOURCES_${mod})
EOF
if [ "${NODIST}" != "#" ]; then cat >> "${makf}" << EOF
nodist_lib${mod}_plugin_la_SOURCES = \$(nodist_SOURCES_${mod})
CLEANFILES += \$(nodist_SOURCES_${mod})
BUILT_SOURCES += \$(B${mod})
EOF
fi
cat >> "${makf}" << EOF
lib${mod}_plugin_la_CFLAGS = \`\$(VLC_CONFIG) --cflags plugin ${mod}\`
lib${mod}_plugin_la_CXXFLAGS = \`\$(VLC_CONFIG) --cxxflags plugin ${mod}\`
lib${mod}_plugin_la_OBJCFLAGS = \`\$(VLC_CONFIG) --objcflags plugin ${mod}\`
lib${mod}_plugin_la_LDFLAGS = \$(AM_LDFLAGS) \\
\`\$(VLC_CONFIG) --ldflags plugin ${mod}\`
lib${mod}_plugin_la_LIBADD = \$(AM_LIBADD) \\
\`\$(VLC_CONFIG) -libs plugin ${mod}\`
# Automake does not understand \`...\` very well inside LIBADD...
lib${mod}_plugin_la_DEPENDENCIES = \$(AM_LIBADD)
EOF
done
shift
done
printf "\n"