PROGS=SelectUsingHDBC SelectUsingMetaHDBC Extensible/Main
ERROR_PROGS=Errors/MissingTable Errors/MissingColumn Errors/ParameterTypeError \
Errors/SQLTypeError Errors/MultiLineSQLError
DSN=MHdbcDB2

all: $(PROGS)

SelectUsingHDBC: SelectUsingHDBC.hs
	ghc -fglasgow-exts --make -Wall SelectUsingHDBC.hs

SelectUsingMetaHDBC: SelectUsingMetaHDBC.hs
	ghc -fglasgow-exts --make -Wall SelectUsingMetaHDBC.hs

Extensible/Main: Extensible/Main.hs Extensible/Extensible.hs
	ghc -fglasgow-exts --make -Wall Extensible/Main.hs -iExtensible

Errors/% : Errors/%.hs
	ghc -fglasgow-exts --make -Wall $@

Errors/MissingTable: Errors/MissingTable.hs
Errors/MissingColumn: Errors/MissingColumn.hs
Errors/ParameterTypeError: Errors/ParameterTypeError.hs
Errors/SQLTypeError: Errors/SQLTypeError.hs
Errors/MultiLineSQLError: Errors/MultiLineSQLError.hs

#Test: Test.hs Util.hs Metadata.hs SingleColumnTest.hs
#	ghc -fglasgow-exts --make -Wall Test.hs

.PHONY: clean carTable dropCarTable selectCarTable runCarTests errorProgs
# runtest

clean:
	- rm *.o *.hi *~ $(PROGS)
	- rm {Extensible,Errors}/{*.o,*.hi,*~}

errorProgs:
	- make Errors/MissingTable
	- make Errors/MissingColumn
	- make Errors/ParameterTypeError
	- make Errors/SQLTypeError
	- make Errors/MultiLineSQLError

carTable:
	- make dropCarTable
	echo "CREATE TABLE Car (make VARCHAR(25) PRIMARY KEY NOT NULL UNIQUE, topSpeed INT NOT NULL)" | isql $(DSN) -b
	echo "INSERT INTO Car (make, topSpeed) VALUES ('Honda', 160)" | isql $(DSN) -b
	echo "INSERT INTO Car (make, topSpeed) VALUES ('Lotus', 225)" | isql $(DSN) -b
	echo "SELECT * FROM Car" | isql $(DSN) -b

selectCarTable:
	echo "SELECT * FROM Car" | isql $(DSN) -b

dropCarTable:
	echo "DROP TABLE Car" | isql $(DSN) -b

runCarTests: SelectUsingMetaHDBC
	make dropCarTable
	make carTable
	./SelectUsingMetaHDBC

#runtest:clean Test
#	echo "Compilation finished"
	#Unsettnig LANG and LANGUAGE makes sure that decimals are not formattet according to locale
#	unset LANG; unset LANGUAGE; ./Test

#-ddump-splices 