lib_LTLIBRARIES = libgstreamer-@GST_API_VERSION@.la

if GST_DISABLE_REGISTRY
GST_REGISTRY_SRC =
else
GST_REGISTRY_SRC = gstregistrybinary.c
endif

if GST_DISABLE_PARSE
SUBDIRS_PARSE =
GST_PARSE_LA =
else
SUBDIRS_PARSE = parse
GST_PARSE_LA = parse/libgstparse.la
endif

if GST_DISABLE_PLUGIN
GST_PLUGIN_SRC =
else
GST_PLUGIN_SRC = gstplugin.c
endif

if !GST_DISABLE_GST_DEBUG
SUBDIRS_PRINTF = printf
GST_PRINTF_LA = printf/libgstprintf.la
else
SUBDIRS_PRINTF =
GST_PRINTF_LA =
endif

SUBDIRS = $(SUBDIRS_PARSE) $(SUBDIRS_PRINTF)

DIST_SUBDIRS = parse printf

# make variables for all generated source and header files to make the
# distinction clear

built_headers_configure = gstversion.h gstconfig.h
built_header_make = gstenumtypes.h
built_source_make = gstenumtypes.c

EXTRA_libgstreamer_@GST_API_VERSION@_la_SOURCES = \
	gstregistrybinary.c


# temporarily not used
#	glib-compat.c

libgstreamer_@GST_API_VERSION@_la_SOURCES = \
	gst.c			\
	gstobject.c		\
	gstallocator.c		\
	gstbin.c		\
	gstbuffer.c		\
	gstbufferlist.c		\
	gstbufferpool.c		\
	gstbus.c		\
	gstcaps.c		\
	gstcapsfeatures.c	\
	gstchildproxy.c		\
	gstclock.c		\
	gstcontext.c \
	gstcontrolbinding.c \
	gstcontrolsource.c \
	gstdatetime.c		\
	gstdebugutils.c		\
	gstdevice.c		\
	gstdevicemonitor.c 	\
	gstdeviceprovider.c	\
	gstdeviceproviderfactory.c \
	gstdynamictypefactory.c \
	gstelement.c		\
	gstelementfactory.c	\
	gsterror.c		\
	gstevent.c		\
	gstformat.c		\
	gstghostpad.c		\
	gstinfo.c		\
	gstiterator.c		\
	gstatomicqueue.c	\
	gstmessage.c		\
	gstmeta.c		\
	gstmemory.c		\
	gstminiobject.c		\
	gstpad.c		\
	gstpadtemplate.c	\
	gstparamspecs.c		\
	gstpipeline.c		\
	gstplugin.c		\
	gstpluginfeature.c	\
	gstpluginloader.c	\
	gstpoll.c		\
	gstpreset.c             \
	gstprotection.c         \
	gstquark.c		\
	gstquery.c		\
	gstregistry.c		\
	gstregistrychunks.c	\
	gstsample.c		\
	gstsegment.c		\
	gststreamcollection.c	\
	gststreams.c		\
	gststructure.c		\
	gstsystemclock.c	\
	gsttaglist.c		\
	gsttagsetter.c		\
	gsttask.c		\
	gsttaskpool.c		\
	gsttoc.c		\
	gsttocsetter.c		\
	gsttracer.c		\
	gsttracerfactory.c	\
	gsttracerrecord.c		\
	gsttracerutils.c		\
	gsttypefind.c		\
	gsttypefindfactory.c	\
	gsturi.c		\
	gstutils.c		\
	gstvalue.c		\
	gstparse.c		\
	$(GST_REGISTRY_SRC)

# do not put files in the distribution that are generated
nodist_libgstreamer_@GST_API_VERSION@_la_SOURCES = $(built_source_make)

# BUILT_SOURCES are built on make all/check/install before all other targets
BUILT_SOURCES = \
        $(built_headers_configure)	\
        $(built_header_make)		\
        $(built_source_make)
# CLEANFILES is for files generated by make
CLEANFILES = $(built_header_make) $(built_source_make) $(as_dll_cleanfiles) *.gcno *.gcda *.gcov *.gcov.out
# DISTCLEANFILES is for files generated by configure
DISTCLEANFILES = $(built_headers_configure)

libgstreamer_@GST_API_VERSION@_la_CFLAGS =		\
	-D_GNU_SOURCE					\
	-DGST_EXPORTS					\
	-DG_LOG_DOMAIN=g_log_domain_gstreamer 		\
	-DGST_API_VERSION=\""$(GST_API_VERSION)"\" 	\
	-DGST_DISABLE_DEPRECATED			\
	$(VALGRIND_CFLAGS)				\
	$(UNWIND_CFLAGS)				\
	$(DW_CFLAGS)				\
	$(GST_ALL_CFLAGS)

libgstreamer_@GST_API_VERSION@_la_LIBADD =		\
	$(GST_PARSE_LA)					\
	$(GST_PRINTF_LA)				\
	$(GST_ALL_LIBS)					\
	$(WIN32_LIBS)					\
	$(SOCKET_LIBS)					\
	$(UNWIND_LIBS)					\
	$(DW_LIBS)					\
	$(LIBM)

libgstreamer_@GST_API_VERSION@_la_LDFLAGS =		\
	$(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS) $(GST_LT_LDFLAGS)

libgstreamer_@GST_API_VERSION@includedir = $(includedir)/gstreamer-@GST_API_VERSION@/gst

gst_headers =			\
	gst.h			\
	glib-compat.h		\
	gstobject.h		\
	gstallocator.h		\
	gstbin.h		\
	gstbuffer.h		\
	gstbufferlist.h		\
	gstbufferpool.h		\
	gstbus.h		\
	gstcaps.h		\
	gstcapsfeatures.h	\
	gstchildproxy.h		\
	gstclock.h		\
	gstcompat.h		\
	gstcontext.h \
	gstcontrolbinding.h \
	gstcontrolsource.h \
	gstdatetime.h		\
	gstdebugutils.h		\
	gstelement.h		\
	gstelementmetadata.h	\
	gstdevice.h		\
	gstdeviceprovider.h	\
	gstdeviceproviderfactory.h \
	gstdynamictypefactory.h \
	gstelementfactory.h	\
	gsterror.h		\
	gstevent.h		\
	gstformat.h		\
	gstghostpad.h		\
	gstdevicemonitor.h 	\
	gstinfo.h		\
	gstiterator.h		\
	gstatomicqueue.h	\
	gstmacros.h		\
	gstmessage.h		\
	gstmeta.h		\
	gstmemory.h		\
	gstminiobject.h		\
	gstpad.h		\
	gstpadtemplate.h	\
	gstparamspecs.h		\
	gstpipeline.h		\
	gstplugin.h		\
	gstpluginfeature.h	\
	gstpoll.h		\
	gstpreset.h             \
	gstprotection.h         \
	gstquery.h		\
	gstsample.h		\
	gstsegment.h		\
	gststreamcollection.h	\
	gststreams.h		\
	gststructure.h		\
	gstsystemclock.h	\
	gsttaglist.h		\
	gsttagsetter.h		\
	gsttask.h		\
	gsttaskpool.h		\
	gsttoc.h		\
	gsttocsetter.h		\
	gsttracer.h		\
	gsttracerfactory.h	\
	gsttracerrecord.h		\
	gsttypefind.h		\
	gsttypefindfactory.h	\
	gsturi.h		\
	gstutils.h		\
	gstvalue.h		\
	gstregistry.h		\
	gstparse.h

libgstreamer_@GST_API_VERSION@include_HEADERS = $(gst_headers) math-compat.h

nodist_libgstreamer_@GST_API_VERSION@include_HEADERS = \
	$(built_headers_configure) $(built_header_make)

noinst_HEADERS = 		\
	gettext.h		\
	glib-compat-private.h	\
	gst-i18n-lib.h		\
	gst-i18n-app.h		\
	gstelementmetadata.h	\
	gstpluginloader.h	\
	gstquark.h		\
	gstregistrybinary.h     \
	gstregistrychunks.h     \
	gsttracerutils.h		\
	gst_private.h

gstenumtypes.h: $(gst_headers)
	$(AM_V_GEN)$(GLIB_MKENUMS) \
	--fhead "#ifndef __GST_ENUM_TYPES_H__\n#define __GST_ENUM_TYPES_H__\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n" \
	--fprod "\n/* enumerations from \"@filename@\" */\n" \
	--vhead "GType @enum_name@_get_type (void);\n#define GST_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n"         \
	--ftail "G_END_DECLS\n\n#endif /* __GST_ENUM_TYPES_H__ */" \
	$^ > gstenumtypes.h

gstenumtypes.c: $(gst_headers)
	$(AM_V_GEN)$(GLIB_MKENUMS) \
	--fhead "#include \"gst_private.h\"\n#include <gst/gst.h>\n#define C_ENUM(v) ((gint) v)\n#define C_FLAGS(v) ((guint) v)\n " \
	--fprod "\n/* enumerations from \"@filename@\" */" \
	--vhead "GType\n@enum_name@_get_type (void)\n{\n  static gsize id = 0;\n  static const G@Type@Value values[] = {"     \
	--vprod "    { C_@TYPE@(@VALUENAME@), \"@VALUENAME@\", \"@valuenick@\" }," \
	--vtail "    { 0, NULL, NULL }\n  };\n\n  if (g_once_init_enter (&id)) {\n    GType tmp = g_@type@_register_static (\"@EnumName@\", values);\n    g_once_init_leave (&id, tmp);\n  }\n\n  return (GType) id;\n}" \
	$^ > gstenumtypes.c

%.c.gcov: .libs/libgstreamer_@GST_API_VERSION@_la-%.gcda %.c
	$(GCOV) -b -f -o $^ > $@.out

gcov: $(libgstreamer_@GST_API_VERSION@_la_SOURCES:=.gcov)

if HAVE_INTROSPECTION
BUILT_GIRSOURCES = Gst-@GST_API_VERSION@.gir

gir_headers=$(patsubst %,$(srcdir)/%, $(libgstreamer_@GST_API_VERSION@include_HEADERS))
gir_headers+=$(patsubst %,$(builddir)/%, $(built_header_make))
gir_headers+=$(patsubst %,$(builddir)/%, gstversion.h)
gir_sources=$(patsubst %,$(srcdir)/%, $(libgstreamer_@GST_API_VERSION@_la_SOURCES))
gir_sources+=$(patsubst %,$(builddir)/%, $(built_source_make))

Gst-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstreamer-@GST_API_VERSION@.la
	$(AM_V_GEN)GST_PLUGIN_SYSTEM_PATH_1_0="" GST_PLUGIN_PATH_1_0="" GST_REGISTRY_UPDATE=no GI_SCANNER_DISABLE_CACHE=yes \
		CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" CC="$(CC)" PKG_CONFIG="$(PKG_CONFIG)" DLLTOOL="$(DLLTOOL)" \
		$(INTROSPECTION_SCANNER) -v --namespace Gst \
		--nsversion=@GST_API_VERSION@ \
		--verbose \
		--warn-all \
		-I$(top_srcdir) \
		-I$(top_builddir) \
		-DIN_GOBJECT_INTROSPECTION=1 \
		--c-include='gst/gst.h' \
		--library=libgstreamer-@GST_API_VERSION@.la \
		--include=GLib-2.0 \
		--include=GObject-2.0 \
		--include=GModule-2.0 \
		--libtool="${LIBTOOL}" \
		--pkg glib-2.0 \
		--pkg gobject-2.0 \
		--pkg gmodule-no-export-2.0 \
		--pkg-export gstreamer-@GST_API_VERSION@ \
		--add-init-section="$(INTROSPECTION_INIT)" \
		--output $@ \
		$(gir_headers) \
		$(gir_sources)

# INTROSPECTION_GIRDIR/INTROSPECTION_TYPELIBDIR aren't the right place to
# install anything - we need to install inside our prefix.
girdir = $(datadir)/gir-1.0
gir_DATA = $(BUILT_GIRSOURCES)

typelibsdir = $(libdir)/girepository-1.0/

typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)

%.typelib: %.gir $(INTROSPECTION_COMPILER)
	$(AM_V_GEN)$(INTROSPECTION_COMPILER) --includedir=$(srcdir) --includedir=$(builddir) $(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)

CLEANFILES += $(BUILT_GIRSOURCES) $(typelibs_DATA)
endif

# try to prevent packaging errors
check-libexecdir-consistency:
	@if test "${GST_PLUGIN_SCANNER_INSTALLED}" != "${libexecdir}/gstreamer-$(GST_API_VERSION)/gst-plugin-scanner"; then \
	  echo "*** Inconsistent libexecdir! Please use ./configure --libexecdir=/foo/bar"; \
	  echo "*** to set the libexecdir and not make libexecdir=/foo/bar or the like."; \
	  echo "*** The same goes for prefix, libdir etc."; \
	  echo "*** ${GST_PLUGIN_SCANNER_INSTALLED} != ${libexecdir}/gstreamer-$(GST_API_VERSION)/gst-plugin-scanner"; \
	  exit 1; \
	fi

all-local: check-libexecdir-consistency
