#   makefile for network demo programs and network entrez
#
#	$Id: makenet.unx,v 6.140 2001/11/28 16:30:17 beloslyu Exp $
#   test, ignore
#
#   Sun with unbundled ANSI compiler [ make CC=acc RAN=ranlib ]
#   Sun with Gnu C [ make CC=gcc RAN=ranlib ]
#   Sun with Solaris 2.x OS [ make CC="cc -Xa" OTHERLIBS="-lsocket -lnsl -lresolv -lthread -lm" ]
#   Silicon Graphics [ make OTHERLIBS="-lm -lPW -lsun" ]
#   IBM 3090 with AIX [ make  ]
#   ULTRIX [ make RAN=ranlib ]
#   Apple AUX [ make SHELL=\usr\bin ]
#   NeXt [ make CFLtxcprocAGS1="-c -ansi" RAN=ranlib ]
#   DEC Alpha under OSF/1  [ make CC=cc RAN=ranlib ]
#   
#   Subsequent makes should make ... nocopy instead of make ... all
#   to avoid recopying the include files
#
#   To Make the Motif version of demos and to make entrez add:
#      VIBLIBS="-lXm -lXmu -lXt -lX11" VIBFLAG="-I/am/Motif/include -DWIN_MOTIF" VIB="Psequin Nentrez"
#   to the argument list.  Substitute the path to your Motif includes for
#    /am/Motif/include.
#
#   The build for RedHat Linux 2.XX with X11R6 requires:
#     CC="gcc -ansi"
#     VIBLIBS="-L/usr/X11R6/lib -lXm -lXpm -lXmu -lXp -lXt -lX11 -lXext"
#
#   To build network services tools which support data encryption, add:
#      NCBI_ENCR=E
#   and see the discussion in network/encrypt/README for how to obtain
#   the RSAREF source files.
#
#   To build clients which use the SOCKS proxy architecture, add:
#      NCBI_SOCKS=S
#   and manually set SOCKS_CCOPTS correctly for your architecture
#
#   To Make the network server and dispatcher tools, add 'servers' as an
#   object to be made, e.g.:
#     make all servers
#          OR
#     make nocopy servers
#
#   To make the seqget demo program for the network "make seqget"
#
#   This makefile may be run either before, after, or without 'makedemo'
#   It must be run after 'makeall'
#   
#
#   NOTE: It is now possible to build using shared libraries, which
#     consumes significantly less disk space.  To use shared libraries, try:
#       make ... NCBI_SHLIBS=shlib NCBI_LINKINGLIBDIR=../shlib
#             NCBI_OTHERLINKOPTIONS=-R`pwd`/../shlib
#     Also note that building shared libraries using 'makenet' requires
#     that the 'LCL' variable be set in the same manner as for 'makeall'
#


# default flags for compiling and loading

SUFFIXLCL = $(LCL)
CFLAGS1 = -c -O
LDFLAGS1 = -O
CC = cc
RAN = ls -l
AR = ar
OTHERLIBS = -lm
THREAD_OTHERLIBS = -lthread
THREAD_OTHERLIBS =
THREAD_OBJ = ncbithr.o
THREAD_OBJ =
VIBLIBS = 
VIBFLAG = -I/am/Motif/include -DWIN_MOTIF
VIBFLAG =
VIB = vclient Nentrez ddv udv
VIB =
VIBLIBS= -lXm -lXmu -lXt -lX11
VIBLIBS=
SEQUIN_OPTS =
LIBCOPY = cp -p
SRCCOPY = ./ln-if-absent
BINCOPY = cp -p

SUFFIXENV = unx
ASNDIR = asnstat

BLIB5 = libncbiacc.a
BLIB6 = libnetcli.a
BLIB6_= libnetcli_.a
BLIB7 = libnetentr.a
BLIB8 = libncbiNacc.a
BLIB9 = libncbiCacc.a
BLIB11 = libncbimla.a
BLIB12 = libncbitax.a
BLIB13 = libncbiid0.a
#BLIB14 = libncbibls0.a
BLIB15 = libnetcliE.a
BLIB16 = libnetcliS.a
BLIB17 = libnetcliES.a
BLIB19 = libncbispel.a
BLIB23 = libncbitool.a
BLIB24 = libncbisugg.a
BLIB25 = libncbiwww.a
BLIB27 = libncbimsc1.a
BLIB30 = libncbicn3d.a
BLIB3000 = libncbicn3dOGL.a
ULIB31 = libvibnet.a
BLIB31 = $(ULIB31)
BLIB31 =
ULIB33 = libsmartnet.a
BLIB33 = $(ULIB33)
BLIB33 =
BLIB35 = libssparse.a
BLIB36 = libnetblast.a
BLIB38 = libncbiprsn.a
BLIB40 = libncbitxc2.a
BLIB41 = libncbiid1.a

ULIB42 = libctutils.a
BLIB42 = $(ULIB42)
BLIB42 =

ULIB43 = libosutils.a
BLIB43 = $(ULIB43)
BLIB43 =

ULIB44 = libidload.a
BLIB44 = $(ULIB44)
BLIB44 =

BLIB45 = libddvlib.a

#
# Pseudo-dummy targets when Vibrant is not used
#
TLIB31 = D31$(ULIB31)
DLIB31 = D31$(BLIB31)
TLIB33 = D33$(ULIB33)
DLIB33 = D33$(BLIB33)

#
# Pseudo-dummy explanation:
#   By default the BLIB is NULL, so by default
#      TLIB = DnLIBn and DLIBn = Dn and Dn: is a NO-OP
#   IF BLIB is defined, then
#      TLIB = DnLIBn and DLIBn = DnLIBn  (the same as TLIB)
#  The trick is the nocopy depends on DLIBn, either a no-op or the real lib
#   -Karl the detective

#
# Pseudo-dummy targets when Sybase is not used
#
TLIB42 = D42$(ULIB42)
DLIB42 = D42$(BLIB42)
TLIB43 = D43$(ULIB43)
DLIB43 = D43$(BLIB43)
TLIB44 = D44$(ULIB44)
DLIB44 = D44$(BLIB44)


LIB1 = -lncbi
LIB2 = -lncbiobj
LIB3 = -lncbicdr
LIB4 = -lvibrant
LIB400 = -lvibrantOGL
LIB5 = -lncbiacc
LIB6 = -lnetcli
LIB6_= -lnetcli_
LIB7 = -lnetentr
LIB8 = -lncbiNacc
LIB9 = -lncbiCacc
# LIB10 is reserved for NCSA socket library
LIB10 =
LIB11 = -lncbimla
LIB12 = -lncbitax
LIB13 = -lncbiid0
#LIB14 = -lncbibls0
LIB15 = -lnetcliE
LIB16 = -lnetcliS
LIB17 = -lnetcliES
LIB19 = -lncbispel
# LIB20 is for the NCBI desktop utilities
LIB20 = -lncbidesk
LIB22 = -lncbimmdb
LIB23 = -lncbitool
LIB24 = -lncbisugg
LIB25 = -lncbiwww
LIB27 = -lncbimsc1
LIB30 = -lncbicn3d
LIB3000 = -lncbicn3dOGL
LIB31 = -lvibnet
LIB33 = -lsmartnet
LIB35 = -lssparse
LIB36 = -lnetblast
LIB38 = -lncbiprsn
LIB40 = -lncbitxc2
LIB41 = -lncbiid1
LIB42 = -lctutils
LIB43 = -losutils
LIB44 = -lidload
LIB45 = -lddvlib

##
## encryption of network services
##
ENCRSRCDIR = ../network/encrypt/ripem/rsaref/source
## uncomment the following line for encryption, or set NCBI_ENCR=E externally
# NCBI_ENCR = E

##
## use of the SOCKS proxy software with network services
##
## uncomment the following line for SOCKS, or set NCBI_SOCKS=S externally
# NCBI_SOCKS = S
SOCKSDIR = ../network/socks/socks.cstc.4.2
SOCKSSRCDIR = $(SOCKSDIR)/lib
SOCKSINCDIR = $(SOCKSDIR)/include
##
## If using SOCKS, set correct SOCKS compile options below or externally;
## the following are for Solaris.  If in doubt, look at the Makefile which
## appears in the SOCKS source tree
##
SOCKS_CCOPTS = -DSOLARIS -DUSE_DIRENT -DCOMPAT -Dindex=strchr -Drindex=strrchr
SOCKS_CCOPTS = $(NCBI_SOCKS_CCOPTS)
##
## the following is for IRIX
##
# SOCKS_CCOPTS = -cckr -DCOMPAT
##
## uncomment the following for SunOS 4.1.x
##
# SOCKS_GETPASS=getpass.o

BNETCLILIB   = libnetcli.a
NETCLILIB    = $(LIB6)
BENTREZLIBS  = $(BLIB8) $(BLIB7) $(BNETCLILIB) $(BLIB3)
ENTREZLIBS   = $(LIB8) $(LIB7) $(NETCLILIB) $(LIB3)

BNETCLILIB_  = libnetcli_$(NCBI_ENCR)$(NCBI_SOCKS).a
NETCLILIB_   = $(LIB6_)$(NCBI_ENCR)$(NCBI_SOCKS)
BENTREZLIBS_ = $(BLIB8) $(BLIB7) $(BNETCLILIB_) $(BLIB3)
ENTREZLIBS_  = $(LIB8) $(LIB7) $(NETCLILIB_) $(LIB3)

##
## servers/dispatcher/ncbid never use SOCKS
##
BSRVNETCLILIB  = libnetcli$(NCBI_ENCR).a
SRVNETCLILIB   = $(LIB6)$(NCBI_ENCR)

BSRVNETCLILIB_ = libnetcli_$(NCBI_ENCR).a
SRVNETCLILIB_  = $(LIB6_)$(NCBI_ENCR)

###
NCBI_INCDIR = ../include
NCBI_LIBDIR = ../lib
NCBI_LINKINGLIBDIR = $(NCBI_LIBDIR)
# A kludge which tells the linker not to try to use shared libraries
# when linking programs which use main() instead of Nlm_Main()
USES_MAIN_KLUDGE = -L$(NCBI_LIBDIR)
NCBI_OTHERLINKOPTIONS =
NCBI_SHLIBS = shlib
NCBI_SHLIBS =
MAKESHLIB = ../make/makeshlb.unx

CFLAGS = $(CFLAGS1) -I$(NCBI_INCDIR) $(VIBFLAG) -DNETENTREZVERSION="\"$(NETENTREZVERSION) \""
LDFLAGS = $(LDFLAGS1) -I$(NCBI_INCDIR) $(NCBI_OTHERLINKOPTIONS) -L$(NCBI_LINKINGLIBDIR) $(VIBFLAG)


##
## some things to make
##

## sources for libraries

SRC6  = ni_lib_.c ni_www.c ni_debug.c ncbicli.c ncbiurl.c \
        ni_disp.c ni_msg.c ni_error.c ni_encrs.c ni_serv.c
SRC6_ = ni_lib.c ni_msg.c ni_error.c ni_encrs.c

SRC7 =	netentr.c netlib.c objneten.c

SRC8 =	accentr.c accutils.c

SRC9 =	$(SRC8)

SRC11 = objmla.c medarch.c medutil.c

SRC12 = objtaxon.c taxarch.c taxondt.c

SRC13 = id0gen.c id0arch.c

SRCRSAREF = desc.c digit.c digitas.c md2c.c md5c.c nn.c prime.c r_encode.c \
	    r_enhanc.c r_keygen.c r_random.c r_stdlib.c rsa.c

SRCSOCKS = Rconnect.c SendGetDst.c check_cconf.c check_user.c \
	   percent_x.c porttoserv.c saddrtoname.c shell_cmd.c

SRC15 = ncbiurl.c ni_lib.c ni_msg.c ni_error.c ni_encr.c $(SRCRSAREF)

SRC16 = ncbiurl.c ni_lib.c ni_msg.c ni_error.c ni_encrs.c $(SRCSOCKS)

SRC17 = ncbiurl.c ni_lib.c ni_msg.c ni_error.c ni_encr.c $(SRCSOCKS) \
	$(SRCRSAREF)

SRC19 = objspell.c spellapi.c

SRC24 = suggadj.c suggapi.c suggen.c suggest.c suggslp.c

SRC25 = www.c wtoolbar.c querydb.c

SRCTAXCOMMON = objtax1.c taxutil.c

SRC27 = indexlist.c isamlist.c memmap.c miscutils.c

SRC31 = netcnfg.c trmlst.c docsum.c

SRC33 = smartnet.c

SRC35 = dlistptr.c ssputil.c

SRC36 = objblst3.c netblap3.c 

SRC38 = ftanet.c

SRC40 = objtax1.c taxutil.c tc2dproc.c txcdproc.c parttree.c taxcs.c taxblast.c

SRC41 = id1gen.c id1arch.c accid1.c

SRC42 = accpubseq.c ctliberr.c ctlibutils.c password.c

SRC43 = os_mtutils.c already_running.c

SRC44 = idload_lib.c

NET_LIBS_SRC = $(SRC6) $(SRC6_) $(SRC7) $(SRC8) $(SRC9)

# objects for libraries

OBJ6  = ni_lib_.o ncbicli.o ncbiurl.o ni_www.o ni_debug.o \
        ni_disp.o ni_msg.o ni_error.o ni_encrs.o ni_serv.o
OBJ6_ = ni_lib.o ni_msg.o ni_error.o ni_encrs.o

OBJ7 =	netentr.o netlib.o objneten.o

OBJ8 =	Naccentr.o accutils.o

OBJ9 =	Caccentr.o accutils.o

OBJ11 = objmla.o medarch.o medutil.o

OBJ12 = objtaxon.o taxarch.o taxondt.o

OBJ13 = id0gen.o id0arch.o

OBJRSAREF = desc.o digit.o digitas.o md2c.o md5c.o nn.o prime.o r_encode.o \
	    r_enhanc.o r_keygen.o r_random.o r_stdlib.o rsa.o

OBJSOCKS = Rconnect.o SendGetDst.o check_cconf.o check_user.o \
	   percent_x.o porttoserv.o saddrtoname.o shell_cmd.o $(SOCKS_GETPASS)

OBJ15BASE = ncbiurl.o ni_lib.o ni_msg.o ni_error.o ni_encr.o

OBJ15 = $(OBJ15BASE) $(OBJRSAREF)

OBJ16BASE = ncbiurl.o Sni_lib.o ni_msg.o ni_error.o ni_encrs.o

OBJ16 = $(OBJ16BASE) $(OBJSOCKS)

OBJ17BASE = ncbiurl.o Sni_lib.o ni_msg.o ni_error.o ni_encr.o

OBJ17 = $(OBJ17BASE) $(OBJSOCKS) $(OBJRSAREF)

OBJ19 = objspell.o spellapi.o

OBJ24 = suggadj.o suggapi.o suggen.o suggest.o suggslp.o

OBJ25 = www.o wtoolbar.o querydb.o

OBJ27 = indexlist.o isamlist.o memmap.o miscutils.o

OBJ31 = netcnfg.o trmlst.o docsum.o

OBJ33 = smartnet.o

OBJ35 = dlistptr.o ssputil.o

OBJ36 = objblst3.o netblap3.o

OBJ38 = ftanet.o

OBJ40 = objtax1.o taxutil.o tc2dproc.o txcdproc.o parttree.o taxcs.o taxblast.o

OBJ41 = id1gen.o id1arch.o accid1.o 

OBJ42 = accpubseq.o ctliberr.o ctlibutils.o password.o

OBJ43 = os_mtutils.o already_running.o

OBJ44 = idload_lib.o

# objects & sources needed for versions of network demo programs

OBJVCLIENT =	vclient.o

OBJDDV = ddvmain.o

OBJUDV = udvmain.o

OBJDISPD =	dispd.o ni_servlib.o ni_buff.o ni_callmgr.o

OBJNCBID =	ncbid.o ni_servlib.o ni_buff.o

OBJSVBROKER =	svbroker.o

OBJENCRUTIL =   encrutil.o

OBJECHOD =	echoserv.o

EXEDISPD =	dispd

EXENCBID =	ncbid

EXESVBROKER =   svbroker

EXEENCRUTIL =	encrutil

EXEECHOD =	echoserv

EXESUGGSRV =	suggsrv

EXEQUERY =	query

EXENQUERY =	Nquery

EXESEQUIN =	sequin

EXEPSEQUIN =	Psequin

EXESESSION =	session

SRCVCLIENT =	vclient.c

SRCDDV = ddvmain.c

SRCUDV = udvmain.c

SRCDISPD =	dispd.c ni_servlib.c ni_buff.c ni_callmgr.c

SRCNCBID =	ncbid.c ni_servlib.c ni_buff.c

SRCSVBROKER =   svbroker.c

SRCENCRUTIL =	encrutil.c

SRCECHOD =	echoserv.c

SRCUTILCOPY = ../demo/srchnt.c ../demo/srchaa.c ../demo/mts.c ../demo/sigme.c \
	../demo/dst.c ../demo/ccp.c ../demo/epi.c ../demo/twop.c \
	../demo/cnsrt.c ../demo/cnsgn.c \
	../demo/ccpv.c ../demo/dustv.c ../demo/epiv.c ../demo/sigmev.c \
	../demo/twopv.c ../demo/cnsrtv.c ../demo/cnsgnv.c ../demo/searchv.c

EXEUTIL = srchnt srchaa mts sigme dst ccp epi twop cnsrt cnsgn

EXEUTILVIB = ccpv dustv epiv sigmev twopv cnsrtv cnsgnv searchv

SRCSEQUIN = sequin1.c sequin2.c sequin3.c sequin4.c sequin5.c sequin6.c \
	sequin7.c sequin8.c sequin9.c sequinx.c

SRCSESSION =	session.c



CLI_SRC = $(SRCVCLIENT) $(SRCDDV) $(SRCUDV)

CLIENTS = suggcli
CLIENTS =

SERV_SRC = $(SRCDISPD) $(SRCNCBID) $(SRCECHOD) $(SRCENTSRV) $(SRCSVBROKER) \
	$(SRCENCRUTIL)

SERVERS = $(EXEDISPD) $(EXENCBID) $(EXEECHOD) $(EXESVBROKER) \
	$(EXEENCRUTIL) $(EXESUGGSRV) $(EXEQUERY) $(EXESEQUIN) $(EXESESSION) \
	$(EXEPSEQUIN) $(EXENQUERY)

## All things to make
##
all : ln-if-absent copy .WAIT nocopy

ln-if-absent:	../make/ln-if-absent
	rm -f ln-if-absent
	ln -s ../make/ln-if-absent .

nocopy : sources $(BLIB6) $(BLIB6_) $(NCBI_ENCR) $(NCBI_SOCKS) \
   $(NCBI_ENCR)$(NCBI_SOCKS) $(BLIB7) \
   $(BLIB8) $(BLIB9) $(DLIB31) $(DLIB33) $(NCBI_SHLIBS) $(CLIENTS) $(VIB) \
	  $(DLIB42) $(DLIB43) $(DLIB44)

sources : $(NET_LIBS_SRC) $(CLI_SRC)

servers : $(SERV_SRC) $(SERVERS)

utilities : $(EXEUTIL)

vibutilities : $(EXEUTILVIB)

.NO_PARALLEL:	copy nocopy Tentrez sequin Psequin Ssequin elecpcr asn2fast asn2asn Nbatch Nbatch2 Nbatch3 Nentrcmd seqget idfetch session test_ncbi_socket test_ncbisock debug_server rtestval rasn2ff asn2gb testent2 entrez2 spidey dotmatrix ingenue condense

.WAIT:
	echo Waiting...go

## encryption
##
E : $(BLIB15)

## SOCKS
##
S : $(BLIB16)

## encryption + SOCKS
##
ES : $(BLIB17)


others : $(BLIB11) $(BLIB12) $(BLIB13) $(BLIB19) $(BLIB25) $(BLIB27) $(BLIB35) $(BLIB36) $(BLIB38) $(BLIB40) $(NCBI_SHLIBS).alt $(BLIB41) $(BLIB42) $(BLIB43) $(BLIB44)


## To clean out the directory without removing make
##
clean :
	- rm -f *.[acho]

## use subordinate makefile for building shared libraries
##
shlib : shlib.$(LCL)

## Special rules to allow shared libs to be built more than once within
## a given 'make' invocation
##
shlib.alt :
	make -f makenet.unx LCL=$(LCL) NCBI_LIBDIR=$(NCBI_LIBDIR) OTHERLIBS=$(OTHERLIBS) shlib

shlib.alt2 :
	make -f makenet.unx LCL=$(LCL) NCBI_LIBDIR=$(NCBI_LIBDIR) OTHERLIBS=$(OTHERLIBS) shlib

## null rules
##
.alt : 
.alt2 : 

#
# Solaris Intel shared libs are built the same in the same manner as for Solaris
# Sparc
#
shlib.sin : shlib.sol

shlib.sol :
	-mkdir ../shlib
	-rm -f ../shlib/*.a
	ln $(NCBI_LIBDIR)/*.a ../shlib
	cd ../shlib; make -f $(MAKESHLIB) `ls *.a | sed "s/\.a/.so/"` NCBI_OTHERLIBS=$(OTHERLIBS)
	rm -f ../shlib/*.a

#
# Linux shared libs are built the same in the same manner as for SGI
#
shlib.lnx : shlib.sgi

shlib.sgi :
	-mkdir ../shlib
	-rm -f ../shlib/*.a
	ln $(NCBI_LIBDIR)/*.a ../shlib
	cd ../shlib; make -f $(MAKESHLIB) `ls *.a | sed "s/\.a/.so/"` SH1="ld -o" SH2="-shared *.o"
	rm -f ../shlib/*.a

shlib.alf :
	-mkdir ../shlib
	-rm -f ../shlib/*.a
	ln $(NCBI_LIBDIR)/*.a ../shlib
	cd ../shlib; make -f $(MAKESHLIB) `ls *.a | sed "s/\.a/.so/"` SH1="ld -o" SH2="-expect_unresolved '*' -shared *.o"
	rm -f ../shlib/*.a


copy :
	$(SRCCOPY) ../connect/test/*.c .
	$(SRCCOPY) ../network/entrez/client/*.h ../include
	$(SRCCOPY) ../network/entrez/client/*.c .
	-$(SRCCOPY) ../network/medarch/client/*.h ../include
	-$(SRCCOPY) ../network/medarch/client/*.c .
	-$(SRCCOPY) ../network/taxonomy/client/*.h ../include
	-$(SRCCOPY) ../network/taxonomy/client/*.c .
	-$(SRCCOPY) ../network/taxon1/common/*.h ../include
	-$(SRCCOPY) ../network/taxon1/common/*.c .
	-$(SRCCOPY) ../network/taxon1/taxon2/*.h ../include
	-$(SRCCOPY) ../network/taxon1/taxon2/*.c .
	-$(SRCCOPY) ../network/id0arch/client/*.h ../include
	-$(SRCCOPY) ../network/id0arch/client/*.c .
	-$(SRCCOPY) ../network/id1arch/*.h ../include
	-$(SRCCOPY) ../network/id1arch/*.c .
	-$(SRCCOPY) ../network/spell/client/*.h ../include
	-$(SRCCOPY) ../network/spell/client/*.c .
	-$(SRCCOPY) ../network/suggest/client/*.h ../include
	-$(SRCCOPY) ../network/suggest/client/*.c .
	-$(SRCCOPY) ../network/blast3/client/*.h ../include
	-$(SRCCOPY) ../network/blast3/client/*.c .
	-$(SRCCOPY) ../tools/taxblast.h ../include
	-$(SRCCOPY) ../tools/taxblast.c .
	-$(SRCCOPY) $(ENCRSRCDIR)/*.c .
	-$(SRCCOPY) $(SOCKSSRCDIR)/*.c .
	-$(SRCCOPY) ../internal/misc/*.c .
	-$(SRCCOPY) ../internal/misc/*.h ../include
	-$(SRCCOPY) ../internal/ssparse/*.c .
	-$(SRCCOPY) ../internal/ssparse/*.h ../include
	-$(SRCCOPY) ../internal/libparsn/*.c .
	-$(SRCCOPY) ../internal/libparsn/*.h ../include
	-$(SRCCOPY) ../internal/smart/smartnet/*.c .
	-$(SRCCOPY) ../internal/smart/smartnet/*.h ../include
	-$(SRCCOPY) ../internal/www/*.c .
	-$(SRCCOPY) ../internal/www/*.h ../include
	-$(SRCCOPY) ../internal/query/*.c .
	-$(SRCCOPY) ../internal/query/*.h ../include
	-$(SRCCOPY) ../network/sybutils/ctlib/*.c .
	-$(SRCCOPY) ../network/sybutils/ctlib/*.h ../include
	-$(SRCCOPY) ../network/sybutils/oslib/*.c .
	-$(SRCCOPY) ../network/sybutils/oslib/*.h ../include
	-$(SRCCOPY) ../network/sybutils/idloadlib/*.c .
	-$(SRCCOPY) ../network/sybutils/idloadlib/*.h ../include
	$(SRCCOPY) ../network/nsclilib/*.h ../include
	$(SRCCOPY) ../network/nsclilib/*.c .
	$(SRCCOPY) ../network/vibnet/*.c .
	$(SRCCOPY) ../network/vibnet/*.h ../include
	$(SRCCOPY) ../cdromlib/*.h ../include
	$(SRCCOPY) ../cdromlib/accentr.c .
	$(SRCCOPY) ../cdromlib/accutils.c .
	-$(SRCCOPY) ../sequin/*.* .
	$(SRCCOPY) ../demo/entrez.c .
	$(SRCCOPY) ../demo/netentcf.c .
	$(SRCCOPY) ../demo/seqget.c .
	$(SRCCOPY) ../demo/entrcmd.c .
	$(SRCCOPY) ../demo/batch.c .
	$(SRCCOPY) ../demo/nbatch.c .
	$(SRCCOPY) ../demo/qbatch.c .
	$(SRCCOPY) ../demo/elecpcr.c .
	$(SRCCOPY) ../demo/asn2fast.c .
	$(SRCCOPY) ../demo/asn2asn.c .
	$(SRCCOPY) ../demo/fetchent.c .
	$(SRCCOPY) ../demo/udvmain.c .
	$(SRCCOPY) ../demo/rtestval.c .
	$(SRCCOPY) ../demo/asn2ff.c .
	$(SRCCOPY) ../demo/asn2gb.c .
	$(SRCCOPY) ../demo/testent2.c .
	$(SRCCOPY) ../demo/entrez2.c .
	$(SRCCOPY) ../demo/condense.c .
	$(SRCCOPY) ../demo/spideymain.c .
	$(SRCCOPY) ../demo/dotmain.c .
	$(SRCCOPY) ../demo/ingenmain.c .
	$(SRCCOPY) $(SRCUTILCOPY) .
	-$(SRCCOPY) ../network/entrez/server/*.* .
	-$(SRCCOPY) ../network/suggest/server/*.* .
	-$(SRCCOPY) ../network/nsdaemon/*.* .
	$(SRCCOPY) ../network/nsdemocl/*.* .
	chmod -R ug+rw,o+r .


## Implicit actions
##

.c.o :
	$(CC) $(CFLAGS) $<

## Special rules for network Acclib
##
Naccentr.o : accentr.c
	$(SRCCOPY) accentr.c Naccentr.c
	$(CC) $(CFLAGS) -D_NETENT_ Naccentr.c

## Special rules for network/cd ("combo") Acclib
##
Caccentr.o : accentr.c
	$(SRCCOPY) accentr.c Caccentr.c
	$(CC) $(CFLAGS) -D_NET_AND_CD_ Caccentr.c

## Special rule for ni_lib.c with SOCKS support
##
Sni_lib.o : ni_lib.c
	$(SRCCOPY) ni_lib.c Sni_lib.c
	$(CC) $(CFLAGS) -I$(SOCKSINCDIR) -DNETP_SOCKS Sni_lib.c

## Special rules for automatically generated object loaders
##
objmla.o: objmla.c
	$(CC) $(CFLAGS) -DNLM_OBJ_INCL=\"mapmla.h\" objmla.c

objtaxon.o: objtaxon.c
	$(CC) $(CFLAGS) -DNLM_OBJ_INCL=\"mappings.h\" objtaxon.c

id0gen.o: id0gen.c
	$(CC) $(CFLAGS) -DNLM_OBJ_INCL=\"id0map.h\" id0gen.c

id1gen.o: id1gen.c
	$(CC) $(CFLAGS) id1gen.c

## Special rule for ni_encr.c
##
ni_encr.o : ni_encr.c
	$(CC) $(CFLAGS) -I$(ENCRSRCDIR) -DPROTOTYPES ni_encr.c

## Special rules: for ni_www.c (with built-in load balancing, if specified)
##                for ni_lib_.c(with allowed WWW stateless mode)
##
ni_www.o : ni_www.c
	$(CC) $(CFLAGS) $(IN_HOUSE_CFLAGS) ni_www.c
ni_lib_.o : ni_lib_.c
	$(CC) $(CFLAGS) $(IN_HOUSE_CFLAGS) ni_lib_.c


## Explicit rules for SunOS and Solaris make utilities,
## which can't seem to figure out how to make some objects
## using the default rules
medarch.o: medarch.c
	$(CC) $(CFLAGS) medarch.c
medutil.o: medutil.c
	$(CC) $(CFLAGS) medutil.c
taxarch.o: taxarch.c
	$(CC) $(CFLAGS) taxarch.c
taxondt.o: taxondt.c
	$(CC) $(CFLAGS) taxondt.c
id0arch.o: id0arch.c
	$(CC) $(CFLAGS) id0arch.c
accid1.o: accid1.c
	$(CC) $(CFLAGS) accid1.c
id1arch.o: id1arch.c
	$(CC) $(CFLAGS) id1arch.c
objbl1p1.o : objbl1p1.c
	$(CC) $(CFLAGS) objbl1p1.c
objbl1p2.o : objbl1p2.c
	$(CC) $(CFLAGS) objbl1p2.c
netblap1.o : netblap1.c
	$(CC) $(CFLAGS) netblap1.c
blstout1.o : blstout1.c
	$(CC) $(CFLAGS) blstout1.c
objspell.o : objspell.c
	$(CC) $(CFLAGS) objspell.c
spellapi.o : spellapi.c
	$(CC) $(CFLAGS) spellapi.c
suggadj.o : suggadj.c
	$(CC) $(CFLAGS) suggadj.c
suggapi.o : suggapi.c
	$(CC) $(CFLAGS) suggapi.c
suggen.o : suggen.c
	$(CC) $(CFLAGS) suggen.c
suggest.o : suggest.c
	$(CC) $(CFLAGS) suggest.c
suggslp.o : suggslp.c
	$(CC) $(CFLAGS) suggslp.c
www.o : www.c
	$(CC) $(CFLAGS) www.c
wtoolbar.o : wtoolbar.c
	$(CC) $(CFLAGS) wtoolbar.c
querydb.o : querydb.c
	$(CC) $(CFLAGS) querydb.c
indexlist.o : indexlist.c
	$(CC) $(CFLAGS) indexlist.c
isamlist.o : isamlist.c
	$(CC) $(CFLAGS) isamlist.c
memmap.o : memmap.c
	$(CC) $(CFLAGS) memmap.c
miscutils.o : miscutils.c
	$(CC) $(CFLAGS) miscutils.c
division.o : division.c
	$(CC) $(CFLAGS) division.c
fs1proc.o : fs1proc.c
	$(CC) $(CFLAGS) fs1proc.c
fsutils.o : fsutils.c
	$(CC) $(CFLAGS) fsutils.c
gc.o : gc.c
	$(CC) $(CFLAGS) gc.c
nmclass.o : nmclass.c
	$(CC) $(CFLAGS) nmclass.c
objtax1.o : objtax1.c
	$(CC) $(CFLAGS) objtax1.c
objtax0.o : objtax0.c
	$(CC) $(CFLAGS) objtax0.c
tax1proc.o : tax1proc.c
	$(CC) $(CFLAGS) tax1proc.c
rank.o : rank.c
	$(CC) $(CFLAGS) rank.c
rex_util.o : rex_util.c
	$(CC) $(CFLAGS) rex_util.c
taxutil.o : taxutil.c
	$(CC) $(CFLAGS) taxutil.c
taxctl.o : taxctl.c
	$(CC) $(CFLAGS) taxctl.c
taxname.o : taxname.c
	$(CC) $(CFLAGS) taxname.c
taxtree.o : taxtree.c
	$(CC) $(CFLAGS) taxtree.c
fscproc.o : fscproc.c
	$(CC) $(CFLAGS) fscproc.c
tc2dproc.o : tc2proc.c
	$(CC) $(CFLAGS) -c -o $@ -DTAXSERVICE tc2proc.c
txcdproc.o : txcdproc.c
	$(CC) $(CFLAGS) -c -o $@ -DTAXSERVICE txcdproc.c
parttree.o : parttree.c
	$(CC) $(CFLAGS) parttree.c
taxcs.o : taxcs.c
	$(CC) $(CFLAGS) taxcs.c
taxblast.o : taxblast.c
	$(CC) $(CFLAGS) taxblast.c
objtaxc0.o : objtaxc0.c
	$(CC) $(CFLAGS) objtaxc0.c
tax0.o : tax0.c
	$(CC) $(CFLAGS) tax0.c
netcnfg.o : netcnfg.c
	$(CC) $(CFLAGS) netcnfg.c
trmlst.o : trmlst.c
	$(CC) $(CFLAGS) trmlst.c
docsum.o : docsum.c
	$(CC) $(CFLAGS) docsum.c
smartnet.o : smartnet.c
	$(CC) $(CFLAGS) smartnet.c
dlistptr.o : dlistptr.c
	$(CC) $(CFLAGS) dlistptr.c
ssputil.o : ssputil.c
	$(CC) $(CFLAGS) ssputil.c
objblst3.o : objblst3.c
	$(CC) $(CFLAGS) objblst3.c
netblap3.o : netblap3.c
	$(CC) $(CFLAGS) netblap3.c
ftanet.o : ftanet.c
	$(CC) $(CFLAGS) ftanet.c
already_running.o : already_running.c
	$(CC) $(CFLAGS) already_running.c
## get all the source files
##

## make libraries
##

$(BLIB6) : $(OBJ6)
	- rm -f $(BLIB6)
	$(AR) cru $(BLIB6) $(OBJ6)
	$(LIBCOPY) $(BLIB6) $(NCBI_LIBDIR)
	$(RAN) $(NCBI_LIBDIR)/$(BLIB6)

$(BLIB6_) : $(OBJ6_)
	- rm -f $(BLIB6_)
	$(AR) cru $(BLIB6_) $(OBJ6_)
	$(LIBCOPY) $(BLIB6_) $(NCBI_LIBDIR)
	$(RAN) $(NCBI_LIBDIR)/$(BLIB6_)

$(BLIB7) : $(OBJ7)
	- rm -f $(BLIB7)
	$(AR) cru $(BLIB7) $(OBJ7)
	$(LIBCOPY) $(BLIB7) $(NCBI_LIBDIR)
	$(RAN) $(NCBI_LIBDIR)/$(BLIB7)

$(BLIB8) : $(OBJ8)
	- rm -f $(BLIB8)
	$(AR) cru $(BLIB8) $(OBJ8)
	$(LIBCOPY) $(BLIB8) $(NCBI_LIBDIR)
	$(RAN) $(NCBI_LIBDIR)/$(BLIB8)

$(BLIB9) : $(OBJ9)
	- rm -f $(BLIB9)
	$(AR) cru $(BLIB9) $(OBJ9)
	$(LIBCOPY) $(BLIB9) $(NCBI_LIBDIR)
	$(RAN) $(NCBI_LIBDIR)/$(BLIB9)

$(BLIB11) : $(OBJ11)
	- rm -f $(BLIB11)
	$(AR) cru $(BLIB11) $(OBJ11)
	$(LIBCOPY) $(BLIB11) $(NCBI_LIBDIR)
	$(RAN) $(NCBI_LIBDIR)/$(BLIB11)

$(BLIB12) : $(OBJ12)
	- rm -f $(BLIB12)
	$(AR) cru $(BLIB12) $(OBJ12)
	$(LIBCOPY) $(BLIB12) $(NCBI_LIBDIR)
	$(RAN) $(NCBI_LIBDIR)/$(BLIB12)

$(BLIB13) : $(OBJ13)
	- rm -f $(BLIB13)
	$(AR) cru $(BLIB13) $(OBJ13)
	$(LIBCOPY) $(BLIB13) $(NCBI_LIBDIR)
	$(RAN) $(NCBI_LIBDIR)/$(BLIB13)

$(BLIB15) : $(OBJ15BASE) $(SRCRSAREF)
	@echo "Warning: If you have not already done so, you may need to modify"
	@echo "$(ENCRSRCDIR)/global.h for this compilation environment"
	$(CC) $(CFLAGS) -I$(ENCRSRCDIR) -DPROTOTYPES $(SRCRSAREF)
	- rm -f $(BLIB15)
	$(AR) cru $(BLIB15) $(OBJ15)
	$(LIBCOPY) $(BLIB15) $(NCBI_LIBDIR)
	$(RAN) $(NCBI_LIBDIR)/$(BLIB15)

$(BLIB16) : $(OBJ16BASE) $(SRCSOCKS)
	@echo "Warning: If you have not already done so, you may need to modify"
	@echo "$(SOCKSINCDIR)/socks.h for your operational environment"
	$(CC) $(CFLAGS) $(SOCKS_CCOPTS) -I$(SOCKSINCDIR) $(SRCSOCKS)
	- rm -f $(BLIB16)
	$(AR) cru $(BLIB16) $(OBJ16)
	$(LIBCOPY) $(BLIB16) $(NCBI_LIBDIR)
	$(RAN) $(NCBI_LIBDIR)/$(BLIB16)

$(BLIB17) : $(OBJ17BASE) $(SRCRSAREF)
	@echo "Warning: If you have not already done so, you may need to modify"
	@echo "$(ENCRSRCDIR)/global.h for this compilation environment"
	$(CC) $(CFLAGS) -I$(ENCRSRCDIR) -DPROTOTYPES $(SRCRSAREF)
	@echo "Warning: If you have not already done so, you may need to modify"
	@echo "$(SOCKSINCDIR)/socks.h for your operational environment"
	$(CC) $(CFLAGS) $(SOCKS_CCOPTS) -I$(SOCKSINCDIR) $(SRCSOCKS)
	- rm -f $(BLIB17)
	$(AR) cru $(BLIB17) $(OBJ17)
	$(LIBCOPY) $(BLIB17) $(NCBI_LIBDIR)
	$(RAN) $(NCBI_LIBDIR)/$(BLIB17)

$(BLIB19) : $(OBJ19)
	- rm -f $(BLIB19)
	$(AR) cru $(BLIB19) $(OBJ19)
	$(LIBCOPY) $(BLIB19) $(NCBI_LIBDIR)
	$(RAN) $(NCBI_LIBDIR)/$(BLIB19)

$(BLIB24) : $(OBJ24)
	- rm -f $(BLIB24)
	$(AR) cru $(BLIB24) $(OBJ24)
	$(LIBCOPY) $(BLIB24) $(NCBI_LIBDIR)
	$(RAN) $(NCBI_LIBDIR)/$(BLIB24)

$(BLIB25) : $(OBJ25)
	- rm -f $(BLIB25)
	$(AR) cru $(BLIB25) $(OBJ25)
	$(LIBCOPY) $(BLIB25) $(NCBI_LIBDIR)
	$(RAN) $(NCBI_LIBDIR)/$(BLIB25)

$(BLIB27) : $(OBJ27)
	- rm -f $(BLIB27)
	$(AR) cru $(BLIB27) $(OBJ27)
	$(LIBCOPY) $(BLIB27) $(NCBI_LIBDIR)
	$(RAN) $(NCBI_LIBDIR)/$(BLIB27)

$(BLIB35) : $(OBJ35)
	- rm -f $(BLIB35)
	$(AR) cru $(BLIB35) $(OBJ35)
	$(LIBCOPY) $(BLIB35) $(NCBI_LIBDIR)
	$(RAN) $(NCBI_LIBDIR)/$(BLIB35)

$(BLIB36) : $(OBJ36)
	- rm -f $(BLIB36)
	$(AR) cru $(BLIB36) $(OBJ36)
	$(LIBCOPY) $(BLIB36) $(NCBI_LIBDIR)
	$(RAN) $(NCBI_LIBDIR)/$(BLIB36)


$(BLIB38) : $(OBJ38)
	- rm -f $(BLIB38)
	$(AR) cru $(BLIB38) $(OBJ38)
	$(LIBCOPY) $(BLIB38) $(NCBI_LIBDIR)
	$(RAN) $(NCBI_LIBDIR)/$(BLIB38)

$(BLIB40) : $(OBJ40)
	- rm -f $(BLIB40)
	$(AR) cru $(BLIB40) $(OBJ40)
	$(LIBCOPY) $(BLIB40) $(NCBI_LIBDIR)
	$(RAN) $(NCBI_LIBDIR)/$(BLIB40)

$(BLIB41) : $(OBJ41)
	- rm -f $(BLIB41)
	$(AR) cru $(BLIB41) $(OBJ41)
	$(LIBCOPY) $(BLIB41) $(NCBI_LIBDIR)
	$(RAN) $(NCBI_LIBDIR)/$(BLIB41)


#
# Dummy target used when Vibrant is not used
#
D31:

$(TLIB31) : $(ULIB31)

$(ULIB31) : $(OBJ31)
	- rm -f $(BLIB31)
	$(AR) cru $(BLIB31) $(OBJ31)
	$(LIBCOPY) $(BLIB31) $(NCBI_LIBDIR)
	$(RAN) $(NCBI_LIBDIR)/$(BLIB31)

D33:

$(TLIB33) : $(ULIB33)

$(ULIB33) : $(OBJ33)
	- rm -f $(BLIB33)
	$(AR) cru $(BLIB33) $(OBJ33)
	$(LIBCOPY) $(BLIB33) $(NCBI_LIBDIR)
	$(RAN) $(NCBI_LIBDIR)/$(BLIB33)

#
# Dummy targets for no Sybase
#
D42:

$(TLIB42) : $(ULIB42)

$(ULIB42) : $(OBJ42)
	- rm -f $(BLIB42)
	$(AR) cru $(BLIB42) $(OBJ42)
	$(LIBCOPY) $(BLIB42) $(NCBI_LIBDIR)
	$(RAN) $(NCBI_LIBDIR)/$(BLIB42)

D43:

$(TLIB43) : $(ULIB43)

$(ULIB43) : $(OBJ43)
	- rm -f $(BLIB43)
	$(AR) cru $(BLIB43) $(OBJ43)
	$(LIBCOPY) $(BLIB43) $(NCBI_LIBDIR)
	$(RAN) $(NCBI_LIBDIR)/$(BLIB43)

D44:

$(TLIB44) : $(ULIB44)

$(ULIB44) : $(OBJ44)
	- rm -f $(BLIB44)
	$(AR) cru $(BLIB44) $(OBJ44)
	$(LIBCOPY) $(BLIB44) $(NCBI_LIBDIR)
	$(RAN) $(NCBI_LIBDIR)/$(BLIB44)

#   below applies to both 42 (ctlib) and 43 (oslib) and 44 (idloadlib)
# Since Sybase needs special include, and becuase of the TLIB/DLIB trick
#  this will not be invoked unless BLIB42 defined on the make line, we
#  can safely have an NCBI-only rule here
# SRC42 = accpubseq.c ctliberr.c ctlibutils.c password.c

ctlibutils.o : ctlibutils.c
	$(CC) $(CFLAGS) $(IN_HOUSE_CFLAGS) -c ctlibutils.c

ctliberr.o : ctliberr.c
	$(CC) $(CFLAGS) $(IN_HOUSE_CFLAGS) -c ctliberr.c

accpubseq.o : accpubseq.c
	$(CC) $(CFLAGS) $(IN_HOUSE_CFLAGS) -c accpubseq.c

password.o : password.c
	$(CC) $(CFLAGS) $(IN_HOUSE_CFLAGS) -c password.c

os_mtutils.o : os_mtutils.c
	$(CC) $(CFLAGS) $(IN_HOUSE_CFLAGS) -c os_mtutils.c

idload_lib.o : idload_lib.c
	$(CC) $(CFLAGS) $(IN_HOUSE_CFLAGS) -c idload_lib.c


## make applications
##


netentcf : netentcf.c $(ULIB31)
	$(CC) -o netentcf $(LDFLAGS) netentcf.c $(LIB31) $(LIB20) $(LIB22) $(LIB4) $(LIB23) $(LIB3) $(LIB8) $(LIB7) $(NETCLILIB) $(LIB2) $(LIB1) $(VIBLIBS) $(OTHERLIBS)

ddv    : $(OBJDDV)
	$(CC) -o ddv $(LDFLAGS) $(OBJDDV) $(LIB41) $(LIB31) $(LIB20) $(LIB22) $(LIB45) \
	$(LIB8) $(LIB7) $(NETCLILIB) $(LIB3) $(LIB4) $(LIB23) $(LIB2) $(LIB1) \
	$(VIBLIBS) $(OTHERLIBS)

udv    : $(OBJUDV)
	$(CC) -o udv $(LDFLAGS) $(OBJUDV) $(LIB41) $(LIB31) $(LIB20) $(LIB22) $(LIB45) \
    $(LIB8) $(LIB7) $(NETCLILIB) $(LIB3) $(LIB4) $(LIB23) $(LIB2) \
	$(LIB1) $(VIBLIBS) $(OTHERLIBS)

Nentrez : entrez.c $(ULIB31) netentcf
	$(CC) -o Nentrez $(LDFLAGS) entrez.c $(LIB41) $(LIB31) $(LIB30) $(LIB20) $(LIB22) $(LIB45) \
    $(LIB36) $(LIB23) $(LIB8) $(LIB7) $(NETCLILIB) $(LIB5) $(LIB4) $(LIB3) $(LIB2) $(LIB1) $(VIBLIBS) $(OTHERLIBS)

# left this in (Tentrez) for script backwards compatibility
Tentrez : entrez.c $(ULIB31) netentcf
	$(CC) -o Tentrez $(LDFLAGS) entrez.c $(LIB41) $(LIB31) $(LIB30) $(LIB20) $(LIB22) $(LIB45) \
    $(LIB36) $(LIB23) $(LIB8) $(LIB7) $(NETCLILIB) $(LIB5) $(LIB4) $(LIB3) $(LIB2) $(LIB1) $(VIBLIBS) $(OTHERLIBS)


# sample network services client (non-Vibrant) - see catalogc.c Makefile

# sample network services client (Vibrant)

vclient : vclient.c $(BNETCLILIB)
	$(CC) -o vclient $(LDFLAGS) vclient.c $(LIB4) $(NETCLILIB) $(LIB1) $(VIBLIBS) $(OTHERLIBS)


# network services dispatcher

dispd : $(OBJDISPD) $(BSRVNETCLILIB)
	$(CC) -o dispd $(LDFLAGS) $(OBJDISPD) $(SRVNETCLILIB) $(LIB1) $(OTHERLIBS)

# network services server manager

ncbid : $(OBJNCBID) $(BSRVNETCLILIB)
	$(CC) -o ncbid $(LDFLAGS) $(OBJNCBID) $(SRVNETCLILIB) $(LIB1) $(OTHERLIBS)

# generic service broker

svbroker : $(OBJSVBROKER) $(BSRVNETCLILIB)
	$(CC) -o svbroker $(LDFLAGS) $(OBJSVBROKER) $(SRVNETCLILIB) $(LIB1) $(OTHERLIBS)

# encryption utilities

encrutil : $(OBJENCRUTIL) $(BNETCLILIB)
	$(CC) -o encrutil $(LDFLAGS) $(OBJENCRUTIL) $(NETCLILIB) $(LIB1) $(OTHERLIBS)

# sample network services server

echoserv : echoserv.c $(BSRVNETCLILIB)
	$(CC) -o echoserv $(LDFLAGS) echoserv.c $(SRVNETCLILIB) $(LIB1) $(OTHERLIBS)

# demo program (network version of "seqget")

seqget : seqget.c $(BENTREZLIBS)
	$(CC) -o seqget $(LDFLAGS) seqget.c $(ENTREZLIBS) $(LIB2) $(LIB1) $(VIBLIBS) $(OTHERLIBS)

# demo program (network version of "entrcmd")

Nentrcmd : entrcmd.c
	$(CC) -o Nentrcmd $(LDFLAGS) entrcmd.c $(ENTREZLIBS) $(LIB2) $(LIB1) $(OTHERLIBS)

# demo program (batch entrez)

Nbatch : batch.c
	$(CC) -o Nbatch $(LDFLAGS) batch.c $(ENTREZLIBS) $(LIB2) $(LIB1) $(OTHERLIBS)

Nbatch2 : nbatch.c
	$(CC) -o Nbatch2 $(LDFLAGS) nbatch.c $(ENTREZLIBS) $(LIB2) $(LIB1) $(OTHERLIBS)

Nbatch3 : qbatch.c
	$(CC) -o Nbatch3 $(LDFLAGS) qbatch.c $(LIB41) $(LIB6) $(LIB2) $(LIB1) $(OTHERLIBS)

# demo program (rtestval)
rtestval :	rtestval.c
	$(CC) -o rtestval $(LDFLAGS) rtestval.c $(LIB41) $(LIB6) $(LIB2) $(LIB1) $(OTHERLIBS)

# remote asn2ff program (rasn2ff)
rasn2ff :	asn2ff.c
	$(CC) -o rasn2ff -DENABLE_ENTREZ -DENABLE_ID1 $(LDFLAGS) asn2ff.c $(LIB8) $(LIB3) $(LIB7) $(LIB6) $(LIB41) $(LIB2) $(LIB1) $(OTHERLIBS)

# remote asn2gb program (asn2gb)
asn2gb :	asn2gb.c
	$(CC) -g -o asn2gb $(LDFLAGS) asn2gb.c $(LIB41) $(NETCLILIB) $(LIB23) $(LIB2) $(LIB1) $(OTHERLIBS)

# Entrez2 service test program (testent2)
testent2 :	testent2.c
	$(CC) -g -o testent2 $(LDFLAGS) testent2.c $(LIB23) $(LIB22) $(LIB20) $(LIB2) $(LIB1) $(OTHERLIBS)

# network Entrez2 application (entrez2)
entrez2 :	entrez2.c
	$(CC) -g -o entrez2 $(LDFLAGS) entrez2.c $(LIB41) $(LIB6) $(LIB20) $(LIB22) $(LIB23) $(LIB2) $(LIB4) $(LIB1) $(VIBLIBS) $(OTHERLIBS)

# demo program (spidey)
spidey :	spideymain.c
	$(CC) -o spidey $(LDFLAGS) spideymain.c $(LIB41) $(LIB23) $(LIB6) $(LIB2) $(LIB1) $(OTHERLIBS)

# demo program dotmatrix
dotmatrix :	dotmain.c
	$(CC) -o dotmatrix $(LDFLAGS) dotmain.c $(LIB41) $(LIB6) $(LIB20) $(LIB23) $(LIB2) $(LIB4) $(LIB1) $(VIBLIBS) $(OTHERLIBS)

# demo program ingenue
ingenue :	ingenmain.c
	$(CC) -o ingenue $(LDFLAGS) ingenmain.c $(LIB41) $(LIB6) $(LIB20) $(LIB23) $(LIB2) $(LIB4) $(LIB1) $(VIBLIBS) $(OTHERLIBS)

# demo program (electronic PCR)

elecpcr : elecpcr.c
	$(CC) -o elecpcr $(LDFLAGS) elecpcr.c $(LIB23) $(ENTREZLIBS) $(LIB2) $(LIB1) $(OTHERLIBS)

# demo program (asn2fast)

asn2fast : asn2fast.c
	$(CC) -o asn2fast $(LDFLAGS) asn2fast.c $(LIB41) $(LIB6) $(LIB2) $(LIB1) $(OTHERLIBS)

# demo program (asn2asn)

asn2asn : asn2asn.c
	$(CC) -o asn2asn $(LDFLAGS) asn2asn.c $(LIB41) $(LIB6) $(LIB2) $(LIB1) $(OTHERLIBS)

# demo program (fetchent)

fetchent : fetchent.c
	$(CC) -o fetchent $(LDFLAGS) fetchent.c $(ENTREZLIBS) $(LIB2) $(LIB1) $(OTHERLIBS)

# demo program (condense)
condense :	condense.c
	$(CC) $(IN_HOUSE_CFLAGS) -o condense $(LDFLAGS) condense.c $(LIB42) $(LIB2) $(LIB1) -lnlmzip $(NCBI_SYBLIBS_CT) $(OTHERLIBS)

# test client for the id0 network service

id0test: id0test.c $(BNETCLILIB) $(BLIB13)
	$(CC) -g -o id0test $(LDFLAGS) id0test.c $(LIB13) $(NETCLILIB) $(LIB2) $(LIB1) $(OTHERLIBS)

idfetch: idfetch.c $(BNETCLILIB) $(BLIB41)
	$(CC) -g -o idfetch $(LDFLAGS) idfetch.c $(LIB41) $(NETCLILIB) $(LIB2) $(LIB1) $(OTHERLIBS)

# gapped BLAST client
# blastcl3 now has the same source code as blastall but should be compiled
# with -DBLAST_CS_API flag
blastcl3: blastcl3.c $(BNETCLILIB) $(BLIB36)
	$(CC) -g -o blastcl3 $(LDFLAGS) -DBLAST_CS_API blastall.c $(LIB36) $(LIB23) $(NETCLILIB) $(LIB2) $(LIB1) $(OTHERLIBS)

# test client for the suggest network service
suggcli: suggcli.c $(BNETCLILIB) $(BLIB24)
	$(CC) -g -o suggcli $(LDFLAGS) suggcli.c $(LIB24) $(NETCLILIB) $(LIB2) $(LIB1) $(OTHERLIBS)

# server for the suggest network service
suggsrv : suggsrv.c $(BSRVNETCLILIB) $(BLIB24) $(NCBI_SHLIBS).alt2
	$(CC) -o suggsrv $(LDFLAGS) suggsrv.c $(LIB24) $(SRVNETCLILIB) $(LIB3) $(LIB2) $(LIB1) $(OTHERLIBS)

# 'query' program used as WWW Entrez server
query : query.c sumutils.c $(BLIB27) $(BLIB25) $(BLIB22)
	$(CC) -o query $(LDFLAGS) query.c sumutils.c $(LIB25) $(LIB27) $(LIB22) $(LIB5) $(LIB3) $(LIB2) $(LIB1) $(OTHERLIBS)

# 'query' program used as WWW Entrez server
Nquery : query.c sumutils.c $(BLIB27) $(BLIB25) $(BLIB22) $(BENTREZLIBS)
	$(CC) -o Nquery $(LDFLAGS) query.c sumutils.c $(LIB25) $(LIB27) $(LIB22) $(ENTREZLIBS) $(LIB2) $(LIB1) $(OTHERLIBS)


# srchnt - pattern match REN search

srchnt : srchnt.c
	$(CC) -o srchnt $(LDFLAGS) srchnt.c $(LIB23) $(ENTREZLIBS) $(LIB2) $(LIB1) $(OTHERLIBS)

# srchaa - pattern match Prosite search or endopeptidase fragment report

srchaa.o : srchaa.c
	$(CC) $(CFLAGS) -DNO_TAX_NET srchaa.c

srchaa : srchaa.o
	$(CC) -o srchaa $(LDFLAGS) srchaa.o $(LIB23) $(ENTREZLIBS) $(LIB2) $(LIB1) $(OTHERLIBS)

#srchaa : srchaa.c
#	$(CC) -o srchaa $(LDFLAGS) srchaa.c $(LIB40) $(LIB23) $(ENTREZLIBS) $(LIB2) $(LIB1) $(OTHERLIBS)

# searchv - patterns - Vibrant version

searchv : searchv.c
	$(CC) -o searchv $(LDFLAGS) searchv.c $(LIB20) $(LIB23) $(ENTREZLIBS) $(LIB4) $(LIB2) $(LIB1) $(VIBLIBS) $(OTHERLIBS)

# mts - profile search

mts : mts.c
	$(CC) -o mts $(LDFLAGS) mts.c $(LIB23) $(ENTREZLIBS) $(LIB2) $(LIB1) $(OTHERLIBS)

# sigme - signal peptides and transmembrane regions

sigme : sigme.c
	$(CC) -o sigme $(LDFLAGS) sigme.c $(LIB23) $(ENTREZLIBS) $(LIB2) $(LIB1) $(OTHERLIBS)

# sigmev - signal peptides and transmembrane regions - Vibrant version

sigmev : sigmev.c
	$(CC) -o sigmev $(LDFLAGS) sigmev.c $(LIB20) $(LIB23) $(ENTREZLIBS) $(LIB4) $(LIB2) $(LIB1) $(VIBLIBS) $(OTHERLIBS)

# dst - low complexity nucleic acids

dst : dst.c
	$(CC) -o dst $(LDFLAGS) dst.c $(LIB23) $(ENTREZLIBS) $(LIB2) $(LIB1) $(OTHERLIBS)

# dustv - low complexity nucleic acids - Vibrant version

dustv : dustv.c
	$(CC) -o dustv $(LDFLAGS) dustv.c $(LIB20) $(LIB23) $(ENTREZLIBS) $(LIB4) $(LIB2) $(LIB1) $(VIBLIBS) $(OTHERLIBS)

# coiled coil prediction

ccp : ccp.c
	$(CC) -o ccp $(LDFLAGS) ccp.c $(LIB23) $(ENTREZLIBS) $(LIB2) $(LIB1) $(OTHERLIBS)

# coiled coil prediction - Vibrant version

ccpv : ccpv.c
	$(CC) -o ccpv $(LDFLAGS) ccpv.c $(LIB20) $(LIB23) $(ENTREZLIBS) $(LIB4) $(LIB2) $(LIB1) $(VIBLIBS) $(OTHERLIBS)

# low complexity

epi : epi.c
	$(CC) -o epi $(LDFLAGS) epi.c $(LIB23) $(ENTREZLIBS) $(LIB2) $(LIB1) $(OTHERLIBS)

# epiv - low complexity - Vibrant version

epiv : epiv.c
	$(CC) -o epiv $(LDFLAGS) epiv.c $(LIB20) $(LIB23) $(ENTREZLIBS) $(LIB4) $(LIB2) $(LIB1) $(VIBLIBS) $(OTHERLIBS)

# twop - identity in longest blast hit

twop : twop.c
	$(CC) -o twop $(LDFLAGS) twop.c $(LIB23) $(ENTREZLIBS) $(LIB2) $(LIB1) $(OTHERLIBS)

# twopv - identity in longest blast hit - Vibrant version

twopv : twopv.c
	$(CC) -o twopv $(LDFLAGS) twopv.c $(LIB20) $(LIB23) $(ENTREZLIBS) $(LIB4) $(LIB2) $(LIB1) $(VIBLIBS) $(OTHERLIBS)

# cnsrt - codon usage relationship

cnsrt : cnsrt.c
	$(CC) -o cnsrt $(LDFLAGS) cnsrt.c $(LIB23) $(ENTREZLIBS) $(LIB2) $(LIB1) $(OTHERLIBS)

# cnsrtv - codon usage tree - Vibrant version

cnsrtv : cnsrtv.c
	$(CC) -o cnsrtv $(LDFLAGS) cnsrtv.c $(LIB20) $(LIB23) $(ENTREZLIBS) $(LIB4) $(LIB2) $(LIB1) $(VIBLIBS) $(OTHERLIBS)

# cnsgn - orf selection by codon bias

cnsgn.o : cnsgn.c
	$(CC) $(CFLAGS) -DNO_BLS_NET cnsgn.c

cnsgn : cnsgn.o
	$(CC) -o cnsgn $(LDFLAGS) cnsgn.o $(LIB23) $(ENTREZLIBS) $(LIB2) $(LIB1) $(OTHERLIBS)

#cnsgn : cnsgn.c
#	$(CC) -o cnsgn $(LDFLAGS) cnsgn.c $(LIB36) $(LIB23) $(ENTREZLIBS) $(LIB2) $(LIB1) $(OTHERLIBS)

# cnsgnv - orf selection by codon bias - Vibrant version

cnsgnv : cnsgnv.c
	$(CC) -o cnsgnv $(LDFLAGS) cnsgnv.c $(LIB20) $(LIB23) $(ENTREZLIBS) $(LIB4) $(LIB2) $(LIB1) $(VIBLIBS) $(OTHERLIBS)


# 'sequin' direct submission tool
sequin : $(SRCSEQUIN) $(BENTREZLIBS) $(BLIB23) $(BLIB30) $(BLIB20) \
	$(BLIB22) $(BLIB19) $(BLIB40) $(BLIB41) $(BLIB36) $(BLIB45) \
	$(BLIB11) $(BLIB8) $(BLIB7) $(NETCLIBLIB) $(BLIB5) $(BLIB4) $(BLIB3) \
	$(BLIB2) $(BLIB1) $(ULIB31)
	$(CC) -o sequin $(SEQUIN_OPTS) -I. $(LDFLAGS) $(SRCSEQUIN) \
	$(LIB31) $(LIB30) $(LIB20) $(LIB22) $(LIB45) $(LIB19) $(LIB40) $(LIB41) \
	$(LIB36) $(LIB23) $(LIB11) $(ENTREZLIBS) $(LIB4) \
	$(LIB2) $(LIB1) $(VIBLIBS) $(OTHERLIBS)

# 'sequin' direct submission tool with interprocess communication capability
Ssequin : $(SRCSEQUIN) $(BENTREZLIBS) $(BLIB23) $(BLIB30) $(BLIB20) \
	$(BLIB22) $(BLIB19) $(BLIB40) $(BLIB41) $(BLIB36) $(BLIB45) \
	$(BLIB11) $(BLIB8) $(BLIB7) $(NETCLIBLIB) $(BLIB5) $(BLIB4) $(BLIB3) \
	$(BLIB2) $(BLIB1) $(ULIB31) $(ULIB33) $(THREAD_OBJ)
	$(CC) -o Ssequin $(SEQUIN_OPTS) -DUSE_SMARTNET -I. $(LDFLAGS) $(SRCSEQUIN) \
	$(THREAD_OBJ) $(LIB33) $(LIB30) $(LIB45) $(LIB31) $(LIB20) $(LIB22) $(LIB19) $(LIB40) \
	$(LIB41) $(LIB36) $(LIB23) $(LIB11) $(ENTREZLIBS) $(LIB4) \
	$(LIB2) $(LIB1) $(VIBLIBS) $(OTHERLIBS) $(THREAD_OTHERLIBS)

# 'Psequin' ("Public Network Sequin") direct submission tool
Psequin : $(SRCSEQUIN) $(BENTREZLIBS) $(BLIB23) $(BLIB45) $(BLIB30) $(BLIB20) \
	$(BLIB22) $(BLIB40) $(BLIB41) $(BLIB36) \
	$(BLIB11) $(BLIB8) $(BLIB7) $(NETCLIBLIB) $(BLIB5) $(BLIB4) $(BLIB3) \
	$(BLIB2) $(BLIB1) $(ULIB31)
	$(CC) -o Psequin -I. $(LDFLAGS) -UINTERNAL_NCBI_SEQUIN $(SRCSEQUIN) \
	$(LIB30) $(LIB45) $(LIB31) $(LIB20) $(LIB22) $(LIB40) $(LIB41) $(LIB36) $(LIB23) $(LIB11) \
	$(ENTREZLIBS) $(LIB4) $(LIB2) $(LIB1) $(VIBLIBS) $(OTHERLIBS)

session : $(SRCSESSION) $(BSRVNETCLILIB)
	$(CC) -o session $(LDFLAGS) $(SRCSESSION) $(SRVNETCLILIB) $(LIB1) $(OTHERLIBS)

salogif.o:	salogif.c
	$(CC) $(CFLAGS) salogif.c

wwwbutl.o:	wwwbutl.c
	 $(CC) $(CFLAGS) wwwbutl.c

wwwblast.o:	wwwblast.c
	$(CC) $(CFLAGS) wwwblast.c

xmlblast.o:	xmlblast.c
	$(CC) $(CFLAGS) xmlblast.c

bxmlobj.o:	bxmlobj.c
	$(CC) $(CFLAGS) bxmlobj.c

blast.REAL:	wwwblast.o salogif.o wwwbutl.o xmlblast.o bxmlobj.o $(THREAD_OBJ)
	$(CC) $(LDFLAGS) wwwblast.o salogif.o wwwbutl.o xmlblast.o bxmlobj.o $(THREAD_OBJ) -o blast.REAL -lvibgif $(LIB20) $(LIB23) $(LIB2) $(LIB1) $(OTHERLIBS) $(THREAD_OTHERLIBS)

# test_ncbi_socket

test_ncbi_socket : test_ncbi_socket.c
	$(CC) -o test_ncbi_socket $(LDFLAGS) test_ncbi_socket.c -DNCBI_C $(LIB1) $(OTHERLIBS)

# test_ncbisock

test_ncbisock : test_ncbisock.c
	$(CC) -o test_ncbisock $(LDFLAGS) test_ncbisock.c $(LIB1) $(OTHERLIBS)

# debug_server

debug_server : debug_server.c
	$(CC) -o debug_server $(LDFLAGS) debug_server.c $(LIB1) $(OTHERLIBS)
