
lib_LTLIBRARIES = libgstgl-@GST_API_VERSION@.la

SUBDIRS = glprototypes
DIST_SUBDIRS = glprototypes android x11 win32 cocoa wayland dispmanx egl eagl viv-fb gbm

built_sys_header_configure = gstglconfig.h

libgstgl_@GST_API_VERSION@_la_SOURCES = \
	gstgldisplay.c \
	gstglcontext.c \
	gstgldebug.c \
	gstglbasememory.c \
	gstglbuffer.c \
	gstglmemory.c \
	gstglmemorypbo.c \
	gstglrenderbuffer.c \
	gstglbufferpool.c \
	gstglfilter.c \
	gstglformat.c \
	gstglbasefilter.c \
	gstglshader.c \
	gstglshaderstrings.c \
	gstglsl.c \
	gstglslstage.c \
	gstglcolorconvert.c \
	gstglupload.c \
	gstglwindow.c \
	gstglapi.c \
	gstglfeature.c \
	gstglutils.c \
	gstglframebuffer.c \
	gstglsyncmeta.c \
	gstglviewconvert.c \
	gstgloverlaycompositor.c \
	gstglquery.c

libgstgl_@GST_API_VERSION@includedir = $(includedir)/gstreamer-@GST_API_VERSION@/gst/gl
libgstgl_@GST_API_VERSION@include_HEADERS = \
	gstglwindow.h \
	gstgldisplay.h \
	gstglcontext.h \
	gstgldebug.h \
	gstglbasememory.h \
	gstglbuffer.h \
	gstglmemory.h \
	gstglmemorypbo.h \
	gstglrenderbuffer.h \
	gstglbufferpool.h \
	gstglfilter.h \
	gstglformat.h \
	gstglfuncs.h \
	gstglbasefilter.h \
	gstglshader.h \
	gstglshaderstrings.h \
	gstglsl.h \
	gstglslstage.h \
	gstglcolorconvert.h \
	gstglupload.h \
	gstglapi.h \
	gstglfeature.h \
	gstglutils.h \
	gstglframebuffer.h \
	gstglsyncmeta.h \
	gstglviewconvert.h \
	gstgloverlaycompositor.h \
	gstglquery.h \
	gstgl_fwd.h \
	gstgl_enums.h \
	gl.h

noinst_HEADERS = \
	gstglcontext_private.h \
	gstglfeature_private.h \
	gstglsl_private.h \
	gstglwindow_private.h \
	gstglutils_private.h \
	utils/opengl_versions.h \
	utils/gles_versions.h


libgstgl_@GST_API_VERSION@_la_LIBADD = \
	$(top_builddir)/gst-libs/gst/video/libgstvideo-@GST_API_VERSION@.la \
	$(top_builddir)/gst-libs/gst/allocators/libgstallocators-@GST_API_VERSION@.la \
	$(GMODULE_NO_EXPORT_LIBS) \
	$(GST_BASE_LIBS) \
	$(GST_LIBS) \
	$(GL_LIBS)

gstgl_gir_headers = $(libgstgl_@GST_API_VERSION@include_HEADERS)
gstgl_gir_sources = $(libgstgl_@GST_API_VERSION@_la_SOURCES)

if HAVE_WINDOW_WIN32
SUBDIRS += win32
libgstgl_@GST_API_VERSION@_la_LIBADD += win32/libgstgl-win32.la
endif

if HAVE_WINDOW_COCOA
SUBDIRS += cocoa
libgstgl_@GST_API_VERSION@_la_LIBADD += cocoa/libgstgl-cocoa.la
endif

if HAVE_WINDOW_X11
SUBDIRS += x11
libgstgl_@GST_API_VERSION@_la_LIBADD += x11/libgstgl-x11.la
gstgl_gir_headers += x11/gstgldisplay_x11.h
gstgl_gir_sources += x11/gstgldisplay_x11.c
endif

if HAVE_WINDOW_WAYLAND
SUBDIRS += wayland
libgstgl_@GST_API_VERSION@_la_LIBADD += wayland/libgstgl-wayland.la
gstgl_gir_headers += wayland/gstgldisplay_wayland.h
gstgl_gir_sources += wayland/gstgldisplay_wayland.c
endif

if HAVE_WINDOW_DISPMANX
SUBDIRS += dispmanx
libgstgl_@GST_API_VERSION@_la_LIBADD += dispmanx/libgstgl-dispmanx.la
endif

if HAVE_WINDOW_ANDROID
SUBDIRS += android
libgstgl_@GST_API_VERSION@_la_LIBADD += android/libgstgl-android.la
endif

if HAVE_WINDOW_EAGL
SUBDIRS += eagl
libgstgl_@GST_API_VERSION@_la_LIBADD += eagl/libgstgl-eagl.la
endif

if HAVE_WINDOW_VIV_FB
SUBDIRS += viv-fb
libgstgl_@GST_API_VERSION@_la_LIBADD += viv-fb/libgstgl-viv-fb.la
endif

if HAVE_WINDOW_GBM
SUBDIRS += gbm
libgstgl_@GST_API_VERSION@_la_LIBADD += gbm/libgstgl-gbm.la
endif

if USE_EGL
SUBDIRS += egl
libgstgl_@GST_API_VERSION@_la_LIBADD += egl/libgstgl-egl.la
gstgl_gir_headers += egl/gstgldisplay_egl.h
gstgl_gir_sources += egl/gstgldisplay_egl.c
endif

configexecincludedir = $(libdir)/gstreamer-@GST_API_VERSION@/include/gst/gl
nodist_configexecinclude_HEADERS = $(built_sys_header_configure)

libgstgl_@GST_API_VERSION@_la_CFLAGS = \
	-DGST_EXPORTS \
	$(GST_PLUGINS_BASE_CFLAGS) \
	$(GST_BASE_CFLAGS) \
	$(GST_CFLAGS) \
	$(GL_CFLAGS)

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

# DISTCLEANFILES is for files generated by configure
DISTCLEANFILES = $(built_sys_header_configure)

if HAVE_INTROSPECTION
BUILT_GIRSOURCES = GstGL-@GST_API_VERSION@.gir

gir_headers=$(patsubst %,$(srcdir)/%, $(gstgl_gir_headers))
gir_sources=$(patsubst %,$(srcdir)/%, $(gstgl_gir_sources))

GstGL-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstgl-@GST_API_VERSION@.la
	$(AM_V_GEN)PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" GI_SCANNER_DISABLE_CACHE=yes\
		GST_PLUGIN_SYSTEM_PATH_1_0="" GST_PLUGIN_PATH_1_0="" GST_REGISTRY_UPDATE=no \
		CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" CC="$(CC)" PKG_CONFIG="$(PKG_CONFIG)" DLLTOOL="$(DLLTOOL)" \
		$(INTROSPECTION_SCANNER) -v --namespace GstGL \
		--nsversion=@GST_API_VERSION@ \
		--identifier-prefix=Gst \
		--symbol-prefix=gst \
		--warn-all \
		--c-include "gst/gl/gl.h" \
		-I$(top_srcdir)/gst-libs \
		-I$(top_builddir)/gst-libs \
		$(GST_PLUGINS_BASE_CFLAGS) \
		$(GL_CFLAGS) \
		--add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
		--add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
		--add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-video-@GST_API_VERSION@` \
		--library=libgstgl-@GST_API_VERSION@.la \
		--include=Gst-@GST_API_VERSION@ \
		--include=GstBase-@GST_API_VERSION@ \
		--include=GstVideo-@GST_API_VERSION@ \
		--libtool="$(top_builddir)/libtool" \
		--pkg gstreamer-@GST_API_VERSION@ \
		--pkg gstreamer-base-@GST_API_VERSION@ \
		--pkg gstreamer-video-@GST_API_VERSION@ \
		--pkg-export gstreamer-gl-@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)PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" \
		$(INTROSPECTION_COMPILER) \
		--includedir=$(srcdir) \
		--includedir=$(builddir) \
		--includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-@GST_API_VERSION@` \
		--includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-@GST_API_VERSION@` \
		--includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-video-@GST_API_VERSION@` \
		$(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)

CLEANFILES = $(BUILT_GIRSOURCES) $(typelibs_DATA)
endif
