VERSION=0.05

#INCLUDE=-I$(HOME)/priv/lib/xerces/include
#LIB=-L$(HOME)/priv/lib/xerces/lib

all: test-parser C_test test-verifier test-information

#
# CSP Instance Information
#

test-information: CSPInstanceInformation
	for f in tests-parsers/*.xml ; do echo $$f ; ./CSPInstanceInformation $$f ; done

CSPInstanceInformation: CSPInstanceInformation.cc CSPInstanceInformationCallback.h
	g++ $(CFLAGS) -o CSPInstanceInformation $(INCLUDE) CSPInstanceInformation.cc $(LIB) -lxerces-c

#
# CSP verifier
#

test-verifier: CSPverifier
	for f in tests-verifier/*.xml ; do cat $$f.sol | ./CSPverifier $$f ; done

CSPverifier: CSPverifier.cc CSPVerifierCallback.h
	g++ $(CFLAGS) -o CSPverifier $(INCLUDE) CSPverifier.cc $(LIB) -lxerces-c

#
# C++ test files
#

test-parser: main
	for f in tests-parsers/*.xml ; do ./main $$f ; done

main: main.cc XMLParser.h CSPParserCallback.h ExpressionParser.h SampleCallback.h CopyCallback.h
	g++ $(CFLAGS) -Dtmpdebug -o main main.cc -lxerces-c

#
# C test files
#

C_test: C_main
	for f in tests-parsers/*.xml ; do ./C_main $$f ; done

C_main: C_main.o C_XMLParser.o C_SampleCallback.o
	# we must link the C code with Xerces and the standard C++ library
	gcc $(CFLAGS) -o C_main C_main.o C_XMLParser.o C_SampleCallback.o \
	-lxerces-c -lstdc++
	# if the above command fails, just try
	# g++ $(CFLAGS) -o C_main C_main.o C_XMLParser.o C_SampleCallback.o -lxerces-c

clean:
	rm -f main C_main C_main.o C_XMLParser.o C_SampleCallback.o
	rm -f CSPverifier CSPInstanceInformation
	rm -rf doc

.PHONY: doc

doc:
	doxygen

distrib: clean
	tar -cvzf /tmp/CSP-XML-parser-$(VERSION).tar.gz -C ..  --exclude '*~' CSP-XML-parser
