SRCDIR = ../src
LIBDIR = ../lib
MYLIB = $(LIBDIR)/mylib.a
INCLUDEDIR = $(HOME)/include
#CFLAGS = -g
CFLAGS = -O2 -g
AMINODEF = WITH_X
CC = gcc

BLASTDIR=$(HOME)/neighbor/nbrsrch/ncbi
BLASTLIBPATH=-L$(BLASTDIR)/blast/lib -L$(BLASTDIR)/gish/lib
BLASTLIB= -lapp -lgish

#REGEXPOPT=-DREGEXP
#REGEXPLIB=-lgen

EXE = patsrch patsrch2 gor chofas getfield disp_align \
	trans splice reverse shuffle randseq

all:	$(EXE)
cleanobj:
	-rm *.o
clean:
	-rm *.o $(EXE)

nbrffreq:	nbrffreq.o freqcheck.o
	$(CC) nbrffreq.o  freqcheck.o -o nbrffreq -lm

nbrffreq.o:	$(SRCDIR)/nbrffreq.c
	$(CC) -c $(CFLAGS) $(SRCDIR)/nbrffreq.c -D$(AMINODEF)

testget:	$(SRCDIR)/testget.c
	$(CC) $(CFLAGS) $(SRCDIR)/testget.c -lm -o testget -D$(AMINODEF)

freq:		freq.o freqcheck.o
	$(CC) freq.o freqcheck.o -o freq

freq.o:		$(SRCDIR)/freq.c
	$(CC) -c $(CFLAGS) $(SRCDIR)/freq.c -D$(AMINODEF)

freq2:		freq2.o freqcheck.o
	$(CC) freq2.o freqcheck.o -o freq2

freq2.o:	$(SRCDIR)/freq2.c
	$(CC) -c $(CFLAGS) $(SRCDIR)/freq2.c -D$(AMINODEF)

freq3:		$(SRCDIR)/freq3.c
	$(CC) $(CFLAGS) $(SRCDIR)/freq3.c -D$(AMINODEF) -o freq3

freq3.nox:	$(SRCDIR)/freq3.c
	$(CC) $(CFLAGS) $(SRCDIR)/freq3.c -o freq3.nox

freq4:		$(SRCDIR)/freq4.c
	$(CC) $(CFLAGS) $(SRCDIR)/freq4.c -D$(AMINODEF) -o freq4

freqcheck.o:	$(SRCDIR)/freqcheck.c
	$(CC) -c $(CFLAGS) $(SRCDIR)/freqcheck.c -D$(AMINODEF)

check_entry:	$(SRCDIR)/check_entry.c
	$(CC) $(CFLAGS) $(SRCDIR)/check_entry.c -o check_entry

mkbl:		mkbl.o getseq.o
	$(CC)  mkbl.o getseq.o -o mkbl

mkbl.o:		$(SRCDIR)/mkbl.c
	$(CC) -c $(CFLAGS) $(SRCDIR)/mkbl.c

msp:		msp.o getseq.o
	$(CC) msp.o getseq.o -o msp

msp.o:		$(SRCDIR)/msp.c
	$(CC) -c $(CFLAGS) $(SRCDIR)/msp.c

getseq.o:	$(SRCDIR)/getseq.c
	$(CC) -c $(CFLAGS) $(SRCDIR)/getseq.c

dp:	dp.o getseq.o
	$(CC) dp.o getseq.o -o dp

dp.o:	$(SRCDIR)/dp.c $(SRCDIR)/dp.h
	$(CC) -c $(CFLAGS) $(SRCDIR)/dp.c

dp2:	dp2.o getseq.o dayhoff.o create_pam.o mathmat.o
	$(CC) dp2.o getseq.o dayhoff.o create_pam.o mathmat.o -o dp2 -lm

dp2.2:	dp2.o getseq.o dayhoff.o create_pam.o mathmat.o
	$(CC) dp2.o getseq.o dayhoff.o create_pam.o mathmat.o -o dp2.2 -lm

dp2.o:	$(SRCDIR)/dp2.c $(SRCDIR)/dp.h
	$(CC) -DDOUBLESCORE -c $(CFLAGS) -DPLUS $(SRCDIR)/dp2.c

create_pam:	create_pam.main.o mathmat.o
	$(CC) create_pam.main.o mathmat.o -o $@ -lm

create_pam.main.o:	$(SRCDIR)/create_pam.c
	$(CC) -c -DMAIN -DDOUBLESCORE $(CFLAGS) $(SRCDIR)/create_pam.c -o $@

create_pam.o:	$(SRCDIR)/create_pam.c
	$(CC) -c -DDOUBLESCORE $(CFLAGS) $(SRCDIR)/create_pam.c

mathmat.o:	$(SRCDIR)/mathmat.o
	$(CC) -c $(CFLAGS) $(SRCDIR)/mathmat.c
	

stanf:	$(SRCDIR)/stanf.c
	$(CC) $(CFLAGS) $(SRCDIR)/stanf.c -o stanf

mtfsrchx:	mtfsrchx.o getseq.o
	$(CC) mtfsrchx.o getseq.o -o mtfsrchx
mtfsrchx.o:	$(SRCDIR)/mtfsrchx.c
	$(CC) -c $(CFLAGS) $(SRCDIR)/mtfsrchx.c

mbget:		$(SRCDIR)/bget.c
	$(CC) $(CFLAGS) $(SRCDIR)/bget.c -o mbget

getpdb:		$(SRCDIR)/getpdb.c
	$(CC) $(CFLAGS) $(SRCDIR)/getpdb.c getseq.o -o getpdb

compo:		$(SRCDIR)/compo.c
	$(CC) $(CFLAGS) $(SRCDIR)/compo.c getseq.o -o compo

chofas.ncbi:		~/ncbi/fasta16/chofas.c lgetaa.o
	$(CC) $(CFLAGS) ~/ncbi/fasta16/chofas.c lgetaa.o -o chofas

chofas:			$(SRCDIR)/chofas.c getseq.o
	$(CC) $(CFLAGS) $(SRCDIR)/chofas.c getseq.o -o chofas

gor:			$(SRCDIR)/gor.c getseq.o
	$(CC) $(CFLAGS) $(SRCDIR)/gor.c getseq.o -o gor

patsrch:		$(SRCDIR)/patsrch.c
	$(CC) $(CFLAGS) $? -o $@
patsrch1:		$(SRCDIR)/patsrch1.c getseq.o
	$(CC) $(CFLAGS) $(SRCDIR)/patsrch1.c getseq.o -o patsrch1

patsrch2:		$(SRCDIR)/patsrch2.c getseq.o
	$(CC) $(CFLAGS) $(SRCDIR)/patsrch2.c getseq.o -o patsrch2

prosrch2:		$(SRCDIR)/prosrch2.c getseq.o
	$(CC) $(CFLAGS) $(SRCDIR)/prosrch2.c getseq.o -o prosrch2

trans:		$(SRCDIR)/trans.c getseq.o
	$(CC) $(CFLAGS) $(SRCDIR)/trans.c getseq.o -o trans

splice:		$(SRCDIR)/splice.c getseq.o putseq.o
	$(CC) $(CFLAGS) $(SRCDIR)/splice.c getseq.o putseq.o -o splice

convfasta:	$(SRCDIR)/convfasta.c getseq.o
	$(CC) $(CFLAGS) $(SRCDIR)/convfasta.c getseq.o -o convfasta

matconv:	$(SRCDIR)/matconv.c $(BLASTDIR)/karlin.o
	$(CC) $(CFLAGS) $(SRCDIR)/matconv.c $(BLASTDIR)/karlin.o -o $@ -lm $(BLASTLIBPATH) $(BLASTLIB)

matstat:	$(SRCDIR)/matstat.c $(BLASTDIR)/karlin.o dayhoff.o
	$(CC) $(CFLAGS) $(SRCDIR)/matstat.c $(BLASTDIR)/karlin.o dayhoff.o -o $@ -lm $(BLASTLIBPATH) $(BLASTLIB) -I$(INCLUDEDIR) -DMAIN

dayhoff.o:	$(SRCDIR)/dayhoff.c
	$(CC) -c $(CFLAGS) $(SRCDIR)/dayhoff.c -DPLUS

dayhoff.new.o:	$(SRCDIR)/dayhoff.new.c
	$(CC) -c $(CFLAGS) $(SRCDIR)/dayhoff.new.c -DPLUS

disp_align.o:	$(SRCDIR)/disp_align.c
	$(CC) -c $(CFLAGS) $(SRCDIR)/disp_align.c $(REGEXPOPT)
disp_align:	disp_align.o getseq.o dayhoff.o
	$(CC) disp_align.o getseq.o dayhoff.o -o $@ -lm $(REGEXPLIB)

getfield:	$(SRCDIR)/getfield.c
	$(CC) $(CFLAGS) $(SRCDIR)/getfield.c -o $@

putseq.o:	$(SRCDIR)/putseq.c
	$(CC) -c $(CFLAGS) $(SRCDIR)/putseq.c 
	
reverse:	$(SRCDIR)/reverse.c putseq.o getseq.o
	$(CC) $(CFLAGS) $(SRCDIR)/reverse.c getseq.o putseq.o -o $@

corr:	$(SRCDIR)/corr.c
	$(CC) $(CFLAGS) $(SRCDIR)/corr.c -o $@ -lm

nr90:	$(SRCDIR)/nr90.c $(SRCDIR)/pqsort.c
	$(CC) $(CFLAGS) $(SRCDIR)/nr90.c $(SRCDIR)/pqsort.c -o $@ -lpthread

randseq:	$(SRCDIR)/randseq.c $(SRCDIR)/randseq.c dayhoff.o
	$(CC) $(CFLAGS) $(SRCDIR)/randseq.c dayhoff.o -o $@

shuffle:	$(SRCDIR)/randseq.c $(SRCDIR)/shuffle.c dayhoff.new.o getseq.o
	$(CC) $(CFLAGS) $(SRCDIR)/shuffle.c dayhoff.new.o getseq.o -o $@ -lm

shuffle2:	$(SRCDIR)/randseq.c $(SRCDIR)/shuffle.c dayhoff.new.o getseq.o
	$(CC) $(CFLAGS) $(SRCDIR)/shuffle.c dayhoff.new.o getseq.o -o $@ -lm
