#  (C) COPYRIGHT International Business Machines Corp. 1996, 2000
#  All Rights Reserved.
#
#  US Government Users Restricted Rights - Use, duplication or
#  disclosure restricted by GSA ADP Schedule Contract with IBM Corp.


# makefile for DB2 Universal Database 
# C sample programs -- SILICON GRAPHICS IRIX operating system
                         

# Enter one of the following commands 
#
#   make <app_name>        - Builds the program designated by <app_name>
#
#   make all               - Builds the all the supplied sample programs
#   make udfspserver       - Builds the examples that implement
#                            stored procedures and UDFs (on the server)
#   make localclient       - Builds the examples that can only be run
#                            successfully on a server 
#   make udfspclient       - Builds the examples that call stored 
#                            procedures and UDFs ( they can run remotely )
#   make otherremoteclient - Builds the examples that will run successfully
#                            on a client platform ( others than udfspclient )
#   make allremoteclient   - Builds programs in udfspclient and otherremoteclient
#                            categories
#
#   make clean             - Erases intermediate files
#   make cleanall          - Erases all files produced in the build process,
#                            except the original source files

# The makefile contains the following sections:
#    1 -- COMPILERS + VARIABLES
#    2 -- MAKE CATEGORIES
#    3 -- COMMANDS TO MAKE INDIVIDUAL SAMPLES


##################################################################################
#                  1 -- COMPILERS + 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

# Use the cc compiler
CC=cc

# Link with db2 o32 object type libraries
DB2_LIBPATH=$(DB2PATH)/lib

# The required compiler flags for n32 object type support
# EXTRA_CFLAGS=-n32
# Link with db2 n32 object type libraries
# DB2_LIBPATH=$(DB2PATH)/lib32

CFLAGS= $(EXTRA_CFLAGS) -I$(DB2PATH)/include $(IRIX_OBJECT_MODE)

LIBS= -L$(DB2_LIBPATH) -rpath $(DB2_LIBPATH) -ldb2

# The required libraries for multi-threaded applications
LIBSMT= -L$(DB2_LIBPATH) -rpath $(DB2_LIBPATH) -ldb2_th -lpthread

# To connect to a remote SAMPLE database cataloged on the client machine
# with another name, update the DB variable.
DB=sample
# Set UID and PWD if neccesary  
UID=
PWD=

COPY=cp
ERASE=rm -f

#############################################################################
#  2 -- MAKE CATEGORIES
#              2a - make all(= allremoteclient + localclient +udfspserver)
#              2b - make udfspserver
#              2c - make localclient  
#              2d - make udfspclient
#              2e - make otherremoteclient
#              2f - make allremoteclient(= udfspclient + otherremoteclient)
#              2g - make clean
#              2h - make cleanall
#############################################################################


#****************************************************************************
#                  2a - make all
#****************************************************************************

all : \
	allremoteclient 
#	localclient 
#	udfspserver \

#****************************************************************************
#                  2b - make udfspserver
#****************************************************************************

udfspserver : \
	spserver \
	udf udfsrv

#****************************************************************************
#                  2c - make localclient 
#****************************************************************************

localclient : \
	dbstart dbstop \
	autocfg backrest makeapi rechist tload

#****************************************************************************
#                  2d - make udfspclient
#****************************************************************************

udfspclient : \
	calludf \
	spclient udfcli

#****************************************************************************
#                  2e - make otherremoteclient
#****************************************************************************

otherremoteclient : \
	adhoc advsql asynrlog \
	blobfile \
	cli_info client columns cursor \
	d_dbconf d_dbmcon db_udcs db2mon dbauth dbcat \
	dbcmt dbconf dbinst dbmconf dbsnap \
	dbstat dcscat delet dmscont dynamic \
	ebcdicdb expsamp \
	impexp \
	joinsql \
	loadqry lobeval lobfile lobloc lobval \
	migrate monreset monsz \
	nodecat \
	openftch \
	rebind recursql restart \
	sampudf setact setrundg static sws \
	tabscont tabspace tabsql tbdefine thdsrver \
	trigsql tspace \
	updat udfcli \
	varinp


#****************************************************************************
#                  2f - make allremoteclient
#****************************************************************************

allremoteclient : \
	udfspclient \
	otherremoteclient

#****************************************************************************
#                  2g - make clean
#****************************************************************************

clean :	\
	cleangen \
	cleanemb
 
cleangen :
	$(ERASE) *.o *.map message.*
	$(ERASE) *.DEL *.TXT *.IXF
	$(ERASE) photo.xwd
	$(ERASE) /u/backup/*

cleanemb :
	$(ERASE) adhoc.c advsql.c asynrlog.c autocfg.c
	$(ERASE) blobfile.c
	$(ERASE) calludf.c columns.c cursor.c
	$(ERASE) dbauth.c dbstat.c delet.c dynamic.c
	$(ERASE) expsamp.c
	$(ERASE) impexp.c
	$(ERASE) joinsql.c
	$(ERASE) loadqry.c lobeval.c lobfile.c lobloc.c lobval.c
	$(ERASE) makeapi.c
	$(ERASE) openftch.c
	$(ERASE) rebind.c rechist.c recursql.c
	$(ERASE) sampudf.c spclient.c spserver.c static.c
	$(ERASE) tabscont.c tabspace.c tabsql.c tbdefine.c
	$(ERASE) thdsrver.c tload.c trigsql.c tspace.c
	$(ERASE) updat.c utilemb.c udfcli.c
	$(ERASE) varinp.c


#****************************************************************************
#                  2h - make cleanall
#****************************************************************************

cleanall : \
	clean
	$(ERASE) *.bnd
	$(ERASE) adhoc advsql asynrlog autocfg
	$(ERASE) backrest blobfile
	$(ERASE) calludf cli_info client columns cursor
	$(ERASE) d_dbconf d_dbmcon db_udcs db2mon dbauth dbcat
	$(ERASE) dbcmt dbconf dbinst dbmconf dbsnap
	$(ERASE) dbstart dbstat dbstop dcscat delet dmscont dynamic
	$(ERASE) ebcdicdb expsamp
	$(ERASE) impexp
	$(ERASE) joinsql
	$(ERASE) loadqry lobeval lobfile lobloc lobval
	$(ERASE) makeapi migrate monreset monsz
	$(ERASE) nodecat
	$(ERASE) openftch
	$(ERASE) rebind rechist recursql restart
	$(ERASE) sampudf setact setrundg spclient spserver static sws
	$(ERASE) tabscont tabspace tabsql tbdefine tblcli tblsrv
	$(ERASE) thdsrver tload trigsql tspace
	$(ERASE) updat udf udfcli udfsrv
	$(ERASE) varinp

	$(ERASE) $(DB2PATH)/function/udf
	$(ERASE) $(DB2PATH)/function/udfsrv
	$(ERASE) $(DB2PATH)/function/spserver


#############################################################################
#  3 -- COMMANDS TO MAKE INDIVIDUAL SAMPLES
#                  3a -  utilities
#                  3b -  non embedded SQL, non client/server samples
#                  3c -  embedded SQL, non client/server samples
#                  3d -  client/server samples (mixed)
#                  3e -  multi-threaded samples
#############################################################################



#****************************************************************************
#                  3a -  utilities
#****************************************************************************

utilapi.o : utilapi.c
	$(CC) -c utilapi.c $(CFLAGS)

utilemb.c : utilemb.sqc
	./embprep utilemb $(DB) $(UID) $(PWD)

utilemb.o : utilemb.c
	$(CC) -c utilemb.c $(CFLAGS)

#****************************************************************************
#                  3b -  non embedded SQL, non client/server samples
#****************************************************************************

backrest : utilapi.o backrest.c
	$(CC) -o backrest backrest.c utilapi.o $(CFLAGS) $(LIBS)

cli_info : utilapi.o cli_info.c
	$(CC) -o cli_info cli_info.c utilapi.o $(CFLAGS) $(LIBS)

client : utilapi.o client.c
	$(CC) -o client client.c utilapi.o $(CFLAGS) $(LIBS)

d_dbconf : utilapi.o d_dbconf.c
	$(CC) -o d_dbconf d_dbconf.c utilapi.o $(CFLAGS) $(LIBS)

d_dbmcon : utilapi.o d_dbmcon.c
	$(CC) -o d_dbmcon d_dbmcon.c utilapi.o $(CFLAGS) $(LIBS)

db_udcs : utilapi.o db_udcs.c
	$(CC) -o db_udcs db_udcs.c utilapi.o $(CFLAGS) $(LIBS)

db2mon : utilapi.o db2mon.c
	$(CC) -o db2mon db2mon.c utilapi.o $(CFLAGS) $(LIBS)

dbcat : utilapi.o dbcat.c
	$(CC) -o dbcat dbcat.c utilapi.o $(CFLAGS) $(LIBS)

dbcmt : utilapi.o dbcmt.c
	$(CC) -o dbcmt dbcmt.c utilapi.o $(CFLAGS) $(LIBS)

dbconf : utilapi.o dbconf.c
	$(CC) -o dbconf dbconf.c utilapi.o $(CFLAGS) $(LIBS)

dbinst : utilapi.o dbinst.c
	$(CC) -o dbinst dbinst.c utilapi.o $(CFLAGS) $(LIBS)

dbmconf : utilapi.o dbmconf.c
	$(CC) -o dbmconf dbmconf.c utilapi.o $(CFLAGS) $(LIBS)

dbsnap : utilapi.o dbsnap.c
	$(CC) -o dbsnap dbsnap.c utilapi.o $(CFLAGS) $(LIBS)

dbstart : utilapi.o dbstart.c
	$(CC) -o dbstart dbstart.c utilapi.o $(CFLAGS) $(LIBS)

dbstop : utilapi.o dbstop.c
	$(CC) -o dbstop dbstop.c utilapi.o $(CFLAGS) $(LIBS)

dcscat : utilapi.o dcscat.c
	$(CC) -o dcscat dcscat.c utilapi.o $(CFLAGS) $(LIBS)

dmscont : utilapi.o dmscont.c
	$(CC) -o dmscont dmscont.c utilapi.o $(CFLAGS) $(LIBS)

ebcdicdb : utilapi.o ebcdicdb.c
	$(CC) -o ebcdicdb ebcdicdb.c utilapi.o $(CFLAGS) $(LIBS)

migrate : utilapi.o migrate.c
	$(CC) -o migrate migrate.c utilapi.o $(CFLAGS) $(LIBS)

monreset : utilapi.o monreset.c
	$(CC) -o monreset monreset.c utilapi.o $(CFLAGS) $(LIBS)

monsz : utilapi.o monsz.c
	$(CC) -o monsz monsz.c utilapi.o $(CFLAGS) $(LIBS)

nodecat : utilapi.o nodecat.c
	$(CC) -o nodecat nodecat.c utilapi.o $(CFLAGS) $(LIBS)

restart : utilapi.o restart.c
	$(CC) -o restart restart.c utilapi.o $(CFLAGS) $(LIBS)

setact : utilapi.o setact.c
	$(CC) -o setact setact.c utilapi.o $(CFLAGS) $(LIBS)

setrundg : utilapi.o setrundg.c
	$(CC) -o setrundg setrundg.c utilapi.o $(CFLAGS) $(LIBS)

sws : utilapi.o sws.c
	$(CC) -o sws sws.c utilapi.o $(CFLAGS) $(LIBS)

#****************************************************************************
#                  3c -  embedded SQL non client/server samples
#****************************************************************************

adhoc.c : adhoc.sqc
	./embprep adhoc $(DB) $(UID) $(PWD)
adhoc : adhoc.c utilemb.o
	$(CC) -o adhoc adhoc.c utilemb.o $(CFLAGS) $(LIBS)

advsql.c : advsql.sqc
	./embprep advsql $(DB) $(UID) $(PWD)
advsql : advsql.c utilemb.o
	$(CC) -o advsql advsql.c utilemb.o $(CFLAGS) $(LIBS)

asynrlog.c : asynrlog.sqc
	./embprep asynrlog $(DB) $(UID) $(PWD)
asynrlog : asynrlog.c utilemb.o
	$(CC) -o asynrlog asynrlog.c utilemb.o $(CFLAGS) $(LIBS)

autocfg.c : autocfg.sqc
	./embprep autocfg $(DB) $(UID) $(PWD)
autocfg : autocfg.c utilemb.o
	$(CC) -o autocfg autocfg.c utilemb.o $(CFLAGS) $(LIBS)

blobfile.c : blobfile.sqc
	./embprep blobfile $(DB) $(UID) $(PWD)
blobfile : blobfile.c utilemb.o
	$(CC) -o blobfile blobfile.c utilemb.o $(CFLAGS) $(LIBS)

columns.c : columns.sqc
	./embprep columns $(DB) $(UID) $(PWD)
columns : columns.c utilemb.o
	$(CC) -o columns columns.c utilemb.o $(CFLAGS) $(LIBS)

cursor.c : cursor.sqc
	./embprep cursor $(DB) $(UID) $(PWD)
cursor : cursor.c utilemb.o
	$(CC) -o cursor cursor.c utilemb.o $(CFLAGS) $(LIBS)

dbauth.c : dbauth.sqc
	./embprep dbauth $(DB) $(UID) $(PWD)
dbauth : dbauth.c utilemb.o
	$(CC) -o dbauth dbauth.c utilemb.o $(CFLAGS) $(LIBS)

dbstat.c : dbstat.sqc
	./embprep dbstat $(DB) $(UID) $(PWD)
dbstat : dbstat.c utilemb.o
	$(CC) -o dbstat dbstat.c utilemb.o $(CFLAGS) $(LIBS)

delet.c : delet.sqc
	./embprep delet $(DB) $(UID) $(PWD)
delet : delet.c utilemb.o
	$(CC) -o delet delet.c utilemb.o $(CFLAGS) $(LIBS)

dynamic.c : dynamic.sqc
	./embprep dynamic $(DB) $(UID) $(PWD)
dynamic : dynamic.c utilemb.o
	$(CC) -o dynamic dynamic.c utilemb.o $(CFLAGS) $(LIBS)

expsamp.c : expsamp.sqc
	./embprep expsamp $(DB) $(UID) $(PWD)
expsamp : expsamp.c utilemb.o
	$(CC) -o expsamp expsamp.c utilemb.o $(CFLAGS) $(LIBS)

impexp.c : impexp.sqc
	./embprep impexp $(DB) $(UID) $(PWD)
impexp : impexp.c utilemb.o
	$(CC) -o impexp impexp.c utilemb.o $(CFLAGS) $(LIBS)

joinsql.c : joinsql.sqc
	./embprep joinsql $(DB) $(UID) $(PWD)
joinsql : joinsql.c utilemb.o
	$(CC) -o joinsql joinsql.c utilemb.o $(CFLAGS) $(LIBS)

loadqry.c : loadqry.sqc
	./embprep loadqry $(DB) $(UID) $(PWD)
loadqry : loadqry.c utilemb.o
	$(CC) -o loadqry loadqry.c utilemb.o $(CFLAGS) $(LIBS)

lobeval.c : lobeval.sqc
	./embprep lobeval $(DB) $(UID) $(PWD)
lobeval : lobeval.c utilemb.o
	$(CC) -o lobeval lobeval.c utilemb.o $(CFLAGS) $(LIBS)

lobfile.c : lobfile.sqc
	./embprep lobfile $(DB) $(UID) $(PWD)
lobfile : lobfile.c utilemb.o
	$(CC) -o lobfile lobfile.c utilemb.o $(CFLAGS) $(LIBS)

lobloc.c : lobloc.sqc
	./embprep lobloc $(DB) $(UID) $(PWD)
lobloc : lobloc.c utilemb.o
	$(CC) -o lobloc lobloc.c utilemb.o $(CFLAGS) $(LIBS)

lobval.c : lobval.sqc
	./embprep lobval $(DB) $(UID) $(PWD)
lobval : lobval.c utilemb.o
	$(CC) -o lobval lobval.c utilemb.o $(CFLAGS) $(LIBS)

makeapi.c : makeapi.sqc
	./embprep makeapi $(DB) $(UID) $(PWD)
makeapi : makeapi.c utilemb.o
	$(CC) -o makeapi makeapi.c utilemb.o $(CFLAGS) $(LIBS)

openftch.c : openftch.sqc
	./embprep openftch $(DB) $(UID) $(PWD)
openftch : openftch.c utilemb.o
	$(CC) -o openftch openftch.c utilemb.o $(CFLAGS) $(LIBS)

rebind.c : rebind.sqc
	./embprep rebind $(DB) $(UID) $(PWD)
rebind: rebind.c utilemb.o
	$(CC) -o rebind rebind.c utilemb.o $(CFLAGS) $(LIBS)

rechist.c : rechist.sqc
	./embprep rechist $(DB) $(UID) $(PWD)
rechist: rechist.c utilemb.o
	$(CC) -o rechist rechist.c utilemb.o $(CFLAGS) $(LIBS)

recursql.c : recursql.sqc
	./embprep recursql $(DB) $(UID) $(PWD)
recursql : recursql.c utilemb.o
	$(CC) -o recursql recursql.c utilemb.o $(CFLAGS) $(LIBS)

sampudf.c : sampudf.sqc
	./embprep sampudf $(DB) $(UID) $(PWD)
sampudf : sampudf.c utilemb.o
	$(CC) -o sampudf sampudf.c utilemb.o $(CFLAGS) $(LIBS)

static.c : static.sqc
	./embprep static $(DB) $(UID) $(PWD)
static : static.c utilemb.o
	$(CC) -o static static.c utilemb.o $(CFLAGS) $(LIBS)

tabscont.c : tabscont.sqc
	./embprep tabscont $(DB) $(UID) $(PWD)
tabscont : tabscont.c utilemb.o
	$(CC) -o tabscont tabscont.c utilemb.o $(CFLAGS) $(LIBS)

tabspace.c : tabspace.sqc
	./embprep tabspace $(DB) $(UID) $(PWD)
tabspace : tabspace.c utilemb.o
	$(CC) -o tabspace tabspace.c utilemb.o $(CFLAGS) $(LIBS)

tabsql.c : tabsql.sqc
	./embprep tabsql $(DB) $(UID) $(PWD)
tabsql : tabsql.c utilemb.o
	$(CC) -o tabsql tabsql.c utilemb.o $(CFLAGS) $(LIBS)

tbdefine.c : tbdefine.sqc
	./embprep tbdefine $(DB) $(UID) $(PWD)
tbdefine : tbdefine.c utilemb.o
	$(CC) -o tbdefine tbdefine.c utilemb.o $(CFLAGS) $(LIBS)

tload.c : tload.sqc
	./embprep tload $(DB) $(UID) $(PWD)
tload : tload.c utilemb.o
	$(CC) -o tload tload.c utilemb.o $(CFLAGS) $(LIBS)

trigsql.c : trigsql.sqc
	./embprep trigsql $(DB) $(UID) $(PWD)
trigsql : trigsql.c utilemb.o
	$(CC) -o trigsql trigsql.c utilemb.o $(CFLAGS) $(LIBS)

tspace.c : tspace.sqc
	./embprep tspace $(DB) $(UID) $(PWD)
tspace : tspace.c utilemb.o
	$(CC) -o tspace tspace.c utilemb.o $(CFLAGS) $(LIBS)

updat.c : updat.sqc
	./embprep updat $(DB) $(UID) $(PWD)
updat : updat.c utilemb.o
	$(CC) -o updat updat.c utilemb.o $(CFLAGS) $(LIBS)

varinp.c : varinp.sqc
	./embprep varinp $(DB) $(UID) $(PWD)
varinp : varinp.c utilemb.o
	$(CC) -o varinp varinp.c utilemb.o $(CFLAGS) $(LIBS)

#****************************************************************************
#                  3d -  client/server samples (mixed)   
#****************************************************************************

#--------------------calludf/udf--------------------------------------------#

calludf.c : calludf.sqc
	./embprep calludf $(DB) $(UID) $(PWD)
calludf : calludf.c utilemb.o
	$(CC) -o calludf calludf.c utilemb.o $(CFLAGS) $(LIBS)

udf : udf.c
	$(CC)  $(CFLAGSSP) -c udf.c   
	$(LINKSL) -o udf udf.o $(LIBS) -ldb2apie  
	$(ERASE) $(DB2PATH)/function/udf
	$(COPY) udf $(DB2PATH)/function/udf

#--------------------spclient/spserver--------------------------------------#

spclient.c : spclient.sqc
	./embprep spclient $(DB) $(UID) $(PWD)
spclient : spclient.c utilemb.o
	$(CC) -o spclient spclient.c utilemb.o $(CFLAGS) $(LIBS)

spserver.c : spserver.sqc
	./embprep spserver $(DB) $(UID) $(PWD)
spserver : spserver.c
	$(CC) -c spserver.c $(CFLAGSSP)  
	$(LINKSL) -o spserver spserver.o  $(LIBS)
	$(ERASE) $(DB2PATH)/function/spserver
	$(COPY) spserver $(DB2PATH)/function/spserver


#--------------------  udfcli/udfsrv----------------------------------------#
udfcli.c : udfcli.sqc
	./embprep udfcli $(DB) $(UID) $(PWD)
udfcli : udfcli.c utilemb.o
	$(CC) -o udfcli udfcli.c utilemb.o $(CFLAGS) $(LIBS)

udfsrv : udfsrv.c
	$(CC) -c udfsrv.c $(CFLAGSSP)  
	$(LINKSL) -o udfsrv udfsrv.o $(LIBS) 
	$(ERASE) $(DB2PATH)/function/udfsrv
	$(COPY) udfsrv $(DB2PATH)/function/udfsrv

#****************************************************************************
#                  3e -  multi-threaded samples
#****************************************************************************

thdsrver.c : thdsrver.sqc
	./embprep thdsrver $(DB) $(UID) $(PWD)
thdsrver : thdsrver.c
	$(CC) -o thdsrver thdsrver.c $(CFLAGS) $(LIBSMT)