#######################################################################
# Makefile for php test-suite
#######################################################################

LANGUAGE     = php
SCRIPTSUFFIX = _runme.php
srcdir       = .
top_srcdir   = ../../..
top_builddir = ../../..

#CPP_TEST_CASES += \
#	php_namewarn_rename \

include $(srcdir)/../common.mk

# Overridden variables here
TARGETPREFIX =# Should be php_ for Windows, empty otherwise

makecpptests:
	@bash -ec 'for test in $(CPP_TEST_CASES) ; do $(MAKE) clean && $(MAKE) $${test}.cpptest; done'

maketests: makecpptests makectests

makectests:
	@bash -ec 'for test in $(C_TEST_CASES) ; do $($(MAKE)) clean && $(MAKE) $${test}.cpptest; done'

runcpptests:
	@bash -ec 'for test in $(CPP_TEST_CASES) ; do if [ -f $${test}_runme.php ] ; then $(MAKE) clean && $(MAKE) $${test}.cpptest; fi ; done'

runctests:
	@bash -ec 'for test in $(C_TEST_CASES) ; do if [ -f $${test}_runme.php ] ; then $(MAKE) clean && $(MAKE) $${test}.cpptest; fi; done'

runtests: runcpptests runctests

# write out tests without a _runme.php
missingcpptests:
	@bash -ec 'for test in $(CPP_TEST_CASES) ; do test -f $${test}_runme.php || echo $${test}; done'

missingctests:
	@bash -ec 'for test in $(C_TEST_CASES) ; do test -f $${test}_runme.php || echo $${test}; done'

missingtests: missingcpptests missingctests

# Rules for the different types of tests
%.cpptest: 
	$(setup)
	+$(swig_and_compile_cpp)
	+$(run_testcase)

%.ctest:
	$(setup)
	+$(swig_and_compile_c)
	+$(run_testcase)

%.multicpptest: 
	$(setup)
	+$(swig_and_compile_multi_cpp)
	+$(run_testcase)

# Runs the testcase. A testcase is only run if
# a file is found which has _runme.php appended after the testcase name.
run_testcase = \
	if [ -f $(srcdir)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) ]; then (	  \
	  $(MAKE) -f $(top_builddir)/$(EXAMPLES)/Makefile PHPSCRIPT=$(srcdir)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) RUNTOOL=$(RUNTOOL) php_run;) \
	fi;

# Clean: remove the generated .php file
%.clean:
	@rm -f $*.php;

clean:
	$(MAKE) -f $(top_builddir)/$(EXAMPLES)/Makefile php_clean
