JWS-112 Bumping version of Mafft to version 7.310.
[jabaws.git] / binaries / src / mafft / core / Makefile
index b950069..bce2f9d 100644 (file)
@@ -2,19 +2,32 @@ PREFIX = /usr/local
 LIBDIR = $(PREFIX)/libexec/mafft
 BINDIR = $(PREFIX)/bin
 MANDIR = $(PREFIX)/share/man/man1
+DESTDIR = 
 
 #MNO_CYGWIN = -mno-cygwin
 
-#ENABLE_MULTITHREAD = -Denablemultithread
-#Uncomment this to enable multithreading (linux only)
+ENABLE_MULTITHREAD = -Denablemultithread
+# Comment out the above line if your compiler 
+# does not support TLS (thread-local strage).
 
 CC = gcc
-CFLAGS = -O3
-#CFLAGS =  -O0  -pedantic -Wall -std=c99 -g -pg -DMALLOC_CHECK_=3
+CFLAGS = -O3 -std=c99
+#CFLAGS = -O3 -fPIC
+# add -fPIC when building .so files
+
+#CC = icc
+#CFLAGS = -fast
+# if you have icc, use this.
+
+#CFLAGS =  -O0  -fPIC -pedantic -Wall -std=c99 -g -pg -DMALLOC_CHECK_=3
+#CFLAGS =  -O0  -fPIC -pedantic -Wall -std=c99 -g -pg -DMALLOC_CHECK_=3  -fprofile-arcs -ftest-coverage 
+#CFLAGS =  -O0  -fPIC -pedantic -Wall -std=c99 -g -DMALLOC_CHECK_=3 # for shark, valgrind
+#CFLAGS =  -O0  -fPIC -pedantic -Wall -std=c99 -g -DMALLOC_CHECK_=3 -lprofiler  # ?
+
 
 MYCFLAGS = $(MNO_CYGWIN) $(ENABLE_MULTITHREAD) $(CFLAGS)
 
-ifeq ($(ENABLE_MULTITHREAD),-Denablemultithread)
+ifdef ENABLE_MULTITHREAD
 LIBS = -lm  -lpthread
 else
 LIBS = -lm
@@ -23,10 +36,16 @@ endif
 INSTALL = install
 
 PROGS = dvtditr dndfast7 dndblast sextet5 mafft-distance pairlocalalign \
-               pair2hat3s multi2hat3s rnatest pairash \
+               multi2hat3s pairash addsingle \
         splittbfast disttbfast tbfast mafft-profile f2cl mccaskillwrap contrafoldwrap countlen \
-               seq2regtable regtable2seq score getlag dndpre dndpre2 setcore replaceu restoreu
-SCRIPTS = mafft mafft-homologs.rb
+               seq2regtable regtable2seq score getlag dndpre setcore replaceu restoreu setdirection makedirectionlist version
+SOS = libdisttbfast.so
+DLLS = libdisttbfast.dll
+DYLIBS = libdisttbfast.dylib
+
+PERLPROGS = mafftash_premafft.pl seekquencer_premafft.pl
+SCRIPTS = mafft mafft-homologs.rb mafft-sparsecore.rb
+OBJSETDIRECTION = mtxutl.o io.o setdirection.o defs.o mltaln9.o
 OBJREPLACEU = mtxutl.o io.o replaceu.o defs.o mltaln9.o
 OBJRESTOREU = mtxutl.o io.o restoreu.o defs.o mltaln9.o
 OBJREGTABLE2SEQ = mtxutl.o io.o regtable2seq.o defs.o mltaln9.o
@@ -37,51 +56,54 @@ OBJMCCASKILLWRAP = mtxutl.o io.o mccaskillwrap.o constants.o defs.o mltaln9.o
 OBJCONTRAFOLDWRAP = mtxutl.o io.o contrafoldwrap.o constants.o defs.o mltaln9.o
 OBJMULTI2HAT3S = mtxutl.o io.o mltaln9.o tddis.o constants.o \
                                 multi2hat3s.o defs.o fft.o fftFunctions.o
-OBJPAIR2HAT3S = mtxutl.o io.o mltaln9.o tddis.o constants.o \
-                               pair2hat3s.o defs.o fft.o fftFunctions.o
-OBJRNATEST = mtxutl.o io.o mltaln9.o tddis.o constants.o Lalignmm.o \
-                        rna.o rnatest.o defs.o fft.o fftFunctions.o
-OBJPAIRASH = mtxutl.o io.o mltaln9.o tddis.o constants.o partQalignmm.o partSalignmm.o Lalignmm.o rna.o Salignmm.o Ralignmm.o Qalignmm.o Halignmm.o \
-                        Falign.o MSalignmm.o Galign11.o MSalign11.o suboptalign11.o genGalign11.o genalign11.o Lalign11.o SAalignmm.o \
+OBJPAIRASH = mtxutl.o io.o mltaln9.o tddis.o constants.o partSalignmm.o Lalignmm.o rna.o Salignmm.o Dalignmm.o \
+                        Falign.o MSalignmm.o Galign11.o MSalign11.o suboptalign11.o genalign11.o Lalign11.o SAalignmm.o \
                         pairash.o defs.o fft.o fftFunctions.o
-OBJPAIRLOCALALIGN = mtxutl.o io.o mltaln9.o tddis.o constants.o partQalignmm.o partSalignmm.o Lalignmm.o rna.o Salignmm.o Ralignmm.o Qalignmm.o Halignmm.o \
-                           Falign.o MSalignmm.o Galign11.o MSalign11.o suboptalign11.o genGalign11.o genalign11.o Lalign11.o SAalignmm.o \
-                                       pairlocalalign.o defs.o fft.o fftFunctions.o
-OBJDUMMY = mtxutl.o io.o mltaln9.o tddis.o constants.o partQalignmm.o partSalignmm.o Lalignmm.o rna.o Salignmm.o Ralignmm.o Qalignmm.o Halignmm.o \
+OBJPAIRLOCALALIGN = mtxutl.o io.o mltaln9.o tddis.o constants.o partSalignmm.o Lalignmm.o rna.o Salignmm.o Dalignmm.o \
+                           Falign.o MSalignmm.o Galign11.o MSalign11.o suboptalign11.o genalign11.o Lalign11.o SAalignmm.o \
+                                       pairlocalalignmain.o pairlocalalign.o defs.o fft.o fftFunctions.o
+OBJDUMMY = mtxutl.o io.o mltaln9.o tddis.o constants.o partSalignmm.o Lalignmm.o rna.o Salignmm.o Dalignmm.o \
                    Falign.o Falign_localhom.o Galign11.o SAalignmm.o MSalignmm.o \
                        disttbfast_dummy.o dummy.o defs.o fft.o fftFunctions.o
-OBJSPLITFROMALN = mtxutl.o io.o mltaln9.o tddis.o constants.o partQalignmm.o partSalignmm.o Lalignmm.o rna.o Salignmm.o Ralignmm.o Qalignmm.o Halignmm.o \
+OBJSPLITFROMALN = mtxutl.o io.o mltaln9.o tddis.o constants.o partSalignmm.o Lalignmm.o rna.o Salignmm.o  Dalignmm.o \
                    Falign.o Falign_localhom.o Galign11.o SAalignmm.o MSalignmm.o \
                        Lalign11.o splitfromaln.o defs.o fft.o fftFunctions.o
-OBJSPLITTBFAST = mtxutl.o io.o mltaln9.o tddis.o constants.o partQalignmm.o partSalignmm.o Lalignmm.o rna.o Salignmm.o Ralignmm.o Qalignmm.o Halignmm.o \
+OBJSPLITTBFAST = mtxutl.o io.o mltaln9.o tddis.o constants.o partSalignmm.o Lalignmm.o rna.o Salignmm.o  Dalignmm.o \
                    Falign.o Falign_localhom.o Galign11.o SAalignmm.o MSalignmm.o \
-                       Lalign11.o splittbfast.o defs.o fft.o fftFunctions.o
-OBJSPLITTBFAST2 = mtxutl.o io.o mltaln9.o tddis.o constants.o partQalignmm.o partSalignmm.o Lalignmm.o rna.o Salignmm.o Ralignmm.o Qalignmm.o Halignmm.o \
+                       Lalign11.o splittbfast.o defs.o fft.o fftFunctions.o 
+OBJSPLITTBFAST2 = mtxutl.o io.o mltaln9.o tddis.o constants.o partSalignmm.o Lalignmm.o rna.o Salignmm.o  Dalignmm.o \
                    Falign.o Falign_localhom.o Galign11.o SAalignmm.o MSalignmm.o \
                        Lalign11.o splittbfast2.o defs.o fft.o fftFunctions.o
-OBJSPLITTBFASTP = mtxutl.o io.o mltaln9.o tddis.o constants.o partQalignmm.o partSalignmm.o Lalignmm.o rna.o Salignmm.o Ralignmm.o Qalignmm.o Halignmm.o \
+OBJSPLITTBFASTP = mtxutl.o io.o mltaln9.o tddis.o constants.o partSalignmm.o Lalignmm.o rna.o Salignmm.o Dalignmm.o \
                    Falign.o Falign_localhom.o Galign11.o SAalignmm.o MSalignmm.o \
                        Lalign11.o defs.o fft.o fftFunctions.o
-OBJDISTTBFAST = mtxutl.o io.o mltaln9.o tddis.o constants.o partQalignmm.o partSalignmm.o Lalignmm.o rna.o Salignmm.o Ralignmm.o Qalignmm.o Halignmm.o \
+OBJDISTTBFAST = mtxutl.o io.o mltaln9.o tddis.o constants.o partSalignmm.o Lalignmm.o rna.o Salignmm.o Dalignmm.o \
                    Falign.o Falign_localhom.o Galign11.o SAalignmm.o MSalignmm.o \
                        disttbfast.o defs.o fft.o fftFunctions.o addfunctions.o
-OBJTBFAST = mtxutl.o io.o mltaln9.o tddis.o constants.o MSalignmm.o partQalignmm.o partSalignmm.o Lalignmm.o rna.o Salignmm.o Ralignmm.o Qalignmm.o Halignmm.o \
+OBJMAKEDIRECTIONLIST = mtxutl.o io.o mltaln9.o tddis.o constants.o partSalignmm.o Lalignmm.o rna.o Salignmm.o  Dalignmm.o \
+                   Falign.o Falign_localhom.o Galign11.o SAalignmm.o MSalignmm.o \
+                       Lalign11.o makedirectionlist.o defs.o fft.o fftFunctions.o addfunctions.o
+OBJTBFAST = mtxutl.o io.o mltaln9.o tddis.o constants.o MSalignmm.o partSalignmm.o Lalignmm.o rna.o Salignmm.o Dalignmm.o \
                    Falign.o Falign_localhom.o Galign11.o SAalignmm.o \
-                       tbfast.o defs.o fft.o fftFunctions.o addfunctions.o
-OBJTBFAST2 = mtxutl.o io.o mltaln9.o tddis.o constants.o partQalignmm.o partSalignmm.o Lalignmm.o rna.o Salignmm.o Ralignmm.o Qalignmm.o Halignmm.o MSalignmm.o \
+                       tbfast.o defs.o fft.o fftFunctions.o addfunctions.o \
+                       pairlocalalign.o genalign11.o MSalign11.o Lalign11.o 
+OBJADDSINGLE = mtxutl.o io.o mltaln9.o tddis.o constants.o MSalignmm.o partSalignmm.o Lalignmm.o rna.o Salignmm.o Dalignmm.o \
+                   Falign.o Falign_localhom.o Galign11.o SAalignmm.o \
+                       addsingle.o defs.o fft.o fftFunctions.o addfunctions.o
+OBJTBFAST2 = mtxutl.o io.o mltaln9.o tddis.o constants.o partSalignmm.o Lalignmm.o rna.o Salignmm.o  MSalignmm.o Dalignmm.o \
                    Falign.o Falign_localhom.o Galign11.o SAalignmm.o \
                        tbfast2.o defs.o fft.o fftFunctions.o
-OBJSETCORE = mtxutl.o io.o mltaln9.o tddis.o constants.o partQalignmm.o partSalignmm.o Lalignmm.o rna.o Salignmm.o Ralignmm.o Qalignmm.o Halignmm.o \
+OBJSETCORE = mtxutl.o io.o mltaln9.o tddis.o constants.o partSalignmm.o Lalignmm.o rna.o Salignmm.o Dalignmm.o \
                    Falign.o Falign_localhom.o Galign11.o SAalignmm.o MSalignmm.o \
                        setcore.o defs.o fft.o fftFunctions.o
-OBJTDITR = mtxutl.o io.o mltaln9.o tddis.o constants.o nj.o  partQalignmm.o partSalignmm.o Lalignmm.o rna.o Salignmm.o Ralignmm.o Qalignmm.o Halignmm.o \
+OBJTDITR = mtxutl.o io.o mltaln9.o tddis.o constants.o nj.o partSalignmm.o Lalignmm.o rna.o Salignmm.o Dalignmm.o  \
                   Falign.o Falign_localhom.o Galign11.o fftFunctions.o fft.o  \
                   tditeration.o tditr.o defs.o SAalignmm.o treeOperation.o
-OBJDVTDITR = mtxutl.o io.o mltaln9.o tddis.o constants.o nj.o  partQalignmm.o partSalignmm.o Lalignmm.o rna.o Salignmm.o Ralignmm.o Qalignmm.o Halignmm.o \
+OBJDVTDITR = mtxutl.o io.o mltaln9.o tddis.o constants.o nj.o partSalignmm.o Lalignmm.o rna.o Salignmm.o Dalignmm.o \
                        Falign.o Falign_localhom.o Galign11.o MSalignmm.o fftFunctions.o fft.o  \
-                       tditeration.o dvtditr.o defs.o SAalignmm.o treeOperation.o
-OBJGETLAG = mtxutl.o io.o mltaln9.o tddis.o constants.o partQalignmm.o partSalignmm.o Lalignmm.o rna.o Salignmm.o Ralignmm.o Qalignmm.o Halignmm.o \
-                   Falign.o Falign_localhom.o Galign11.o SAalignmm.o MSalignmm.o \
+                       tditeration.o dvtditr.o defs.o SAalignmm.o treeOperation.o addfunctions.o
+OBJGETLAG = mtxutl.o io.o mltaln9.o tddis.o constants.o partSalignmm.o Lalignmm.o rna.o Salignmm.o  \
+                   Falign.o Falign_localhom.o Galign11.o SAalignmm.o MSalignmm.o Dalignmm.o \
                        getlag.o defs.o fft.o fftFunctions.o
 OBJGAPFILL = mtxutl.o io.o constants.o gapfill.o defs.o
 OBJDNDFAST5 = dndfast5.o io.o constants.o mtxutl.o mltaln9.o tddis.o defs.o
@@ -96,173 +118,199 @@ OBJTRIPLET6 = io.o constants.o mtxutl.o mltaln9.o tddis.o triplet6.o defs.o
 OBJTRIPLET5 = io.o constants.o mtxutl.o mltaln9.o tddis.o triplet5.o defs.o
 OBJOCTET4 = io.o constants.o mtxutl.o mltaln9.o tddis.o octet4.o defs.o
 OBJDNDPRE = dndpre.o io.o constants.o mtxutl.o mltaln9.o defs.o
-OBJDNDPRESCORE = dndpre2.o io.o constants.o mtxutl.o mltaln9.o defs.o
-OBJGALN = io.o mtxutl.o mltaln9.o tddis.o constants.o partQalignmm.o partSalignmm.o MSalignmm.o Lalignmm.o rna.o Salignmm.o Ralignmm.o Qalignmm.o Halignmm.o \
+OBJGALN = io.o mtxutl.o mltaln9.o tddis.o constants.o partSalignmm.o MSalignmm.o Lalignmm.o rna.o Salignmm.o Dalignmm.o \
           SAalignmm.o Galign11.o Falign.o Falign_localhom.o fftFunctions.o fft.o mafft-profile.o defs.o
 OBJSCORE = io.o mtxutl.o mltaln9.o score.o constants.o defs.o
 
-HEADER = mltaln.h mtxutl.h
+HEADER = mltaln.h mtxutl.h mafft.h
 FFTHEADER = fft.h
 
 MANPAGES = mafft.1 mafft-homologs.1
 
 
 
-all : $(PROGS) $(SCRIPTS)
+
+all : $(PERLPROGS) $(PROGS) $(SCRIPTS)
        cp $(SCRIPTS) ../scripts
        chmod 755 ../scripts/*
-       cp $(PROGS) ../binaries
+       cp $(PERLPROGS) $(PROGS) ../binaries
        chmod 755 ../binaries/*
        cp $(MANPAGES) ../binaries
        @echo done.
 
+sos : $(SOS)
+dylibs : $(DYLIBS)
+dlls : $(DLLS)
+
 univscript: univscript.tmpl Makefile
        sed "s:_PROGS:$(PROGS):" univscript.tmpl  > univscript
 
-mafft: mafft.tmpl
+mafft: mafft.tmpl mltaln.h
        sed "s:_LIBDIR:$(LIBDIR):" mafft.tmpl  > mafft
 
 mafft-homologs.rb: mafft-homologs.tmpl
 #      cp mafft-homologs.tmpl mafft-homologs.rb
        sed "s:_BINDIR:$(BINDIR):" mafft-homologs.tmpl  > mafft-homologs.rb
 
+mafft-sparsecore.rb: mafft-sparsecore.tmpl
+#      cp mafft-sparsecore.tmpl mafft-sparsecore.rb
+       sed "s:_BINDIR:$(BINDIR):" mafft-sparsecore.tmpl  > mafft-sparsecore.rb
+
 mltaln.h : functions.h
        touch mltaln.h
 
+version : version.c mltaln.h
+       $(CC) -o $@ version.c $(MYCFLAGS) $(LDFLAGS)
+
 tbfast : $(OBJTBFAST)
-       $(CC) -o $@ $(OBJTBFAST) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJTBFAST) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
+
+addsingle : $(OBJADDSINGLE)
+       $(CC) -o $@ $(OBJADDSINGLE) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 tbfast2 : $(OBJTBFAST2)
-       $(CC) -o $@ $(OBJTBFAST2) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJTBFAST2) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 disttbfast : $(OBJDISTTBFAST)
-       $(CC) -o $@ $(OBJDISTTBFAST) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJDISTTBFAST) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
+
+libdisttbfast.so : $(OBJDISTTBFAST)
+       $(CC) -shared -o $@ $(OBJDISTTBFAST) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
+
+libdisttbfast.dylib : $(OBJDISTTBFAST)
+       $(CC) -dynamiclib -o $@ $(OBJDISTTBFAST) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
+
+libdisttbfast.dll : $(OBJDISTTBFAST)
+       $(CC) -shared -o $@ $(OBJDISTTBFAST) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
+
+makedirectionlist : $(OBJMAKEDIRECTIONLIST)
+       $(CC) -o $@ $(OBJMAKEDIRECTIONLIST) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 splittbfast : $(OBJSPLITTBFAST)
-       $(CC) -o $@ $(OBJSPLITTBFAST) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJSPLITTBFAST) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 splitfromaln : $(OBJSPLITFROMALN)
-       $(CC) -o $@ $(OBJSPLITFROMALN) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJSPLITFROMALN) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 splittbfast2 : $(OBJSPLITTBFAST2)
-       $(CC) -o $@ $(OBJSPLITTBFAST2) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJSPLITTBFAST2) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 dummy : $(OBJDUMMY)
-       $(CC) -o $@ $(OBJDUMMY) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJDUMMY) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 setcore : $(OBJSETCORE)
-       $(CC) -o $@ $(OBJSETCORE) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJSETCORE) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 countlen : $(OBJCOUNTLEN)
-       $(CC) -o $@ $(OBJCOUNTLEN) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJCOUNTLEN) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 seq2regtable : $(OBJSEQ2REGTABLE)
-       $(CC) -o $@ $(OBJSEQ2REGTABLE) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJSEQ2REGTABLE) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 regtable2seq : $(OBJREGTABLE2SEQ)
-       $(CC) -o $@ $(OBJREGTABLE2SEQ) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJREGTABLE2SEQ) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
+
+setdirection : $(OBJSETDIRECTION)
+       $(CC) -o $@ $(OBJSETDIRECTION) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 replaceu : $(OBJREPLACEU)
-       $(CC) -o $@ $(OBJREPLACEU) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJREPLACEU) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 restoreu : $(OBJRESTOREU)
-       $(CC) -o $@ $(OBJRESTOREU) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJRESTOREU) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 f2cl : $(OBJF2CL)
-       $(CC) -o $@ $(OBJF2CL) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJF2CL) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 mccaskillwrap : $(OBJMCCASKILLWRAP)
-       $(CC) -o $@ $(OBJMCCASKILLWRAP) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJMCCASKILLWRAP) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 contrafoldwrap : $(OBJCONTRAFOLDWRAP)
-       $(CC) -o $@ $(OBJCONTRAFOLDWRAP) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJCONTRAFOLDWRAP) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 pairlocalalign : $(OBJPAIRLOCALALIGN)
-       $(CC) -o $@ $(OBJPAIRLOCALALIGN) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJPAIRLOCALALIGN) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 pairash : $(OBJPAIRASH)
-       $(CC) -o $@ $(OBJPAIRASH) $(MYCFLAGS) $(LIBS)
-
-rnatest : $(OBJRNATEST)
-       $(CC) -o $@ $(OBJRNATEST) $(MYCFLAGS) $(LIBS)
-
-pair2hat3s : $(OBJPAIR2HAT3S)
-       $(CC) -o $@ $(OBJPAIR2HAT3S) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJPAIRASH) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 multi2hat3s : $(OBJMULTI2HAT3S)
-       $(CC) -o $@ $(OBJMULTI2HAT3S) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJMULTI2HAT3S) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 getlag : $(OBJGETLAG)
-       $(CC) -o $@ $(OBJGETLAG) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJGETLAG) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 tditr : $(OBJTDITR)
-       $(CC) -o $@ $(OBJTDITR) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJTDITR) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 dvtditr : $(OBJDVTDITR)
-       $(CC) -o $@ $(OBJDVTDITR) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJDVTDITR) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 mafft-profile : $(OBJGALN)
-       $(CC) -o $@ $(OBJGALN) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJGALN) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 gapfill : $(OBJGAPFILL)
-       $(CC) -o $@ $(OBJGAPFILL) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJGAPFILL) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 dndfast4 : $(OBJDNDFAST4)
-       $(CC) -o $@ $(OBJDNDFAST4) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJDNDFAST4) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 dndfast5 : $(OBJDNDFAST5)
-       $(CC) -o $@ $(OBJDNDFAST5) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJDNDFAST5) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 dndfast6 : $(OBJDNDFAST6)
-       $(CC) -o $@ $(OBJDNDFAST6) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJDNDFAST6) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 dndfast7 : $(OBJDNDFAST7)
-       $(CC) -o $@ $(OBJDNDFAST7) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJDNDFAST7) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 dndblast : $(OBJDNDBLAST)
-       $(CC) -o $@ $(OBJDNDBLAST) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJDNDBLAST) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 dndfast3 : $(OBJDNDFAST3)
-       $(CC) -o $@ $(OBJDNDFAST3) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJDNDFAST3) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 triplet : $(OBJTRIPLET)
-       $(CC) -o $@ $(OBJTRIPLET) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJTRIPLET) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 triplet3 : $(OBJTRIPLET3)
-       $(CC) -o $@ $(OBJTRIPLET3) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJTRIPLET3) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 sextet3 : $(OBJSEXTET3)
-       $(CC) -o $@ $(OBJSEXTET3) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJSEXTET3) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 sextet4 : $(OBJSEXTET4)
-       $(CC) -o $@ $(OBJSEXTET4) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJSEXTET4) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 sextet5 : $(OBJSEXTET5)
-       $(CC) -o $@ $(OBJSEXTET5) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJSEXTET5) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 mafft-distance : $(OBJDISTANCE)
-       $(CC) -o $@ $(OBJDISTANCE) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJDISTANCE) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 triplet5 : $(OBJTRIPLET5)
-       $(CC) -o $@ $(OBJTRIPLET5) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJTRIPLET5) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 triplet6 : $(OBJTRIPLET6)
-       $(CC) -o $@ $(OBJTRIPLET6) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJTRIPLET6) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 octet4 : $(OBJOCTET4)
-       $(CC) -o $@ $(OBJOCTET4) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJOCTET4) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 dndpre : $(OBJDNDPRE)
-       $(CC) -o $@ $(OBJDNDPRE) $(MYCFLAGS) $(LIBS)
-
-dndpre2 : $(OBJDNDPRESCORE)
-       $(CC) -o $@ $(OBJDNDPRESCORE) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJDNDPRE) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 score : $(OBJSCORE)
-       $(CC) -o $@ $(OBJSCORE) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJSCORE) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
 
 genMtx : $(OBJGENMTX)
-       $(CC) -o $@ $(OBJGENMTX) $(MYCFLAGS) $(LIBS)
+       $(CC) -o $@ $(OBJGENMTX) $(MYCFLAGS) $(LDFLAGS) $(LIBS)
+
+mafftash_premafft.pl : mafftash_premafft.tmpl
+       cp mafftash_premafft.tmpl mafftash_premafft.pl
+
+seekquencer_premafft.pl : seekquencer_premafft.tmpl
+       cp seekquencer_premafft.tmpl seekquencer_premafft.pl
 
 gapfill.o : gapfill.c $(HEADER)
        $(CC) $(MYCFLAGS) -c gapfill.c
@@ -285,14 +333,8 @@ defs.o : defs.c
 Salignmm.o : Salignmm.c $(HEADER)
        $(CC) $(MYCFLAGS) -c Salignmm.c 
 
-Halignmm.o : Halignmm.c $(HEADER)
-       $(CC) $(MYCFLAGS) -c Halignmm.c 
-
-Ralignmm.o : Ralignmm.c $(HEADER)
-       $(CC) $(MYCFLAGS) -c Ralignmm.c 
-
-Qalignmm.o : Qalignmm.c $(HEADER)
-       $(CC) $(MYCFLAGS) -c Qalignmm.c 
+Dalignmm.o : Dalignmm.c $(HEADER)
+       $(CC) $(MYCFLAGS) -c Dalignmm.c 
 
 MSalignmm.o : MSalignmm.c $(HEADER)
        $(CC) $(MYCFLAGS) -c MSalignmm.c 
@@ -300,18 +342,12 @@ MSalignmm.o : MSalignmm.c $(HEADER)
 partSalignmm.o : partSalignmm.c $(HEADER)
        $(CC) $(MYCFLAGS) -c partSalignmm.c  
 
-partQalignmm.o : partQalignmm.c $(HEADER)
-       $(CC) $(MYCFLAGS) -c partQalignmm.c  
-
 Lalign11.o : Lalign11.c $(HEADER)
        $(CC) $(MYCFLAGS) -c Lalign11.c 
 
 genalign11.o : genalign11.c $(HEADER)
        $(CC) $(MYCFLAGS) -c genalign11.c 
 
-genGalign11.o : genGalign11.c $(HEADER)
-       $(CC) $(MYCFLAGS) -c genGalign11.c 
-
 suboptalign11.o : suboptalign11.c $(HEADER)
        $(CC) $(MYCFLAGS) -c suboptalign11.c 
 
@@ -342,6 +378,9 @@ splittbfast.o : splittbfast.c $(HEADER) $(FFTHEADER)
 splittbfast2.o : splittbfast2.c $(HEADER) $(FFTHEADER) 
        $(CC) $(MYCFLAGS) -c splittbfast2.c
 
+makedirectionlist.o : makedirectionlist.c $(HEADER) $(FFTHEADER) 
+       $(CC) $(MYCFLAGS) -c makedirectionlist.c
+
 disttbfast_dummy.o : disttbfast_dummy.c $(HEADER) $(FFTHEADER)
        $(CC) $(MYCFLAGS) -c disttbfast_dummy.c
 
@@ -351,6 +390,9 @@ dummy.o : dummy.c $(HEADER) $(FFTHEADER)
 tbfast.o : tbfast.c $(HEADER) $(FFTHEADER)
        $(CC) $(MYCFLAGS) -c tbfast.c
 
+addsingle.o : addsingle.c $(HEADER) $(FFTHEADER)
+       $(CC) $(MYCFLAGS) -c addsingle.c
+
 tbfast2.o : tbfast2.c $(HEADER) $(FFTHEADER)
        $(CC) $(MYCFLAGS) -c tbfast2.c
 
@@ -405,6 +447,9 @@ regtable2seq.o : regtable2seq.c $(HEADER)
 f2cl.o : f2cl.c $(HEADER)
        $(CC) $(MYCFLAGS) -c f2cl.c
 
+setdirection.o : setdirection.c $(HEADER)
+       $(CC) $(MYCFLAGS) -c setdirection.c
+
 replaceu.o : replaceu.c $(HEADER)
        $(CC) $(MYCFLAGS) -c replaceu.c
 
@@ -420,21 +465,15 @@ contrafoldwrap.o : contrafoldwrap.c $(HEADER)
 pairlocalalign.o : pairlocalalign.c $(HEADER) $(FFTHEADER)
        $(CC) $(MYCFLAGS) -c pairlocalalign.c
 
+pairlocalalignmain.o : pairlocalalignmain.c $(HEADER) $(FFTHEADER)
+       $(CC) $(MYCFLAGS) -c pairlocalalignmain.c
+
 pairash.o : pairash.c $(HEADER) $(FFTHEADER)
        $(CC) $(MYCFLAGS) -c pairash.c
 
-rnatest.o : rnatest.c $(HEADER) $(FFTHEADER)
-       $(CC) $(MYCFLAGS) -c rnatest.c
-
 multi2hat3s.o : multi2hat3s.c $(HEADER) $(FFTHEADER)
        $(CC) $(MYCFLAGS) -c multi2hat3s.c
 
-pair2hat3s.o : pair2hat3s.c $(HEADER) $(FFTHEADER)
-       $(CC) $(MYCFLAGS) -c pair2hat3s.c
-
-dndpre2.o : dndpre2.c $(HEADER)
-       $(CC) $(MYCFLAGS) -c dndpre2.c
-
 io.o : io.c $(HEADER) $(FFTHEADER)
        $(CC) $(MYCFLAGS) -c io.c
 
@@ -478,23 +517,24 @@ score.o : score.c $(HEADER)
        $(CC) $(MYCFLAGS) -c score.c
 
 clean :
-       rm -f *.o *.a *.exe *~ $(PROGS)  $(SCRIPTS)
+       rm -f *.o *.a *.exe *~ $(PERLPROGS) $(PROGS) $(SCRIPTS) $(SOS) $(DYLIBS) $(DLLS) *.gcda *.gcno
 #      rm -f ../binaries/* ../scripts/*
 
 install : all
-       mkdir -p $(LIBDIR)
-       chmod 755 $(LIBDIR)
-       mkdir -p $(BINDIR)
-       chmod 755 $(BINDIR)
+       mkdir -p $(DESTDIR)$(LIBDIR)
+       chmod 755 $(DESTDIR)$(LIBDIR)
+       mkdir -p $(DESTDIR)$(BINDIR)
+       chmod 755 $(DESTDIR)$(BINDIR)
        chmod 755 $(SCRIPTS)
-       $(INSTALL) $(SCRIPTS)  $(BINDIR)
-       chmod 755 $(PROGS)
-       $(INSTALL) $(PROGS) $(LIBDIR)
-       $(INSTALL) -m 644 $(MANPAGES) $(LIBDIR)
+       $(INSTALL) $(SCRIPTS)  $(DESTDIR)$(BINDIR)
+       chmod 755 $(PROGS) ||:     # in MinGW, it's ok if this fails
+       $(INSTALL) -s $(PROGS) $(DESTDIR)$(LIBDIR)
+       $(INSTALL) $(PERLPROGS) $(DESTDIR)$(LIBDIR)
+       $(INSTALL) -m 644 $(MANPAGES) $(DESTDIR)$(LIBDIR)
 
-       ( cd $(BINDIR); \
+       ( cd $(DESTDIR)$(BINDIR); \
 rm -f linsi ginsi einsi fftns fftnsi nwns nwnsi xinsi qinsi; \
-rm -f mafft-linsi mafft-ginsi mafft-einsi mafft-fftns mafft-fftnsi mafft-nwns mafft-nwnsi mafft-xinsi mafft-qinsi; \
+rm -f mafft-linsi mafft-ginsi mafft-einsi mafft-fftns mafft-fftnsi mafft-nwns mafft-nwnsi mafft-xinsi mafft-qinsi mafft-randomcore.rb ; \
 ln -s mafft linsi; ln -s mafft ginsi; ln -s mafft fftns; \
 ln -s mafft fftnsi; ln -s mafft nwns; ln -s mafft nwnsi; \
 ln -s mafft einsi; \
@@ -504,8 +544,8 @@ ln -s mafft mafft-einsi; ln -s mafft mafft-xinsi; ln -s mafft mafft-qinsi;\
 rm -f mafft-profile mafft-profile.exe; ln -s $(LIBDIR)/mafft-profile .; \
 rm -f mafft-distance mafft-distance.exe; ln -s $(LIBDIR)/mafft-distance . )
 
-       mkdir -p $(MANDIR)
-       chmod 755 $(MANDIR)
-       $(INSTALL) -m 644 $(MANPAGES) $(MANDIR)
+       mkdir -p $(DESTDIR)$(MANDIR)
+       chmod 755 $(DESTDIR)$(MANDIR)
+       $(INSTALL) -m 644 $(MANPAGES) $(DESTDIR)$(MANDIR)
 # remove incorrectly installed manpages by previous versions
 #      rm -f /usr/local/man/man1/mafft.1 /usr/local/man/man1/mafft-homologs.1