# (C) COPYRIGHT International Business Machines Corp. 1995, 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 -- OS/2 operating system # Enter one of the following commands # # nmake <app_name> - Builds the program designated by <app_name> # # nmake all - Builds the all the supplied sample programs # nmake udfspserver - Builds the examples that implement # stored procedures and UDFs (on the server) # nmake localclient - Builds the examples that can only be run # successfully on a server # nmake udfspclient - Builds the examples that call stored # procedures and UDFs ( they can run remotely ) # nmake otherremoteclient - Builds the examples that will run successfully # on a client platform ( others than udfspclient ) # nmake allremoteclient - Builds programs in udfspclient and otherremoteclient # categories # # nmake clean - Erases intermediate files # nmake 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 ################################################################################## # Compiler and linker definitions for IBM VisualAge C++ compiler. CC=icc CFLAGS=-C+ -O- -Ti+ SRVCFLAGS=-C+ -Ti+ -Ge- -Gm+ -W2 LINK=ilink LINKFLAGS=/NOFREE /NOI /DEBUG /ST:64000 /PM:VIO LIBS=$(DB2PATH)\lib\db2api.lib UDFLIBS=$(DB2PATH)\lib\db2api.lib $(DB2PATH)\lib\db2apie.lib # 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 = copy ERASE = del ############################################################################# # 2 -- MAKE CATEGORIES # 2a - nmake all(= allremoteclient + localclient +udfspserver) # 2b - nmake udfspserver # 2c - nmake localclient # 2d - nmake udfspclient # 2e - nmake otherremoteclient # 2f - nmake allremoteclient(= udfspclient + otherremoteclient) # 2g - nmake clean # 2h - nmake cleanall ############################################################################# #**************************************************************************** # 2a - nmake all #**************************************************************************** all : \ allremoteclient \ localclient \ udfspserver #**************************************************************************** # 2b - nmake udfspserver #**************************************************************************** udfspserver : \ spserver \ udf udfsrv #**************************************************************************** # 2c - nmake localclient #**************************************************************************** localclient : \ autocfg \ dbstart dbstop #**************************************************************************** # 2d - nmake udfspclient #**************************************************************************** udfspclient : \ calludf \ spclient \ udfcli #**************************************************************************** # 2e - nmake otherremoteclient #**************************************************************************** otherremoteclient : \ adhoc advsql asynrlog \ backrest 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 \ makeapi migrate monreset monsz \ nodecat \ openftch \ rebind rechist recursql restart \ sampudf setact setrundg static sws \ tabscont tabspace tabsql tload trigsql tspace \ updat \ varinp #**************************************************************************** # 2f - nmake allremoteclient #**************************************************************************** allremoteclient : \ udfspclient \ otherremoteclient #**************************************************************************** # 2g - nmake clean #**************************************************************************** clean : \ cleangen \ cleanemb cleangen : - $(ERASE) *.obj *.map *.dll *.lib cleanemb : - $(ERASE) adhoc.c advsql.c asynrlog.c autocfg.c - $(ERASE) bindfile.c 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 static.c spclient.c spserver.c - $(ERASE) tabscont.c tabspace.c tabsql.c - $(ERASE) tload.c trigsql.c tspace.c - $(ERASE) udfcli.c updat.c - $(ERASE) varinp.c #**************************************************************************** # 2h - nmake cleanall #**************************************************************************** cleanall : \ clean - $(ERASE) *.exe *.bnd - $(ERASE) $(DB2PATH)\function\udf.dll - $(ERASE) $(DB2PATH)\function\udfsrv.dll - $(ERASE) $(DB2PATH)\function\spserver.dll ############################################################################# # 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) ############################################################################# #**************************************************************************** # 3a - utilities #**************************************************************************** utilapi.obj : utilapi.c $(CC) $(CFLAGS) utilapi.c utilemb.c : utilemb.sqc embprep utilemb $(DB) $(UID) $(PWD) utilemb.obj : utilemb.c $(CC) $(CFLAGS) utilemb.c #**************************************************************************** # 3b - non embedded SQL, non client/server samples #**************************************************************************** backrest.obj : backrest.c $(CC) $(CFLAGS) backrest.c backrest : backrest.obj utilapi.obj $(LINK) $(LINKFLAGS) backrest.obj utilapi.obj, backrest.exe,,$(LIBS); cli_info.obj : cli_info.c $(CC) $(CFLAGS) cli_info.c cli_info : cli_info.obj utilapi.obj $(LINK) $(LINKFLAGS) cli_info.obj utilapi.obj, cli_info.exe,,$(LIBS); client.obj : client.c $(CC) $(CFLAGS) client.c client : client.obj utilapi.obj $(LINK) $(LINKFLAGS) client.obj utilapi.obj, client.exe,,$(LIBS); d_dbconf.obj : d_dbconf.c $(CC) $(CFLAGS) d_dbconf.c d_dbconf : d_dbconf.obj utilapi.obj $(LINK) $(LINKFLAGS) d_dbconf.obj utilapi.obj, d_dbconf.exe,,$(LIBS); d_dbmcon.obj : d_dbmcon.c $(CC) $(CFLAGS) d_dbmcon.c d_dbmcon : d_dbmcon.obj utilapi.obj $(LINK) $(LINKFLAGS) d_dbmcon.obj utilapi.obj, d_dbmcon.exe,,$(LIBS); db_udcs.obj : db_udcs.c $(CC) $(CFLAGS) db_udcs.c db_udcs : db_udcs.obj utilapi.obj $(LINK) $(LINKFLAGS) db_udcs.obj utilapi.obj, db_udcs.exe,,$(LIBS); db2mon.obj : db2mon.c $(CC) $(CFLAGS) db2mon.c db2mon : db2mon.obj utilapi.obj $(LINK) $(LINKFLAGS) db2mon.obj utilapi.obj, db2mon.exe,,$(LIBS); dbcat.obj : dbcat.c $(CC) $(CFLAGS) dbcat.c dbcat : dbcat.obj utilapi.obj $(LINK) $(LINKFLAGS) dbcat.obj utilapi.obj, dbcat.exe,,$(LIBS); dbcmt.obj : dbcmt.c $(CC) $(CFLAGS) dbcmt.c dbcmt : dbcmt.obj utilapi.obj $(LINK) $(LINKFLAGS) dbcmt.obj utilapi.obj, dbcmt.exe,,$(LIBS); dbconf.obj : dbconf.c $(CC) $(CFLAGS) dbconf.c dbconf : dbconf.obj utilapi.obj $(LINK) $(LINKFLAGS) dbconf.obj utilapi.obj, dbconf.exe,,$(LIBS); dbinst.obj : dbinst.c $(CC) $(CFLAGS) dbinst.c dbinst : dbinst.obj utilapi.obj $(LINK) $(LINKFLAGS) dbinst.obj utilapi.obj, dbinst.exe,,$(LIBS); dbmconf.obj : dbmconf.c $(CC) $(CFLAGS) dbmconf.c dbmconf : dbmconf.obj utilapi.obj $(LINK) $(LINKFLAGS) dbmconf.obj utilapi.obj, dbmconf.exe,,$(LIBS); dbsnap.obj : dbsnap.c $(CC) $(CFLAGS) dbsnap.c dbsnap : dbsnap.obj utilapi.obj $(LINK) $(LINKFLAGS) dbsnap.obj utilapi.obj, dbsnap.exe,,$(LIBS); dbstart.obj : dbstart.c $(CC) $(CFLAGS) dbstart.c dbstart : dbstart.obj utilapi.obj $(LINK) $(LINKFLAGS) dbstart.obj utilapi.obj, dbstart.exe,,$(LIBS); dbstop.obj : dbstop.c $(CC) $(CFLAGS) dbstop.c dbstop : dbstop.obj utilapi.obj $(LINK) $(LINKFLAGS) dbstop.obj utilapi.obj, dbstop.exe,,$(LIBS); dcscat.obj : dcscat.c $(CC) $(CFLAGS) dcscat.c dcscat : dcscat.obj utilapi.obj $(LINK) $(LINKFLAGS) dcscat.obj utilapi.obj, dcscat.exe,,$(LIBS); dmscont.obj : dmscont.c $(CC) $(CFLAGS) dmscont.c dmscont : dmscont.obj utilapi.obj $(LINK) $(LINKFLAGS) dmscont.obj utilapi.obj, dmscont.exe,,$(LIBS); ebcdicdb.obj : ebcdicdb.c $(CC) $(CFLAGS) ebcdicdb.c ebcdicdb : ebcdicdb.obj utilapi.obj $(LINK) $(LINKFLAGS) ebcdicdb.obj utilapi.obj, ebcdicdb.exe,,$(LIBS); migrate.obj : migrate.c $(CC) $(CFLAGS) migrate.c migrate : migrate.obj utilapi.obj $(LINK) $(LINKFLAGS) migrate.obj utilapi.obj, migrate.exe,,$(LIBS); monreset.obj : monreset.c $(CC) $(CFLAGS) monreset.c monreset : monreset.obj utilapi.obj $(LINK) $(LINKFLAGS) monreset.obj utilapi.obj, monreset.exe,,$(LIBS); monsz.obj : monsz.c $(CC) $(CFLAGS) monsz.c monsz : monsz.obj utilapi.obj $(LINK) $(LINKFLAGS) monsz.obj utilapi.obj, monsz.exe,,$(LIBS); nodecat.obj : nodecat.c $(CC) $(CFLAGS) nodecat.c nodecat : nodecat.obj utilapi.obj $(LINK) $(LINKFLAGS) nodecat.obj utilapi.obj, nodecat.exe,,$(LIBS); restart.obj : restart.c $(CC) $(CFLAGS) restart.c restart : restart.obj utilapi.obj $(LINK) $(LINKFLAGS) restart.obj utilapi.obj, restart.exe,,$(LIBS); setact.obj : setact.c $(CC) $(CFLAGS) setact.c setact : setact.obj utilapi.obj $(LINK) $(LINKFLAGS) setact.obj utilapi.obj, setact.exe,,$(LIBS); setrundg.obj : setrundg.c $(CC) $(CFLAGS) setrundg.c setrundg : setrundg.obj utilapi.obj $(LINK) $(LINKFLAGS) setrundg.obj utilapi.obj, setrundg.exe,,$(LIBS); sws.obj : sws.c $(CC) $(CFLAGS) sws.c sws : sws.obj utilapi.obj $(LINK) $(LINKFLAGS) sws.obj utilapi.obj, sws.exe,,$(LIBS); #**************************************************************************** # 3c - embedded SQL non client/server samples #**************************************************************************** adhoc.c : adhoc.sqc embprep adhoc $(DB) $(UID) $(PWD) adhoc.obj : adhoc.c $(CC) $(CFLAGS) adhoc.c adhoc : adhoc.obj utilemb.obj $(LINK) $(LINKFLAGS) adhoc.obj utilemb.obj, adhoc.exe,,$(LIBS); advsql.c : advsql.sqc embprep advsql $(DB) $(UID) $(PWD) advsql.obj : advsql.c $(CC) $(CFLAGS) advsql.c advsql : advsql.obj utilemb.obj $(LINK) $(LINKFLAGS) advsql.obj utilemb.obj, advsql.exe,,$(LIBS); asynrlog.c : asynrlog.sqc embprep asynrlog $(DB) $(UID) $(PWD) asynrlog.obj : asynrlog.c $(CC) $(CFLAGS) asynrlog.c asynrlog : asynrlog.obj utilemb.obj $(LINK) $(LINKFLAGS) asynrlog.obj utilemb.obj, asynrlog.exe,,$(LIBS); autocfg.c : autocfg.sqc embprep autocfg $(DB) $(UID) $(PWD) autocfg.obj : autocfg.c $(CC) $(CFLAGS) autocfg.c autocfg : autocfg.obj utilemb.obj $(LINK) $(LINKFLAGS) autocfg.obj utilemb.obj, autocfg.exe,,$(LIBS); blobfile.c : blobfile.sqc embprep blobfile $(DB) $(UID) $(PWD) blobfile.obj : blobfile.c $(CC) $(CFLAGS) blobfile.c blobfile : blobfile.obj utilemb.obj $(LINK) $(LINKFLAGS) blobfile.obj utilemb.obj, blobfile.exe,,$(LIBS); columns.c : columns.sqc embprep columns $(DB) $(UID) $(PWD) columns.obj : columns.c $(CC) $(CFLAGS) columns.c columns : columns.obj utilemb.obj $(LINK) $(LINKFLAGS) columns.obj utilemb.obj, columns.exe,,$(LIBS); cursor.c : cursor.sqc embprep cursor $(DB) $(UID) $(PWD) cursor.obj : cursor.c $(CC) $(CFLAGS) cursor.c cursor : cursor.obj utilemb.obj $(LINK) $(LINKFLAGS) cursor.obj utilemb.obj, cursor.exe,,$(LIBS); dbauth.c : dbauth.sqc embprep dbauth $(DB) $(UID) $(PWD) dbauth.obj : dbauth.c $(CC) $(CFLAGS) dbauth.c dbauth : dbauth.obj utilemb.obj $(LINK) $(LINKFLAGS) dbauth.obj utilemb.obj, dbauth.exe,,$(LIBS); dbstat.c : dbstat.sqc embprep dbstat $(DB) $(UID) $(PWD) dbstat.obj : dbstat.c $(CC) $(CFLAGS) dbstat.c dbstat : dbstat.obj utilemb.obj $(LINK) $(LINKFLAGS) dbstat.obj utilemb.obj, dbstat.exe,,$(LIBS); delet.c : delet.sqc embprep delet $(DB) $(UID) $(PWD) delet.obj : delet.c $(CC) $(CFLAGS) delet.c delet : delet.obj utilemb.obj $(LINK) $(LINKFLAGS) delet.obj utilemb.obj, delet.exe,,$(LIBS); dynamic.c : dynamic.sqc embprep dynamic $(DB) $(UID) $(PWD) dynamic.obj : dynamic.c $(CC) $(CFLAGS) dynamic.c dynamic : dynamic.obj utilemb.obj $(LINK) $(LINKFLAGS) dynamic.obj utilemb.obj, dynamic.exe,,$(LIBS); expsamp.c : expsamp.sqc embprep expsamp $(DB) $(UID) $(PWD) expsamp.obj : expsamp.c $(CC) $(CFLAGS) expsamp.c expsamp : expsamp.obj utilemb.obj $(LINK) $(LINKFLAGS) expsamp.obj utilemb.obj, expsamp.exe,,$(LIBS); impexp.c : impexp.sqc embprep impexp $(DB) $(UID) $(PWD) impexp.obj : impexp.c $(CC) $(CFLAGS) impexp.c impexp : impexp.obj utilemb.obj $(LINK) $(LINKFLAGS) impexp.obj utilemb.obj, impexp.exe,,$(LIBS); joinsql.c : joinsql.sqc embprep joinsql $(DB) $(UID) $(PWD) joinsql.obj : joinsql.c $(CC) $(CFLAGS) joinsql.c joinsql : joinsql.obj utilemb.obj $(LINK) $(LINKFLAGS) joinsql.obj utilemb.obj, joinsql.exe,,$(LIBS); loadqry.c : loadqry.sqc embprep loadqry $(DB) $(UID) $(PWD) loadqry.obj : loadqry.c $(CC) $(CFLAGS) loadqry.c loadqry : loadqry.obj utilemb.obj $(LINK) $(LINKFLAGS) loadqry.obj utilemb.obj, loadqry.exe,,$(LIBS); lobeval.c : lobeval.sqc embprep lobeval $(DB) $(UID) $(PWD) lobeval.obj : lobeval.c $(CC) $(CFLAGS) lobeval.c lobeval : lobeval.obj utilemb.obj $(LINK) $(LINKFLAGS) lobeval.obj utilemb.obj, lobeval.exe,,$(LIBS); lobfile.c : lobfile.sqc embprep lobfile $(DB) $(UID) $(PWD) lobfile.obj : lobfile.c $(CC) $(CFLAGS) lobfile.c lobfile : lobfile.obj utilemb.obj $(LINK) $(LINKFLAGS) lobfile.obj utilemb.obj, lobfile.exe,,$(LIBS); lobloc.c : lobloc.sqc embprep lobloc $(DB) $(UID) $(PWD) lobloc.obj : lobloc.c $(CC) $(CFLAGS) lobloc.c lobloc : lobloc.obj utilemb.obj $(LINK) $(LINKFLAGS) lobloc.obj utilemb.obj, lobloc.exe,,$(LIBS); lobval.c : lobval.sqc embprep lobval $(DB) $(UID) $(PWD) lobval.obj : lobval.c $(CC) $(CFLAGS) lobval.c lobval : lobval.obj utilemb.obj $(LINK) $(LINKFLAGS) lobval.obj utilemb.obj, lobval.exe,,$(LIBS); makeapi.c : makeapi.sqc embprep makeapi $(DB) $(UID) $(PWD) makeapi.obj : makeapi.c $(CC) $(CFLAGS) makeapi.c makeapi : makeapi.obj utilemb.obj $(LINK) $(LINKFLAGS) makeapi.obj utilemb.obj, makeapi.exe,,$(LIBS); openftch.c : openftch.sqc embprep openftch $(DB) $(UID) $(PWD) openftch.obj : openftch.c $(CC) $(CFLAGS) openftch.c openftch : openftch.obj utilemb.obj $(LINK) $(LINKFLAGS) openftch.obj utilemb.obj, openftch.exe,,$(LIBS); rebind.c : rebind.sqc embprep rebind $(DB) $(UID) $(PWD) rebind.obj : rebind.c $(CC) $(CFLAGS) rebind.c rebind : rebind.obj utilemb.obj $(LINK) $(LINKFLAGS) rebind.obj utilemb.obj, rebind.exe,,$(LIBS); rechist.c : rechist.sqc embprep rechist $(DB) $(UID) $(PWD) rechist.obj : rechist.c $(CC) $(CFLAGS) rechist.c rechist : rechist.obj utilemb.obj $(LINK) $(LINKFLAGS) rechist.obj utilemb.obj, rechist.exe,,$(LIBS); recursql.c : recursql.sqc embprep recursql $(DB) $(UID) $(PWD) recursql.obj : recursql.c $(CC) $(CFLAGS) recursql.c recursql : recursql.obj utilemb.obj $(LINK) $(LINKFLAGS) recursql.obj utilemb.obj, recursql.exe,,$(LIBS); sampudf.c : sampudf.sqc embprep sampudf $(DB) $(UID) $(PWD) sampudf.obj : sampudf.c $(CC) $(CFLAGS) sampudf.c sampudf : sampudf.obj utilemb.obj $(LINK) $(LINKFLAGS) sampudf.obj utilemb.obj, sampudf.exe,,$(LIBS); static.c : static.sqc embprep static $(DB) $(UID) $(PWD) static.obj : static.c $(CC) $(CFLAGS) static.c static : static.obj utilemb.obj $(LINK) $(LINKFLAGS) static.obj utilemb.obj, static.exe,,$(LIBS); tabscont.c : tabscont.sqc embprep tabscont $(DB) $(UID) $(PWD) tabscont.obj : tabscont.c $(CC) $(CFLAGS) tabscont.c tabscont : tabscont.obj utilemb.obj $(LINK) $(LINKFLAGS) tabscont.obj utilemb.obj, tabscont.exe,,$(LIBS); tabspace.c : tabspace.sqc embprep tabspace $(DB) $(UID) $(PWD) tabspace.obj : tabspace.c $(CC) $(CFLAGS) tabspace.c tabspace : tabspace.obj utilemb.obj $(LINK) $(LINKFLAGS) tabspace.obj utilemb.obj, tabspace.exe,,$(LIBS); tabsql.c : tabsql.sqc embprep tabsql $(DB) $(UID) $(PWD) tabsql.obj : tabsql.c $(CC) $(CFLAGS) tabsql.c tabsql : tabsql.obj utilemb.obj $(LINK) $(LINKFLAGS) tabsql.obj utilemb.obj, tabsql.exe,,$(LIBS); tload.c : tload.sqc embprep tload $(DB) $(UID) $(PWD) tload.obj : tload.c $(CC) $(CFLAGS) tload.c tload : tload.obj utilemb.obj $(LINK) $(LINKFLAGS) tload.obj utilemb.obj, tload.exe,,$(LIBS); trigsql.c : trigsql.sqc embprep trigsql $(DB) $(UID) $(PWD) trigsql.obj : trigsql.c $(CC) $(CFLAGS) trigsql.c trigsql : trigsql.obj utilemb.obj $(LINK) $(LINKFLAGS) trigsql.obj utilemb.obj, trigsql.exe,,$(LIBS); tspace.c : tspace.sqc embprep tspace $(DB) $(UID) $(PWD) tspace.obj : tspace.c $(CC) $(CFLAGS) tspace.c tspace : tspace.obj utilemb.obj $(LINK) $(LINKFLAGS) tspace.obj utilemb.obj, tspace.exe,,$(LIBS); updat.c : updat.sqc embprep updat $(DB) $(UID) $(PWD) updat.obj : updat.c $(CC) $(CFLAGS) updat.c updat : updat.obj utilemb.obj $(LINK) $(LINKFLAGS) updat.obj utilemb.obj, updat.exe,,$(LIBS); varinp.c : varinp.sqc embprep varinp $(DB) $(UID) $(PWD) varinp.obj : varinp.c $(CC) $(CFLAGS) varinp.c varinp : varinp.obj utilemb.obj $(LINK) $(LINKFLAGS) varinp.obj utilemb.obj, varinp.exe,,$(LIBS); #**************************************************************************** # 3d - client/server samples (mixed) #**************************************************************************** #--------------------calludf/udf--------------------------------------------# calludf.c : calludf.sqc embprep calludf $(DB) $(UID) $(PWD) calludf.obj : calludf.c $(CC) $(CFLAGS) calludf.c calludf : calludf.obj utilemb.obj $(LINK) $(LINKFLAGS) calludf.obj utilemb.obj, calludf.exe,,$(LIBS); udf.obj : udf.c $(CC) $(SRVCFLAGS) udf.c udf : udf.obj $(LINK) $(LINKFLAGS) /MAP udf.obj,udf.dll,,$(UDFLIBS),udf.def; $(COPY) udf.dll $(DB2PATH)\function #--------------------spclient/spserver--------------------------------------# spclient.c : spclient.sqc embprep spclient $(DB) $(UID) $(PWD) spclient.obj : spclient.c $(CC) $(CFLAGS) spclient.c spclient : spclient.obj utilemb.obj $(LINK) $(LINKFLAGS) spclient.obj utilemb.obj, spclient.exe,,$(LIBS); spserver.c : spserver.sqc embprep spserver $(DB) $(UID) $(PWD) spserver.obj : spserver.c $(CC) $(SRVCFLAGS) spserver.c spserver : spserver.obj $(LINK) $(LINKFLAGS) /MAP spserver.obj,spserver.dll,,$(LIBS),spserver.def; $(COPY) spserver.dll $(DB2PATH)\function #--------------------udfcli/udfsrv------------------------------------------# udfcli.c : udfcli.sqc embprep udfcli $(DB) $(UID) $(PWD) udfcli.obj : udfcli.c $(CC) $(CFLAGS) udfcli.c udfcli : udfcli.obj utilemb.obj $(LINK) $(LINKFLAGS) udfcli.obj utilemb.obj, udfcli.exe,,$(LIBS); udfsrv.obj : udfsrv.c $(CC) $(SRVCFLAGS) udfsrv.c udfsrv : udfsrv.obj $(LINK) $(LINKFLAGS) /MAP udfsrv.obj,udfsrv.dll,,$(UDFLIBS),udfsrv.def; $(COPY) udfsrv.dll $(DB2PATH)\function