# Makefile.in generated by automake 1.11.6 from Makefile.am.
# @configure_input@

# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
# Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.

@SET_MAKE@

# this snippet is to be included by both our docbook manuals
# and gtk-doc API references

# it adds an upload target to each of these dir's Makefiles

# each Makefile.am should define the following variables:
# - DOC: the base name of the documentation
#        (faq, manual, pwg, gstreamer, gstreamer-libs)
# - FORMATS: the formats in which DOC is output
#            (html ps pdf)

# if you want to use it, make sure your $HOME/.ssh/config file contains the
# correct User entry for the Host entry for the DOC_SERVER

# This is an include file specifically tuned for building documentation
# for GStreamer plug-ins
VPATH = @srcdir@
am__make_dryrun = \
  { \
    am__dry=no; \
    case $$MAKEFLAGS in \
      *\\[\ \	]*) \
        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
      *) \
        for am__flg in $$MAKEFLAGS; do \
          case $$am__flg in \
            *=*|--*) ;; \
            *n*) am__dry=yes; break;; \
          esac; \
        done;; \
    esac; \
    test $$am__dry = yes; \
  }
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
	$(top_srcdir)/common/gtk-doc-plugins.mak \
	$(top_srcdir)/common/upload-doc.mak
subdir = docs/plugins
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
	$(top_srcdir)/common/m4/as-auto-alt.m4 \
	$(top_srcdir)/common/m4/as-compiler-flag.m4 \
	$(top_srcdir)/common/m4/as-gcc-inline-assembly.m4 \
	$(top_srcdir)/common/m4/as-libtool.m4 \
	$(top_srcdir)/common/m4/as-python.m4 \
	$(top_srcdir)/common/m4/as-scrub-include.m4 \
	$(top_srcdir)/common/m4/as-version.m4 \
	$(top_srcdir)/common/m4/ax_create_stdint_h.m4 \
	$(top_srcdir)/common/m4/gst-arch.m4 \
	$(top_srcdir)/common/m4/gst-args.m4 \
	$(top_srcdir)/common/m4/gst-check.m4 \
	$(top_srcdir)/common/m4/gst-default.m4 \
	$(top_srcdir)/common/m4/gst-dowhile.m4 \
	$(top_srcdir)/common/m4/gst-error.m4 \
	$(top_srcdir)/common/m4/gst-feature.m4 \
	$(top_srcdir)/common/m4/gst-gettext.m4 \
	$(top_srcdir)/common/m4/gst-glib2.m4 \
	$(top_srcdir)/common/m4/gst-package-release-datetime.m4 \
	$(top_srcdir)/common/m4/gst-platform.m4 \
	$(top_srcdir)/common/m4/gst-plugin-docs.m4 \
	$(top_srcdir)/common/m4/gst-plugindir.m4 \
	$(top_srcdir)/common/m4/gst-x11.m4 \
	$(top_srcdir)/common/m4/gst.m4 \
	$(top_srcdir)/common/m4/gtk-doc.m4 \
	$(top_srcdir)/common/m4/orc.m4 $(top_srcdir)/common/m4/pkg.m4 \
	$(top_srcdir)/m4/aalib.m4 $(top_srcdir)/m4/gettext.m4 \
	$(top_srcdir)/m4/gst-fionread.m4 $(top_srcdir)/m4/iconv.m4 \
	$(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/lib-ld.m4 \
	$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
	$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
	$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo "  GEN   " $@;
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
SOURCES =
DIST_SOURCES =
am__can_run_installinfo = \
  case $$AM_UPDATE_INFO_DIR in \
    n|no|NO) false;; \
    *) (install-info --version) >/dev/null 2>&1;; \
  esac
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
AALIB_CFLAGS = @AALIB_CFLAGS@
AALIB_CONFIG = @AALIB_CONFIG@
AALIB_LIBS = @AALIB_LIBS@
ACLOCAL = @ACLOCAL@
ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
AS = @AS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BZ2_LIBS = @BZ2_LIBS@
CAIRO_CFLAGS = @CAIRO_CFLAGS@
CAIRO_LIBS = @CAIRO_LIBS@
CC = @CC@
CCAS = @CCAS@
CCASDEPMODE = @CCASDEPMODE@
CCASFLAGS = @CCASFLAGS@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFAULT_AUDIOSINK = @DEFAULT_AUDIOSINK@
DEFAULT_AUDIOSRC = @DEFAULT_AUDIOSRC@
DEFAULT_VIDEOSINK = @DEFAULT_VIDEOSINK@
DEFAULT_VIDEOSRC = @DEFAULT_VIDEOSRC@
DEFAULT_VISUALIZER = @DEFAULT_VISUALIZER@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DEPRECATED_CFLAGS = @DEPRECATED_CFLAGS@
DIRECTSOUND_CFLAGS = @DIRECTSOUND_CFLAGS@
DIRECTSOUND_LDFLAGS = @DIRECTSOUND_LDFLAGS@
DIRECTSOUND_LIBS = @DIRECTSOUND_LIBS@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
DV1394_CFLAGS = @DV1394_CFLAGS@
DV1394_LIBS = @DV1394_LIBS@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ERROR_CFLAGS = @ERROR_CFLAGS@
ERROR_CXXFLAGS = @ERROR_CXXFLAGS@
ERROR_OBJCFLAGS = @ERROR_OBJCFLAGS@
EXEEXT = @EXEEXT@
FFLAGS = @FFLAGS@
FGREP = @FGREP@
FLAC_CFLAGS = @FLAC_CFLAGS@
FLAC_LIBS = @FLAC_LIBS@
GCOV = @GCOV@
GCOV_CFLAGS = @GCOV_CFLAGS@
GCOV_LIBS = @GCOV_LIBS@
GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@
GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GIO_CFLAGS = @GIO_CFLAGS@
GIO_LDFLAGS = @GIO_LDFLAGS@
GIO_LIBS = @GIO_LIBS@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
GLIB_LIBS = @GLIB_LIBS@
GLIB_MKENUMS = @GLIB_MKENUMS@
GLIB_PREFIX = @GLIB_PREFIX@
GLIB_REQ = @GLIB_REQ@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
GSTPB_PLUGINS_DIR = @GSTPB_PLUGINS_DIR@
GSTPB_PREFIX = @GSTPB_PREFIX@
GST_AGE = @GST_AGE@
GST_ALL_LDFLAGS = @GST_ALL_LDFLAGS@
GST_API_VERSION = @GST_API_VERSION@
GST_BASE_CFLAGS = @GST_BASE_CFLAGS@
GST_BASE_LIBS = @GST_BASE_LIBS@
GST_CFLAGS = @GST_CFLAGS@
GST_CHECK_CFLAGS = @GST_CHECK_CFLAGS@
GST_CHECK_LIBS = @GST_CHECK_LIBS@
GST_CONTROLLER_CFLAGS = @GST_CONTROLLER_CFLAGS@
GST_CONTROLLER_LIBS = @GST_CONTROLLER_LIBS@
GST_CURRENT = @GST_CURRENT@
GST_CXXFLAGS = @GST_CXXFLAGS@
GST_LEVEL_DEFAULT = @GST_LEVEL_DEFAULT@
GST_LIBS = @GST_LIBS@
GST_LIBVERSION = @GST_LIBVERSION@
GST_LICENSE = @GST_LICENSE@
GST_LT_LDFLAGS = @GST_LT_LDFLAGS@
GST_NET_CFLAGS = @GST_NET_CFLAGS@
GST_NET_LIBS = @GST_NET_LIBS@
GST_OBJCFLAGS = @GST_OBJCFLAGS@
GST_OPTION_CFLAGS = @GST_OPTION_CFLAGS@
GST_OPTION_CXXFLAGS = @GST_OPTION_CXXFLAGS@
GST_OPTION_OBJCFLAGS = @GST_OPTION_OBJCFLAGS@
GST_PACKAGE_NAME = @GST_PACKAGE_NAME@
GST_PACKAGE_ORIGIN = @GST_PACKAGE_ORIGIN@
GST_PLUGINS_ALL = @GST_PLUGINS_ALL@
GST_PLUGINS_BASE_CFLAGS = @GST_PLUGINS_BASE_CFLAGS@
GST_PLUGINS_BASE_DIR = @GST_PLUGINS_BASE_DIR@
GST_PLUGINS_BASE_LIBS = @GST_PLUGINS_BASE_LIBS@
GST_PLUGINS_DIR = @GST_PLUGINS_DIR@
GST_PLUGINS_NONPORTED = @GST_PLUGINS_NONPORTED@
GST_PLUGINS_SELECTED = @GST_PLUGINS_SELECTED@
GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
GST_PLUGIN_LIBTOOLFLAGS = @GST_PLUGIN_LIBTOOLFLAGS@
GST_PREFIX = @GST_PREFIX@
GST_REVISION = @GST_REVISION@
GST_TOOLS_DIR = @GST_TOOLS_DIR@
GTKDOC_CHECK = @GTKDOC_CHECK@
GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
GTKDOC_MKPDF = @GTKDOC_MKPDF@
GTKDOC_REBASE = @GTKDOC_REBASE@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_LIBS = @GTK_LIBS@
GTK_X11_CFLAGS = @GTK_X11_CFLAGS@
GTK_X11_LIBS = @GTK_X11_LIBS@
GUDEV_CFLAGS = @GUDEV_CFLAGS@
GUDEV_LIBS = @GUDEV_LIBS@
HAVE_AVC1394 = @HAVE_AVC1394@
HAVE_BZ2 = @HAVE_BZ2@
HAVE_CXX = @HAVE_CXX@
HAVE_DIRECTSOUND = @HAVE_DIRECTSOUND@
HAVE_ROM1394 = @HAVE_ROM1394@
HAVE_SPEEX = @HAVE_SPEEX@
HAVE_X = @HAVE_X@
HAVE_XSHM = @HAVE_XSHM@
HAVE_ZLIB = @HAVE_ZLIB@
HTML_DIR = @HTML_DIR@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
INTLLIBS = @INTLLIBS@
INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
JACK_0_120_1_CFLAGS = @JACK_0_120_1_CFLAGS@
JACK_0_120_1_LIBS = @JACK_0_120_1_LIBS@
JACK_1_9_7_CFLAGS = @JACK_1_9_7_CFLAGS@
JACK_1_9_7_LIBS = @JACK_1_9_7_LIBS@
JACK_CFLAGS = @JACK_CFLAGS@
JACK_LIBS = @JACK_LIBS@
JPEG_LIBS = @JPEG_LIBS@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBCACA_CFLAGS = @LIBCACA_CFLAGS@
LIBCACA_LIBS = @LIBCACA_LIBS@
LIBDV_CFLAGS = @LIBDV_CFLAGS@
LIBDV_LIBS = @LIBDV_LIBS@
LIBICONV = @LIBICONV@
LIBIEC61883_CFLAGS = @LIBIEC61883_CFLAGS@
LIBIEC61883_LIBS = @LIBIEC61883_LIBS@
LIBINTL = @LIBINTL@
LIBM = @LIBM@
LIBOBJS = @LIBOBJS@
LIBPNG_CFLAGS = @LIBPNG_CFLAGS@
LIBPNG_LIBS = @LIBPNG_LIBS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@
LIBV4L2_LIBS = @LIBV4L2_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
LTLIBICONV = @LTLIBICONV@
LTLIBINTL = @LTLIBINTL@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
MSGMERGE = @MSGMERGE@
NM = @NM@
NMEDIT = @NMEDIT@
OBJC = @OBJC@
OBJCDEPMODE = @OBJCDEPMODE@
OBJCFLAGS = @OBJCFLAGS@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
ORCC = @ORCC@
ORCC_FLAGS = @ORCC_FLAGS@
ORC_CFLAGS = @ORC_CFLAGS@
ORC_LIBS = @ORC_LIBS@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@
PACKAGE_VERSION_MICRO = @PACKAGE_VERSION_MICRO@
PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@
PACKAGE_VERSION_NANO = @PACKAGE_VERSION_NANO@
PACKAGE_VERSION_RELEASE = @PACKAGE_VERSION_RELEASE@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PLUGINDIR = @PLUGINDIR@
POSUB = @POSUB@
PROFILE_CFLAGS = @PROFILE_CFLAGS@
PULSE_CFLAGS = @PULSE_CFLAGS@
PULSE_LIBS = @PULSE_LIBS@
PYTHON = @PYTHON@
PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
RAW1394_CFLAGS = @RAW1394_CFLAGS@
RAW1394_LIBS = @RAW1394_LIBS@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHOUT2_CFLAGS = @SHOUT2_CFLAGS@
SHOUT2_LIBS = @SHOUT2_LIBS@
SOUP_CFLAGS = @SOUP_CFLAGS@
SOUP_LIBS = @SOUP_LIBS@
SPEEX_CFLAGS = @SPEEX_CFLAGS@
SPEEX_LIBS = @SPEEX_LIBS@
STRIP = @STRIP@
TAGLIB_CFLAGS = @TAGLIB_CFLAGS@
TAGLIB_CXXFLAGS = @TAGLIB_CXXFLAGS@
TAGLIB_LIBS = @TAGLIB_LIBS@
USE_NLS = @USE_NLS@
VALGRIND_CFLAGS = @VALGRIND_CFLAGS@
VALGRIND_LIBS = @VALGRIND_LIBS@
VALGRIND_PATH = @VALGRIND_PATH@
VERSION = @VERSION@
VPX_CFLAGS = @VPX_CFLAGS@
VPX_LIBS = @VPX_LIBS@
WARNING_CFLAGS = @WARNING_CFLAGS@
WARNING_CXXFLAGS = @WARNING_CXXFLAGS@
WARNING_OBJCFLAGS = @WARNING_OBJCFLAGS@
WAVPACK_CFLAGS = @WAVPACK_CFLAGS@
WAVPACK_LIBS = @WAVPACK_LIBS@
XDAMAGE_CFLAGS = @XDAMAGE_CFLAGS@
XDAMAGE_LIBS = @XDAMAGE_LIBS@
XFIXES_CFLAGS = @XFIXES_CFLAGS@
XFIXES_LIBS = @XFIXES_LIBS@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
XMKMF = @XMKMF@
XSHM_LIBS = @XSHM_LIBS@
XVIDEO_LIBS = @XVIDEO_LIBS@
X_CFLAGS = @X_CFLAGS@
X_EXTRA_LIBS = @X_EXTRA_LIBS@
X_LIBS = @X_LIBS@
X_PRE_LIBS = @X_PRE_LIBS@
ZLIB_LIBS = @ZLIB_LIBS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
ac_ct_OBJC = @ac_ct_OBJC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
pkgpyexecdir = @pkgpyexecdir@
pkgpythondir = @pkgpythondir@
plugindir = @plugindir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
pyexecdir = @pyexecdir@
pythondir = @pythondir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target = @target@
target_alias = @target_alias@
target_cpu = @target_cpu@
target_os = @target_os@
target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
GST_DOC_SCANOBJ = $(top_srcdir)/common/gstdoc-scangobj

# The name of the module, e.g. 'glib'.
#DOC_MODULE=gst-plugins-libs-@GST_API_VERSION@
MODULE = gst-plugins-good
DOC_MODULE = $(MODULE)-plugins

# for upload-doc.mak
DOC = $(MODULE)-plugins
FORMATS = html

# these variables define the location of the online docs
DOC_SERVER = gstreamer.freedesktop.org
DOC_BASE = /srv/gstreamer.freedesktop.org/www/data/doc
DOC_URL = $(DOC_SERVER):$(DOC_BASE)

# The top-level SGML file. Change it if you want.
DOC_MAIN_SGML_FILE = $(DOC_MODULE)-docs.sgml

# The directory containing the source code.
# gtk-doc will search all .c & .h files beneath here for inline comments
# documenting functions and macros.
DOC_SOURCE_DIR = $(top_srcdir)/gst $(top_srcdir)/ext $(top_srcdir)/sys

# Extra options to supply to gtkdoc-scan.
SCAN_OPTIONS = 

# Extra options to supply to gtkdoc-mkdb.
MKDB_OPTIONS = --sgml-mode --source-suffixes=c,h,cc

# Extra options to supply to gtkdoc-fixref.
FIXXREF_OPTIONS = --extra-dir=$(GLIB_PREFIX)/share/gtk-doc/html \
	--extra-dir=$(GST_PREFIX)/share/gtk-doc/html \
	--extra-dir=$(GSTPB_PREFIX)/share/gtk-doc/html


# Used for dependencies.
HFILE_GLOB = \
  $(top_srcdir)/gst/*/*.h $(top_srcdir)/ext/*/*.h $(top_srcdir)/sys/*/*.h

CFILE_GLOB = \
  $(top_srcdir)/gst/*/*.c $(top_srcdir)/ext/*/*.c $(top_srcdir)/sys/*/*.c \
  $(top_srcdir)/ext/*/*.cc $(top_srcdir)/sys/*/*.m


# Header files to ignore when scanning.
IGNORE_HFILES = 
IGNORE_CFILES = 

# we add all .h files of elements that have signals/args we want
# sadly this also pulls in the private methods - maybe we should
# move those around in the source ?
# also, we should add some stuff here conditionally based on whether
# or not the plugin will actually build
# but I'm not sure about that - it might be this Just Works given that
# the registry won't have the element
EXTRA_HFILES = \
	$(top_srcdir)/ext/aalib/gstaasink.h \
	$(top_srcdir)/ext/cairo/gstcairooverlay.h \
	$(top_srcdir)/ext/dv/gstdvdec.h \
	$(top_srcdir)/ext/dv/gstdvdemux.h \
	$(top_srcdir)/ext/flac/gstflacdec.h \
	$(top_srcdir)/ext/flac/gstflacenc.h \
	$(top_srcdir)/ext/flac/gstflactag.h \
	$(top_srcdir)/ext/gdk_pixbuf/gstgdkpixbufsink.h \
	$(top_srcdir)/ext/jack/gstjackaudiosrc.h \
	$(top_srcdir)/ext/jack/gstjackaudiosink.h \
	$(top_srcdir)/ext/jpeg/gstjpegdec.h \
	$(top_srcdir)/ext/jpeg/gstjpegenc.h \
	$(top_srcdir)/ext/libcaca/gstcacasink.h \
	$(top_srcdir)/ext/libpng/gstpngdec.h \
	$(top_srcdir)/ext/libpng/gstpngenc.h \
	$(top_srcdir)/ext/raw1394/gstdv1394src.h \
	$(top_srcdir)/ext/raw1394/gsthdv1394src.h \
	$(top_srcdir)/ext/soup/gstsouphttpsrc.h \
	$(top_srcdir)/ext/taglib/gstapev2mux.h \
	$(top_srcdir)/ext/taglib/gstid3v2mux.h \
	$(top_srcdir)/ext/pulse/pulsesink.h \
	$(top_srcdir)/ext/pulse/pulsesrc.h \
	$(top_srcdir)/ext/speex/gstspeexenc.h \
	$(top_srcdir)/ext/speex/gstspeexdec.h \
	$(top_srcdir)/ext/vpx/gstvp8dec.h \
	$(top_srcdir)/ext/vpx/gstvp8enc.h \
	$(top_srcdir)/ext/wavpack/gstwavpackdec.h \
	$(top_srcdir)/ext/wavpack/gstwavpackenc.h \
	$(top_srcdir)/gst/alpha/gstalpha.h \
	$(top_srcdir)/gst/alpha/gstalphacolor.h \
	$(top_srcdir)/gst/apetag/gstapedemux.h \
	$(top_srcdir)/gst/audiofx/audioamplify.h \
	$(top_srcdir)/gst/audiofx/audioecho.h \
	$(top_srcdir)/gst/audiofx/audiodynamic.h \
	$(top_srcdir)/gst/audiofx/audioinvert.h \
	$(top_srcdir)/gst/audiofx/audiokaraoke.h \
	$(top_srcdir)/gst/audiofx/audiopanorama.h \
	$(top_srcdir)/gst/audiofx/audiocheblimit.h \
	$(top_srcdir)/gst/audiofx/audiochebband.h \
	$(top_srcdir)/gst/audiofx/audioiirfilter.h \
	$(top_srcdir)/gst/audiofx/audiowsincband.h \
	$(top_srcdir)/gst/audiofx/audiowsinclimit.h \
	$(top_srcdir)/gst/audiofx/audiofirfilter.h \
	$(top_srcdir)/gst/audioparsers/gstaacparse.h \
	$(top_srcdir)/gst/audioparsers/gstac3parse.h \
	$(top_srcdir)/gst/audioparsers/gstamrparse.h \
	$(top_srcdir)/gst/audioparsers/gstflacparse.h \
	$(top_srcdir)/gst/audioparsers/gstdcaparse.h \
	$(top_srcdir)/gst/audioparsers/gstmpegaudioparse.h \
	$(top_srcdir)/gst/auparse/gstauparse.h \
	$(top_srcdir)/gst/autodetect/gstautoaudiosink.h \
	$(top_srcdir)/gst/autodetect/gstautoaudiosrc.h \
	$(top_srcdir)/gst/autodetect/gstautovideosink.h \
	$(top_srcdir)/gst/autodetect/gstautovideosrc.h \
	$(top_srcdir)/gst/avi/gstavidemux.h \
	$(top_srcdir)/gst/avi/gstavimux.h \
	$(top_srcdir)/gst/avi/gstavisubtitle.h \
	$(top_srcdir)/gst/cutter/gstcutter.h \
	$(top_srcdir)/gst/debugutils/gstcapssetter.h \
	$(top_srcdir)/gst/debugutils/gsttaginject.h \
	$(top_srcdir)/gst/debugutils/progressreport.h \
	$(top_srcdir)/gst/deinterlace/gstdeinterlace.h \
	$(top_srcdir)/gst/effectv/gstaging.h \
	$(top_srcdir)/gst/effectv/gstdice.h \
	$(top_srcdir)/gst/effectv/gstedge.h \
	$(top_srcdir)/gst/effectv/gstquark.h \
	$(top_srcdir)/gst/effectv/gstrev.h \
	$(top_srcdir)/gst/effectv/gstshagadelic.h \
	$(top_srcdir)/gst/effectv/gstvertigo.h \
	$(top_srcdir)/gst/effectv/gstwarp.h \
	$(top_srcdir)/gst/effectv/gststreak.h \
	$(top_srcdir)/gst/effectv/gstripple.h \
	$(top_srcdir)/gst/effectv/gstop.h \
	$(top_srcdir)/gst/effectv/gstradioac.h \
	$(top_srcdir)/gst/equalizer/gstiirequalizer.h \
	$(top_srcdir)/gst/equalizer/gstiirequalizer3bands.h \
	$(top_srcdir)/gst/equalizer/gstiirequalizer10bands.h \
	$(top_srcdir)/gst/equalizer/gstiirequalizernbands.h \
	$(top_srcdir)/gst/flv/gstflvdemux.h \
	$(top_srcdir)/gst/flv/gstflvmux.h \
	$(top_srcdir)/gst/flx/gstflxdec.h \
	$(top_srcdir)/gst/goom/gstgoom.h \
	$(top_srcdir)/gst/goom2k1/gstgoom.h \
	$(top_srcdir)/gst/law/alaw-decode.h \
	$(top_srcdir)/gst/law/alaw-encode.h \
	$(top_srcdir)/gst/law/mulaw-decode.h \
	$(top_srcdir)/gst/law/mulaw-encode.h \
	$(top_srcdir)/gst/icydemux/gsticydemux.h \
	$(top_srcdir)/gst/id3demux/gstid3demux.h \
	$(top_srcdir)/gst/imagefreeze/gstimagefreeze.h \
	$(top_srcdir)/gst/interleave/deinterleave.h \
	$(top_srcdir)/gst/interleave/interleave.h \
	$(top_srcdir)/gst/level/gstlevel.h \
	$(top_srcdir)/gst/matroska/matroska-demux.h \
	$(top_srcdir)/gst/matroska/matroska-mux.h \
	$(top_srcdir)/gst/matroska/webm-mux.h \
	$(top_srcdir)/gst/monoscope/gstmonoscope.h \
	$(top_srcdir)/gst/multifile/gstmultifilesink.h \
	$(top_srcdir)/gst/multifile/gstmultifilesrc.h \
	$(top_srcdir)/gst/multifile/gstsplitfilesrc.h \
	$(top_srcdir)/gst/multipart/multipartdemux.h \
	$(top_srcdir)/gst/multipart/multipartmux.h \
	$(top_srcdir)/gst/isomp4/qtdemux.h \
	$(top_srcdir)/gst/isomp4/gstqtmux.h \
	$(top_srcdir)/gst/isomp4/gstqtmux-doc.h \
	$(top_srcdir)/gst/replaygain/gstrganalysis.h \
	$(top_srcdir)/gst/replaygain/gstrglimiter.h \
	$(top_srcdir)/gst/replaygain/gstrgvolume.h \
	$(top_srcdir)/gst/rtp/gstrtpj2kpay.h \
	$(top_srcdir)/gst/rtp/gstrtpjpegpay.h \
	$(top_srcdir)/gst/rtpmanager/gstrtpbin.h \
	$(top_srcdir)/gst/rtpmanager/gstrtpjitterbuffer.h \
	$(top_srcdir)/gst/rtpmanager/gstrtpptdemux.h \
	$(top_srcdir)/gst/rtpmanager/gstrtpsession.h \
	$(top_srcdir)/gst/rtpmanager/gstrtpssrcdemux.h \
	$(top_srcdir)/gst/rtsp/gstrtpdec.h \
	$(top_srcdir)/gst/rtsp/gstrtspsrc.h \
	$(top_srcdir)/gst/shapewipe/gstshapewipe.h \
	$(top_srcdir)/gst/smpte/gstsmpte.h \
	$(top_srcdir)/gst/smpte/gstsmptealpha.h \
	$(top_srcdir)/gst/spectrum/gstspectrum.h \
	$(top_srcdir)/gst/udp/gstmultiudpsink.h \
	$(top_srcdir)/gst/udp/gstudpsrc.h \
	$(top_srcdir)/gst/udp/gstudpsink.h \
	$(top_srcdir)/gst/videobox/gstvideobox.h \
	$(top_srcdir)/gst/videocrop/gstvideocrop.h \
	$(top_srcdir)/gst/videocrop/gstaspectratiocrop.h \
	$(top_srcdir)/gst/videofilter/gstgamma.h \
	$(top_srcdir)/gst/videofilter/gstvideobalance.h \
	$(top_srcdir)/gst/videofilter/gstvideoflip.h \
	$(top_srcdir)/gst/videomixer/videomixer2.h \
	$(top_srcdir)/gst/videomixer/videomixer2pad.h \
	$(top_srcdir)/gst/wavenc/gstwavenc.h \
	$(top_srcdir)/gst/wavparse/gstwavparse.h \
	$(top_srcdir)/gst/y4m/gsty4mencode.h \
	$(top_srcdir)/sys/directsound/gstdirectsoundsink.h \
	$(top_srcdir)/sys/oss4/oss4-sink.h \
	$(top_srcdir)/sys/oss4/oss4-source.h \
	$(top_srcdir)/sys/oss/gstosssink.h \
	$(top_srcdir)/sys/oss/gstosssrc.h \
	$(top_srcdir)/sys/osxaudio/gstosxaudiosrc.h \
	$(top_srcdir)/sys/osxaudio/gstosxaudiosink.h \
	$(top_srcdir)/sys/osxvideo/osxvideosink.h \
	$(top_srcdir)/sys/v4l2/gstv4l2src.h \
	$(top_srcdir)/sys/v4l2/gstv4l2sink.h \
	$(top_srcdir)/sys/v4l2/gstv4l2radio.h \
	$(top_srcdir)/sys/waveform/gstwaveformsink.h \
	$(top_srcdir)/sys/ximage/gstximagesrc.h


# example code that needs to be converted to xml and placed in xml/
EXAMPLE_CFILES = \
	$(top_srcdir)/tests/examples/level/level-example.c \
	$(top_srcdir)/tests/examples/spectrum/spectrum-example.c \
	$(top_srcdir)/tests/examples/audiofx/firfilter-example.c \
	$(top_srcdir)/tests/examples/audiofx/iirfilter-example.c


# Images to copy into HTML directory.
HTML_IMAGES = 

# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
content_files = 

# Other files to distribute.
extra_files = 

# CFLAGS and LDFLAGS for compiling scan program. Only needed if your app/lib
# contains GtkObjects/GObjects and you want to document signals and properties.
GTKDOC_CFLAGS = $(GST_BASE_CFLAGS) -I$(top_builddir)
GTKDOC_LIBS = $(GST_BASE_LIBS)
GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC)
GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC)

# If you need to override some of the declarations, place them in this file
# and uncomment this line.
#DOC_OVERRIDES = $(DOC_MODULE)-overrides.txt
DOC_OVERRIDES = 

# We set GPATH here; this gives us semantics for GNU make
# which are more like other make's VPATH, when it comes to
# whether a source that is a target of one rule is then
# searched for in VPATH/GPATH.
#
GPATH = $(srcdir)

# thomas: make docs parallel installable
TARGET_DIR = $(HTML_DIR)/$(DOC_MODULE)-@GST_API_VERSION@
MAINTAINER_DOC_STAMPS = \
	scanobj-build.stamp

EXTRA_DIST = \
	$(MAINTAINER_DOC_STAMPS)		\
	$(srcdir)/inspect/*.xml		\
	$(SCANOBJ_FILES)		\
	$(content_files)		\
	$(extra_files)			\
	$(HTML_IMAGES)			\
	$(DOC_MAIN_SGML_FILE)	\
	$(DOC_OVERRIDES)		\
	$(DOC_MODULE)-sections.txt


# we don't add scanobj-build.stamp here since they are built manually by docs
# maintainers and result is commited to git
DOC_STAMPS = \
	scan-build.stamp		\
	tmpl-build.stamp		\
	sgml-build.stamp		\
	html-build.stamp		\
	scan.stamp			\
	tmpl.stamp			\
	sgml.stamp			\
	html.stamp


# files generated/updated by gtkdoc-scangobj
SCANOBJ_FILES = \
	$(DOC_MODULE).args              \
	$(DOC_MODULE).hierarchy         \
	$(DOC_MODULE).interfaces        \
	$(DOC_MODULE).prerequisites     \
	$(DOC_MODULE).signals           \
	$(DOC_MODULE).types

SCANOBJ_FILES_O = \
	.libs/$(DOC_MODULE)-scan.o


# files generated/updated by gtkdoc-scan
SCAN_FILES = \
	$(DOC_MODULE)-sections.txt	\
	$(DOC_MODULE)-overrides.txt	\
	$(DOC_MODULE)-decl.txt		\
	$(DOC_MODULE)-decl-list.txt

REPORT_FILES = \
	$(DOC_MODULE)-undocumented.txt \
	$(DOC_MODULE)-undeclared.txt \
	$(DOC_MODULE)-unused.txt

CLEANFILES = \
	$(SCANOBJ_FILES_O) \
	$(REPORT_FILES) \
	$(DOC_STAMPS) \
	inspect-registry.xml

INSPECT_DIR = inspect

### inspect GStreamer plug-ins; done by documentation maintainer ###

# only look at the plugins in this module when building inspect .xml stuff
@ENABLE_GTK_DOC_TRUE@INSPECT_REGISTRY = $(top_builddir)/docs/plugins/inspect-registry.xml
@ENABLE_GTK_DOC_TRUE@INSPECT_ENVIRONMENT = \
@ENABLE_GTK_DOC_TRUE@	LC_ALL=C \
@ENABLE_GTK_DOC_TRUE@	GST_PLUGIN_SYSTEM_PATH= \
@ENABLE_GTK_DOC_TRUE@	GST_PLUGIN_PATH=$(top_builddir)/gst:$(top_builddir)/sys:$(top_builddir)/ext:$(top_builddir)/plugins:$(top_builddir)/src:$(top_builddir)/gnl \
@ENABLE_GTK_DOC_TRUE@	GST_REGISTRY=$(INSPECT_REGISTRY) \
@ENABLE_GTK_DOC_TRUE@	PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" \
@ENABLE_GTK_DOC_TRUE@	$(INSPECT_EXTRA_ENVIRONMENT)

MAINTAINERCLEANFILES = $(MAINTAINER_DOC_STAMPS)

# wildcard is apparently not portable to other makes, hence the use of find
inspect_files = $(shell find $(srcdir)/$(INSPECT_DIR) -name '*.xml')
all: all-am

.SUFFIXES:
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/common/upload-doc.mak $(top_srcdir)/common/gtk-doc-plugins.mak $(am__configure_deps)
	@for dep in $?; do \
	  case '$(am__configure_deps)' in \
	    *$$dep*) \
	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
	        && { if test -f $@; then exit 0; else break; fi; }; \
	      exit 1;; \
	  esac; \
	done; \
	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/plugins/Makefile'; \
	$(am__cd) $(top_srcdir) && \
	  $(AUTOMAKE) --gnu docs/plugins/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
	@case '$?' in \
	  *config.status*) \
	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
	  *) \
	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
	esac;
$(top_srcdir)/common/upload-doc.mak $(top_srcdir)/common/gtk-doc-plugins.mak:

$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh

$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):

mostlyclean-libtool:
	-rm -f *.lo

clean-libtool:
	-rm -rf .libs _libs
tags: TAGS
TAGS:

ctags: CTAGS
CTAGS:


distdir: $(DISTFILES)
	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
	list='$(DISTFILES)'; \
	  dist_files=`for file in $$list; do echo $$file; done | \
	  sed -e "s|^$$srcdirstrip/||;t" \
	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
	case $$dist_files in \
	  */*) $(MKDIR_P) `echo "$$dist_files" | \
			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
			   sort -u` ;; \
	esac; \
	for file in $$dist_files; do \
	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
	  if test -d $$d/$$file; then \
	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
	    if test -d "$(distdir)/$$file"; then \
	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
	    fi; \
	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
	    fi; \
	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
	  else \
	    test -f "$(distdir)/$$file" \
	    || cp -p $$d/$$file "$(distdir)/$$file" \
	    || exit 1; \
	  fi; \
	done
	$(MAKE) $(AM_MAKEFLAGS) \
	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
	  dist-hook
check-am: all-am
check: check-am
all-am: Makefile all-local
installdirs:
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am

install-am: all-am
	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am

installcheck: installcheck-am
install-strip:
	if test -z '$(STRIP)'; then \
	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
	      install; \
	else \
	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
	fi
mostlyclean-generic:

clean-generic:
	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)

distclean-generic:
	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)

maintainer-clean-generic:
	@echo "This command is intended for maintainers to use"
	@echo "it deletes files that may require special tools to rebuild."
	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
clean: clean-am

clean-am: clean-generic clean-libtool clean-local mostlyclean-am

distclean: distclean-am
	-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-local

dvi: dvi-am

dvi-am:

html-am:

info: info-am

info-am:

install-data-am: install-data-local

install-dvi: install-dvi-am

install-dvi-am:

install-exec-am:

install-html: install-html-am

install-html-am:

install-info: install-info-am

install-info-am:

install-man:

install-pdf: install-pdf-am

install-pdf-am:

install-ps: install-ps-am

install-ps-am:

installcheck-am:

maintainer-clean: maintainer-clean-am
	-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic

mostlyclean: mostlyclean-am

mostlyclean-am: mostlyclean-generic mostlyclean-libtool

pdf: pdf-am

pdf-am:

ps: ps-am

ps-am:

uninstall-am: uninstall-local

.MAKE: install-am install-strip

.PHONY: all all-am all-local check check-am clean clean-generic \
	clean-libtool clean-local dist-hook distclean \
	distclean-generic distclean-libtool distclean-local distdir \
	dvi dvi-am html html-am info info-am install install-am \
	install-data install-data-am install-data-local install-dvi \
	install-dvi-am install-exec install-exec-am install-html \
	install-html-am install-info install-info-am install-man \
	install-pdf install-pdf-am install-ps install-ps-am \
	install-strip installcheck installcheck-am installdirs \
	maintainer-clean maintainer-clean-generic mostlyclean \
	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
	uninstall uninstall-am uninstall-local

html: html-build.stamp

upload: $(FORMATS)
	@if echo $(FORMATS) | grep html > /dev/null; then \
	  echo "Preparing docs for upload (rebasing cross-references) ..." ; \
	  if test x$(builddir) != x$(srcdir); then \
	    echo "make upload can only be used if srcdir == builddir"; \
	    exit 1; \
	  fi; \
	  # gtkdoc-rebase sometimes gets confused, so reset everything to \
	  # local links before rebasing to online links                   \
	  gtkdoc-rebase --html-dir=$(builddir)/html 2>/dev/null 2>/dev/null ; \
	  rebase=`gtkdoc-rebase --verbose --online --html-dir=$(builddir)/html` ; \
	  echo "$$rebase" | grep -e "On-*line"; \
	  for req in glib gobject gstreamer gstreamer-libs gst-plugins-base-libs; do \
	    if ! ( echo "$$rebase" | grep -i -e "On-*line.*/$$req/" ); then \
	      echo "===============================================================================" ; \
	      echo " Could not determine online location for $$req docs. Cross-referencing will be " ; \
	      echo " broken, so not uploading. Make sure the library's gtk-doc documentation is    " ; \
	      echo " installed somewhere in /usr/share/gtk-doc.                                    " ; \
	      echo "===============================================================================" ; \
	      exit 1; \
	    fi; \
	  done; \
	  export SRC="$$SRC html"; \
	fi; \
	if echo $(FORMATS) | grep ps > /dev/null; then export SRC="$$SRC $(DOC).ps"; fi; \
	if echo $(FORMATS) | grep pdf > /dev/null; then export SRC="$$SRC $(DOC).pdf"; fi; \
	\
	# upload releases to both X.Y/ and head/ subdirectories \
	export DIR=$(DOC_BASE)/gstreamer/$(PACKAGE_VERSION_MAJOR).$(PACKAGE_VERSION_MINOR)/$(DOC); \
	echo Uploading $$SRC to $(DOC_SERVER):$$DIR; \
	ssh $(DOC_SERVER) mkdir -p $$DIR; \
	rsync -rv -e ssh --delete $$SRC $(DOC_SERVER):$$DIR; \
	ssh $(DOC_SERVER) chmod -R g+w $$DIR; \
	\
	export DIR=$(DOC_BASE)/gstreamer/head/$(DOC); \
	echo Uploading $$SRC to $(DOC_SERVER):$$DIR; \
	ssh $(DOC_SERVER) mkdir -p $$DIR; \
	rsync -rv -e ssh --delete $$SRC $(DOC_SERVER):$$DIR; \
	ssh $(DOC_SERVER) chmod -R g+w $$DIR; \
	\
	if echo $(FORMATS) | grep html > /dev/null; then \
	  echo "Un-preparing docs for upload (rebasing cross-references) ..." ; \
	  gtkdoc-rebase --html-dir=$(builddir)/html ; \
	fi; \
	echo Done

help:
	@echo
	@echo "If you are a doc maintainer, run 'make update' to update"
	@echo "the documentation files maintained in git"
	@echo
	@echo Other useful make targets:
	@echo
	@echo  check-inspected-versions: make sure the inspected plugin info
	@echo                            is up to date before a release
	@echo

# update the stuff maintained by doc maintainers
update: scanobj-update
	$(MAKE) check-outdated-docs

@ENABLE_GTK_DOC_TRUE@all-local: html-build.stamp

#### scan gobjects; done by documentation maintainer ####
@ENABLE_GTK_DOC_TRUE@scanobj-update:
@ENABLE_GTK_DOC_TRUE@	-rm scanobj-build.stamp
@ENABLE_GTK_DOC_TRUE@	$(MAKE) scanobj-build.stamp

# gstdoc-scanobj produces 5 output files (.new)
# scangobj-merge.py merges them into the file which we commit later
# TODO: also merge the hierarchy
@ENABLE_GTK_DOC_TRUE@scanobj-build.stamp: $(SCANOBJ_DEPS) $(basefiles)
@ENABLE_GTK_DOC_TRUE@	@echo "  DOC   Introspecting gobjects"
@ENABLE_GTK_DOC_TRUE@	@if test x"$(srcdir)" != x. ; then				\
@ENABLE_GTK_DOC_TRUE@	    for f in $(SCANOBJ_FILES) $(SCAN_FILES);			\
@ENABLE_GTK_DOC_TRUE@	    do								\
@ENABLE_GTK_DOC_TRUE@	        if test -e $(srcdir)/$$f; then cp -u $(srcdir)/$$f . ; fi;	\
@ENABLE_GTK_DOC_TRUE@	    done;							\
@ENABLE_GTK_DOC_TRUE@	fi;								\
@ENABLE_GTK_DOC_TRUE@	mkdir -p $(INSPECT_DIR); \
@ENABLE_GTK_DOC_TRUE@	scanobj_options=""; \
@ENABLE_GTK_DOC_TRUE@	if test "x$(V)" = "x1"; then \
@ENABLE_GTK_DOC_TRUE@	    scanobj_options="--verbose"; \
@ENABLE_GTK_DOC_TRUE@	fi; \
@ENABLE_GTK_DOC_TRUE@	$(INSPECT_ENVIRONMENT) 					\
@ENABLE_GTK_DOC_TRUE@	CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)"				\
@ENABLE_GTK_DOC_TRUE@	CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS) $(WARNING_CFLAGS)"	\
@ENABLE_GTK_DOC_TRUE@	LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)"				\
@ENABLE_GTK_DOC_TRUE@	$(GST_DOC_SCANOBJ) $$scanobj_options --type-init-func="gst_init(NULL,NULL)"	\
@ENABLE_GTK_DOC_TRUE@	    --module=$(DOC_MODULE) --source=$(PACKAGE) --inspect-dir=$(INSPECT_DIR) &&		\
@ENABLE_GTK_DOC_TRUE@	    echo "  DOC   Merging introspection data" && \
@ENABLE_GTK_DOC_TRUE@	    $(PYTHON)						\
@ENABLE_GTK_DOC_TRUE@	    $(top_srcdir)/common/scangobj-merge.py $(DOC_MODULE) || exit 1;	\
@ENABLE_GTK_DOC_TRUE@	if test x"$(srcdir)" != x. ; then				\
@ENABLE_GTK_DOC_TRUE@	    for f in $(SCANOBJ_FILES);					\
@ENABLE_GTK_DOC_TRUE@	    do								\
@ENABLE_GTK_DOC_TRUE@	        cmp -s ./$$f $(srcdir)/$$f || cp ./$$f $(srcdir)/ ;		\
@ENABLE_GTK_DOC_TRUE@	    done;							\
@ENABLE_GTK_DOC_TRUE@	fi;								\
@ENABLE_GTK_DOC_TRUE@	touch scanobj-build.stamp

@ENABLE_GTK_DOC_TRUE@$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(SCANOBJ_FILES_O): scan-build.stamp
@ENABLE_GTK_DOC_TRUE@	@true

### scan headers; done on every build ###
@ENABLE_GTK_DOC_TRUE@scan-build.stamp: $(HFILE_GLOB) $(EXTRA_HFILES) $(basefiles) scanobj-build.stamp
@ENABLE_GTK_DOC_TRUE@	@echo '  DOC   Scanning header files'
@ENABLE_GTK_DOC_TRUE@	@if test x"$(srcdir)" != x. ; then				\
@ENABLE_GTK_DOC_TRUE@	    for f in $(SCANOBJ_FILES) $(SCAN_FILES);			\
@ENABLE_GTK_DOC_TRUE@	    do								\
@ENABLE_GTK_DOC_TRUE@	        if test -e $(srcdir)/$$f; then cp -u $(srcdir)/$$f . ; fi;	\
@ENABLE_GTK_DOC_TRUE@	    done;							\
@ENABLE_GTK_DOC_TRUE@	fi
@ENABLE_GTK_DOC_TRUE@	@_source_dir='' ;						\
@ENABLE_GTK_DOC_TRUE@	for i in $(DOC_SOURCE_DIR) ; do					\
@ENABLE_GTK_DOC_TRUE@	    _source_dir="$${_source_dir} --source-dir=$$i" ;	        \
@ENABLE_GTK_DOC_TRUE@	done ;							        \
@ENABLE_GTK_DOC_TRUE@	gtkdoc-scan							\
@ENABLE_GTK_DOC_TRUE@	    $(SCAN_OPTIONS) $(EXTRA_HFILES)				\
@ENABLE_GTK_DOC_TRUE@	    --module=$(DOC_MODULE)					\
@ENABLE_GTK_DOC_TRUE@	    $${_source_dir}             				\
@ENABLE_GTK_DOC_TRUE@	    --ignore-headers="$(IGNORE_HFILES)";			\
@ENABLE_GTK_DOC_TRUE@	touch scan-build.stamp

#### update templates; done on every build ####

# in a non-srcdir build, we need to copy files from the previous step
# and the files from previous runs of this step
@ENABLE_GTK_DOC_TRUE@tmpl-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_OVERRIDES)
@ENABLE_GTK_DOC_TRUE@	@echo '  DOC   Rebuilding template files'
@ENABLE_GTK_DOC_TRUE@	@if test x"$(srcdir)" != x. ; then				\
@ENABLE_GTK_DOC_TRUE@	    for f in $(SCANOBJ_FILES) $(SCAN_FILES);			\
@ENABLE_GTK_DOC_TRUE@	    do								\
@ENABLE_GTK_DOC_TRUE@	        if test -e $(srcdir)/$$f; then cp -u $(srcdir)/$$f . ; fi;	\
@ENABLE_GTK_DOC_TRUE@	    done;							\
@ENABLE_GTK_DOC_TRUE@	fi
@ENABLE_GTK_DOC_TRUE@	@gtkdoc-mktmpl --module=$(DOC_MODULE)
@ENABLE_GTK_DOC_TRUE@	@$(PYTHON) \
@ENABLE_GTK_DOC_TRUE@		$(top_srcdir)/common/mangle-tmpl.py $(srcdir)/$(INSPECT_DIR) tmpl
@ENABLE_GTK_DOC_TRUE@	@touch tmpl-build.stamp

@ENABLE_GTK_DOC_TRUE@tmpl.stamp: tmpl-build.stamp
@ENABLE_GTK_DOC_TRUE@	@true

#### xml ####

@ENABLE_GTK_DOC_TRUE@sgml-build.stamp: tmpl.stamp scan-build.stamp $(CFILE_GLOB) $(top_srcdir)/common/plugins.xsl $(expand_content_files)
@ENABLE_GTK_DOC_TRUE@	@echo '  DOC   Building XML'
@ENABLE_GTK_DOC_TRUE@	@-mkdir -p xml
@ENABLE_GTK_DOC_TRUE@	@for a in $(srcdir)/$(INSPECT_DIR)/*.xml; do \
@ENABLE_GTK_DOC_TRUE@	    xsltproc --stringparam module $(MODULE) \
@ENABLE_GTK_DOC_TRUE@		$(top_srcdir)/common/plugins.xsl $$a > xml/`basename $$a`; done
@ENABLE_GTK_DOC_TRUE@	@for f in $(EXAMPLE_CFILES); do \
@ENABLE_GTK_DOC_TRUE@		$(PYTHON) $(top_srcdir)/common/c-to-xml.py $$f > xml/element-`basename $$f .c`.xml; done
@ENABLE_GTK_DOC_TRUE@	@gtkdoc-mkdb \
@ENABLE_GTK_DOC_TRUE@		--module=$(DOC_MODULE) \
@ENABLE_GTK_DOC_TRUE@		--source-dir=$(DOC_SOURCE_DIR) \
@ENABLE_GTK_DOC_TRUE@		 --expand-content-files="$(expand_content_files)" \
@ENABLE_GTK_DOC_TRUE@		--main-sgml-file=$(srcdir)/$(DOC_MAIN_SGML_FILE) \
@ENABLE_GTK_DOC_TRUE@		--output-format=xml \
@ENABLE_GTK_DOC_TRUE@		--ignore-files="$(IGNORE_HFILES) $(IGNORE_CFILES)" \
@ENABLE_GTK_DOC_TRUE@		$(MKDB_OPTIONS)
@ENABLE_GTK_DOC_TRUE@	@cp ../version.entities xml
@ENABLE_GTK_DOC_TRUE@	@touch sgml-build.stamp

@ENABLE_GTK_DOC_TRUE@sgml.stamp: sgml-build.stamp
@ENABLE_GTK_DOC_TRUE@	@true

#### html ####

@ENABLE_GTK_DOC_TRUE@html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
@ENABLE_GTK_DOC_TRUE@	@echo '  DOC   Building HTML'
@ENABLE_GTK_DOC_TRUE@	@rm -rf html
@ENABLE_GTK_DOC_TRUE@	@mkdir html
@ENABLE_GTK_DOC_TRUE@	@cp $(srcdir)/$(DOC_MAIN_SGML_FILE) html
@ENABLE_GTK_DOC_TRUE@	@for f in $(content_files); do cp $(srcdir)/$$f html; done
@ENABLE_GTK_DOC_TRUE@	@cp -pr xml html
@ENABLE_GTK_DOC_TRUE@	@cp ../version.entities html
@ENABLE_GTK_DOC_TRUE@	@mkhtml_options=""; \
@ENABLE_GTK_DOC_TRUE@	gtkdoc-mkhtml 2>&1 --help | grep  >/dev/null "\-\-verbose"; \
@ENABLE_GTK_DOC_TRUE@	if test "$(?)" = "0"; then \
@ENABLE_GTK_DOC_TRUE@	  if test "x$(V)" = "x1"; then \
@ENABLE_GTK_DOC_TRUE@	    mkhtml_options="$$mkhtml_options --verbose"; \
@ENABLE_GTK_DOC_TRUE@	  fi; \
@ENABLE_GTK_DOC_TRUE@	fi; \
@ENABLE_GTK_DOC_TRUE@	cd html && gtkdoc-mkhtml $$mkhtml_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE)
@ENABLE_GTK_DOC_TRUE@	@mv html/index.sgml html/index.sgml.bak
@ENABLE_GTK_DOC_TRUE@	@$(SED) "s/ href=\"$(DOC_MODULE)\// href=\"$(DOC_MODULE)-@GST_API_VERSION@\//g" html/index.sgml.bak >html/index.sgml
@ENABLE_GTK_DOC_TRUE@	@rm -f html/index.sgml.bak
@ENABLE_GTK_DOC_TRUE@	@rm -f html/$(DOC_MAIN_SGML_FILE)
@ENABLE_GTK_DOC_TRUE@	@rm -rf html/xml
@ENABLE_GTK_DOC_TRUE@	@rm -f html/version.entities
@ENABLE_GTK_DOC_TRUE@	@test "x$(HTML_IMAGES)" = "x" || for i in "" $(HTML_IMAGES) ; do \
@ENABLE_GTK_DOC_TRUE@	    if test "$$i" != ""; then cp $(srcdir)/$$i html ; fi; done
@ENABLE_GTK_DOC_TRUE@	@echo '  DOC   Fixing cross-references'
@ENABLE_GTK_DOC_TRUE@	@gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
@ENABLE_GTK_DOC_TRUE@	@touch html-build.stamp

@ENABLE_GTK_DOC_TRUE@clean-local-gtkdoc:
@ENABLE_GTK_DOC_TRUE@	@rm -rf xml tmpl html
# clean files copied for nonsrcdir templates build
@ENABLE_GTK_DOC_TRUE@	@if test x"$(srcdir)" != x. ; then \
@ENABLE_GTK_DOC_TRUE@	    rm -rf $(SCANOBJ_FILES) $(SCAN_FILES) $(REPORT_FILES) \
@ENABLE_GTK_DOC_TRUE@	        $(MAINTAINER_DOC_STAMPS); \
@ENABLE_GTK_DOC_TRUE@	fi
@ENABLE_GTK_DOC_FALSE@all-local:
@ENABLE_GTK_DOC_FALSE@clean-local-gtkdoc:

clean-local: clean-local-gtkdoc
	@rm -f *~ *.bak
	@rm -rf .libs

distclean-local:
	@rm -f $(REPORT_FILES) \
	        $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
	@rm -rf tmpl/*.sgml.bak
	@rm -f $(DOC_MODULE).hierarchy
	@rm -f *.stamp || true
	@if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \
	    rm -f $(DOC_MODULE)-docs.sgml ; \
	    rm -f $(DOC_MODULE).types ; \
	    rm -f $(DOC_MODULE).interfaces ; \
	    rm -f $(DOC_MODULE)-overrides.txt ; \
	    rm -f $(DOC_MODULE).prerequisites ; \
	    rm -f $(DOC_MODULE)-sections.txt ; \
	    rm -rf tmpl/*.sgml ; \
	    rm -rf $(INSPECT_DIR); \
	fi
	@rm -rf *.o

# thomas: make docs parallel installable; devhelp requires majorminor too
install-data-local:
	(installfiles=`echo $(builddir)/html/*.sgml $(builddir)/html/*.html $(builddir)/html/*.png $(builddir)/html/*.css`; \
	if test "$$installfiles" = '$(builddir)/html/*.sgml $(builddir)/html/*.html $(builddir)/html/*.png $(builddir)/html/*.css'; \
	then echo '-- Nothing to install' ; \
	else \
	  $(mkinstalldirs) $(DESTDIR)$(TARGET_DIR); \
	  for i in $$installfiles; do \
	    echo '-- Installing '$$i ; \
	    $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR); \
	  done; \
	  pngfiles=`echo ./html/*.png`; \
	  if test "$$pngfiles" != './html/*.png'; then \
	    for i in $$pngfiles; do \
	      echo '-- Installing '$$i ; \
	      $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR); \
	    done; \
	  fi; \
	  echo '-- Installing $(builddir)/html/$(DOC_MODULE).devhelp2' ; \
	  if test -e $(builddir)/html/$(DOC_MODULE).devhelp2; then \
	            $(INSTALL_DATA) $(builddir)/html/$(DOC_MODULE).devhelp2 \
	            $(DESTDIR)$(TARGET_DIR)/$(DOC_MODULE)-@GST_API_VERSION@.devhelp2; \
	  fi; \
	  $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$(DESTDIR)$(TARGET_DIR) || true ; \
	fi)
uninstall-local:
	if test -d $(DESTDIR)$(TARGET_DIR); then \
	  rm -rf $(DESTDIR)$(TARGET_DIR)/*; \
	  rmdir -p $(DESTDIR)$(TARGET_DIR) 2>/dev/null || true; \
	else \
	  echo '-- Nothing to uninstall' ; \
	fi;

#
# Checks
#
@ENABLE_GTK_DOC_TRUE@check-hierarchy: $(DOC_MODULE).hierarchy
@ENABLE_GTK_DOC_TRUE@	@if grep '	' $(DOC_MODULE).hierarchy; then \
@ENABLE_GTK_DOC_TRUE@	    echo "$(DOC_MODULE).hierarchy contains tabs, please fix"; \
@ENABLE_GTK_DOC_TRUE@	    /bin/false; \
@ENABLE_GTK_DOC_TRUE@	fi

@ENABLE_GTK_DOC_TRUE@check: check-hierarchy

check-inspected-versions:
	@echo Checking plugin versions of inspected plugin data ...; \
	fail=0 ; \
	for each in $(inspect_files) ; do \
	  if (grep -H '<version>' $$each | grep -v '<version>$(VERSION)'); then \
	    echo $$each should be fixed to say version $(VERSION) or be removed ; \
	    echo "sed -i -e 's/<version.*version>/<version>$(VERSION)<\/version>/'" $$each; \
	    echo ; \
	    fail=1; \
	  fi ; \
	done ; \
	exit $$fail

check-outdated-docs:
	$(AM_V_GEN)echo Checking for outdated plugin inspect data ...; \
	fail=0 ; \
	if [ -d $(top_srcdir)/.git/ ]; then \
	  files=`find $(srcdir)/inspect/ -name '*xml'`; \
	  for f in $$files; do \
	    ver=`grep '<version>$(PACKAGE_VERSION)</version>' $$f`; \
	    if test "x$$ver" = "x"; then \
	      plugin=`echo $$f | sed -e 's/^.*plugin-//' -e 's/.xml//'`; \
	      # echo "Checking $$plugin $$f"; \
	      pushd "$(top_srcdir)" >/dev/null; \
	      pinit=`git grep -A3 GST_PLUGIN_DEFINE -- ext/ gst/ sys/ | grep "\"$$plugin\""`; \
	      popd >/dev/null; \
	      # echo "[$$pinit]"; \
	      if test "x$$pinit" = "x"; then \
	        printf " **** outdated docs for plugin %-15s: %s\n" $$plugin $$f; \
	        fail=1; \
	      fi; \
	    fi; \
	  done; \
	fi ; \
	exit $$fail

#
# Require gtk-doc when making dist
#
@ENABLE_GTK_DOC_TRUE@dist-check-gtkdoc:
@ENABLE_GTK_DOC_FALSE@dist-check-gtkdoc:
@ENABLE_GTK_DOC_FALSE@	@echo "*** gtk-doc must be installed and enabled in order to make dist"
@ENABLE_GTK_DOC_FALSE@	@false

# FIXME: decide whether we want to dist generated html or not
# also this only works, if the project has been build before
# we could dist html only if its there, but that might lead to missing html in
# tarballs
dist-hook: dist-check-gtkdoc dist-hook-local
	mkdir $(distdir)/html
	cp html/* $(distdir)/html
	-cp $(srcdir)/$(DOC_MODULE).types $(distdir)/
	-cp $(srcdir)/$(DOC_MODULE)-sections.txt $(distdir)/
	cd $(distdir) && rm -f $(DISTCLEANFILES)
	-gtkdoc-rebase --online --relative --html-dir=$(distdir)/html

.PHONY : dist-hook-local docs check-outdated-docs inspect

# avoid spurious build errors when distchecking with -jN
.NOTPARALLEL:

# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
