# Makefile for blast

include $(BMRBMAKEHEADER)

#------------------------
# directories
#
# Solaris hack -- uncomment this to compile on Solaris --
SUNLIBS = -L/usr/local/lib -lsocket -lnsl

#
# NOTE: these are used in sed script so slashes must be escaped
#
# location of starlib.a
STARLIBDIR = ..\/starlib

# path to blast exe
#BLASTBIN = \/bmrb\/solaris\/bin\/blast
BLASTBIN = \/bmrb\/linux\/bin\/blast

#directory where starfiles are. 
#it should be set to /bmrb/htdocs/data_library/files when installed in public directory.
NMRSTARDIR = \/bmrb\/htdocs\/data_library\/files

# This is the directory where the internal, more complete files will
# be kept:
NMRSTARDIR_INTERNAL = \/bmrb\/internalNMRSTAR

# install root
#   -- change as needed
#PREFIX = /bmrb/solaris
PREFIX = /bmrb/linux

# where to install blast exe
INSTBINDIR = $(PREFIX)/bin

# location of blastrc
# INSTETCDIR = $(PREFIX)/etc
INSTETCDIR = $(BMRBETC)

#-------------------------------------------------------------------
# program defines
#
# location of blastrc
RC_PATH = '"$(INSTETCDIR)/blastrc"'

# defaults, settings in blastrc will override these
BLASTHOST = '"www.ncbi.nlm.nih.gov"'
BLASTPORT = 80
BLASTPROG = '"blast.cgi"'

COMMENT_FILE = '"/bmrb/lib/comment.str"'
LOG_FILE = '"/var/adm/blastupdate.log"'

# add -DDEBUG to get diagnostic output
BLASTFLAGS = -DPROGRAM_NAME=$(BLASTPROG) -DENGINE_HOST=$(BLASTHOST) \
             -DENGINE_PORT=$(BLASTPORT) -DCOMMENT_FILE_NAME=$(COMMENT_FILE) \
	     -DLOG_FILE_NAME=$(LOG_FILE) -DRC_FILE_NAME=$(RC_PATH)

#-------------------------------------------------------------------
# starlib flags
#
STARFLAGS  = -L$(STARLIBDIR) -I$(STARLIBDIR) 
STARLIBS   = $(STARLIBDIR)/template.o -lstar -ll

#------------------------------------------------------------------
# targets
#

OBJECTS = main.o blastConfig.o blastSearch.o blastParser.o blastDeposit.o \
          dataEntry.o dataEntries.o

all: blast blastscript_config testscript

testscript:
	cat testscript.source | \
	     sed 's/BLASTBIN_REPLACEME/$(BLASTBIN)/g' | \
	     sed 's/NMRSTARDIR_REPLACEME/$(NMRSTARDIR)/g' | \
	     sed 's/STARLIBDIR_REPLACEME/$(STARLIBDIR)/g' | \
	     cat - > testscript

blastscript_config: blastscript.source
	cat blastscript.source | \
	     sed 's/BLASTBIN_REPLACEME/$(BLASTBIN)/g' | \
	     sed 's/NMRSTARDIR_REPLACEME/$(NMRSTARDIR)/g' | \
	     sed 's/SEQALIGNDET_FLAG//g' | \
	     cat - > blastscript
	cat blastscript.source | \
	     sed 's/BLASTBIN_REPLACEME/$(BLASTBIN)/g' | \
	     sed 's/NMRSTARDIR_REPLACEME/$(NMRSTARDIR_INTERNAL)/g' | \
	     sed 's/SEQALIGNDET_FLAG/-seqdet/g' | \
	     cat - > blastscript_internal

blast: $(OBJECTS)
	$(CPP) $(STARFLAGS) $(CPPFLAGS) $(CPPLINKS) -o blast $(OBJECTS) $(STARLIBS) $(SUNLIBS)

.PHONY: clean install doc

install: blast
	cp blast blastscript blastscript_internal testscript $(INSTBINDIR)
	cp blastrc $(INSTETCDIR)
	chmod 755 $(INSTBINDIR)/blastscript
	chmod 755 $(INSTBINDIR)/blastscript_internal
	chmod 755 $(INSTBINDIR)/testscript

doc:
	doc++ -H -v -b -d doc -f -j -I Docfile

clean:
	/bin/rm -f *.o core 
	rm -f *~
	rm -r ii_files

.SUFFIXES: .cc

.cc.o:
	$(CPP) $(BLASTFLAGS) $(STARFLAGS) $(CPPFLAGS) -c $<

#-----------------------------------------------------------------------------
# targets -- individual files
#
main.o: main.cc main.h constants.h blastConfig.h blastSearch.h blastParser.h \
        blastDeposit.h dataEntries.h

blastConfig.o: blastConfig.cc blastConfig.h

blastSearch.o: blastSearch.cc blastSearch.h

blastParser.o: blastParser.cc blastParser.h

blastDeposit.o: blastDeposit.cc blastDeposit.h

dataEntry.o: dataEntry.cc dataEntry.h

dataEntries.o: dataEntries.cc dataEntries.h dataEntry.h













