#######################################################################
# Makefile for ruby test-suite
#######################################################################

LANGUAGE     = ruby
RUBY         = @RUBY@
SCRIPTSUFFIX = _runme.rb

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@

FAILING_CPP_TESTS = \
	cpp17_map_no_default_ctor \

CPP_TEST_CASES = \
	li_cstring \
	li_factory \
	li_std_containers_int \
	li_std_functors \
	li_std_list \
	li_std_multimap \
	li_std_pair_lang_object \
	li_std_queue \
	li_std_set \
	li_std_stack \
	li_std_wstring_inherit \
	primitive_types \
	ruby_alias_method \
	ruby_global_immutable_vars_cpp \
	ruby_keywords \
	ruby_minherit_shared_ptr \
	ruby_naming \
	ruby_rdata \
	ruby_track_objects \
	ruby_track_objects_directors \
	std_containers \
#	ruby_li_std_speed \
#	stl_new \

CPP11_TEST_CASES = \
	cpp11_hash_tables \
	cpp11_shared_ptr_const \
	cpp11_shared_ptr_crtp_upcast \
	cpp11_shared_ptr_nullptr_in_containers \
	cpp11_shared_ptr_overload \
	cpp11_shared_ptr_upcast \
	cpp11_std_unordered_map \
	cpp11_std_unordered_multimap \
	cpp11_std_unordered_multiset \
	cpp11_std_unordered_set \

C_TEST_CASES += \
	li_cstring \
	ruby_alias_global_function \
	ruby_alias_module_function \
	ruby_global_immutable_vars \
	ruby_manual_proxy \

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

# Overridden variables here
SWIGOPT += -w801 -noautorename -features autodoc=4

# Custom tests - tests with additional commandline options
ruby_alias_global_function.ctest: SWIGOPT += -globalmodule
ruby_global_immutable_vars.ctest: SWIGOPT += -globalmodule
ruby_global_immutable_vars_cpp.cpptest: SWIGOPT += -globalmodule
ruby_naming.cpptest: SWIGOPT += -autorename

# 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.rb appended after the testcase name.
run_testcase = \
	if [ -f $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX) ]; then \
	  env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH $(RUNTOOL) $(RUBY) $(RUBYFLAGS) -I$(srcdir):. $(SCRIPTDIR)/$(SCRIPTPREFIX)$*$(SCRIPTSUFFIX); \
	elif [ -f $(SCRIPTDIR)/$(SCRIPTPREFIX)$*.so ] ; then \
	  env LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH $(RUNTOOL) $(RUBY) $(RUBYFLAGS) -I$(srcdir):. -r$(SCRIPTDIR)/$(SCRIPTPREFIX)$*.so -e '' ; \
	fi

# Clean
%.clean:
	@exit 0

clean:
	$(MAKE) -f $(top_builddir)/$(EXAMPLES)/Makefile SRCDIR='$(SRCDIR)' ruby_clean
