forked from kees/physionet-wfdb
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
426 lines (367 loc) · 17.1 KB
/
Makefile
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
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
# file: Makefile G. Moody 5 September 1990
# Last revised: 2 December 2005 Version 10.3.18
# UNIX 'make' description file for the WFDB software package
#
# -----------------------------------------------------------------------------
# WFDB software for creating & using annotated waveform (time series) databases
# Copyright (C) 1990-2005 George B. Moody
#
# These programs are free software; you can redistribute them and/or modify
# them under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version.
#
# These programs are distributed in the hope that they will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
# more details.
#
# You should have received a copy of the GNU General Public License along with
# these programs; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
# In addition, you can redistribute and/or modify the WFDB library (contained
# within the 'lib' directory) under the terms of the GNU Library General
# Public License as published by the Free Software Foundation; either version
# 2 of the License, or (at your option) any later version. For details, see
# 'lib/COPYING.LIB'.
#
# You may contact the author by e-mail ([email protected]) or postal mail
# (MIT Room E25-505A, Cambridge, MA 02139 USA). For updates to this software,
# please visit PhysioNet (http://www.physionet.org/).
# _____________________________________________________________________________
#
# This file is used with the UNIX `make' command to compile, install, and
# create archives of the WFDB software package. Before using it
# for the first time, check that the site-specific variables below are
# appropriate for your system. To compile the package, just type `make' (from
# within this directory). To install the package, type `make install'. To
# create source archives, type `make tarballs'; or to make a binary archive,
# type `make bin-tarball'. (Making archives requires PGP, gzip, and GNU tar).
# _____________________________________________________________________________
# file: version.def G. Moody 24 May 2000
# Last revised: 12 July 2010
# Each release of the WFDB Software Package is identified by a three-part
# version number, defined below. Be sure to leave a single space before
# and after the "=" in each of the next three lines!
MAJOR = 10
MINOR = 5
RELEASE = 24
VERSION = $(MAJOR).$(MINOR).$(RELEASE)
# RPMRELEASE can be incremented if changes are made between official
# releases. It should be reset to 1 whenever the VERSION is changed.
RPMRELEASE = 1
# VDEFS is the set of C compiler options needed to set version number variables
# while compiling the WFDB Software Package.
VDEFS = -DWFDB_MAJOR=$(MAJOR) -DWFDB_MINOR=$(MINOR) -DWFDB_RELEASE=$(RELEASE)
# WAVEVERSION is the WAVE version number.
WAVEVERSION = 6.11
# _____________________________________________________________________________
# Definitions generated by 'configure'
PACKAGE = wfdb-10.5.24
SRCDIR = "/home/benjamin/wfdb-10.5.24"
LONGDATE = 28 May 2015
SHORTDATE = MAY 2015
YEAR = 2015
ARCH = x86_64-Linux
# _____________________________________________________________________________
# file: linux.def G. Moody 31 May 2000
# Last revised: 13 August 2014
# 'make' definitions for compiling the WFDB Software Package under Linux
# Choose a value for WFDBROOT to determine where the WFDB Software Package will
# be installed. One of the following is usually a reasonable choice.
# Installing in /usr generally requires root permissions, but will be easiest
# for future software development (no special -I or -L options will be needed
# to compile software with the WFDB library, since the *.h files and the
# library will be installed in the standard directories).
WFDBROOT = /usr/local
# Installing in /usr/local usually requires root permissions. On a multi-user
# system where it is desirable to keep the OS vendor's software separate from
# other software, this is a good choice. Another common choice in such cases
# is /opt .
# WFDBROOT = /usr/local
# To install without root permissions, a good choice is to set WFDBROOT to the
# name of your home directory, as in the example below (change as needed).
# WFDBROOT = /home/frodo
# LC and LL are used to determine C compiler and linker options needed to
# enable NETFILES (code that allows applications linked to the WFDB library to
# read input from HTTP and FTP servers, in addition to the standard filesystem
# support available without NETFILES). The WFDB library can use either
# libcurl (recommended) or libwww to provide NETFILES support. To use libcurl,
# set LC to `curl-config --cflags` (note the backquotes) and LL to
# `curl-config --libs`. Otherwise, to use libwww, set LC to
# `libwww-config --cflags` and LL to `libwww-config --libs`. If neither
# libcurl nor libwww is available, LC and LL should be empty (and NETFILES
# will be disabled).
LC = `curl-config --cflags`
LL = `curl-config --libs`
# BINDIR specifies the directory in which the applications will be installed;
# it should be a directory in the PATH of those who will use the applications.
BINDIR = $(WFDBROOT)/bin
# DBDIR specifies the name of a directory in which to install the contents
# of the `data' directory.
DBDIR = $(WFDBROOT)/database
# INCDIR specifies the name of a directory in which to install the WFDB
# library's #include <...> files.
INCDIR = $(WFDBROOT)/include
# INFODIR is the GNU info directory (optional, needed to `make info').
INFODIR = $(WFDBROOT)/share/info
# LIBDIR specifies the name of a directory in which to install the WFDB
# library.
LIBDIR = $(WFDBROOT)/lib
# MANDIR is the root of the man page directory tree. On most systems, this is
# something like /usr/man or /usr/local/man (type 'man man' to find out).
MANDIR = $(WFDBROOT)/share/man
# PSPDIR specifies the name of a directory in which to install the PostScript
# prolog (*.pro) files from the 'app' directory.
PSPDIR = $(WFDBROOT)/lib/ps
# CC is the name of your C compiler.
CC = gcc
# CCDEFS is the set of C compiler options needed to set preprocessor variables
# while compiling the WFDB Software Package. CCDEFS should always include
# VDEFS (the version definitions). Under Linux, add -fno-stack-protector
# when compiling the original (SWIG-based) WFDB Toolkit for Matlab.
CCDEFS = $(VDEFS)
# MFLAGS is the set of architecture-dependent (-m*) compiler options, which
# is usually empty. See the gcc manual for information about gcc's -m options.
MFLAGS =
# CFLAGS is the set of C compiler options. CFLAGS should always include
# CCDEFS.
CFLAGS = $(MFLAGS) -g -O $(CCDEFS) $(LC) -I$(INCDIR)
# RPATHFLAGS is a set of C compiler options that cause the program to
# search for shared libraries in a non-standard location at run-time.
# These options are not needed or useful when using a static library.
RPATHFLAGS = -Wl,--enable-new-dtags,-rpath,$(LIBDIR)
# LDFLAGS is appended to the C compiler command line to specify loading the
# WFDB library.
LDFLAGS = -L$(LIBDIR) -lwfdb $(RPATHFLAGS)
# WFDBLIB is the name of the standard WFDB library. In order to access it via
# `-lwfdb', WFDBLIB should be `libwfdb.a'.
WFDBLIB = libwfdb.a
# BUILDLIB is the command that creates the static WFDB library once its
# components have been compiled separately; the list of *.o files that
# make up the library will be appended to BUILDLIB.
BUILDLIB = $(AR) $(ARFLAGS) $(WFDBLIB)
# PRINT is the name of the program used to produce listings (including any
# options for the desired formatting).
PRINT = lpr
# SETPERMISSIONS is the command needed to make the installed files accessible
# to those who will use them. The value given below makes them readable by
# everyone, and writeable by the owner only. (If you perform the installation
# as `root', `root' is the owner of the installed files.)
SETPERMISSIONS = chmod 644
# SETDPERMISSIONS is similarly used to make directories created during the
# installation accessible.
SETDPERMISSIONS = chmod 755
# SETLPERMISSIONS is the command needed to make the WFDB library usable by
# programs linked to it.
SETLPERMISSIONS = chmod 644
# SETXPERMISSIONS is the command needed to make the applications accessible.
SETXPERMISSIONS = chmod 755
# STRIP is the command used to compact the compiled binaries by removing their
# symbol tables.
STRIP = strip
# To retain the symbol tables for debugging, comment out the previous line, and
# uncomment the next line.
# STRIP = :
# ...........................................................................
# This section of definitions is used only when compiling WAVE, which is
# possible only if the XView and Xlib libraries and include files have been
# installed.
# OPENWINHOME specifies the root directory of the OpenWindows hierarchy.
# This is usually /usr/openwin.
OPENWINHOME = /usr/openwin
# OWINCDIR is the directory in which the `xview' directory containing XView
# *.h files is found.
OWINCDIR = $(OPENWINHOME)/include
# OWLIBDIR is the directory in which the XView library is found.
OWLIBDIR = $(OPENWINHOME)/lib
# XHOME specifies the root directory of the X11 hierarchy.
# This is usually /usr/X11R6 (or /usr/X11).
XHOME = /usr/X11R6
# XINCDIR is the directory in which the 'X11' directory containing X11 *.h
# files is found. This is usually /usr/X11R6/include, although there is often
# a link connecting /usr/include/X11 to this directory.
XINCDIR = $(XHOME)/include
# XLIBDIR is the directory in which the X11 libraries are found.
XLIBDIR = $(XHOME)/lib
# WCFLAGS is the set of C compiler options to use when compiling WAVE.
WCFLAGS = $(CFLAGS) -I$(OWINCDIR) -I$(XINCDIR) -fno-stack-protector
# HELPOBJ can be set to "help.o" if you wish to recompile the XView spot help
# functions in "wave/help.c" (recommended under Linux).
HELPOBJ = help.o
# Otherwise, use the version in libxview by uncommenting the next line:
# HELPOBJ =
# WLDFLAGS is the set of loader options appended to the C compiler command line
# to specify loading the WFDB, XView, and Xlib libraries.
WLDFLAGS = $(LDFLAGS) -L$(OWLIBDIR) -L$(XLIBDIR) -lxview -lolgx -lX11
# Users of Red Hat Linux 5.0 or 5.1 (not later versions), use this instead:
# WLDFLAGS = $(LDFLAGS) -L$(XLIBDIR) $(OWLIBDIR)/libxview.a \
# $(OWLIBDIR)/libolgx.a -lX11
# This setting avoids incompatibilities with the shared (dynamic) libraries.
# ...........................................................................
# `make' (with no target specified) will be equivalent to `make all'.
make-all: all
# `make lib-post-install' should be run after installing the WFDB library.
lib-post-install:
ranlib $(LIBDIR)/$(WFDBLIB)
lib-post-uninstall:
echo "Nothing to be done for lib-post-uninstall"
# _____________________________________________________________________________
# file: Makefile.tpl G. Moody 24 May 2000
# Last revised: 26 August 2014
# This section of the Makefile should not need to be changed.
# 'make' or 'make all': compile the WFDB applications without installing them
all: config.cache
$(MAKE) WFDBROOT=`pwd`/build LIBDIR=`pwd`/build/lib install check
# 'make install': compile and install the WFDB software package
install: config.cache
cd lib; $(MAKE) clean install
cd app; $(MAKE) clean install
cd convert; $(MAKE) clean install
cd data; $(MAKE) clean install
cd fortran; $(MAKE) clean install
cd psd; $(MAKE) clean install
-( cd wave; $(MAKE) clean install )
cd waverc; $(MAKE) clean install
-( cd xml; $(MAKE) clean install )
test -d doc && ( cd doc; $(MAKE) clean install )
# 'make collect': collect the installed files into /tmp/wfdb/
collect:
cd lib; $(MAKE) collect
cd app; $(MAKE) collect
cd convert; $(MAKE) collect
cd data; $(MAKE) collect
cd fortran; $(MAKE) collect
cd psd; $(MAKE) collect
-( cd wave; $(MAKE) collect )
cd waverc; $(MAKE) collect
-( cd xml; $(MAKE) collect )
test -d doc && ( cd doc; $(MAKE) collect )
uninstall: config.cache
cd app; $(MAKE) uninstall
cd convert; $(MAKE) uninstall
cd data; $(MAKE) uninstall
cd fortran; $(MAKE) uninstall
cd lib; $(MAKE) uninstall
cd psd; $(MAKE) uninstall
cd wave; $(MAKE) uninstall
cd waverc; $(MAKE) uninstall
cd xml; $(MAKE) uninstall
test -d doc && ( cd doc; $(MAKE) uninstall )
./uninstall.sh $(WFDBROOT)
# 'make clean': remove binaries, other cruft from source directories
clean:
cd app; $(MAKE) clean
cd checkpkg; $(MAKE) clean
cd convert; $(MAKE) clean
cd data; $(MAKE) clean
cd examples; $(MAKE) clean
cd fortran; $(MAKE) clean
cd lib; $(MAKE) clean
cd psd; $(MAKE) clean
cd wave; $(MAKE) clean
cd waverc; $(MAKE) clean
cd xml; $(MAKE) clean
test -d doc && ( cd doc; $(MAKE) clean )
cd conf; rm -f *~ prompt site.def site-slib.def
rm -f *~ config.cache */*.exe $(PACKAGE)-*.spec
rm -rf build
# 'make config.cache': check configuration
config.cache:
exec ./configure
@echo "(Ignore any error that may appear on the next line.)"
@false # force an immediate exit from `make'
conf/prompt:
echo -n >echo.out
-test -s echo.out && ln -sf prompt-c conf/prompt
-test -s echo.out || ln -sf prompt-n conf/prompt
rm echo.out
# 'make test' or 'make test-all': compile the WFDB applications without
# installing them (installs the dynamically-linked WFDB library and includes
# into subdirectories of $(HOME)/wfdb-test)
test test-all: $(HOME)/wfdb-test/include $(HOME)/wfdb-test/lib
$(MAKE) WFDBROOT=$(HOME)/wfdb-test all
# 'make test-install': compile and install the WFDB software package into
# subdirectories of $(HOME)/wfdb-test
test-install: $(TESTDIRS)
$(MAKE) WFDBROOT=$(HOME)/wfdb-test install
# 'make check': test currently installed version of the WFDB software package
check: config.cache conf/prompt
cd checkpkg; $(MAKE) all
# Create directories for test installation if necessary.
TESTDIRS = $(HOME)/wfdb-test/bin $(HOME)/wfdb-test/database \
$(HOME)/wfdb-test/help $(HOME)/wfdb-test/include $(HOME)/wfdb-test/lib
$(HOME)/wfdb-test:
mkdir -p $(HOME)/wfdb-test; $(SETDPERMISSIONS) $(HOME)/wfdb-test
$(HOME)/wfdb-test/bin: $(HOME)/wfdb-test
mkdir -p $(HOME)/wfdb-test/bin; \
$(SETDPERMISSIONS) $(HOME)/wfdb-test/bin
$(HOME)/wfdb-test/database: $(HOME)/wfdb-test
mkdir -p $(HOME)/wfdb-test/database; \
$(SETDPERMISSIONS) $(HOME)/wfdb-test/database
$(HOME)/wfdb-test/help: $(HOME)/wfdb-test
mkdir -p $(HOME)/wfdb-test/help; \
$(SETDPERMISSIONS) $(HOME)/wfdb-test/help
$(HOME)/wfdb-test/include: $(HOME)/wfdb-test
mkdir -p $(HOME)/wfdb-test/include; \
$(SETDPERMISSIONS) $(HOME)/wfdb-test/include
$(HOME)/wfdb-test/lib: $(HOME)/wfdb-test
mkdir -p $(HOME)/wfdb-test/lib; \
$(SETDPERMISSIONS) $(HOME)/wfdb-test/lib
# 'make tarballs': clean up the source directories, run ./configure with
# default settings, then make a pair of gzipped tar source archives of the WFDB
# software package (with and without the documentation), and check that the
# MANIFEST (list of files in the package) is correct.
tarballs: clean
./configure
$(MAKE) clean
rm -f ../$(PACKAGE)-MANIFEST ../$(PACKAGE).tar.gz \
../$(PACKAGE)-no-docs.tar.gz
cd lib; $(SETPERMISSIONS) *.h
cd ..; export COPYFILE_DISABLE=true; \
tar --create --file $(PACKAGE).tar.gz --verbose --gzip \
'--exclude=.git*' $(PACKAGE) 2>&1 | \
sed "s+^a ++" | sed s+${PACKAGE}/++ | \
tee $(PACKAGE)-MANIFEST
cd ..; tar --create --file $(PACKAGE)-no-docs.tar.gz \
--verbose --gzip \
'--exclude=$(PACKAGE)/*doc' \
'--exclude=.git*' $(PACKAGE)
./check-manifest $(PACKAGE)
# 'make bin-tarball': make a gzipped tar archive of the WFDB software package
# binaries and other installed files
bin-tarball: install collect
rm -rf /tmp/$(PACKAGE)-$(ARCH)
mv /tmp/wfdb /tmp/$(PACKAGE)-$(ARCH)
cd /tmp; tar cfvz $(PACKAGE)-$(ARCH).tar.gz \
$(PACKAGE)-$(ARCH)
mv /tmp/$(PACKAGE)-$(ARCH).tar.gz ..
rm -rf /tmp/$(PACKAGE)-$(ARCH)
# 'make doc-tarball': make a gzipped tar archive of formatted documents
# (requires many freely-available utilities that are not part of this
# package; see doc/Makefile.top for details)
doc-tarball:
cd doc; $(MAKE) tarball
# 'make rpms': make source and binary RPMs
RPMROOT=$(HOME)/rpmbuild
rpms: tarballs
mkdir -p $(RPMROOT)/BUILD $(RPMROOT)/RPMS $(RPMROOT)/SOURCES \
$(RPMROOT)/SPECS $(RPMROOT)/SRPMS
cp -p ../$(PACKAGE).tar.gz $(RPMROOT)/SOURCES
sed s/VERSION/$(VERSION)/g <wfdb.spec | \
sed s/MAJOR/$(MAJOR)/g | sed s/MINOR/$(MINOR)/g | \
sed s/RPMRELEASE/$(RPMRELEASE)/ >$(PACKAGE)-$(RPMRELEASE).spec
cp -p $(PACKAGE)-$(RPMRELEASE).spec $(RPMROOT)/SPECS
cd; if [ -e .rpmmacros ]; then cp -p .rpmmacros ..rpmmacros; fi
cp conf/rpm.mc $(HOME)/.rpmmacros
if [ -x /usr/bin/rpmbuild ]; \
then rpmbuild -ba $(PACKAGE)-$(RPMRELEASE).spec; \
else echo "rpmbuild not found in /usr/bin; attempting to use rpm"; \
rpm -ba $(PACKAGE)-$(RPMRELEASE).spec; fi
mv $(RPMROOT)/RPMS/*/wfdb*-$(VERSION)-$(RPMRELEASE).*.rpm ..
mv $(RPMROOT)/SRPMS/$(PACKAGE)-$(RPMRELEASE).src.rpm ..
rm -f $(PACKAGE)-$(RPMRELEASE).spec $(HOME)/.rpmmacros
cd; if [ -e ..rpmmacros ]; then mv ..rpmmacros .rpmmacros; fi
@echo "Remember to sign the RPMs by"
@echo " cd ..; rpm --addsign wfdb*$(VERSION)*rpm"