Under %feature("php:type", "compat") we don't generate return type
declaration for virtual methods if directors are enabled for that class.
However if a base class of the class has a method of the same name which
isn't directed this was still getting a return type declaration which
caused PHP to give an error when it tried to load the module.
Now we detect this situation and suppress the base class method's
return type declaration too.
Re-enable testcase director_redefined which now works again (it was
failing under PHP8 due to this issue).
See #2151
92 lines
3 KiB
Makefile
92 lines
3 KiB
Makefile
#######################################################################
|
|
# Makefile for php test-suite
|
|
#######################################################################
|
|
|
|
LANGUAGE = php
|
|
SCRIPTSUFFIX = _runme.php
|
|
|
|
HAVE_CXX11 = @HAVE_CXX11@
|
|
srcdir = @srcdir@
|
|
top_srcdir = @top_srcdir@
|
|
top_builddir = @top_builddir@
|
|
|
|
CPP_TEST_CASES += \
|
|
callback \
|
|
director_stl \
|
|
exception_partial_info \
|
|
inout \
|
|
li_cdata_carrays_cpp \
|
|
li_factory \
|
|
php_iterator \
|
|
php_namewarn_rename \
|
|
php_pragma \
|
|
prefix \
|
|
|
|
C_TEST_CASES += \
|
|
li_cdata_carrays \
|
|
multivalue \
|
|
|
|
include $(srcdir)/../common.mk
|
|
|
|
# Overridden variables here
|
|
TARGETPREFIX =# Should be php_ for Windows, empty otherwise
|
|
|
|
# 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)
|
|
|
|
%.multicpptest:
|
|
$(setup)
|
|
+$(swig_and_compile_multi_cpp)
|
|
+$(run_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, except for multicpptests.
|
|
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; \
|
|
elif [ ! -f $(top_srcdir)/$(EXAMPLES)/$(TEST_SUITE)/$*.list ]; then \
|
|
$(MAKE) -f $(top_builddir)/$(EXAMPLES)/Makefile PHP_EXTENSION=$(TARGETPREFIX)$*@PHP_SO@ PHP_SCRIPT= RUNTOOL='$(RUNTOOL)' php_run; \
|
|
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 import_stl_a.php import_stl_b.php php_import_stl_a.h php_import_stl_b.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
|