#######################################################################
# 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_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_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_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
