X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgenmf;h=aefd560b16d9a3bc11170efb95d8aff22e7257e6;hb=96bf31fa1cd626d601f0ebbbb93f5c2ec213af57;hp=e8030b9d4ae36a52e16adc3db11e075a73a91dac;hpb=a6c428f6f35e2c5600c9fb8ad568e0d2ec9b00f4;p=vlc diff --git a/modules/genmf b/modules/genmf index e8030b9d4a..aefd560b16 100755 --- a/modules/genmf +++ b/modules/genmf @@ -11,26 +11,37 @@ cd $(dirname "$0")/.. || exit 1 while test "$1" do - printf "." dir="$1" modf="modules/${dir}/Modules.am" + if ! test -f "$modf"; then + echo "$modf does not exist!" >&2 + exit 1 + fi 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`" + mods="`sed -n -e 's/^ *SOURCES_\([^ ]*\).*/\1/p' < "${modf}" | sort | uniq | xargs`" + plugins="`sed -n -e 's/^.*lib\([^ ]*\)_plugin\.la.*/\1/p' < "${modf}" | sort | uniq | xargs`" + libvlc_ltlibs="" extra_ltlibs="" for mod in $mods do - extra_ltlibs="${extra_ltlibs} lib${mod}_plugin.la" + case " ${plugins} " in + *\ ${mod}\ *) + ;; + *) + libvlc_ltlibs="${libvlc_ltlibs} \$(LTLIB${mod})" + extra_ltlibs="${extra_ltlibs} lib${mod}_plugin.la" + ;; + esac 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 +# ${makf} automatically generated from ${modf} by $0 +# DO NOT EDIT THIS FILE DIRECTLY! See Modules.am instead. basedir = ${basedir} +dir = ${dir} mods = ${mods} -SUBDIRS = ${subdirs} +libvlc_LTLIBRARIES = ${libvlc_ltlibs} EXTRA_LTLIBRARIES = ${extra_ltlibs} include \$(top_srcdir)/modules/common.am @@ -38,45 +49,22 @@ include \$(top_srcdir)/modules/common.am 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) +# Force per-target objects: +lib${mod}_plugin_la_CPPFLAGS = \$(AM_CPPFLAGS) \$(CPPFLAGS_${mod}) +lib${mod}_plugin_la_CFLAGS = \$(AM_CFLAGS) \$(CFLAGS_${mod}) +lib${mod}_plugin_la_CXXFLAGS = \$(AM_CXXFLAGS) \$(CXXFLAGS_${mod}) +lib${mod}_plugin_la_OBJCFLAGS = \$(AM_OBJCFLAGS) \$(OBJCFLAGS_${mod}) +# Set LIBADD and DEPENDENCIES manually: +lib${mod}_plugin_la_LIBADD = \$(AM_LIBADD) \$(LIBS_${mod}) +lib${mod}_plugin_la_LDFLAGS = \$(AM_LDFLAGS) \$(LDFLAGS_${mod}) +lib${mod}_plugin_la_DEPENDENCIES = EOF done shift done -printf "\n"