CABAL-CONFIGURE-FLAGS      := --user
CABAL-BUILD-FLAGS          :=

all : configure build

configure :
	cabal configure $(CABAL-CONFIGURE-FLAGS)

build : src/* src/Coq/AG.hs src/KnotSpec/AG.hs
	cabal build $(CABAL-BUILD-FLAGS)

clean :
	cabal clean
	rm -f src/Coq/AG.hs
	rm -f src/Coq/Syntax.hs
	rm -f src/KnotSpec/AG.hs
	rm -f src/KnotSpec/Syntax.hs

src/Coq/Syntax.hs: src/Coq/Syntax.ag
	uuagc -Hd --self $<

src/KnotSpec/Syntax.hs: src/KnotSpec/Syntax.ag
	uuagc -Hd --self $<

%.hs : %.ag
	uuagc -Hsfcw --self $<

src/Coq/AG.hs : \
	src/Coq/AG.ag \
	src/Coq/Syntax.hs \
	src/Coq/Syntax.ag

src/KnotSpec/AG.hs : \
	src/KnotSpec/AG.ag \
	src/KnotSpec/Syntax.hs \
	src/KnotSpec/Syntax.ag \
	src/KnotSpec/Desugaring.ag \
	src/KnotSpec/Environment.ag

main : src/Main.hs
	cabal configure
	cabal build

.PHONY : haskell
