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

NULL =

noinst_PROGRAMS = test-conformance

test_conformance_SOURCES = 		\
	test-conform-main.c 		\
	test-conform-common.c 		\
	test-conform-common.h 		\
	\
	test-timeline-interpolate.c 	\
	test-timeline-rewind.c 		\
	test-timeline.c 		\
	test-cogl-vertex-buffer-contiguous.c \
	test-cogl-vertex-buffer-interleved.c \
	test-cogl-vertex-buffer-mutability.c \
	test-cogl-fixed.c 		\
	test-cogl-backface-culling.c 	\
	test-cogl-npot-texture.c        \
	test-cogl-blend-strings.c	\
	test-cogl-premult.c		\
	test-cogl-materials.c		\
	test-cogl-viewport.c		\
	test-cogl-offscreen.c		\
	test-cogl-readpixels.c		\
	test-cogl-multitexture.c        \
	test-cogl-texture-mipmaps.c     \
	test-cogl-pixel-buffer.c	\
	test-path.c 			\
	test-pick.c 			\
	test-clutter-rectangle.c 	\
	test-actor-invariants.c 	\
	test-paint-opacity.c 		\
	test-binding-pool.c		\
        test-clutter-text.c             \
        test-text-cache.c               \
	test-anchors.c                  \
	test-model.c			\
	test-color.c			\
	test-clutter-units.c		\
	test-group.c			\
	test-actor-size.c		\
	test-texture-fbo.c		\
	test-cogl-sub-texture.c         \
	test-script-parser.c		\
	test-actor-destroy.c		\
	test-behaviours.c		\
	test-animator.c			\
        $(NULL)

# For convenience, this provides a way to easily run individual unit tests:
.PHONY: wrappers clean-wrappers

UNIT_TESTS = `./test-conformance -l -m thorough | $(GREP) '^/'`

wrappers: stamp-test-conformance
	@true
stamp-test-conformance: test-conformance$(EXEEXT)
	@for i in $(UNIT_TESTS); \
	do \
		unit=`basename $$i | sed -e s/_/-/g`; \
		echo "  GEN    $$unit"; \
		( echo "#!/bin/sh" ; echo "$(top_srcdir)/tests/conform/test-launcher.sh '$$i'" ) > $$unit$(EXEEXT) ; \
		chmod +x $$unit$(EXEEXT); \
	done \
	&& echo timestamp > $(@F)

clean-wrappers:
	@for i in $(UNIT_TESTS); \
	do \
		unit=`basename $$i | sed -e s/_/-/g`; \
		echo "  RM     $$unit"; \
		rm -f $$unit$(EXEEXT) ; \
	done \
	&& rm -f stamp-test-conformance

# NB: BUILT_SOURCES here a misnomer. We aren't building source, just inserting
# a phony rule that will generate symlink scripts for running individual tests
BUILT_SOURCES = wrappers

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

test_conformance_CPPFLAGS = \
	-DG_DISABLE_SINGLE_INCLUDES \
	-DCLUTTER_DISABLE_DEPRECATED \
	-DTESTS_DATADIR=\""$(top_srcdir)/tests/data"\"

test_conformance_CFLAGS = -g $(CLUTTER_CFLAGS) $(MAINTAINER_CFLAGS)

test_conformance_LDADD = $(top_builddir)/clutter/libclutter-@CLUTTER_WINSYS@-@CLUTTER_API_VERSION@.la $(CLUTTER_LIBS)

test_conformance_LDFLAGS = -rdynamic

.PHONY: test
.PHONY: test-report test-report-normal test-report-disable-npots
.PHONY: full-report full-report-normal full-report-disable-npots
.PHONY: full-report-generate

test:
	@gtester -o=test-conformance-results.xml ./test-conformance

test-verbose:
	@gtester --verbose -o=test-conformance-result.xml ./test-conformance

test-report-normal:
	@gtester -o=test-conformance-results.xml -k ./test-conformance \
	  && ( gtester-report test-conformance-results.xml \
	      | sed 's/>GTester Unit Test Report</>GTester Unit Test Report (normal)</' \
	      > test-conformance-results.html ) \
	  && gnome-open ./test-conformance-results.html

test-report-disable-npots:
	@../tools/disable-npots.sh \
	  gtester -o=test-conformance-results-dn.xml -k ./test-conformance \
	  && ( gtester-report test-conformance-results-dn.xml \
	      | sed 's/>GTester Unit Test Report</>GTester Unit Test Report (no NPOTs)</' \
	      > test-conformance-results-dn.html ) \
	  && gnome-open ./test-conformance-results-dn.html

test-report: test-report-normal

full-report-normal:
	@gtester -o=test-conformance-results.xml -k -m=slow ./test-conformance \
	  && ( gtester-report test-conformance-results.xml \
	      | sed 's/>GTester Unit Test Report</>GTester Unit Test Report (normal)</' \
	      > test-conformance-results.html )

full-report-disable-npots:
	@../tools/disable-npots.sh \
	  gtester -o=test-conformance-results-dn.xml -k -m=slow ./test-conformance \
	  && ( gtester-report test-conformance-results-dn.xml \
	      | sed 's/>GTester Unit Test Report</>GTester Unit Test Report (no NPOTs)</' \
	      > test-conformance-results-dn.html )

XML_REPORTS = test-conformance-results.xml
HTML_REPORTS = test-conformance-results.html

if HAVE_LIBDL
XML_REPORTS += test-conformance-results-dn.xml
HTML_REPORTS += test-conformance-results-dn.html
full-report-generate: full-report-normal full-report-disable-npots

else
full-report-generate: full-report-normal

endif

full-report: full-report-generate
	@for x in $(HTML_REPORTS); do \
		gnome-open "$$x"; \
	done

EXTRA_DIST = ADDING_NEW_TESTS test-launcher.sh

# we override the clean-generic target to clean up the wrappers so
# we cannot use CLEANFILES
clean-generic: clean-wrappers
	$(QUIET_RM)rm -f $(XML_REPORTS) $(HTML_REPORTS)