File: Makefile.in

package info (click to toggle)
infernal 1.0.2-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 41,520 kB
  • ctags: 6,396
  • sloc: ansic: 114,635; cpp: 11,072; perl: 3,588; sh: 2,733; makefile: 741
file content (237 lines) | stat: -rw-r--r-- 8,741 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
#################################################################
# Infernal
# top level Makefile: installation, documentation
# CVS $Id: Makefile.in 2581 2008-09-18 13:37:59Z eddys $
#################################################################
#    This copyrighted source code is freely distributed 
#    under the terms of the GNU General Public License. See
#    the files COPYRIGHT and LICENSE for details.
#################################################################

# On most Unices, you can build the package without modifying anything 
#   by just typing "./configure; make".
#
# Post-configuration, you may still want to modify the following make variables:
#   BINDIR  - where the executables will be installed by a 'make install'
#   MANDIR  - where the man pages will be installed by a 'make install'
#   CC      - which compiler to use
#   CFLAGS  - compiler flags to use

# where you want things installed
# Sort of uses GNU coding standards. ${prefix} might be /usr/local.
# ${exec_prefix} gives you some flexibility for installing architecture
# dependent files (e.g. the programs): an example ${exec_prefix} might be
# /nfs/share/irix64/
#
prefix      = @prefix@
exec_prefix = @exec_prefix@
BINDIR      = @bindir@
MANDIR      = @mandir@
DATAROOTDIR = @datarootdir@

# how to install the man pages; 
# cp is generally fine, unless you preformat your pages.
#
INSTMAN   = cp
MANSUFFIX = 1

# your compiler and compiler flags
#
CC        = @CC@
CFLAGS    = @CFLAGS@
SIMDFLAGS = @SIMD_CFLAGS@

#######
## You should not need to modify below this line.
## Some of it is concerned with maintenance of the development version
## and building the release (indeed, several commands will only work at
## Janelia)
#######
SHELL       = /bin/sh
PACKAGE     = @PACKAGE_NAME@
BASENAME    = @PACKAGE_TARNAME@
RELEASE     = @PACKAGE_VERSION@
RELEASEDATE = "@PACKAGE_DATE@"
COPYRIGHT   = "@PACKAGE_COPYRIGHT@"
LICENSELINE = "@PACKAGE_LICENSE@"
LICENSETAG  = gnu
COMPRESS    = gzip
REPOSITORY  = https://svn.janelia.org/eddylab/eddys/src/


# The program lists below for INFERNAL are not necessarily
# a complete manifest. They are the list of stable programs that the
# package will install. (The list in src/Makefile.in is the complete manifest
# of INFERNAL programs.)
#
PROGS = cmalign\
	cmbuild\
	cmcalibrate\
	cmemit\
	cmscore\
	cmsearch\
	cmstat

# Optional programs for rigorous filters
RFPROGS = cm2hmm cm2hmmsearch

# all: if we don't have precompiled binaries, compiles all packages, 
#      and moves the supported executables into binaries/ subdirectory.
#
#all: core $(RIGFILTERS)
all: core 

core:
	(cd easel;     make CC="$(CC)" CFLAGS="$(CFLAGS)"; make)
	(cd src;       make CC="$(CC)" CFLAGS="$(CFLAGS)"; make module)
	(cd testsuite; make CC="$(CC)" CFLAGS="$(CFLAGS)")

#.PHONY: $(RIGFILTERS)
#$(RIGFILTERS): core
#	if test -d $(RIGFILTERS); then (cd rigfilters; make); fi

# dist: build a new distribution directory in infernal-$RELEASE
#
dist:
	# Make sure we pointed the make dist to a subversion repository
	@if test x${REPOSITORY} = 'x'; then\
	  echo "REPOSITORY isn't set; use make REPOSITORY=... dist";\
	  exit 1;\
	fi
	# Delete old versions of the same release
	#
	@if test -d ../${BASENAME}-$(RELEASE);        then rm -rf ../${BASENAME}-$(RELEASE);        fi
	@if test -e ../${BASENAME}-$(RELEASE).tar;    then rm -f  ../${BASENAME}-$(RELEASE).tar;    fi
	@if test -e ../${BASENAME}-$(RELEASE).tar.Z;  then rm -f  ../${BASENAME}-$(RELEASE).tar.Z;  fi
	@if test -e ../${BASENAME}-$(RELEASE).tar.gz; then rm -f  ../${BASENAME}-$(RELEASE).tar.gz; fi
	# 
	# Export the release from Subversion control.
        # Because we use svn:externals, this automatically exports 
	# the ssdk, and Easel libraries as well.
	#
	svn export ${REPOSITORY} ../${BASENAME}-${RELEASE}
	# 
	# Make the configure scripts from configure.ac
	#
	(cd ../${BASENAME}-${RELEASE};        autoconf)
	(cd ../${BASENAME}-${RELEASE}/easel;  autoconf)
	#
	# We'll need a basic Makefiles for some steps; later
	# we'll delete them
	#
	(cd ../${BASENAME}-${RELEASE}/; ./configure)
	#
	# Make symlinks and set file permissions
	#
	(cd ../${BASENAME}-${RELEASE}/testsuite; ln -s ../easel/devkit/sqc .)
	find ../${BASENAME}-${RELEASE} -type f -exec chmod +r {} \;
	chmod +x ../${BASENAME}-${RELEASE}/easel/devkit/sqc
	chmod +x ../${BASENAME}-${RELEASE}/easel/devkit/autodoc
	#
	# Attach license stamps on all files that need 'em
	# (e.g. replace LICENSE keyword everywhere)
	#
	find ../${BASENAME}-${RELEASE} -type f -exec easel/devkit/sedition-pp LICENSE Licenses/$(LICENSETAG) {} \;
	#
	# Other keyword replacements
	#
	easel/devkit/sedition RELEASE ${RELEASE} RELEASEDATE ${RELEASEDATE}                        ../${BASENAME}-${RELEASE}/documentation/userguide/titlepage.tex
	easel/devkit/sedition RELEASE ${RELEASE} RELEASEDATE ${RELEASEDATE} COPYRIGHT ${COPYRIGHT} ../${BASENAME}-${RELEASE}/00README
	for manpage in ../${BASENAME}-${RELEASE}/documentation/manpages/*; do\
	   easel/devkit/sedition RELEASE ${RELEASE} RELEASEDATE ${RELEASEDATE} COPYRIGHT ${COPYRIGHT} PACKAGE ${PACKAGE} LICENSELINE ${LICENSELINE} $$manpage;\
	done
	#
	# Make the User's Guide, and copy to top level. (We'll
	# destroy the userguide source soon.)
	#
	(cd ../${BASENAME}-${RELEASE}/documentation/userguide; make pdf)
	cp ../${BASENAME}-${RELEASE}/documentation/userguide/main.pdf  ../${BASENAME}-${RELEASE}/Userguide.pdf
	# 
	# Finish the man pages off, adding necessary boilerplate.
	# Must be done *after* the user guide is created, since the user guide
	# steals and uses the pre-boilerplate man pages.
	# Include the optional rigfilters documentation too; whether the user
	# wants it or not is a configuration-time decision.
	#
	for prog in $(PROGS); do\
	   cat ../${BASENAME}-${RELEASE}/documentation/manpages/boilerplate.trailer >> ../${BASENAME}-${RELEASE}/documentation/manpages/$$prog.man;\
	done
	for prog in $(RFPROGS); do\
	   cat ../${BASENAME}-${RELEASE}/documentation/manpages/boilerplate.trailer >> ../${BASENAME}-${RELEASE}/documentation/manpages/$$prog.man;\
	done;
	-rm -f ../${BASENAME}-${RELEASE}/documentation/manpages/boilerplate.trailer
	#
	# Remove SVN-controlled files/directories that don't belong in the
	# distro
	#
	-rm -rf ../${BASENAME}-${RELEASE}/Licenses
	-rm -rf ../${BASENAME}-${RELEASE}/00CHECKLIST
	-rm -rf ../${BASENAME}-${RELEASE}/Bugs
	-rm -rf ../${BASENAME}-${RELEASE}/Manuscripts
	-rm -rf ../${BASENAME}-${RELEASE}/SUBPACKAGES
	-rm -rf ../${BASENAME}-${RELEASE}/00WISHLIST
	(cd ../${BASENAME}-${RELEASE}/easel; make implode)
	(cd ../${BASENAME}-${RELEASE}/;      make distclean)
	#
	# Packaging commands
	#
	(cd ..;	tar cvf ${BASENAME}-${RELEASE}.tar ${BASENAME}-${RELEASE})
	(cd ..; $(COMPRESS) ${BASENAME}-$(RELEASE).tar)

# "make check" runs a set of sqc exercises in the test suite, at level 4.
# To run faster, reduce the level (level 1 runs a few tests, level 4
# runs a lot). 
#
check:
	(cd testsuite; ./sqc -p ../easel/miniapps 4 exercises.sqc . ../src)

# "make devcheck" runs an additional set of development sqc exercises 
# in the test suite, at level 4. This will take a long time.
#
devcheck:
	(cd testsuite;\
	 ./sqc -p ../src/           4 esl-alimanip.sqc . ../easel/miniapps/;\
	 ./sqc -p ../easel/miniapps 4 cmalign.sqc      . ../src;\
	 ./sqc -p ../easel/miniapps 4 cmbuild.sqc      . ../src;\
	 ./sqc -p ../easel/miniapps 4 cmcalibrate.sqc  . ../src;\
	 ./sqc -p ../easel/miniapps 4 cmemit.sqc       . ../src;\
	 ./sqc -p ../easel/miniapps 4 cmscore.sqc      . ../src;\
	 ./sqc -p ../easel/miniapps 4 cmsearch.sqc     . ../src;\
	 ./sqc -p ../easel/miniapps 4 cmstat.sqc       . ../src;)

# "make install" installs the programs in BINDIR
#
install:
	mkdir -p ${BINDIR}
	for file in $(PROGS); do\
		cp src/$$file $(BINDIR)/;\
	done
#	if test -d $(RIGFILTERS); then\
#	   for file in $(RFPROGS); do\
#	      cp rigfilters/cm2hmm-1.0/$$file $(BINDIR)/;\
#	   done;\
#	fi

# "make clean" removes almost everything except configuration files
#              and binaries.
clean:
	-rm -f *.o *~ Makefile.bak core TAGS gmon.out
	(cd testsuite;               make clean)
	(if cd documentation/userguide; then make clean; fi)
	(cd src;                     make clean)
	(cd easel;                   make clean)
#	(cd rigfilters;              make clean)

# "make distclean" leaves a pristine source distribution.
#
distclean:
	-rm -f  config.cache config.log config.status
	-rm -rf autom4te.cache
	-rm -f *.o *~ Makefile.bak core TAGS gmon.out
	(cd testsuite;               make distclean)
	(if cd documentation/userguide; then make distclean; fi)
	(cd src;                     make distclean)
	(cd easel;                   make distclean)
#	(cd rigfilters;              make distclean)
	-rm Makefile