# generate various tools for manipulating Curry programs:

# Required:
# - installed curry2prolog system

.PHONY: all
all:    AddTypes.state check.state currydoc.state curry2xml.state \
	  currytest.state Curry2Fl.state \
	  genint.state ImportGraph.state ImportCalls.state
	@cd browser ; ${MAKE}
	@cd optimize ; ${MAKE}
	@cd xmldata ; ${MAKE}
	@cd Peval ; ${MAKE}
	@cd coosy ; ${MAKE}


# generate saved state for addtypes program:
AddTypes.state: AddTypes.curry
	../bin/pakcs -s AddTypes
	(cd ../bin ; rm -f addtypes ; \
	             ln -s ../tools/AddTypes.state addtypes)

# generate saved state for check program:
check.state: check.curry ../lib/meta/FlatCurry.curry \
	     analysis/AnaOverlapping.curry analysis/AnaIndeterminism.curry
	../bin/pakcs -set path analysis -set -error -s check

# generate saved state for currydoc program:
currydoc.state: currydoc.curry ../lib/meta/FlexRigid.curry \
	        ../lib/CategorizedHtmlList.curry \
	        ../lib/meta/FlatCurry.curry ../lib/HTML.curry \
	        analysis/AnaOverlapping.curry analysis/AnaIndeterminism.curry \
	        analysis/AnaCompleteness.curry analysis/AnaOpComplete.curry \
	        analysis/AnaDependency.curry 
	(echo ":set path analysis" ; echo ":l currydoc" ; echo ":set path" ; \
	 echo ":save main" ) | ../bin/pakcs
	(cd ../bin ; rm -f currydoc ; \
	             ln -s ../tools/currydoc.state currydoc)

# generate saved state for currytest program:
currytest.state: currytest.curry ../lib/meta/FlatCurry.curry \
	         ../lib/System.curry ../lib/Assertion.curry \
	         ../lib/Dynamic.curry ../lib/GUI.curry
	../bin/pakcs -s currytest
	(cd ../bin ; rm -f currytest ; \
	             ln -s ../tools/currytest.state currytest)

# generate saved state for curry2fl program:
Curry2Fl.state: Curry2Fl.curry 
	../bin/pakcs -s Curry2Fl
	(cd ../bin ; rm -f curry2fl ; ln -s ../tools/Curry2Fl.state curry2fl)

# generate saved state for curry2xml program:
curry2xml.state: curry2xml.curry ../lib/meta/FlatXML.curry \
	         ../lib/meta/Flat.curry \
	         ../lib/meta/Flat2Fcy.curry ../lib/XML.curry
	../bin/pakcs -set -error -s curry2xml

# generate saved state for interface generator:
genint.state: genint.curry ../lib/meta/FlatCurry.curry \
	      ../lib/meta/FlatCurryShow.curry ../lib/meta/FlexRigid.curry \
	      ../lib/List.curry
	../bin/pakcs -s genint

# generate saved state for interface generator:
ImportGraph.state: ImportGraph.curry ../lib/meta/FlatCurry.curry \
	      ../lib/System.curry ../lib/DaVinci.curry ../lib/List.curry
	../bin/pakcs -s ImportGraph

# generate saved state for interface generator:
ImportCalls.state: ImportCalls.curry ../lib/meta/FlatCurry.curry \
	      ../lib/System.curry ../lib/List.curry
	../bin/pakcs -set -error -s ImportCalls

.PHONY: clean
clean: 
	../bin/cleancurry
	(cd ../bin ; rm -f addtypes currydoc currytest curry2fl)
	cd analysis ; ../../bin/cleancurry
	cd Peval ; ${MAKE} clean
	cd coosy ; ${MAKE} clean
	cd browser ; ${MAKE} clean
	cd optimize ; ${MAKE} clean
	cd xmldata ; ${MAKE} clean

