include $(top_srcdir)/build/autotools/Makefile.am.silent

NULL =

SUBDIRS = cogl $(CLUTTER_WINSYS_BASE) $(CLUTTER_WINSYS)

if LOCAL_JSON_GLIB
SUBDIRS += json
clutter_json_include = -I$(top_srcdir)/clutter/json
clutter_json_dep = json/libclutter-json.la
clutter_json_libadd = $(top_builddir)/clutter/json/libclutter-json.la
clutter_json_gir = ClutterJson-@CLUTTER_API_VERSION@.gir
endif

DIST_SUBDIRS = glx eglx eglnative cogl json osx x11 win32 fruity

# common definitions
CLEANFILES =
DISTCLEANFILES =
EXTRA_DIST =
BUILT_SOURCES =

if SUPPORT_WIN32

# Ideally this resources stuff would go in win32/ but libtool doesn't
# seem to pass on the -Wl argument when linking a convenience library
# so we need to do it here as part of linking the dll. libtool also
# won't let you link against the .o directly because it wants you to
# link against libtool objects for dynamic libraries.
.rc.o :
	$(WINDRES) -I$(srcdir)/win32 $< $@

win32/resources.o : $(srcdir)/win32/invisible-cursor.cur

win32_resources = win32/resources.o
win32_resources_ldflag = -Wl,win32/resources.o

endif # SUPPORT_WIN32

INCLUDES = \
	-I$(top_srcdir) 				\
	-I$(top_srcdir)/clutter/cogl			\
	-I$(top_srcdir)/clutter/cogl/pango		\
	-I$(top_srcdir)/clutter				\
	$(clutter_json_include)				\
	-I$(top_builddir)				\
	-I$(top_builddir)/clutter			\
	-I$(top_builddir)/clutter/cogl			\
	$(NULL)

AM_CPPFLAGS = \
	-DCLUTTER_PREFIX=\""$(prefix)"\"	\
	-DCLUTTER_LIBDIR=\""$(libdir)"\"	\
	-DCLUTTER_DATADIR=\""$(datadir)"\"	\
	-DCLUTTER_COMPILATION=1			\
	-DCOGL_DISABLE_DEPRECATED		\
	-DCOGL_ENABLE_EXPERIMENTAL_API		\
	-DG_DISABLE_DEPRECATED 			\
	-DG_DISABLE_SINGLE_INCLUDES		\
	-DG_LOG_DOMAIN=\"Clutter\" 		\
	$(CLUTTER_DEBUG_CFLAGS)			\
	$(NULL)

AM_CFLAGS = $(CLUTTER_CFLAGS) $(MAINTAINER_CFLAGS) $(GCOV_CFLAGS)

# please, keep this sorted alphabetically
source_h =					\
	$(srcdir)/clutter-action.h		\
	$(srcdir)/clutter-actor-meta.h		\
	$(srcdir)/clutter-actor.h		\
	$(srcdir)/clutter-align-constraint.h	\
	$(srcdir)/clutter-alpha.h		\
	$(srcdir)/clutter-animatable.h          \
	$(srcdir)/clutter-animation.h           \
	$(srcdir)/clutter-animator.h		\
	$(srcdir)/clutter-backend.h		\
	$(srcdir)/clutter-behaviour.h     	\
	$(srcdir)/clutter-behaviour-depth.h 	\
	$(srcdir)/clutter-behaviour-ellipse.h 	\
	$(srcdir)/clutter-behaviour-opacity.h 	\
	$(srcdir)/clutter-behaviour-path.h 	\
	$(srcdir)/clutter-behaviour-rotate.h 	\
	$(srcdir)/clutter-behaviour-scale.h 	\
	$(srcdir)/clutter-bind-constraint.h	\
	$(srcdir)/clutter-binding-pool.h 	\
	$(srcdir)/clutter-bin-layout.h		\
	$(srcdir)/clutter-blur-effect.h		\
	$(srcdir)/clutter-box.h			\
	$(srcdir)/clutter-box-layout.h		\
	$(srcdir)/clutter-cairo-texture.h	\
	$(srcdir)/clutter-child-meta.h		\
	$(srcdir)/clutter-click-action.h	\
	$(srcdir)/clutter-clone.h		\
	$(srcdir)/clutter-color.h		\
	$(srcdir)/clutter-colorize-effect.h	\
	$(srcdir)/clutter-constraint.h		\
	$(srcdir)/clutter-container.h		\
	$(srcdir)/clutter-deform-effect.h	\
	$(srcdir)/clutter-deprecated.h		\
	$(srcdir)/clutter-desaturate-effect.h	\
	$(srcdir)/clutter-device-manager.h	\
	$(srcdir)/clutter-drag-action.h		\
	$(srcdir)/clutter-effect.h		\
	$(srcdir)/clutter-event.h 		\
	$(srcdir)/clutter-feature.h 		\
	$(srcdir)/clutter-fixed.h 		\
	$(srcdir)/clutter-fixed-layout.h	\
	$(srcdir)/clutter-flow-layout.h		\
	$(srcdir)/clutter-frame-source.h        \
	$(srcdir)/clutter-group.h 		\
	$(srcdir)/clutter-input-device.h	\
        $(srcdir)/clutter-interval.h            \
	$(srcdir)/clutter-keysyms.h 		\
	$(srcdir)/clutter-layout-manager.h	\
	$(srcdir)/clutter-layout-meta.h		\
	$(srcdir)/clutter-list-model.h		\
	$(srcdir)/clutter-main.h		\
	$(srcdir)/clutter-media.h		\
	$(srcdir)/clutter-model.h		\
	$(srcdir)/clutter-offscreen-effect.h	\
	$(srcdir)/clutter-page-turn-effect.h	\
	$(srcdir)/clutter-path.h		\
	$(srcdir)/clutter-rectangle.h		\
	$(srcdir)/clutter-score.h 		\
	$(srcdir)/clutter-script.h		\
	$(srcdir)/clutter-scriptable.h		\
	$(srcdir)/clutter-shader.h		\
	$(srcdir)/clutter-shader-effect.h	\
	$(srcdir)/clutter-shader-types.h	\
	$(srcdir)/clutter-stage.h 		\
	$(srcdir)/clutter-stage-manager.h	\
	$(srcdir)/clutter-stage-window.h	\
	$(srcdir)/clutter-state.h		\
	$(srcdir)/clutter-texture.h 		\
        $(srcdir)/clutter-text.h                \
	$(srcdir)/clutter-timeline.h 		\
	$(srcdir)/clutter-timeout-pool.h 	\
	$(srcdir)/clutter-types.h		\
	$(srcdir)/clutter-units.h 		\
	$(srcdir)/clutter-util.h 		\
	$(NULL)

built_source_h = \
	clutter-enum-types.h			\
	clutter-marshal.h

# glib-genmarshal rules
glib_marshal_list = clutter-marshal.list
glib_marshal_prefix = _clutter_marshal
include $(top_srcdir)/build/autotools/Makefile.am.marshal

# glib-mkenums rules
glib_enum_h = clutter-enum-types.h
glib_enum_c = clutter-enum-types.c
glib_enum_headers = $(source_h)
include $(top_srcdir)/build/autotools/Makefile.am.enums

# please, keep this sorted alphabetically
source_c = \
	$(srcdir)/clutter-action.c		\
	$(srcdir)/clutter-actor-meta.c		\
	$(srcdir)/clutter-actor.c		\
	$(srcdir)/clutter-align-constraint.c	\
	$(srcdir)/clutter-alpha.c 		\
	$(srcdir)/clutter-animatable.c		\
	$(srcdir)/clutter-animation.c		\
	$(srcdir)/clutter-animator.c		\
	$(srcdir)/clutter-backend.c		\
	$(srcdir)/clutter-behaviour.c 		\
	$(srcdir)/clutter-behaviour-depth.c	\
	$(srcdir)/clutter-behaviour-ellipse.c	\
	$(srcdir)/clutter-behaviour-opacity.c	\
	$(srcdir)/clutter-behaviour-path.c	\
	$(srcdir)/clutter-behaviour-rotate.c	\
	$(srcdir)/clutter-behaviour-scale.c	\
	$(srcdir)/clutter-bezier.c		\
	$(srcdir)/clutter-bind-constraint.c	\
	$(srcdir)/clutter-binding-pool.c	\
	$(srcdir)/clutter-bin-layout.c		\
	$(srcdir)/clutter-blur-effect.c		\
	$(srcdir)/clutter-box.c			\
	$(srcdir)/clutter-box-layout.c		\
	$(srcdir)/clutter-cairo-texture.c       \
	$(srcdir)/clutter-child-meta.c		\
	$(srcdir)/clutter-click-action.c	\
	$(srcdir)/clutter-clone.c		\
	$(srcdir)/clutter-color.c 		\
	$(srcdir)/clutter-colorize-effect.c	\
	$(srcdir)/clutter-constraint.c		\
	$(srcdir)/clutter-container.c		\
	$(srcdir)/clutter-deform-effect.c	\
	$(srcdir)/clutter-desaturate-effect.c	\
	$(srcdir)/clutter-device-manager.c	\
	$(srcdir)/clutter-drag-action.c		\
	$(srcdir)/clutter-effect.c		\
	$(srcdir)/clutter-event.c 		\
	$(srcdir)/clutter-feature.c 		\
	$(srcdir)/clutter-fixed.c		\
	$(srcdir)/clutter-fixed-layout.c	\
	$(srcdir)/clutter-flow-layout.c		\
	$(srcdir)/clutter-frame-source.c	\
	$(srcdir)/clutter-group.c 		\
	$(srcdir)/clutter-input-device.c	\
	$(srcdir)/clutter-interval.c            \
	$(srcdir)/clutter-layout-manager.c	\
	$(srcdir)/clutter-layout-meta.c		\
	$(srcdir)/clutter-list-model.c		\
	$(srcdir)/clutter-main.c 		\
	$(srcdir)/clutter-master-clock.c	\
	$(srcdir)/clutter-media.c 		\
	$(srcdir)/clutter-model.c		\
	$(srcdir)/clutter-offscreen-effect.c	\
	$(srcdir)/clutter-page-turn-effect.c	\
	$(srcdir)/clutter-path.c		\
	$(srcdir)/clutter-rectangle.c 		\
	$(srcdir)/clutter-score.c 		\
	$(srcdir)/clutter-script.c		\
	$(srcdir)/clutter-script-parser.c	\
	$(srcdir)/clutter-scriptable.c		\
	$(srcdir)/clutter-shader.c		\
	$(srcdir)/clutter-shader-effect.c	\
	$(srcdir)/clutter-shader-types.c	\
	$(srcdir)/clutter-stage.c		\
	$(srcdir)/clutter-stage-manager.c	\
	$(srcdir)/clutter-stage-window.c	\
	$(srcdir)/clutter-state.c		\
	$(srcdir)/clutter-texture.c 		\
	$(srcdir)/clutter-text.c                \
	$(srcdir)/clutter-timeline.c 		\
	$(srcdir)/clutter-timeout-pool.c	\
	$(srcdir)/clutter-units.c		\
	$(srcdir)/clutter-util.c 		\
	$(NULL)

source_c_priv = \
	$(srcdir)/clutter-id-pool.c 		\
	$(srcdir)/clutter-profile.c		\
	$(srcdir)/clutter-timeout-interval.c    \
	$(NULL)

built_source_c = \
	clutter-enum-types.c			\
	clutter-marshal.c

source_h_priv = \
	$(srcdir)/clutter-actor-meta-private.h	\
	$(srcdir)/clutter-bezier.h		\
	$(srcdir)/clutter-debug.h 		\
	$(srcdir)/clutter-id-pool.h 		\
	$(srcdir)/clutter-keysyms-table.h	\
	$(srcdir)/clutter-master-clock.h	\
	$(srcdir)/clutter-model-private.h	\
	$(srcdir)/clutter-private.h 		\
	$(srcdir)/clutter-profile.h		\
	$(srcdir)/clutter-script-private.h	\
	$(srcdir)/clutter-timeout-interval.h    \
	$(NULL)

libclutter_@CLUTTER_WINSYS@_@CLUTTER_API_VERSION@_la_LIBADD = \
	$(CLUTTER_LIBS) \
	$(top_builddir)/clutter/cogl/cogl/libclutter-cogl.la \
	$(top_builddir)/clutter/cogl/pango/libcoglpango.la \
	$(top_builddir)/clutter/$(CLUTTER_WINSYS)/libclutter-$(CLUTTER_WINSYS).la \
	$(clutter_json_libadd) \
	$(CLUTTER_WINSYS_BASE_LIB)

libclutter_@CLUTTER_WINSYS@_@CLUTTER_API_VERSION@_la_DEPENDENCIES = \
	$(top_builddir)/clutter/cogl/cogl/libclutter-cogl.la \
	$(top_builddir)/clutter/cogl/pango/libcoglpango.la \
	$(top_builddir)/clutter/$(CLUTTER_WINSYS)/libclutter-$(CLUTTER_WINSYS).la \
	$(clutter_json_dep) \
	$(CLUTTER_WINSYS_BASE_LIB) \
	$(win32_resources)

libclutter_@CLUTTER_WINSYS@_@CLUTTER_API_VERSION@_la_SOURCES = \
	$(source_c) \
	$(source_h) \
	$(source_c_priv) \
	$(source_h_priv)

nodist_libclutter_@CLUTTER_WINSYS@_@CLUTTER_API_VERSION@_la_SOURCES = \
	$(built_source_c) \
	$(built_source_h)

libclutter_@CLUTTER_WINSYS@_@CLUTTER_API_VERSION@_la_LDFLAGS = \
	$(CLUTTER_LT_LDFLAGS) \
	$(GCOV_LDFLAGS) \
	-export-dynamic \
	-export-symbols-regex "^(clutter|cogl|json).*" \
	-rpath $(libdir) \
	$(win32_resources_ldflag) \
	$(NULL)

lib_LTLIBRARIES = $(CLUTTER_WINSYS_LIB)

EXTRA_LTLIBRARIES = libclutter-@CLUTTER_WINSYS@-@CLUTTER_API_VERSION@.la

clutterdir = $(includedir)/clutter-$(CLUTTER_API_VERSION)/clutter
clutter_HEADERS = \
	$(source_h) \
	$(top_srcdir)/clutter/clutter.h
nodist_clutter_HEADERS = \
	$(top_builddir)/clutter/clutter-json.h \
	$(top_builddir)/clutter/clutter-version.h \
	$(built_source_h)


DISTCLEANFILES += clutter-version.h
EXTRA_DIST += clutter-version.h.in

BUILT_GIRSOURCES =

if LOCAL_JSON_GLIB
json_gir_include_path=--add-include-path=json
json_gir_include=--include=ClutterJson-@CLUTTER_API_VERSION@
json_gir_pkg=

# If we are building it, ClutterJson gets the same handling as described
# for Cogl above
ClutterJson-@CLUTTER_API_VERSION@.gir: Clutter-@CLUTTER_API_VERSION@.gir json/ClutterJson-@CLUTTER_API_VERSION@.gir
	$(QUIET_GEN) \
	shlib=`sed -n 's/.*shared-library="\([^"]*\)".*/\1/p' < Clutter-@CLUTTER_API_VERSION@.gir` ; \
	sed "s/shared-library=\"[^\"]*\"/shared-library=\"$$shlib\"/"< json/ClutterJson-@CLUTTER_API_VERSION@.gir > $@

BUILT_GIRSOURCES += ClutterJson-@CLUTTER_API_VERSION@.gir
else
json_gir_include=--include=Json-1.0
json_gir_pkg=--pkg json-glib-1.0
endif # LOCAL_JSON_GLIB

if HAVE_INTROSPECTION
# We can't reference the list of COGL header files, since they are in a
# subdir Makefile.am, so just extract them from cogl.h instead. The doc
# comments for COGL are in the headers, so we don't need the source files.

Clutter-@CLUTTER_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libclutter-@CLUTTER_WINSYS@-@CLUTTER_API_VERSION@.la
	$(QUIET_GEN)$(INTROSPECTION_SCANNER) -v \
		--namespace Clutter --nsversion=@CLUTTER_API_VERSION@ \
		$(INCLUDES) \
		$(AM_CPPFLAGS) \
		--add-include-path=cogl/cogl \
		$(json_gir_include_path) \
		--c-include='clutter/clutter.h' \
		--include=GL-1.0 \
		--include=GObject-2.0 \
		--include=Atk-1.0 \
		--include=Pango-1.0 \
		--include=PangoCairo-1.0 \
		--include=Cogl-@CLUTTER_API_VERSION@ \
		$(json_gir_include) \
		--library=libclutter-@CLUTTER_WINSYS@-@CLUTTER_API_VERSION@.la \
		--libtool="$(top_builddir)/libtool" \
	        --pkg gobject-2.0 \
		$(json_gir_pkg) \
		--pkg atk \
	        --pkg pango \
	        --pkg pangocairo \
	        --output $@ \
		$(clutter_HEADERS) \
		$(nodist_clutter_HEADERS) \
		$(source_c) \
		$(built_source_c)

BUILT_GIRSOURCES += Clutter-@CLUTTER_API_VERSION@.gir

# ClutterJson.gir and Cogl.gir are used included into Clutter.gir, so need
# to be built before the typelib is generated
Clutter-@CLUTTER_API_VERSION@.typelib: $(clutter_json_gir) Cogl-@CLUTTER_API_VERSION@.gir

# We build Cogl.gir in the cogl/ subdir, but it needs to reference the shared
# library that it's built into, so we delay compiling the gir into typelib
# until after we've built the shared library. To create the final Cogl.gir
# that we compile and install, we transfer the shared-library="" line from
# Clutter.gir to Cogl.gir
Cogl-@CLUTTER_API_VERSION@.gir: Clutter-@CLUTTER_API_VERSION@.gir cogl/cogl/Cogl-@CLUTTER_API_VERSION@.gir
	$(QUIET_GEN) \
	shlib=`sed -n 's/.*shared-library="\([^"]*\)".*/\1/p' < Clutter-@CLUTTER_API_VERSION@.gir` ; \
	sed "s/shared-library=\"[^\"]*\"/shared-library=\"$$shlib\"/"< cogl/cogl/Cogl-@CLUTTER_API_VERSION@.gir > $@

BUILT_GIRSOURCES += Cogl-@CLUTTER_API_VERSION@.gir

# 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)
	$(QUIET_GEN) \
	LD_LIBRARY_PATH=.libs$${LD_LIBRARY_PATH:+:$$LD_LIBRARY_PATH} \
	$(INTROSPECTION_COMPILER) \
		--includedir=$(srcdir) \
		--includedir=. \
		$(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)

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

gcov_sources = $(source_c)
include $(top_srcdir)/build/autotools/Makefile.am.gcov