MAKE_OPTION=--no-print-directory -C ../

DISABLE_CONFIG= \
	IUTEST_HAS_STREAM_RESULT \
	IUTEST_HAS_STREAMCAPTURE \
	IUTEST_HAS_STRINGSTREAM \
	IUTEST_HAS_SOCKET \
	IUTEST_HAS_STATIC_ASSERT_TYPEEQ \
	IUTEST_HAS_PRINT_TO \
	IUTEST_HAS_ANY_PARAM_TEST \
	IUTEST_HAS_AUTOFIXTURE_PARAM_TEST \
	IUTEST_HAS_TESTNAME_ALIAS_JP \
	IUTEST_HAS_TESTNAME_ALIAS \
	IUTEST_HAS_ASSERTION_NOEQUALTO_OBJECT \
	IUTEST_HAS_ASSERTION_RETURN \
	IUTEST_HAS_PEEP \
	IUTEST_HAS_PEEP_FUNC \
	IUTEST_HAS_PEEP_STATIC_FUNC \
	IUTEST_HAS_PACKAGE \
	IUTEST_HAS_GENRAND \
	IUTEST_HAS_SPI_LAMBDA_SUPPORT \
	IUTEST_HAS_LAMBDA_STATEMENTS \
	IUTEST_HAS_VARIADIC_TEMPLATES \
	IUTEST_HAS_REGEX \
	IUTEST_HAS_RANDOMVALUES \
	IUTEST_HAS_VALUESGEN \
	IUTEST_HAS_CONCAT \
	IUTEST_HAS_PAIRWISE \
	IUTEST_HAS_COMBINE \
	IUTEST_HAS_VARIADIC_VALUES \
	IUTEST_HAS_VARIADIC_PAIRWISE \
	IUTEST_HAS_VARIADIC_COMBINE \
	IUTEST_HAS_MATCHERS \
	IUTEST_HAS_MATCHER_ELEMENTSARE \
	IUTEST_HAS_MATCHER_ELEMENTSAREARRAYFORWARD \
	IUTEST_HAS_MATCHER_REGEX \
	IUTEST_HAS_MATCHER_ALLOF_AND_ANYOF \
	IUTEST_HAS_BITWISE_EXPRESSION_DECOMPOSE \
	IUTEST_HAS_ARITHMETIC_EXPRESSION_DECOMPOSE \
	IUTEST_HAS_TYPED_TEST_P \
	IUTEST_HAS_TYPED_TEST \
	IUTEST_HAS_PARAM_TEST \
	IUTEST_HAS_PARAM_METHOD_TEST \
	IUTEST_HAS_REPORT_SKIPPED \
	IUTEST_HAS_TUPLE \
	IUTEST_TYPED_TEST_P_STRICT \
	IUTEST_HAS_FOPEN \
	IUTEST_HAS_FILE_STAT \

NOFEATURE_CONFIG= \
	IUTEST_NO_PRIVATE_IN_AGGREGATE \
	IUTEST_NO_ARGUMENT_DEPENDENT_LOOKUP \
	IUTEST_NO_VOID_RETURNS \
	IUTEST_NO_TEMPLATE_TEMPLATES \
	IUTEST_NO_TEMPLATE_PARTIAL_SPECIALIZATION \
	IUTEST_NO_VARIADIC_MACROS \
	IUTEST_NO_SFINAE \

#	IUTEST_NO_FUNCTION_TEMPLATE_ORDERING \


COMBINE_CONFIG= \
	no_parame_and_type_test \
	strstream \

DISABLE_TARGETS= $(DISABLE_CONFIG:%=%.dis)
NOFEATURE_TARGETS= $(NOFEATURE_CONFIG:%=%.no)

TARGETS= $(DISABLE_TARGETS) $(NOFEATURE_TARGETS) $(COMBINE_CONFIG)


#
#
# build targets.
#

.PHONY: clean default all

default : $(TARGETS)
combine : $(COMBINE_CONFIG)
disable : $(DISABLE_TARGETS)
nofeature : $(NOFEATURE_TARGETS)

all : clean default test

clean :
	make $(MAKE_OPTION) clean
	$(RM) $(TARGETS)

%.dis :
	@echo $(@:%.dis=%)
	make $(MAKE_OPTION) clean
	make $(MAKE_OPTION) test DEFS=-D$(@:%.dis=%)=0
	@echo ok > $@

%.no :
	@echo $(@:%.no=%)
	make $(MAKE_OPTION) clean
	make $(MAKE_OPTION) test DEFS=-D$(@:%.no=%)
	@echo ok > $@

no_parame_and_type_test:
	make $(MAKE_OPTION) clean
	make $(MAKE_OPTION) test DEFS="-DIUTEST_HAS_TYPED_TEST=0 -DIUTEST_HAS_PARAM_TEST=0 -DIUTEST_HAS_TYPED_TEST_P=0 -DIUTEST_HAS_VARIADIC_PRED=0"

strstream:
	make $(MAKE_OPTION) clean
	make $(MAKE_OPTION) test DEFS="-DIUTEST_HAS_STRINGSTREAM=0 -DIUTEST_HAS_STRSTREAM=1"
