TOP := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST))))

ifndef LOGDIR
LOGDIR := /tmp/NuSMV-psl-observer-logs
endif
ifdef RMLOG
$(shell rm -r $(LOGDIR))
endif

ifndef TIMEOUT
TIMEOUT := 120
endif

MACHINE := $(shell uname -m)
ifeq ($(MACHINE),x86_64)
CUDD_MAKEFILE := Makefile_64bit
else
CUDD_MAKEFILE := Makefile
endif

.PHONY: tests graphs

graphs: tests
	$(TOP)/scripts/plot.rb --timeout $(TIMEOUT) $(LOGDIR)/*

tests: $(TOP)/nusmv/NuSMV $(TOP)/bin/NuSMV_static
	$(TOP)/scripts/run.sh --logdir $(LOGDIR) --timelimit $(TIMEOUT)

$(TOP)/nusmv/NuSMV: $(TOP)/nusmv/Makefile
	cd $(TOP)/nusmv ; make

$(TOP)/nusmv/Makefile: $(TOP)/MiniSat_v070721 $(TOP)/cudd-2.4.1.0/cudd/libcudd.a
	cd $(TOP)/nusmv ; ./configure --enable-minisat

$(TOP)/MiniSat_v070721: $(TOP)/MiniSat/minisat2-070721.zip
	cd $(TOP)/MiniSat ; ./build.sh

$(TOP)/MiniSat/minisat2-070721.zip:
	@echo "$(TOP)/MiniSat/minisat2-070721.zip not found! Download it from http://minisat.se/MiniSat.html" && false

$(TOP)/cudd-2.4.1.0/cudd/libcudd.a:
	cd $(TOP)/cudd-2.4.1.0 ; make -f $(CUDD_MAKEFILE)

$(TOP)/bin/NuSMV_static: $(TOP)/bin.tar.gz
	cd $(TOP) ; tar xzf bin.tar.gz ; touch $@

$(TOP)/bin.tar.gz:
	@echo "$(TOP)/bin.tar.gz not found! Download it from http://es.fbk.eu/people/tonetta/tests/tcad07/" && false