Permalink
Fetching contributors…
Cannot retrieve contributors at this time
234 lines (203 sloc) 8.12 KB
# Top level Makefile for Infernal
#
# On most systems, to build Infernal you should only need:
# % ./configure; make
#
# Optionally, you can run a test suite:
# % make check
#
# And optionally, you can install everything more permanently:
# % make install
#
# For more information, see the Installation chapter of the Infernal
# User's Guide.
#
# VPATH and shell configuration
#
top_srcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
SHELL = /bin/sh
# location of easel
ESLDIR = @INFERNAL_ESLDIR@
# location of hmmer
HMMERDIR = @INFERNAL_HMMERDIR@
# location of suffix array library
SADIR = @INFERNAL_SADIR@
# impl directory (currently only either 'impl_sse' or '')
IMPLDIR = @INFERNAL_IMPLDIR@
# Package information
#
PACKAGE = @PACKAGE_NAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
# Installation targets
#
prefix = @prefix@
exec_prefix = @exec_prefix@
datarootdir = @datarootdir@
bindir = @bindir@
libdir = @libdir@
includedir = @includedir@
docdir = @docdir@
pdfdir = @pdfdir@
mandir = @mandir@
man1dir = ${mandir}/man1
man1ext = .1
# Compiler configuration
#
CC = @CC@
CFLAGS = @CFLAGS@
LDFLAGS = -static @LDFLAGS@
SIMDFLAGS = @SIMD_CFLAGS@
CPPFLAGS = @CPPFLAGS@
# Other tools
#
AR = @AR@
RANLIB = @RANLIB@
INSTALL = @INSTALL@
# beautification magic stolen from git
#
QUIET_SUBDIR0 = +${MAKE} -C #space separator after -c
QUIET_SUBDIR1 =
ifndef V
QUIET_CC = @echo ' ' CC $@;
QUIET_GEN = @echo ' ' GEN $@;
QUIET_AR = @echo ' ' AR $@;
QUIET_SUBDIR0 = +@subdir=
QUIET_SUBDIR1 = ; echo ' ' SUBDIR $$subdir; \
${MAKE} -C $$subdir
endif
# Programs installed by Infernal
#
PROGS = cmalign\
cmbuild\
cmcalibrate\
cmemit\
cmfetch\
cmscan\
cmsearch\
cmstat
SSEPROGS = sse_cmsearch\
cmsearch_dual
.PHONY: all dev check pdf install uninstall clean distclean TAGS
# all: Compile all documented executables.
# (Excludes test programs.)
#
all:
${QUIET_SUBDIR0}${ESLDIR} ${QUIET_SUBDIR1} all
${QUIET_SUBDIR0}${SADIR} ${QUIET_SUBDIR1} all
${QUIET_SUBDIR0}${HMMERDIR} ${QUIET_SUBDIR1} all
${QUIET_SUBDIR0}src ${QUIET_SUBDIR1} all
${QUIET_SUBDIR0}rmark ${QUIET_SUBDIR1} all
ifdef IMPLDIR
${QUIET_SUBDIR0}src/impl_sse ${QUIET_SUBDIR1} all
endif
# dev: compile all executables, including drivers.
#
dev:
${QUIET_SUBDIR0}${ESLDIR} ${QUIET_SUBDIR1} dev
${QUIET_SUBDIR0}${SADIR} ${QUIET_SUBDIR1} all
${QUIET_SUBDIR0}${HMMERDIR} ${QUIET_SUBDIR1} dev
${QUIET_SUBDIR0}src ${QUIET_SUBDIR1} dev
${QUIET_SUBDIR0}rmark ${QUIET_SUBDIR1} all
# tests: compile all test drivers for 'make check'
#
tests:
${QUIET_SUBDIR0}${ESLDIR} ${QUIET_SUBDIR1} tests
${QUIET_SUBDIR0}${SADIR} ${QUIET_SUBDIR1} all
${QUIET_SUBDIR0}${HMMERDIR} ${QUIET_SUBDIR1} tests
${QUIET_SUBDIR0}src ${QUIET_SUBDIR1} tests
# check: Run test suites.
#
# We do a 'check' in HMMERDIR/testsuite, not HMMERDIR/ because we
# don't need to run the Easel testsuite twice.
#
# Also, HMMER's 'make check' requires its own easel subdir complete
# with compiled miniapps. This may or may not exist. In working copies
# of the trunk it will exist but won't be compiled (infernal/hmmer/
# will use infernal/easel, not infernal/hmmer/easel). In a released
# version infernal/hmmer/easel won't even exist since we delete it
# prior to creating a release. So, we take care to have the calling
# of hmmer's testsuite work in either case. If hmmer/easel/ exists we
# copy the required miniapps into it and run 'make check' from
# hmmer/testsuite then delete them. If it doesn't, we create a symlink
# to infernal/easel as infernal/hmmer/easel then we run the testsuite
# and then we delete the symlink. Also, if srcdir/hmmer/easel doesn't
# exist, we symlink it to srcdir/easel because the hmmer testsuite
# needs easel/formats/BLOSUM62 which will only be in srcdir/easel
# (yuck!).
check:
${QUIET_SUBDIR0}${ESLDIR} ${QUIET_SUBDIR1} tests
${QUIET_SUBDIR0}${SADIR} ${QUIET_SUBDIR1} all
${QUIET_SUBDIR0}${HMMERDIR} ${QUIET_SUBDIR1} tests
${QUIET_SUBDIR0}src ${QUIET_SUBDIR1} tests
${QUIET_SUBDIR0}${ESLDIR} ${QUIET_SUBDIR1} check
if test -d ${HMMERDIR}/easel && ! test -e ${HMMERDIR}/easel/miniapps/esl-afetch; then cp ${ESLDIR}/miniapps/esl-afetch ${HMMERDIR}/easel/miniapps; fi
if test -d ${HMMERDIR}/easel && ! test -e ${HMMERDIR}/easel/miniapps/esl-reformat; then cp ${ESLDIR}/miniapps/esl-reformat ${HMMERDIR}/easel/miniapps; fi
if test -d ${HMMERDIR}/easel && ! test -e ${HMMERDIR}/easel/miniapps/esl-sfetch; then cp ${ESLDIR}/miniapps/esl-sfetch ${HMMERDIR}/easel/miniapps; fi
if test -d ${HMMERDIR}/easel && ! test -e ${HMMERDIR}/easel/miniapps/esl-sfetch; then cp ${ESLDIR}/miniapps/esl-shuffle ${HMMERDIR}/easel/miniapps; fi
if ! test -d ${HMMERDIR}/easel; then cd ${HMMERDIR}; @LN_S@ ../${ESLDIR} .; cd ..; fi
if ! test -d ${srcdir}/${HMMERDIR}/easel; then @LN_S@ ${srcdir}/${ESLDIR} ${srcdir}/${HMMERDIR}/easel; fi
${QUIET_SUBDIR0}${HMMERDIR}/testsuite ${QUIET_SUBDIR1} check
if test -L ${HMMERDIR}/easel; then rm ${HMMERDIR}/easel; fi
if test -L ${srcdir}/${HMMERDIR}/easel; then rm ${srcdir}/${HMMERDIR}/easel; fi
if test -e ${HMMERDIR}/easel/miniapps/esl-afetch; then rm ${HMMERDIR}/easel/miniapps/esl-afetch; fi
if test -e ${HMMERDIR}/easel/miniapps/esl-reformat; then rm ${HMMERDIR}/easel/miniapps/esl-reformat; fi
if test -e ${HMMERDIR}/easel/miniapps/esl-sfetch; then rm ${HMMERDIR}/easel/miniapps/esl-sfetch; fi
if test -e ${HMMERDIR}/easel/miniapps/esl-shuffle; then rm ${HMMERDIR}/easel/miniapps/esl-shuffle; fi
${QUIET_SUBDIR0}testsuite ${QUIET_SUBDIR1} check
# devcheck: Run Infernal developer test suite (slower, but more comprehensive than 'check').
#
devcheck:
${QUIET_SUBDIR0}testsuite ${QUIET_SUBDIR1} devcheck
# pdf: compile the User Guides.
#
pdf:
${QUIET_SUBDIR0}documentation ${QUIET_SUBDIR1} pdf
# install: installs the binaries in ${bindir}/
# When man pages are done, will install man pages in MANDIR/man1/ (e.g. if MANSUFFIX is 1)
# Creates these directories if they don't exist.
# Prefix those paths with ${DESTDIR} (rarely used, usually null;
# may be set on a make command line when building contrib RPMs).
install:
${INSTALL} -d ${DESTDIR}${bindir}
${INSTALL} -d ${DESTDIR}${man1dir}
${INSTALL} -d ${DESTDIR}${pdfdir}
# src 'install' moves into impl_sse and does 'install' (if IMPLDIR is defined (system has SSE))
${QUIET_SUBDIR0}src ${QUIET_SUBDIR1} install
${QUIET_SUBDIR0}documentation ${QUIET_SUBDIR1} install
# uninstall: Reverses the steps of "make install".
#
uninstall:
${QUIET_SUBDIR0}src ${QUIET_SUBDIR1} uninstall
${QUIET_SUBDIR0}documentation ${QUIET_SUBDIR1} uninstall
# "make clean" removes almost everything except configuration files.
#
clean:
${QUIET_SUBDIR0}src ${QUIET_SUBDIR1} clean
${QUIET_SUBDIR0}rmark ${QUIET_SUBDIR1} clean
${QUIET_SUBDIR0}testsuite ${QUIET_SUBDIR1} clean
${QUIET_SUBDIR0}documentation ${QUIET_SUBDIR1} clean
${QUIET_SUBDIR0}${HMMERDIR} ${QUIET_SUBDIR1} clean
${QUIET_SUBDIR0}${ESLDIR} ${QUIET_SUBDIR1} clean
-rm -f *.o *~ Makefile.bak core TAGS gmon.out
# "make distclean" leaves a pristine source distribution.
#
distclean:
${QUIET_SUBDIR0}src ${QUIET_SUBDIR1} distclean
${QUIET_SUBDIR0}rmark ${QUIET_SUBDIR1} distclean
${QUIET_SUBDIR0}testsuite ${QUIET_SUBDIR1} distclean
${QUIET_SUBDIR0}documentation ${QUIET_SUBDIR1} distclean
${QUIET_SUBDIR0}${HMMERDIR} ${QUIET_SUBDIR1} distclean
# no need to distclean in easel/ because distclean in hmmer/ already did that (and easel/Makefile has been deleted)
-rm config.log config.status
-rm -rf autom4te.cache
-rm -f *.o *~ Makefile.bak core TAGS gmon.out
-rm -f cscope.po.out cscope.out cscope.in.out cscope.files
-rm -f release-notes/LICENSE.sh
-rm -f src/impl
-rm Makefile
# "make TAGS": emacs etags database, for searching the whole source tree.
TAGS:
./makeTAGS.sh