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

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

srcdir       = @srcdir@
top_srcdir   = @top_srcdir@
top_builddir = @top_builddir@

CPP_TEST_CASES = \
	li_cstring \
	li_factory \
	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_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); \
	fi

# Clean
%.clean:
	@exit 0

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