| ####################################################################### | |
| # Makefile for php test-suite | |
| ####################################################################### | |
| LANGUAGE = php | |
| SCRIPTSUFFIX = _runme.php | |
| HAVE_CXX11 = @HAVE_CXX11@ | |
| HAVE_CXX14 = @HAVE_CXX14@ | |
| HAVE_CXX17 = @HAVE_CXX17@ | |
| HAVE_CXX20 = @HAVE_CXX20@ | |
| HAVE_CXX23 = @HAVE_CXX23@ | |
| HAVE_CXX26 = @HAVE_CXX26@ | |
| srcdir = @srcdir@ | |
| top_srcdir = @top_srcdir@ | |
| top_builddir = @top_builddir@ | |
| CPP_TEST_CASES += \ | |
| callback \ | |
| director_stl \ | |
| exception_partial_info \ | |
| li_cdata_carrays_cpp \ | |
| li_factory \ | |
| php_iterator \ | |
| php_namewarn_rename \ | |
| php_pragma \ | |
| prefix \ | |
| C_TEST_CASES += \ | |
| li_cdata_carrays \ | |
| multivalue \ | |
| MULTI_CPP_TEST_CASES += \ | |
| import_callback \ | |
| include $(srcdir)/../common.mk | |
| # Overridden variables here | |
| TARGETPREFIX =# Should be php_ for Windows, empty otherwise | |
| # Ensure testsuite remains free from SWIG warnings. | |
| SWIGOPT += -Werror | |
| # Custom tests - tests with additional commandline options | |
| prefix.cpptest: SWIGOPT += -prefix Project | |
| # write out tests without a _runme.php | |
| missingcpptests: | |
| for test in $(CPP_TEST_CASES) ; do test -f $${test}_runme.php || echo $${test}; done | |
| missingctests: | |
| 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) | |
| # Trying to load the modules for imports.multicpptest fails with: | |
| # | |
| # Warning: Function registration failed - duplicate name - global_test in Unknown on line 0 | |
| # Segmentation fault | |
| # | |
| # This was previously hidden because we didn't even try to load the modules for | |
| # .multicpptest testcases, so for now just do the parts of the test we did | |
| # before. FIXME: Fix this! | |
| %.multicpptest: | |
| $(setup) | |
| +$(swig_and_compile_multi_cpp) | |
| +[ "$*" = "imports" ] || $(run_multi_testcase) | |
| # Smart target | |
| %.test: | |
| @echo ' $(C_TEST_CASES) '|grep -F -v ' $* ' >/dev/null ||\ | |
| $(MAKE) $*.ctest | |
| @echo ' $(CPP_TEST_CASES) '|grep -F -v ' $* ' >/dev/null ||\ | |
| $(MAKE) $*.cpptest | |
| @echo ' $(MULTI_CPP_TEST_CASES) '|grep -F -v ' $* ' >/dev/null ||\ | |
| $(MAKE) $*.multicpptest | |
| # Runs the testcase. Tries to run testcase_runme.php, and if that's not found, | |
| # at least test that the module loads without errors. | |
| run_testcase = \ | |
| if [ -f $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) ]; then \ | |
| $(MAKE) -f $(top_builddir)/$(EXAMPLES)/Makefile PHP_EXTENSION=$(TARGETPREFIX)$*@PHP_SO@ PHP_SCRIPT=$(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) RUNTOOL='$(RUNTOOL)' php_run; \ | |
| else \ | |
| $(MAKE) -f $(top_builddir)/$(EXAMPLES)/Makefile PHP_EXTENSION=$(TARGETPREFIX)$*@PHP_SO@ PHP_SCRIPT= RUNTOOL='$(RUNTOOL)' php_run; \ | |
| fi | |
| # Runs a multicpptest testcase. Tries to run testcase_runme.php, and if that's | |
| # not found, at least test that the modules load without errors. | |
| run_multi_testcase = \ | |
| if [ -f $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) ]; then \ | |
| $(MAKE) -f $(top_builddir)/$(EXAMPLES)/Makefile PHP_EXTENSION_LIST=$(top_srcdir)/$(EXAMPLES)/$(TEST_SUITE)/$*.list PHP_SCRIPT=$(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) RUNTOOL='$(RUNTOOL)' php_run_multi; \ | |
| else \ | |
| $(MAKE) -f $(top_builddir)/$(EXAMPLES)/Makefile PHP_EXTENSION_LIST=$(top_srcdir)/$(EXAMPLES)/$(TEST_SUITE)/$*.list PHP_SCRIPT= RUNTOOL='$(RUNTOOL)' php_run_multi; \ | |
| fi | |
| # Clean: remove the generated PHP-specific files | |
| %.clean: | |
| @rm -f php_$*.h | |
| clean: | |
| $(MAKE) -f $(top_builddir)/$(EXAMPLES)/Makefile SRCDIR='$(SRCDIR)' php_clean | |
| rm -f clientdata_prop_a.php clientdata_prop_b.php php_clientdata_prop_a.h php_clientdata_prop_b.h | |
| rm -f php_import_callback_x.h php_import_callback_y.h | |
| rm -f import_share_a.php import_share_b.php import_share_c.php php_import_share_a.h php_import_share_b.h php_import_share_c.h | |
| rm -f import_stl_a.php import_stl_b.php import_stl_c.php php_import_stl_a.h php_import_stl_b.h php_import_stl_c.h | |
| rm -f imports_a.php imports_b.php php_imports_a.h php_imports_b.h | |
| rm -f mod_a.php mod_b.php php_mod_a.h php_mod_b.h | |
| rm -f multi_import_a.php multi_import_b.php multi_import_d.php php_multi_import_a.h php_multi_import_b.h php_multi_import_d.h | |
| rm -f packageoption_a.php packageoption_b.php packageoption_c.php php_packageoption_a.h php_packageoption_b.h php_packageoption_c.h | |
| rm -f template_typedef_cplx2.php php_template_typedef_cplx2.h |