1# For verbose output:
2#     % make V=1
3#
4
5# VPATH and shell configuration
6top_srcdir = @top_srcdir@
7srcdir     = @srcdir@
8VPATH      = @srcdir@
9SHELL      = /bin/sh
10
11# Installation targets
12#
13prefix      = @prefix@
14exec_prefix = @exec_prefix@
15datarootdir = @datarootdir@
16bindir      = @bindir@
17libdir      = @libdir@
18includedir  = @includedir@
19mandir      = @mandir@
20docdir      = @docdir@
21pdfdir      = @pdfdir@
22mandir      = @mandir@
23man1dir     = ${mandir}/man1
24man1ext     = .1
25
26CC             = @CC@
27CFLAGS         = @CFLAGS@
28PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
29PIC_CFLAGS     = @PIC_CFLAGS@
30SIMD_CFLAGS    = @SSE_CFLAGS@ @VMX_CFLAGS@
31CPPFLAGS       = @CPPFLAGS@
32LDFLAGS        = @LDFLAGS@
33DEFS           = @DEFS@
34LIBS           = -linfernal -lhmmer -leasel @LIBS@ @LIBGSL@ @PTHREAD_LIBS@ -lm
35MPILIBS        = @MPILIBS@
36
37AR        = @AR@
38RANLIB    = @RANLIB@
39INSTALL   = @INSTALL@
40
41IMPLDIR   = @INFERNAL_IMPLDIR@
42ESLDIR    = @INFERNAL_ESLDIR@
43HMMERDIR  = @INFERNAL_HMMERDIR@
44
45MYLIBDIRS = -L../${ESLDIR} -L../${HMMERDIR}/src -L./${IMPLDIR} -L.
46MYINCDIRS = -I../${ESLDIR} \
47	    -I../${HMMERDIR}/src \
48	    -I${top_srcdir}/easel \
49	    -I${top_srcdir}/hmmer/src \
50	    -I. \
51	    -I${srcdir}
52
53# full list of executable programs that get built
54PROGS = cmalign\
55	cmbuild\
56	cmcalibrate\
57	cmconvert\
58	cmemit\
59	cmfetch\
60	cmpress\
61	cmscan\
62	cmsearch\
63	cmstat\
64	trcyk\
65	bandcyk-montecarlo-test\
66	bandcyk-truncation-test\
67	cp9-test\
68	sub_cm-test\
69	truncyk_check
70
71# list of executable programs that get installed
72IPROGS = \
73	cmalign\
74	cmbuild\
75	cmcalibrate\
76	cmconvert\
77	cmemit\
78	cmfetch\
79	cmpress\
80	cmscan\
81	cmsearch\
82	cmstat
83
84PROGOBJS = \
85	cmalign.o\
86	cmbuild.o\
87	cmemit.o\
88	cmfetch.o\
89	cmscore.o\
90	cmsearch.o\
91	cmstat.o\
92	trcyk.o\
93	bandcyk-montecarlo-test.o\
94	bandcyk-truncation-test.o\
95	cp9-test.o\
96	sub_cm-test.o\
97	truncyk_check.o
98
99HDRS =  infernal.h
100
101OBJS  = cm.o\
102	cm_alidisplay.o\
103	cm_alndata.o\
104	cm_dpalign.o\
105	cm_dpalign_trunc.o\
106	cm_dpsearch.o\
107	cm_dpsearch_trunc.o\
108	cm_dpsmall.o\
109	cm_file.o\
110	cm_modelconfig.o\
111	cm_modelmaker.o\
112	cm_mx.o\
113	cm_parsetree.o\
114	cm_pipeline.o\
115	cm_qdband.o\
116	cm_submodel.o\
117	cm_tophits.o\
118	cm_trunc.o\
119	cm_p7_band.o\
120	cm_p7_domaindef.o\
121	cm_p7_modelconfig_trunc.o\
122	cm_p7_modelmaker.o\
123	cp9.o\
124	cp9_dp.o\
125	cp9_modelmaker.o\
126	cp9_mx.o\
127	cp9_trace.o\
128	alphabet.o\
129	display.o\
130	errors.o\
131	eweight.o\
132	hmmband.o\
133	logsum.o\
134	mpisupport.o\
135	prior.o\
136	rnamat.o\
137	stats.o\
138	truncyk.o
139
140BENCHMARKS = \
141	cm_tophits_benchmark
142
143UTESTS =\
144	cm_tophits_utest\
145
146ITESTS =\
147	itest_brute
148
149# Definitions present in HMMER3's Makefile that are not yet necessary in Infernal's
150#STATS =
151#EXAMPLES =
152
153# beautification magic stolen from git
154QUIET_SUBDIR0 = +${MAKE} -C #space separator after -c
155QUIET_SUBDIR1 =
156ifndef V
157	QUIET_CC      = @echo '    ' CC $@;
158	QUIET_GEN     = @echo '    ' GEN $@;
159	QUIET_AR      = @echo '    ' AR $@;
160	QUIET_SUBDIR0 = +@subdir=
161	QUIET_SUBDIR1 = ; echo '    ' SUBDIR $$subdir; \
162		        ${MAKE} -C $$subdir
163endif
164
165.PHONY: all dev tests check install uninstall distclean clean TAGS
166
167all:   ${PROGS} .FORCE
168
169dev:   ${PROGS} ${UTESTS} ${ITESTS} ${BENCHMARKS} ${EXAMPLES} .FORCE
170ifdef IMPLDIR
171	${QUIET_SUBDIR0}${IMPLDIR} ${QUIET_SUBDIR1} dev
172endif
173
174tests: ${PROGS} ${UTESTS} ${ITESTS} .FORCE
175ifdef IMPLDIR
176	${QUIET_SUBDIR0}${IMPLDIR} ${QUIET_SUBDIR1} tests
177endif
178
179check: ${PROGS} ${UTESTS} ${ITESTS} .FORCE
180ifdef IMPLDIR
181	${QUIET_SUBDIR0}${IMPLDIR} ${QUIET_SUBDIR1} check
182endif
183
184libinfernal.a: libinfernal-src.stamp .FORCE
185ifdef IMPLDIR
186	${QUIET_SUBDIR0}${IMPLDIR} ${QUIET_SUBDIR1} libinfernal-impl.stamp
187endif
188
189libinfernal-src.stamp: ${OBJS}
190	${QUIET_AR}${AR} -r libinfernal.a $? > /dev/null 2>&1
191	@${RANLIB} libinfernal.a
192	@echo "src_lib objects compiled:\c" > $@
193	@date >> $@
194
195.FORCE:
196
197${OBJS}:     ${HDRS} config.h
198${PROGOBJS}: ${HDRS} config.h
199
200${PROGS}: % : %.o libinfernal.a ../${HMMERDIR}/src/libhmmer.a ../${ESLDIR}/libeasel.a
201	${QUIET_GEN}${CC} ${CFLAGS} ${PTHREAD_CFLAGS} ${PIC_CFLAGS} ${DEFS} ${LDFLAGS} ${MYLIBDIRS} -o $@ $@.o ${MPILIBS} ${LIBS}
202
203.c.o:
204	${QUIET_CC}${CC} ${CFLAGS} ${PTHREAD_CFLAGS} ${PIC_CFLAGS} ${SIMD_CFLAGS} ${DEFS} ${CPPFLAGS} ${MYINCDIRS} -o $@ -c $<
205
206${ITESTS}: % : %.o libinfernal.a ../${HMMERDIR}/src/libhmmer.a ../${ESLDIR}/libeasel.a ${HDRS} config.h
207	${QUIET_GEN}${CC} ${CFLAGS} ${PTHREAD_CFLAGS} ${PIC_CFLAGS} ${DEFS} ${LDFLAGS} ${MYLIBDIRS} -o $@ $@.o ${MPILIBS} ${LIBS}
208
209${UTESTS}: libinfernal.a  ${HDRS} config.h
210	@BASENAME=`echo $@ | sed -e 's/_utest//' | sed -e 's/^cm_//'` ;\
211	DFLAG=`echo $${BASENAME} | sed -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`;\
212	DFLAG=CM_$${DFLAG}_TESTDRIVE ;\
213	if test -e ${srcdir}/cm_$${BASENAME}.c; then \
214           DFILE=${srcdir}/cm_$${BASENAME}.c ;\
215        else \
216           DFILE=${srcdir}/$${BASENAME}.c ;\
217	fi;\
218	if test ${V} ;\
219	   then echo "{CC} ${CFLAGS} ${PTHREAD_CFLAGS} ${PIC_CFLAGS} ${CPPFLAGS} ${LDFLAGS} ${DEFS} ${MYLIBDIRS} ${MYINCDIRS} -D$${DFLAG} -o $@ $${DFILE} ${LIBS}" ;\
220	   else echo '    ' GEN $@ ;\
221        fi ;\
222	${CC} ${CFLAGS} ${PTHREAD_CFLAGS} ${PIC_CFLAGS} ${CPPFLAGS} ${LDFLAGS} ${DEFS} ${MYLIBDIRS} ${MYINCDIRS} -D$${DFLAG} -o $@ $${DFILE} ${LIBS}
223
224${BENCHMARKS}: libinfernal.a  ${HDRS} config.h
225	@BASENAME=`echo $@ | sed -e 's/_benchmark//' | sed -e 's/^cm_//'` ;\
226	DFLAG=`echo $${BASENAME} | sed -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`;\
227	DFLAG=CM_$${DFLAG}_BENCHMARK ;\
228	if test -e ${srcdir}/cm_$${BASENAME}.c; then \
229           DFILE=${srcdir}/cm_$${BASENAME}.c ;\
230        else \
231           DFILE=${srcdir}/$${BASENAME}.c ;\
232	fi;\
233	if test ${V} ;\
234	   then echo "{CC} ${CFLAGS} ${PTHREAD_CFLAGS} ${PIC_CFLAGS} ${CPPFLAGS} ${LDFLAGS} ${DEFS} ${MYLIBDIRS} ${MYINCDIRS} -D$${DFLAG} -o $@ $${DFILE} ${LIBS}" ;\
235	   else echo '    ' GEN $@ ;\
236        fi ;\
237	${CC} ${CFLAGS} ${PTHREAD_CFLAGS} ${PIC_CFLAGS} ${CPPFLAGS} ${LDFLAGS} ${DEFS} ${MYLIBDIRS} ${MYINCDIRS} -D$${DFLAG} -o $@ $${DFILE} ${LIBS}
238
239install:
240	for file in ${IPROGS}; do \
241	   ${INSTALL} -m 0755 $$file ${DESTDIR}${bindir}/ ;\
242	done
243# no programs currently get installed from IMPLDIR
244
245uninstall:
246	for file in ${IPROGS}; do \
247	   rm -f ${DESTDIR}${bindir}/$$file ;\
248	done
249# no programs currently get installed from IMPLDIR
250
251distclean: clean
252ifdef IMPLDIR
253	${QUIET_SUBDIR0}${IMPLDIR} ${QUIET_SUBDIR1} distclean
254endif
255	-rm -f Makefile config.h
256
257clean:
258ifdef IMPLDIR
259	${QUIET_SUBDIR0}${IMPLDIR} ${QUIET_SUBDIR1} clean
260endif
261	-rm -f *.o *~ Makefile.bak core ${PROGS} ${BENCHMARKS} ${UTESTS} ${ITESTS} TAGS gmon.out
262	-rm -f libinfernal.a libinfernal-src.stamp
263	-rm -f *.gcno
264	-rm -f cscope.out
265	for prog in ${PROGS} ${BENCHMARKS} ${UTESTS} ${ITESTS}; do \
266	   if test -d $$prog.dSYM; then rm -rf $$prog.dSYM; fi ;\
267	done
268
269
270