#############################################################################
# (c) Copyright IBM Corp. 2007 All rights reserved.
# 
# The following sample of source code ("Sample") is owned by International 
# Business Machines Corporation or one of its subsidiaries ("IBM") and is 
# copyrighted and licensed, not sold. You may use, copy, modify, and 
# distribute the Sample in any form without payment to IBM, for the purpose of 
# assisting you in the development of your applications.
# 
# The Sample code is provided to you on an "AS IS" basis, without warranty of 
# any kind. IBM HEREBY EXPRESSLY DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR 
# IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Some jurisdictions do 
# not allow for the exclusion or limitation of implied warranties, so the above 
# limitations or exclusions may not apply to you. IBM shall not be liable for 
# any damages you suffer as a result of using, copying, modifying or 
# distributing the Sample, even if IBM has been advised of the possibility of 
# such damages.
#############################################################################
#
# MAKEFILE for JDBC samples on Unix
#
# Enter one of the following commands 
#
#   make <app_name>        - Builds the program designated by <app_name>.
#
#   make all               - Builds all supplied sample programs except GSS API
#                            plugin samples. 
#
#   make srv               - Builds samples that can only be run on the server,
#                            including routines, stored procedures and UDFs.
#
#   make rtn               - Builds all routines, stored procedures and UDFs. 
#
#   make all_client        - Builds all client samples (all programs in the
#                            'call_rtn' and 'client_run' categories).
#
#   make call_rtn          - Builds all client programs that call routines,
#                            stored procedures and UDFs. 
#
#   make client_run        - Builds all programs that run completely on the 
#                            client (not ones that call routines, stored 
#                            procedures or UDFs).
#
#   make java_beans        - Builds all Java Beans samples
#
#   make jcc_plugins       - Builds all Java GSS-API Plugins samples (this requires
#                            IBM DB2 Universal Driver to be installed in the CLASSPATH)
#
#   make clean             - Erases all intermediate files produced in the 
#                            build process.
#
#   make cleanall          - Erases all files produced in the build process
#                            (all files except the original source files).
#
# The makefile contains the following sections:
#    1 -- VARIABLES
#    2 -- MAKE CATEGORIES
#    3 -- COMMANDS TO MAKE INDIVIDUAL SAMPLES
#
#
##############################################################################
#                  1 -- VARIABLES                                     
##############################################################################

# This file assumes the DB2 instance path is defined by the variable HOME.
# It also assumes DB2 is installed under the DB2 instance.
# If these statements are not correct, update the variable DB2PATH. 
DB2PATH = $(HOME)/sqllib

COPY=cp
ERASE=rm -f

#############################################################################
#  Generic rule to make a class from a java source file
#############################################################################

.SUFFIXES : .class .java

.java.class :
	javac $<

#############################################################################
#  2 -- MAKE CATEGORIES
#              2a - make all (srv + all_client)
#              2b - make srv
#              2c - make rtn
#              2d - make all_client (call_rtn + client_run + java_beans)
#              2e - make call_rtn
#              2f - make client_run
#              2g - make java_beans
#              2h - make jcc_plugins
#              2i - make clean
#              2j - make cleanall
#############################################################################

#****************************************************************************
#                  2a - make all (srv + all_client)
#****************************************************************************

all : \
        srv \
        all_client

#****************************************************************************
#                  2b - make srv
#****************************************************************************

srv : \
        rtn 

#****************************************************************************
#                  2c - make rtn
#****************************************************************************

rtn : \
        SpServer \
        UDFsrv \
	UDFsqlsv \
	UDFjsrv

#****************************************************************************
#                  2d - make all_client (call_rtn + client_run + java_beans)
#****************************************************************************

all_client : \
	call_rtn \
	client_run \
	java_beans

#****************************************************************************
#                  2e - make call_rtn
#****************************************************************************

call_rtn : \
        SpClient \
        UDFcli \
	UDFsqlcl \
	UDFjcli

#****************************************************************************
#                  2f - make client_run
#****************************************************************************

client_run : \
	AdmCmdAutoCfg AdmCmdContacts AdmCmdDescribe \
	AdmCmdExport AdmCmdImport AdmCmdOnlineBackup AdmCmdQuiesce \
	AdmCmdUpdateCfg Applt \
	DbAuth DbConn DbInfo DbMCon DbNative DbSeq DbUse \
	DtInfo DtLob DtUdt \
	GetDBCfgParams GetDBMCfgParams GetLogs GetMessage LargeRid IlInfo \
	SetIntegrity TbAST TbCompress TbConstr TbCreate TbGenCol TbIdent TbInfo \
	TbInTrig TbMerge TbMod TbOnlineInx \
	TbPriv TbRead TbRowcompress TbRunstats TbSel TbTemp TbTrig TbUMQT \
	TbUnion Array_Stack Arrays_Sqlpl \
	TrustedContext ScalarFunctions ImplicitCasting Cgtt

#****************************************************************************
#                  2g - make java_beans
#****************************************************************************

java_beans : \
	CreateEmployee \
	GeneratePayroll

#****************************************************************************
#                  2h - make jcc_plugins
#****************************************************************************

jcc_plugins : \
	JCCKerberosPluginTest \
	JCCSimpleGSSPluginTest

#****************************************************************************
#                  2i - make clean
#****************************************************************************

clean : 

#****************************************************************************
#                  2j - make cleanall
#****************************************************************************

cleanall : \
	clean
	$(ERASE) *.class
	$(ERASE) $(DB2PATH)/function/SpServer.class
	$(ERASE) $(DB2PATH)/function/UDFsrv.class
	$(ERASE) $(DB2PATH)/function/Person.class
	$(ERASE) $(DB2PATH)/function/UDFjsrv.class
	$(ERASE) $(DB2PATH)/function/UDFsqlsv.class

#############################################################################
#  3 -- COMMANDS TO MAKE INDIVIDUAL SAMPLES
#                  3b -  applet
#                  3c -  standalone applications
#                  3d -  client/server applications
#                  3e -  Java Beans applications
#                  3f -  Java GSS-API Plugin applications
#############################################################################

#****************************************************************************
#                  3b -  applet
#****************************************************************************

Applt : Applt.class

#****************************************************************************
#                  3c -  standalone applications
#****************************************************************************

AdmCmdAutoCfg : Util.class AdmCmdAutoCfg.class

AdmCmdContacts : Util.class AdmCmdContacts.class

AdmCmdDescribe : Util.class AdmCmdDescribe.class 

AdmCmdExport : Util.class AdmCmdExport.class

AdmCmdImport : Util.class AdmCmdImport.class

AdmCmdOnlineBackup : Util.class AdmCmdOnlineBackup.class

AdmCmdQuiesce : Util.class AdmCmdQuiesce.class

AdmCmdUpdateCfg : Util.class AdmCmdUpdateCfg.class

DbAuth : Util.class DbAuth.class

DbConn : Util.class DbConn.class

DbInfo : Util.class DbInfo.class

DbMCon : Util.class DbMCon.class
# Re-catalog sample database as sample2, 
# ignore errors since it may be cataloged already 
	-db2 catalog db sample as sample2

DbNative : Util.class DbNative.class

DbRsHold : Util.class DbRsHold.class
# Sample DbRsHold.java requires jdk/jre 1.4

DbSeq : Util.class DbSeq.class

DbUse : Util.class DbUse.class

DtInfo : Util.class DtInfo.class

DtLob : Util.class DtLob.class

DtUdt : Util.class DtUdt.class

GetDBCfgParams : Util.class GetDBCfgParams.class

GetDBMCfgParams : Util.class GetDBMCfgParams.class

GetLogs : Util.class GetLogs.class

GetMessage : Util.class GetMessage.class

IlInfo : Util.class IlInfo.class

LargeRid : Util.class LargeRid.class

SetIntegrity : Util.class SetIntegrity.class

TbAST : Util.class TbAST.class

TbCompress : Util.class TbCompress.class

TbConstr : Util.class TbConstr.class

TbCreate : Util.class TbCreate.class

TbGenCol : Util.class TbGenCol.class

TbIdent : Util.class TbIdent.class

TbInfo : Util.class TbInfo.class

TbInTrig : Util.class TbInTrig.class

TbMerge : Util.class TbMerge.class

TbMod : Util.class TbMod.class

TbOnlineInx : Util.class TbOnlineInx.class

TbPriv : Util.class TbPriv.class

TbRead : Util.class TbRead.class

TbRowcompress : Util.class TbRowcompress.class

TbRunstats : Util.class TbRunstats.class

TbSel  : Util.class TbSel.class
	
TbTemp : Util.class TbTemp.class

TbTrig : Util.class TbTrig.class

TbUMQT : Util.class TbUMQT.class

TbUnion : Util.class TbUnion.class

Arrays_Sqlpl : Util.class Arrays_Sqlpl.class

Array_Stack : Util.class Array_Stack.class

TrustedContext : Util.class TrustedContext.class

ScalarFunctions : Util.class ScalarFunctions.class

ImplicitCasting : Util.class ImplicitCasting.class

Cgtt : Cgtt.class

#****************************************************************************
#                  3d -  client/server applications
#****************************************************************************

#--------------------SpClient / SpServer------------------------------------#
# Note: before you execute SpClient for the first time, you must call the
# SpCreate.db2 CLP script to catalog the methods in SpServer as stored
# procedures. Call SpDrop.db2 to uncatalog the methods in SpServer.

SpCat :
	spcat

SpClient : Util.class SpClient.class

SpServer : SpServer.class
	$(ERASE) $(DB2PATH)/function/SpServer.class
	$(COPY) SpServer.class $(DB2PATH)/function
	spcat

#--------------------UDFcli  / UDFsrv---------------------------------------#
# Note: before you execute UDFcli for the first time, you must call the
# UDFCreate.db2 CLP script to register the functions in UDFsrv as 
# User Defined Functions (UDFs).

UDFcat :
	udfcat

UDFcli : UDFcat Util.class UDFcli.class

UDFsrv : UDFsrv.class
	$(ERASE) $(DB2PATH)/function/UDFsrv.class
	$(ERASE) $(DB2PATH)/function/Person.class
	$(COPY) UDFsrv.class $(DB2PATH)/function
	$(COPY) Person.class $(DB2PATH)/function

#-------------------- UDFjcli / UDFjsrv ------------------------------#
# Note: before you execute UDFjcli for the first time, you must call the
# UDFjCreate.db2 CLP script to register the functions in UDFjsrv as 
# User Defined Functions (UDFs). 

UDFjcat :
	udfjcat

UDFjcli : UDFjcat Util.class UDFjcli.class

UDFjsrv : UDFjsrv.class
	$(ERASE) $(DB2PATH)/function/UDFjsrv.class
	$(COPY) UDFjsrv.class $(DB2PATH)/function


#-------------------- UDFjcli / UDFjsrv ------------------------------#
# Note: before you execute UDFsqlcl for the first time, you must call the
# UDFsCreate.db2 CLP script to register the functions in UDFsqlsv as 
# User Defined Functions (UDFs). 

UDFsqlcl : Util.class UDFsqlcl.class

UDFsqlsv : UDFsqlsv.class
	$(ERASE) $(DB2PATH)/function/UDFsqlsv.class
	$(ERASE) $(DB2PATH)/function/Person.class
	$(COPY) UDFsqlsv.class $(DB2PATH)/function
	$(COPY) Person.class $(DB2PATH)/function

#****************************************************************************
#                  3e -  Java Beans applications
#****************************************************************************

CreateEmployee : Util.class CreateEmployee.class

GeneratePayroll : Util.class GeneratePayroll.class

#****************************************************************************
#                  3f -  JCC Plugins applications
#****************************************************************************

JCCKerberosPluginTest : JCCKerberosPluginTest.class JCCKerberosPlugin.class \
	JCCSimpleGSSException.class

JCCSimpleGSSPluginTest: JCCSimpleGSSContext.class JCCSimpleGSSCredential.class \
	JCCSimpleGSSException.class JCCSimpleGSSName.class \
	JCCSimpleGSSPlugin.class JCCSimpleGSSPluginTest.class