DUT=xxx
DIR=examples
MOSMLC=$(HOME)/mosml/bin/mosmlc
OPT=-q -I ../sml_lib

$(DIR)/$(DUT): SmlMC_head.uo link_dut dut.uo SmlMC_gen.uo
	$(MOSMLC) $(OPT) -o $(DIR)/$(DUT) SmlMC_gen.uo

link_dut:
	@if [ ! -e dut.sml ] || [ ! dut.sml -ef $(DIR)/$(DUT).sml ]; \
  then \
    touch $(DIR)/$(DUT).sml; ln -fs $(DIR)/$(DUT).sml dut.sml; \
    $(MOSMLC) $(OPT) -c dut.sml; \
  fi
# if your shell does not handle this, then replace by:
# link_dut:
#	cp $(DIR)/$(DUT).sml dut.sml

SmlMC_head.uo: SmlMC_head.sml
	$(MOSMLC) -c $(OPT) SmlMC_head.sml
 
dut.uo: SmlMC_head.uo dut.sml
	$(MOSMLC) -c $(OPT) dut.sml
 
SmlMC_gen.uo: SmlMC_head.uo dut.uo SmlMC_gen.sml
	$(MOSMLC) -c $(OPT) -toplevel SmlMC_gen.sml
