| ####################################################################### |
| # Makefile for D test-suite |
| ####################################################################### |
| |
| LANGUAGE = d |
| |
| HAVE_CXX11 = @HAVE_CXX11@ |
| HAVE_CXX14 = @HAVE_CXX14@ |
| HAVE_CXX17 = @HAVE_CXX17@ |
| HAVE_CXX20 = @HAVE_CXX20@ |
| srcdir = @srcdir@ |
| top_srcdir = ../@top_srcdir@ |
| top_builddir = ../@top_builddir@ |
| |
| CPP_TEST_CASES = \ |
| d_nativepointers \ |
| exception_partial_info |
| |
| CPP11_TEST_CASES = \ |
| cpp11_shared_ptr_const \ |
| cpp11_shared_ptr_crtp_upcast \ |
| cpp11_shared_ptr_nullptr_in_containers \ |
| cpp11_shared_ptr_overload \ |
| cpp11_shared_ptr_upcast \ |
| |
| # "D classes support the single inheritance paradigm" https://dlang.org/spec/class.html |
| FAILING_CPP_TESTS += \ |
| using_composition \ |
| using_extend \ |
| |
| # Build error due to 2 classes with same name. |
| FAILING_CPP_TESTS += \ |
| director_nspace_director_name_collision \ |
| |
| # Swig D do not forward 'override' of functions through multiple swig run. |
| # You should compile your files at once. |
| FAILING_MULTI_CPP_TESTS += \ |
| imports \ |
| packageoption \ |
| |
| # TODO: probably a bug |
| # This test uses a struct extended property for a struct size. |
| # Using the same name for the struct and the struct type confuse the Swig D. |
| # It create a wrong property function in the C wrap code. |
| # Using different name for struct or struct type remove the function completly, |
| # which also implies on a bug. |
| # We should use proper testing with a run me script. |
| # To verify, the extended property actually works in run-time. |
| FAILING_C_TESTS += \ |
| nested_extend_c \ |
| |
| include $(srcdir)/../common.mk |
| |
| # Overridden variables here |
| SRCDIR = ../$(srcdir)/ |
| TARGETSUFFIX = _wrap |
| SWIGOPT+=-splitproxy -package $* |
| |
| # Rules for the different types of tests |
| %.cpptest: |
| $(setup) |
| +(cd $*.2 && $(swig_and_compile_cpp)) |
| +$(run_testcase) |
| |
| %.ctest: |
| $(setup) |
| +(cd $*.2 && $(swig_and_compile_c)) |
| +$(run_testcase) |
| |
| %.multicpptest: |
| $(setup) |
| +(cd $*.2 && $(swig_and_compile_multi_cpp)) |
| +$(run_testcase) |
| |
| # Makes a directory for the testcase if it does not exist |
| setup = \ |
| if [ -f $(SCRIPTDIR)/$(SCRIPTPREFIX)$*_runme.2.d ]; then \ |
| echo "$(ACTION)ing $(LANGUAGE) testcase $* (with run test)" ; \ |
| else \ |
| echo "$(ACTION)ing $(LANGUAGE) testcase $*" ; \ |
| fi; \ |
| if [ ! -d $*.2 ]; then \ |
| mkdir $*.2; \ |
| fi; \ |
| if [ ! -d $*.2/$* ]; then \ |
| mkdir $*.2/$*; \ |
| fi |
| |
| # Compiles D files then runs the testcase. A testcase is only run if |
| # a file is found which has _runme.d appended after the testcase name. |
| run_testcase = \ |
| if [ -f $(SCRIPTDIR)/$(SCRIPTPREFIX)$*_runme.2.d ]; then \ |
| cd $*.2 && \ |
| $(MAKE) -f $(top_builddir)/$(EXAMPLES)/Makefile \ |
| DFLAGS='-of$*_runme' \ |
| DSRCS='../$(SCRIPTDIR)/$(SCRIPTPREFIX)$*_runme.2.d `find $* -name *.d`' d_compile && \ |
| env LD_LIBRARY_PATH=".:$$LD_LIBRARY_PATH" $(RUNTOOL) ./$*_runme; \ |
| else \ |
| cd $*.2 && \ |
| $(MAKE) -f $(top_builddir)/$(EXAMPLES)/Makefile \ |
| DFLAGS='-c' \ |
| DSRCS='`find $* -name *.d`' d_compile && cd .. ; \ |
| fi |
| |
| # Clean: remove testcase directories |
| %.clean: |
| @if [ -d $*.2 ]; then \ |
| rm -rf $*.2; \ |
| fi |