SMALL_DIMENSIONS = $(shell seq 2 5)
DIMENSIONS = $(shell seq 2 8)
US = U S
KINDS = conformance safety
SMALL_MODELS = $(foreach dimension,$(SMALL_DIMENSIONS), ACCU0$(dimension)_conformance.dot ACCS0$(dimension)_conformance.dot)
MODEL_PREFIXES = $(foreach dimension,$(DIMENSIONS), ACCU0$(dimension) ACCS0$(dimension))
MODELS = $(MODEL_PREFIXES:%=%_conformance.dot)
MODELS_SAFETY = $(MODEL_PREFIXES:%=%_safety.dot)
MODELS_ALL = $(MODELS:%=models/%) $(MODELS_SAFETY:%=models/%)
SMALL_MODEL_PREFIXES = $(SMALL_MODELS:%_conformance.dot=%)
LENGTHS = 10 $(shell seq 25 25 100)
LONGER_LENGTHS = $(shell seq 200 100 1000)
MUCH_LONGER_LENGTHS = $(shell seq 1000 1000 10000)
REPEATS = $(shell seq 1 30)
NORMAL_LOGS = $(foreach model, $(MODEL_PREFIXES), $(foreach length, $(LENGTHS), $(foreach repeat, $(REPEATS), ./logs/$(model)-$(length)-$(repeat).txt)))
LONGER_LOGS = $(foreach model, $(SMALL_MODEL_PREFIXES), $(foreach length, $(LONGER_LENGTHS), $(foreach repeat, $(REPEATS), ./logs/$(model)-$(length)-$(repeat).txt)))
MUCH_LONGER_LOGS = $(foreach length, $(MUCH_LONGER_LENGTHS), $(foreach repeat, $(REPEATS), ./logs/ACCU05-$(length)-$(repeat).txt))
LOGS = $(NORMAL_LOGS) $(LONGER_LOGS) $(MUCH_LONGER_LOGS)

ONEDRIVE_CLI = ~/onedrive-cli/bin/onedrive

all: ACCI.zip

ACCI.zip: $(LOGS) $(MODELS_ALL)
	zip $@ $^

define GENMODEL

models/ACC$(1)0$(2)_$(3).dot: ./genACCDot.hs
	$$< $(1) $(3) $(2) > $$@

endef

$(foreach kind,$(KINDS),$(foreach dimension,$(DIMENSIONS), $(foreach us,$(US),$(eval $(call GENMODEL,$(us),$(dimension),$(kind))))))

define GENLOG

logs/%-$(1)-$(2).txt: models/%_conformance.dot ../../build/hamoni-sim
	../../build/hamoni-sim -f $$< -l $(1) > $$@

endef

$(foreach length, $(MUCH_LONGER_LENGTHS), $(foreach repeat, $(REPEATS), $(eval $(call GENLOG,$(length),$(repeat)))))
$(foreach length, $(LONGER_LENGTHS), $(foreach repeat, $(REPEATS), $(eval $(call GENLOG,$(length),$(repeat)))))
$(foreach length, $(LENGTHS), $(foreach repeat, $(REPEATS), $(eval $(call GENLOG,$(length),$(repeat)))))

upload: ACCI.zip
	$(ONEDRIVE_CLI) cp ./$< :/Research/HAMoni/ACCI.zip
