PROOF_MODE ?= all

jobs ?= 4

$(foreach dep,$($(name)-deplibs), \
	$(eval SPARKFLAGS += -aP=$($(dep)-dir)))

SPARKFLAGS += -j$(jobs)
SPARKFLAGS += -k
SPARKFLAGS += -m
SPARKFLAGS += --mode=$(PROOF_MODE)
SPARKFLAGS += --report=fail
SPARKFLAGS += --warnings=error
SPARKFLAGS += --prover=z3,cvc4 --steps=500 --timeout=1	# FIXME: timeout used because steps seems broken

quote-list = $(subst $(space),$(comma),$(patsubst %,"%",$(1)))

$(name)-exclude-srcs = \
	$(filter-out \
		$(sort $(notdir $($(name)-proof) $($(name)-srcs) $($(name)-gens) $($(name)-extra-specs))), \
		$(sort $(notdir \
			$(wildcard $(addsuffix *.ad[sb],$($(name)-proof-dirs))))))

# Has to reside in the working directory. gnatprove takes paths relative
# to the directory wher it's placed and reports internal errors if used
# with absolute paths.
gpr := $(name).gpr
gpr-name = $(subst -,_,$(subst .,_,$(basename $(notdir $@))))

# Will be installed for inclusion
libgpr := $(obj)/lib$(name).gpr

.SECONDEXPANSION:

$(gpr):
	@printf "    GENERATE   $(subst $(obj)/,,$@)\n"
	printf '$(if $($(name)-deplibs),with "%s";\n)' $($(name)-deplibs) >$@
	echo 'library project $(gpr-name) is'			>>$@
	echo '   for Library_Name use "$(name)";'		>>$@
	echo '   for Library_Dir use "$(obj)/adalib";'		>>$@
	echo '   for Source_Dirs use' \
		'($(call quote-list,$($(name)-proof-dirs)));'	>>$@
	echo '   for Object_Dir use "$(obj)";'			>>$@
	echo '   package Builder is'				>>$@
	echo '      for Global_Configuration_Pragmas use' \
		'"$(abspath $(libhw-dir)/spark.adc)";'		>>$@
	echo '   end Builder;'					>>$@
	echo '   for Excluded_Source_Files use' \
		'($(call quote-list,$($(name)-exclude-srcs)));' >>$@
	echo 'end $(gpr-name);'					>>$@

.INTERMEDIATE: $(gpr)

$(libgpr): $$(MAKEFILE_LIST)
	@printf "    GENERATE   $(subst $(obj)/,,$@)\n"
	printf '$(if $($(name)-deplibs),with "%s";\n)' $($(name)-deplibs) >$@
	echo 'library project lib$(name) is'			>>$@
	echo '   for Library_Name use "$(name)";'		>>$@
	echo '   for Library_Dir use "lib";'			>>$@
	echo '   for Library_ALI_Dir use "lib";'		>>$@
	echo '   for Source_Dirs use ("proof");'		>>$@
	echo '   for Object_Dir use external ("obj", "build");'	>>$@
	echo 'end lib$(name);'					>>$@

$(obj)/gnatprove/gnatprove.out: $(gpr) $$($(name)-srcs) $$($(name)-gens) $(obj)/proofmode
	gnatprove -P$< $(SPARKFLAGS) -Xobj=$(abspath $(obj))

proof:
	if [ "$(PROOF_MODE)" != "$$(cat $(obj)/proofmode 2>/dev/null)" ]; then \
		echo "$(PROOF_MODE)" >$(obj)/proofmode; \
	fi
	$(MAKE) $(obj)/gnatprove/gnatprove.out

check: export override PROOF_MODE=check
check: proof

flow: export override PROOF_MODE=flow
flow: proof

full: export override PROOF_MODE=all
full: proof

allconfigs = $(wildcard configs/*)
allconfigs-targets = $(addprefix allconfigs-,$(notdir $(allconfigs)))

$(allconfigs-targets): allconfigs-%: configs/%
	rm -rf proof-allconfigs/$* $(name)_$*.gpr
	mkdir -p proof-allconfigs/$*
	echo "$(PROOF_MODE)" >proof-allconfigs/$*/proofmode
	$(MAKE) obj=proof-allconfigs/$* cnf=configs/$* gpr=$(name)_$*.gpr jobs=1 proof-allconfigs/$*/gnatprove/gnatprove.out

proof-allconfigs: $(allconfigs-targets)

clean::
	rm -rf proof-allconfigs/

.PHONY: proof check flow full $(allconfigs-targets) proof-allconfigs
