ECG-Kit 1.0
(5,722 bytes)
#Makefile for downloading and building all of the native libraries to support WFDB;
#WFDB will be build on the current directory under the tmp subfolder
#This Makefile will build the following packages:
# curl
# wfdb (with curl dependency)
# edr (with wfdb dependency)
# mse
# ecgpuwave
#
# The file will fetch the required files from their respective sources and comp
# and compile everything accordingly. It may be necessary to run this file as
# with root priveleges.
#
# You will need to have wget and zip installed in Mingw for this Makefile to work
#
#
#Package names and versions
CURL=curl-7.33.0
WFDB="wfdb-10.5.22"
ECGPUWAVE=ecgpuwave-1.3.2
INSTALL_DIR:=$(shell pwd)
BUILD_DIR=build
clean: clean-wfdb clean-curl clean-edr clean-ecgpuwave clean-mse
rm -rf ./tmp; \
rm -rf ./$(BUILD_DIR) ;\
rm -rf ./bin/* ;\
rm -rf ./lib/*
##CURL TARGET
clean-curl:
rm -rf ./tmp/$(CURL); \
rm -f ./curl.isconfig; \
rm -f ./curl.isbuilt; \
rm -rf ./$(BUILD_DIR) ;\
rm -rf ./tmp; \
rm -f curl.tar.gz
curl.tar.gz:
wget http://curl.haxx.se/download/$(CURL).tar.gz; \
mv $(CURL).tar.gz curl.tar.gz; \
mkdir -p ./tmp/ ;\
mkdir ./$(BUILD_DIR) ;\
cp ./curl.tar.gz ./tmp/;
curl.isconfig: curl.tar.gz
cd ./tmp/; \
tar xfvz curl.tar.gz; \
cd $(CURL); \
./configure --prefix=$(INSTALL_DIR)/$(BUILD_DIR) --without-ssl --without-zlib --without-libssh2 --disable-ldap; \
touch ../../curl.isconfig
curl.isbuilt: curl.isconfig
cd ./tmp/$(CURL); \
make ;\
make install ;\
touch ../../curl.isbuilt;
curl: curl.isbuilt
##WFDB TARGET
#TODO: remove for build directory as well??
clean-wfdb:
rm -rf ./tmp/$(WFDB) ;\
rm -f ./wfdb.isconfig; \
rm -f ./wfdb.isbuilt; \
rm -f wfdb.tar.gz
wfdb.tar.gz:
wget http://www.physionet.org/physiotools/wfdb.tar.gz; \
cp ./wfdb.tar.gz ./tmp/wfdb.tar.gz;
wfdb.isconfig: wfdb.tar.gz
cd ./tmp; \
tar xvfz wfdb.tar.gz; \
cd $(WFDB); \
./configure --prefix=$(INSTALL_DIR)/$(BUILD_DIR) --with-libcurl ;\
touch ../../wfdb.isconfig
wfdb.isbuilt: PATH:=$(PATH):$(INSTALL_DIR)/$(BUILD_DIR)/bin
wfdb.isbuilt: curl.isbuilt wfdb.isconfig
cd ./tmp/;\
export LIBRARY_PATH=$(INSTALL_DIR)/$(BUILD_DIR)/lib ;\
cd ./$(WFDB)/ ;\
export PATH; \
export C_INCLUDE_PATH=$C_INCLUDE_PATH:$(INSTALL_DIR)/$(BUILD_DIR)/include; \
make install ;\
touch ../../wfdb.isbuilt
wfdb: curl wfdb.isbuilt
##EDR TARGET
clean-edr:
rm -f edr*; \
rm -f ./$(BUILD_DIR)/edr
edr: LL=$(INSTALL_DIR)/$(BUILD_DIR)
edr: wfdb edr.c
mkdir -p $(LL)/include/wfdb ;\
cp -r $(INSTALL_DIR)/tmp/$(WFDB)/lib/*.h* $(LL)/include/wfdb/; \
cp -r $(INSTALL_DIR)/tmp/$(WFDB)/lib/*.dll $(LL)/lib/wfdb.dll; \
gcc -I$(LL)/include/ -o edr -O edr.c -L$(LL)/lib -L$(LL)/lib64 -lm -lwfdb -lcurl
cp edr ./$(BUILD_DIR)/bin
edr.c:
wget http://www.physionet.org/physiotools/edr/edr.c
#MULTISCALE ENTROPY TARGET
clean-mse:
rm -f mse*; \
rm -f ./$(BUILD_DIR)/mse
mse: curl mse.c
gcc -o mse -O mse.c -lm ;\
cp mse ./$(BUILD_DIR)/bin
mse.c:
wget http://www.physionet.org/physiotools/mse/mse.c
#ECGPU Wave Target
clean-ecgpuwave:
rm -rf ./tmp/$(ECGPUWAVE) ;\
rm -f ./tmp/ecgpuwave* ;\
rm -f ./ecgpuwave.isconfig; \
rm -f ./ecgpuwave.isbuilt; \
rm -f ecgpuwave*
ecgpuwave.tar.gz:
wget http://www.physionet.org/physiotools/ecgpuwave/src/$(ECGPUWAVE).tar.gz ;\
mv $(ECGPUWAVE).tar.gz ecgpuwave.tar.gz ;\
cp ecgpuwave.tar.gz ./tmp/ecgpuwave.tar.gz ;\
cd ./tmp; \
tar xvfz ecgpuwave.tar.gz
ecgpuwave-gfortran-addon.zip: ecgpuwave.tar.gz
wget http://wfdb-app-toolbox.googlecode.com/svn/trunk/dependencies/ecgpuwave-gfortran-addon.zip ;\
cp ecgpuwave-gfortran-addon.zip ./tmp/ecgpuwave-gfortran-addon.zip ;\
cd ./tmp; \
unzip -o ecgpuwave-gfortran-addon.zip ;\
cp -Lfv ./*.f ./$(ECGPUWAVE)/
ecgpuwave.isbuilt: C_INCLUDE_PATH:=$(INSTALL_DIR)/$(BUILD_DIR)/include
ecgpuwave.isbuilt: LIBRARY_PATH:=$(INSTALL_DIR)/$(BUILD_DIR)/lib
ecgpuwave.isbuilt: ecgpuwave-gfortran-addon.zip
cd ./tmp/$(ECGPUWAVE);\
export LIBRARY_PATH ;\
export C_INCLUDE_PATH;\
export BUILD_DIR ;\
wget http://wfdb-app-toolbox.googlecode.com/svn/trunk/dependencies/ecgpuwave-mingw-Makefile ;\
mv ecgpuwave-mingw-Makefile Makefile ;\
make ;\
cp -v ecgpuwave.exe $(INSTALL_DIR)/$(BUILD_DIR)/bin;\
wget http://wfdb-app-toolbox.googlecode.com/svn/trunk/dependencies/libgfortran-3.dll;\
wget http://wfdb-app-toolbox.googlecode.com/svn/trunk/dependencies/libgcc_s_dw2-1.dll;\
wget http://wfdb-app-toolbox.googlecode.com/svn/trunk/dependencies/libquadmath-0.dll;\
cp -v libgfortran-3.dll $(INSTALL_DIR)/$(BUILD_DIR)/bin; \
cp -v libgcc_s_dw2-1.dll $(INSTALL_DIR)/$(BUILD_DIR)/bin ;\
cp -v libquadmath-0.dll $(INSTALL_DIR)/$(BUILD_DIR)/bin ;\
touch ../../ecgpuwave.isbuilt
ecgpuwave: wfdb ecgpuwave.isbuilt
all: curl wfdb edr mse ecgpuwave
checkin:
rm -fv $(INSTALL_DIR)/$(BUILD_DIR)/bin/hr* ;\
rm -fv $(INSTALL_DIR)/$(BUILD_DIR)/bin/pschart ;\
rm -fv $(INSTALL_DIR)/$(BUILD_DIR)/bin/psdf ;\
rm -rfv $(INSTALL_DIR)/$(BUILD_DIR)/lib/pkgconfig/libcurl.pc
all: curl wfdb mse edr ecgpuwave
#The install target will copy the contents of the build directory
#to the current lib lib64 and bin directories and remove configuration specific files
install: all
rm -rv ./bin/* ;\
rm -rf ./lib/* ;\
cp -r ./$(BUILD_DIR)/bin/* ./bin/ ;\
cp -r ./$(BUILD_DIR)/lib/* ./lib/ ;\
rm -f ./bin/psfd* ./bin/hrmem* ./bin/cur-config* ./bin/hrfft* ;\
rm -f ./bin/pschar* ./bin/hrlomb* ./bin/hrplot* ./bin/setwfdb* ;\
rm -f ./bin/cshsetwfdb* ./bin/curl-config* ./lib/libcurl.la* ;\
rm -f ./lib/pkgconfig/libcurl.pc*
#Package will clean all temporary files
#generated by this Makefile so that the Toolbox binaries
#are ready to be deployed
package: install
rm -rf ./tmp/ ;\
rm -rf ./$(BUILD_DIR) ;\
rm -f curl* ecgpuwave* edr* mse* wfdb* *~