#-----------------------------------------------------------------------------#

main_target: check

include ../Mmake.common

#-----------------------------------------------------------------------------#

PROGS=	\
	address_of_builtins \
	agg \
	bidirectional \
	boyer \
	c_write_string \
	cc_nondet_disj \
	construct \
	curry \
	curry2 \
	cycles \
	deep_copy_bug \
	det_in_semidet_cntxt \
	division_test \
	elim_special_pred \
	error_func \
	erroneous_liveness \
	expand \
	export_test \
	float_map \
	float_reg \
	float_rounding_bug \
	free_free_mode \
	func_and_pred \
	func_test \
	getopt_test \
	higher_order_func_test \
	higher_order_syntax \
	higher_order_type_manip \
	ho_func_reg \
	ho_order \
	ho_solns \
	ho_univ_to_type \
	impossible_unify \
	mode_choice \
	name_mangling \
	no_fully_strict \
	no_inline \
	nullary_ho_func \
	pragma_c_code \
	pragma_inline \
	qual_adv_test \
	qual_basic_test \
	qual_is_test \
	reverse_arith \
	string_alignment \
	string_loop \
	test_imported_no_tag \
	tim_qual1 \
	write \
	write_reg1

#-----------------------------------------------------------------------------#

# some tests need to be compiled with particular options

MCFLAGS-boyer		=	--infer-all
MCFLAGS-func_test	=	--infer-all
MCFLAGS-ho_order	=	--optimize-higher-order
MCFLAGS-no_fully_strict	=	--no-fully-strict

# no_fully_strict is expected to fail (it calls error/1)
# so we need to ignore the exit status (hence the leading `-')
no_fully_strict.out: no_fully_strict
	-./no_fully_strict > no_fully_strict.out 2>&1;

#-----------------------------------------------------------------------------#

DEPS=	$(PROGS:%=%.dep)
DEPENDS=$(PROGS:%=%.depend)
OUTS=	$(PROGS:%=%.out)
RESS=	$(PROGS:%=%.res)
MODS=	$(PROGS:%=%.mod)

#-----------------------------------------------------------------------------#

dep:	$(DEPS)

depend:	$(DEPENDS)

check:	$(OUTS) $(RESS)

mods:	$(MODS)

all:	$(PROGS)

#-----------------------------------------------------------------------------#
