# Note-  If you are using jikes you will probably have to change 
# the -classpath option.
#
# If you aren't using jikes you might like to  try it.  Look
# at http://www.research.ibm.com for more information.
# It compiles code about 10x faster than javac.
#

JAVAC = javac
JFLAGS += -g
# JAVAC=jikes
# JFLAGS += -classpath .:/usr/local/share/java/lib/classes.zip +D +E -g 


DRIVER=                                                            \
        com/internetcds/util/Logger.class                          \
        com/internetcds/util/HexDump.class                         \
        com/internetcds/jdbc/tds/TdsException.class                \
        com/internetcds/jdbc/tds/TdsConfused.class                 \
        com/internetcds/jdbc/tds/TdsNotImplemented.class           \
        com/internetcds/jdbc/tds/TdsUnknownPacketSubType.class     \
        com/internetcds/jdbc/tds/TdsUnknownPacketType.class        \
	com/internetcds/jdbc/tds/UniqueId.class                    \
	com/internetcds/jdbc/tds/TdsAsciiInputStream.class	   \
        com/internetcds/jdbc/tds/EscapeProcessor.class             \
        com/internetcds/jdbc/tds/MSSqlServerEscapeProcessor.class  \
        com/internetcds/jdbc/tds/SybaseEscapeProcessor.class       \
        com/internetcds/jdbc/tds/Column.class                      \
        com/internetcds/jdbc/tds/Columns.class                     \
	com/internetcds/jdbc/tds/ParameterListItem.class	   \
	com/internetcds/jdbc/tds/ParameterUtils.class	           \
	com/internetcds/jdbc/tds/DriverVersion.class	           \
	com/internetcds/jdbc/tds/Procedure.class		   \
        com/internetcds/jdbc/tds/SqlMessage.class                  \
	com/internetcds/jdbc/tds/TdsDefinitions.class              \
        com/internetcds/jdbc/tds/PacketResult.class                \
        com/internetcds/jdbc/tds/PacketMsgResult.class             \
        com/internetcds/jdbc/tds/PacketErrorResult.class           \
        com/internetcds/jdbc/tds/PacketRetStatResult.class         \
        com/internetcds/jdbc/tds/PacketEndTokenResult.class        \
        com/internetcds/jdbc/tds/PacketDoneInProcResult.class      \
        com/internetcds/jdbc/tds/PacketTabNameResult.class         \
        com/internetcds/jdbc/tds/PacketColumnNamesResult.class     \
        com/internetcds/jdbc/tds/PacketColumnInfoResult.class      \
        com/internetcds/jdbc/tds/PacketColumnOrderResult.class     \
        com/internetcds/jdbc/tds/PacketRowResult.class             \
        com/internetcds/jdbc/tds/PacketControlResult.class         \
        com/internetcds/jdbc/tds/Context.class                     \
        com/internetcds/jdbc/tds/TdsComm.class                     \
	com/internetcds/jdbc/tds/CancelController.class            \
        com/internetcds/jdbc/tds/Tds.class                         \
	com/internetcds/jdbc/tds/ConnectionHelper.class            \
	com/internetcds/jdbc/tds/DatabaseMetaData.class            \
        com/internetcds/jdbc/tds/ResultSetMetaData.class           \
        com/internetcds/jdbc/tds/ResultSet.class                   \
        com/internetcds/jdbc/tds/Statement.class                   \
	com/internetcds/jdbc/tds/PreparedStatementHelper.class     \
	com/internetcds/jdbc/tds/PreparedStatement.class           \
	com/internetcds/jdbc/tds/CallableStatement.class           \
        com/internetcds/jdbc/tds/Connection.class                  \
        com/internetcds/jdbc/tds/Driver.class                      \
	com/internetcds/jdbc/tds/SybaseDriver.class                \
        # com/internetcds/jdbc/tds/SybaseConnection.class            \
        # com/internetcds/jdbc/tds/TdsQueryCanceled.class         \

all: freetds_jdbc.jar


freetds_jdbc.jar: $(DRIVER)
	jar c0f freetds_jdbc.jar com

driver: $(DRIVER)

tests: freetds_jdbc.jar ./unittests
	(cd unittests; make)

adhoctests: $(DRIVER) ./tmptests
	(cd tmptests; make)

UpdateCdsnetServerAccountsTable: $(DRIVER) tmptests
	(java UpdateCdsnetServerAccountsTable -verbose -purge backmaster.cdsnet.net)

TransferNewSignupRequests: $(DRIVER)
	(CLASSPATH=$$CLASSPATH:$$HOME/GUD/Gud/JavaTools; cd $$HOME/GUD/Gud/JavaTools; $(JAVAC) TransferNewSignupRequests.java)

runtests: freetds_jdbc.jar tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; cd unittests; make runtests)

sybtests: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; cd unittests; make sybtests)

t0001: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; java t0001)

t0002: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; java t0002)

t0003: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; java t0003)

t0004: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; java t0004)

t0005: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; java t0005)

t0006: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; java t0006)

t0007: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; java t0007)

t0008: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; java t0008)

t0009: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; java t0009)

t0010: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; java t0010)

t0011: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; java t0011)

t0012: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; java t0012)

t0013: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; java t0013)

t0014: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; java t0014)

t0017: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; java t0017)

t0018: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; java t0018)

t0019: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; java t0019)

t0020: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; java t0020)

t0021: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; java t0021)

t0022: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; java t0022)

t0023: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; java t0023)

t0024: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; java t0024)

t0025: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; java t0025)

t0027: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; java t0027)

t0030: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; java t0030)

t0031: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; java t0031)

t0032: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; java t0032)

t0033: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; java t0033)

t0036: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; java t0036)

t0037: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; java t0037)

t0039: tests
	(CLASSPATH=`pwd`:`pwd`/unittests:$$CLASSPATH; java t0039)

t0042: tests
	java t0042


jdbctest1: adhoctests
	(cd tmptests; CLASSPATH=$$CLASSPATH:`pwd`/..; java jdbctest1)

jdbctest2: adhoctests $(DRIVER)
	(cd tmptests; CLASSPATH=$$CLASSPATH:`pwd`/..; java jdbctest2)

testfoo: $(DRIVER) adhoctests
	(cd tmptests; make foo);
	CLASSPATH=$$CLASSPATH:`pwd`/tmptests java foo

com/internetcds/util/HexDump.class: HexDump.java
	$(JAVAC) $(JFLAGS)  -d . HexDump.java

com/internetcds/util/Logger.class: Logger.java
	$(JAVAC) $(JFLAGS)  -d . Logger.java

com/internetcds/jdbc/tds/TdsException.class: TdsException.java
	$(JAVAC) $(JFLAGS)  -d . TdsException.java

testListTables: adhoctests
	(CLASSPATH=$$CLASSPATH:`pwd`/tmptests; java list_tables)

testSimplePrepared: adhoctests
	(CLASSPATH=$$CLASSPATH:`pwd`/tmptests; java simple_prepared 17)

testManyTypes: $(DRIVER) adhoctests
	(CLASSPATH=$$CLASSPATH:`pwd`/tmptests; java many_types)

jexplorer: $(DRIVER) 
	(CLASSPATH=`pwd`:$$CLASSPATH:.; cd tmptests/JEXPLORER.DISTRIB; java Jexplorer)

testQueryApp: adhoctests
	(echo 'select * from many_types';                        \
         echo go;                                                \
         echo 'select count(*) from many_types';                 \
         echo go;                                                \
         echo 'select mychar10, char1 from many_types order by mychar10, char1'; \
         echo go;                                                \
         echo quit;) | CLASSPATH=$$CLASSPATH:`pwd`/tmptests java QueryApp


testCallable: $(DRIVER)
	java com.internetcds.jdbc.tds.CallableStatement

testPrepared: $(DRIVER)
	java com.internetcds.jdbc.tds.PreparedStatement

testStatement: $(DRIVER)
	java com.internetcds.jdbc.tds.Statement

testDatabaseMetaData: $(DRIVER)
	java com.internetcds.jdbc.tds.DatabaseMetaData


#com/internetcds/jdbc/tds/TdsQueryCanceled.class: TdsQueryCanceled.java
#	$(JAVAC) $(JFLAGS)  -d . $>

com/internetcds/jdbc/tds/UniqueId.class: UniqueId.java
	$(JAVAC) $(JFLAGS)  -d . UniqueId.java

com/internetcds/jdbc/tds/SqlMessage.class: SqlMessage.java
	$(JAVAC) $(JFLAGS)  -d . SqlMessage.java

com/internetcds/jdbc/tds/CancelController.class: CancelController.java
	$(JAVAC) $(JFLAGS)  -d . CancelController.java

com/internetcds/jdbc/tds/TdsNotImplemented.class: TdsNotImplemented.java
	$(JAVAC) $(JFLAGS)  -d . TdsNotImplemented.java

com/internetcds/jdbc/tds/TdsConfused.class: TdsConfused.java
	$(JAVAC) $(JFLAGS)  -d . TdsConfused.java

com/internetcds/jdbc/tds/TdsAsciiInputStream.class: TdsAsciiInputStream.java
	$(JAVAC) $(JFLAGS)  -d . TdsAsciiInputStream.java

com/internetcds/jdbc/tds/TdsUnknownPacketType.class: TdsUnknownPacketType.java
	$(JAVAC) $(JFLAGS)  -d . TdsUnknownPacketType.java

com/internetcds/jdbc/tds/TdsUnknownPacketSubType.class: TdsUnknownPacketSubType.java
	$(JAVAC) $(JFLAGS)  -d . TdsUnknownPacketSubType.java

com/internetcds/jdbc/tds/TdsComm.class: TdsComm.java
	$(JAVAC) $(JFLAGS)  -d . TdsComm.java

com/internetcds/jdbc/tds/EscapeProcessor.class: EscapeProcessor.java
	$(JAVAC) $(JFLAGS)  -d . EscapeProcessor.java

com/internetcds/jdbc/tds/MSSqlServerEscapeProcessor.class: MSSqlServerEscapeProcessor.java
	$(JAVAC) $(JFLAGS)  -d . MSSqlServerEscapeProcessor.java

com/internetcds/jdbc/tds/SybaseEscapeProcessor.class: SybaseEscapeProcessor.java
	$(JAVAC) $(JFLAGS)  -d . SybaseEscapeProcessor.java

com/internetcds/jdbc/tds/Tds.class: Tds.java
	$(JAVAC) $(JFLAGS)  -d . Tds.java

com/internetcds/jdbc/tds/TdsDefinitions.class: TdsDefinitions.java
	$(JAVAC) $(JFLAGS)  -d . TdsDefinitions.java

com/internetcds/jdbc/tds/Context.class: Context.java
	$(JAVAC) $(JFLAGS)  -d . Context.java

com/internetcds/jdbc/tds/PacketResult.class: PacketResult.java
	$(JAVAC) $(JFLAGS)  -d . PacketResult.java

com/internetcds/jdbc/tds/PacketMsgResult.class: PacketMsgResult.java
	$(JAVAC) $(JFLAGS)  -d . PacketMsgResult.java

com/internetcds/jdbc/tds/PacketErrorResult.class: PacketErrorResult.java
	$(JAVAC) $(JFLAGS)  -d . PacketErrorResult.java

com/internetcds/jdbc/tds/PacketEndTokenResult.class: PacketEndTokenResult.java
	$(JAVAC) $(JFLAGS)  -d . PacketEndTokenResult.java

com/internetcds/jdbc/tds/PacketDoneInProcResult.class: PacketDoneInProcResult.java
	$(JAVAC) $(JFLAGS)  -d . PacketDoneInProcResult.java

com/internetcds/jdbc/tds/PacketRetStatResult.class: PacketRetStatResult.java
	$(JAVAC) $(JFLAGS)  -d . PacketRetStatResult.java

com/internetcds/jdbc/tds/Procedure.class: Procedure.java
	$(JAVAC) $(JFLAGS)  -d . Procedure.java

com/internetcds/jdbc/tds/ParameterListItem.class: ParameterListItem.java
	$(JAVAC) $(JFLAGS)  -d . ParameterListItem.java

com/internetcds/jdbc/tds/ParameterUtils.class: ParameterUtils.java
	$(JAVAC) $(JFLAGS)  -d . ParameterUtils.java

# com/internetcds/jdbc/tds/TdsInstance.class: TdsInstance.java
#	$(JAVAC) $(JFLAGS)  -d . TdsInstance.java

com/internetcds/jdbc/tds/PacketRowResult.class: PacketRowResult.java
	$(JAVAC) $(JFLAGS)  -d . PacketRowResult.java

com/internetcds/jdbc/tds/PacketControlResult.class: PacketControlResult.java
	$(JAVAC) $(JFLAGS)  -d . PacketControlResult.java

com/internetcds/jdbc/tds/PacketTabNameResult.class: PacketTabNameResult.java
	$(JAVAC) $(JFLAGS)  -d . PacketTabNameResult.java

com/internetcds/jdbc/tds/PacketColumnInfoResult.class: PacketColumnInfoResult.java
	$(JAVAC) $(JFLAGS)  -d . PacketColumnInfoResult.java

com/internetcds/jdbc/tds/PacketColumnOrderResult.class: PacketColumnOrderResult.java
	$(JAVAC) $(JFLAGS)  -d . PacketColumnOrderResult.java

com/internetcds/jdbc/tds/PacketColumnNamesResult.class: PacketColumnNamesResult.java
	$(JAVAC) $(JFLAGS)  -d . PacketColumnNamesResult.java

com/internetcds/jdbc/tds/Column.class: Column.java
	$(JAVAC) $(JFLAGS)  -d . Column.java

com/internetcds/jdbc/tds/Columns.class: Columns.java
	$(JAVAC) $(JFLAGS)  -d . Columns.java

com/internetcds/jdbc/tds/Driver.class: Driver.java
	$(JAVAC) $(JFLAGS)  -d . Driver.java

com/internetcds/jdbc/tds/SybaseDriver.class: SybaseDriver.java
	$(JAVAC) $(JFLAGS)  -d . SybaseDriver.java

com/internetcds/jdbc/tds/DriverVersion.class: DriverVersion.java
	$(JAVAC) $(JFLAGS)  -d . DriverVersion.java

com/internetcds/jdbc/tds/ConnectionHelper.class: ConnectionHelper.java
	$(JAVAC) $(JFLAGS)  -d . ConnectionHelper.java

com/internetcds/jdbc/tds/Connection.class:                          \
		  Connection.java                                   \
		  com/internetcds/jdbc/tds/Tds.class                \
                  com/internetcds/jdbc/tds/Statement.class          \
                  com/internetcds/jdbc/tds/CallableStatement.class  \
                  com/internetcds/jdbc/tds/PreparedStatement.class  \
                  com/internetcds/jdbc/tds/DatabaseMetaData.class   \
	          ConnectionHelper.java
	$(JAVAC) $(JFLAGS) -d .  Connection.java

# com/internetcds/jdbc/tds/SybaseConnection.class:                          \
# 		  SybaseConnection.java
# 	$(JAVAC) $(JFLAGS) -d .  SybaseConnection.java

com/internetcds/jdbc/tds/DatabaseMetaData.class: DatabaseMetaData.java
	$(JAVAC) $(JFLAGS)  -d . DatabaseMetaData.java

com/internetcds/jdbc/tds/PreparedStatement.class: PreparedStatement.java com/internetcds/jdbc/tds/Statement.class
	$(JAVAC) $(JFLAGS)  -d . PreparedStatement.java

com/internetcds/jdbc/tds/PreparedStatementHelper.class: PreparedStatementHelper.java
	$(JAVAC) $(JFLAGS)  -d . PreparedStatementHelper.java

com/internetcds/jdbc/tds/CallableStatement.class: CallableStatement.java com/internetcds/jdbc/tds/PreparedStatement.class
	$(JAVAC) $(JFLAGS)  -d . CallableStatement.java 

com/internetcds/jdbc/tds/Statement.class: Statement.java com/internetcds/jdbc/tds/ConnectionHelper.class com/internetcds/jdbc/tds/ResultSet.class
	$(JAVAC) $(JFLAGS) -d . Statement.java

com/internetcds/jdbc/tds/ResultSet.class: ResultSet.java
	$(JAVAC) $(JFLAGS)  -d . ResultSet.java

com/internetcds/jdbc/tds/ResultSetMetaData.class: ResultSetMetaData.java
	$(JAVAC) $(JFLAGS)  -d . ResultSetMetaData.java

clean: 
	-rm $(DRIVER)

javadoc: .
	javadoc -author -private -package *.java
	-mkdir javadocs
	-mv com.*.html    javadocs
	-mv tree.html     javadocs
	-mv packages.html javadocs
	-mv AllNames.html javadocs
	-mv index.html    javadocs


metrics: .
	cccc *.java
	# mv cccc.htm docs
	-rm cccc_mod.ext cccc_mem.ext cccc_use.ext


install: $(DRIVER)
	tar cvf - $(DRIVER) | (cd /usr/local/share/LocalJava; tar xvf -)
