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
|
MEXDETECTED := $(shell mex -h >/dev/null 2>&1 && echo yes)
MEX := mex
MEXFLAGS := $(shell if uname -m | grep -q x86_64 ; then echo -largeArrayDims ; fi)
MEXSUFFIX := $(shell if uname -m | grep -q x86_64 ; then echo mexa64 ; else echo mexglx ; fi)
CC := gcc
CFLAGS +=
LDFLAGS +=
LIBS += -lm
# Libraries must not be compiled/linked with -pie, -fpie or -FPIE
LIB_CFLAGS = $(filter-out -fPIE,$(CFLAGS)) -fPIC
LIB_LDFLAGS = $(filter-out -fPIE, $(filter-out -pie,$(LDFLAGS)))
LIB_LIBS = $(LIBS)
PROG_CFLAGS = $(CFLAGS)
PROG_LDFLAGS = $(LDFLAGS) -L.
PROG_LIBS = $(LIBS) -lpthread -locas
# The real LVER/LSUBVER should be passed on by debian/rules
LVER ?= 0
LSUBVER ?= 0
LIBFILE = libocas.so.$(LVER).$(LSUBVER)
bindir ?= /usr/bin/
libdir ?= /usr/lib/
bindest = $(DESTDIR)$(bindir)
libdest = $(DESTDIR)$(libdir)
ifeq (yes,$(MEXDETECTED))
all: svmocas_nnw.$(MEXSUFFIX) svmocas.$(MEXSUFFIX) svmocas_light.$(MEXSUFFIX) linclassif_light.$(MEXSUFFIX) libocas.so svmocas msvmocas linclassif msvmocas.$(MEXSUFFIX) msvmocas_light.$(MEXSUFFIX) compute_auc.$(MEXSUFFIX) svmocas_lbp.$(MEXSUFFIX) svmocas_bool.$(MEXSUFFIX) lbppyr_features.$(MEXSUFFIX) load_svmlight_file.$(MEXSUFFIX)
compute_auc.$(MEXSUFFIX): compute_auc_mex.c libocas.h ocas_helper.h ocas_helper.c version.h
$(MEX) $(MEXFLAGS) -DLIBOCAS_MATLAB -O -output compute_auc.$(MEXSUFFIX) compute_auc_mex.c ocas_helper.c lib_svmlight_format.c
svmocas.$(MEXSUFFIX): libocas.c libocas.h libqp_splx.c libqp.h svmocas_mex.c lib_svmlight_format.c lib_svmlight_format.h ocas_helper.c ocas_helper.h features_int8.h features_int8.c features_double.h features_double.c features_single.h features_single.c
$(MEX) $(MEXFLAGS) -DLIBOCAS_MATLAB -O -output svmocas.$(MEXSUFFIX) svmocas_mex.c ocas_helper.c lib_svmlight_format.c features_int8.c features_double.c features_single.c libocas.c libqp_splx.c
svmocas_nnw.$(MEXSUFFIX): libocas.c libocas.h libqp_splx.c libqp.h svmocas_nnw_mex.c lib_svmlight_format.c lib_svmlight_format.h ocas_helper.c ocas_helper.h features_int8.h features_int8.c features_double.h features_double.c features_single.h features_single.c
$(MEX) $(MEXFLAGS) -DLIBOCAS_MATLAB -O -output svmocas_nnw.$(MEXSUFFIX) svmocas_nnw_mex.c lib_svmlight_format.c ocas_helper.c features_int8.c features_double.c features_single.c libocas.c libqp_splx.c
svmocas_light.$(MEXSUFFIX): libocas.c libocas.h libqp_splx.c libqp.h svmocas_light_mex.c lib_svmlight_format.c lib_svmlight_format.h ocas_helper.c ocas_helper.h features_double.h features_double.c
$(MEX) $(MEXFLAGS) -DLIBOCAS_MATLAB -O -output svmocas_light.$(MEXSUFFIX) svmocas_light_mex.c lib_svmlight_format.c ocas_helper.c features_double.c libocas.c libqp_splx.c
linclassif_light.$(MEXSUFFIX): linclassif_light_mex.c lib_svmlight_format.c lib_svmlight_format.h ocas_helper.c ocas_helper.h
$(MEX) $(MEXFLAGS) -DLIBOCAS_MATLAB -O -output linclassif_light.$(MEXSUFFIX) linclassif_light_mex.c lib_svmlight_format.c ocas_helper.c
msvmocas.$(MEXSUFFIX): libocas.c libocas.h libqp_splx.c libqp.h msvmocas_mex.c lib_svmlight_format.c lib_svmlight_format.h ocas_helper.c ocas_helper.h features_double.h features_double.c
$(MEX) $(MEXFLAGS) -DLIBOCAS_MATLAB -O -output msvmocas.$(MEXSUFFIX) msvmocas_mex.c lib_svmlight_format.c ocas_helper.c features_double.c libocas.c libqp_splx.c
msvmocas_light.$(MEXSUFFIX): libocas.c libocas.h libqp_splx.c libqp.h msvmocas_light_mex.c lib_svmlight_format.c lib_svmlight_format.h ocas_helper.c ocas_helper.h features_double.h features_double.c
$(MEX) $(MEXFLAGS) -DLIBOCAS_MATLAB -O -output msvmocas_light.$(MEXSUFFIX) msvmocas_light_mex.c lib_svmlight_format.c ocas_helper.c features_double.c libocas.c libqp_splx.c
lbppyr.$(MEXSUFFIX): lbppyr_mex.c
$(MEX) $(MEXFLAGS) -O -output lbppyr.$(MEXSUFFIX) lbppyr_mex.c
svmocas_lbp.$(MEXSUFFIX): libocas.c libocas.h libqp_splx.c libqp.h svmocas_lbp_mex.c ocas_lbp_helper.c ocas_lbp_helper.h liblbp.h liblbp.c
$(MEX) $(MEXFLAGS) -DLIBOCAS_MATLAB -O -output svmocas_lbp.$(MEXSUFFIX) svmocas_lbp_mex.c ocas_lbp_helper.c libocas.c libqp_splx.c liblbp.c
svmocas_bool.$(MEXSUFFIX): libocas.c libocas.h libqp_splx.c libqp.h svmocas_bool_mex.c features_bool.c features_bool.h liblbp.h liblbp.c
$(MEX) $(MEXFLAGS) -DLIBOCAS_MATLAB -O -output svmocas_bool.$(MEXSUFFIX) svmocas_bool_mex.c features_bool.c ocas_helper.c lib_svmlight_format.c libocas.c libqp_splx.c
lbppyr_features.$(MEXSUFFIX): lbppyr_features_mex.c liblbp.c liblbp.h
$(MEX) -g $(MEXFLAGS) -DLIBOCAS_MATLAB -O -output lbppyr_features.$(MEXSUFFIX) lbppyr_features_mex.c liblbp.c
lbpfilter.$(MEXSUFFIX): lbpfilter_mex.c
$(MEX) $(MEXFLAGS) -DLIBOCAS_MATLAB -O -output lbpfilter.$(MEXSUFFIX) lbpfilter_mex.c
load_svmlight_file.$(MEXSUFFIX): load_svmlight_file.c lib_svmlight_format.c lib_svmlight_format.h
$(MEX) $(MEXFLAGS) -DLIBOCAS_MATLAB -O -output load_svmlight_file.$(MEXSUFFIX) load_svmlight_file.c lib_svmlight_format.c
else
all: $(LIBFILE) svmocas msvmocas linclassif libocas.a
endif
svmocas: svmocas.c lib_svmlight_format.c sparse_mat.c ocas_helper.c ocas_helper.h libocas.h sparse_mat.h features_double.h features_double.c version.h $(LIBFILE)
$(CC) $(CPPFLAGS) $(PROG_CFLAGS) $(PROG_LDFLAGS) -o $@ svmocas.c lib_svmlight_format.c sparse_mat.c ocas_helper.c features_double.c $(PROG_LIBS)
msvmocas: msvmocas.c lib_svmlight_format.c sparse_mat.c ocas_helper.c ocas_helper.h libocas.h sparse_mat.h features_double.h features_double.c version.h $(LIBFILE)
$(CC) $(CPPFLAGS) $(PROG_CFLAGS) $(PROG_LDFLAGS) -o $@ msvmocas.c lib_svmlight_format.c sparse_mat.c ocas_helper.c features_double.c $(PROG_LIBS)
linclassif: linclassif.c lib_svmlight_format.c libocas.h version.h
$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ linclassif.c lib_svmlight_format.c $(LIBS)
$(LIBFILE): libocas.c libocas.h libqp_splx.c libqp.h
$(CC) $(CPPFLAGS) $(LIB_CFLAGS) $(LIB_LDFLAGS) -shared \
-Wl,-soname,libocas.so.$(LVER) \
-o $@ libocas.c libqp_splx.c $(LIB_LIBS)
ln -s $@ libocas.so.$(LVER)
ln -s libocas.so.$(LVER) libocas.so
libocas.a:
$(CXX) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -c -o libocas-static.o libocas.c
$(CXX) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -c -o libqp_splx-static.o libqp_splx.c
ar cru libocas.a libocas-static.o libqp_splx-static.o
install: all
install -d $(bindest) $(libdest)
install svmocas msvmocas linclassif -m 755 $(bindest)
install libocas.a -m 644 $(libdest)
install $(LIBFILE) -m 644 $(libdest)
cd $(libdest) && ln -s $(LIBFILE) libocas.so.$(LVER)
cd $(libdest) && ln -s libocas.so.$(LVER) libocas.so
clean:
rm -f *~ *.o
rm -f svmocas.$(MEXSUFFIX) svmocas_nnw.$(MEXSUFFIX) svmocas_bool.$(MEXSUFFIX) svmocas_light.$(MEXSUFFIX)
rm -f linclassif_light.$(MEXSUFFIX)
rm -f svmocas msvmocas linclassif libocas.so* libocas.a
rm -f msvmocas.$(MEXSUFFIX) msvmocas_light.$(MEXSUFFIX)
rm -f lbppyr_features.$(MEXSUFFIX) svmocas_lbp.$(MEXSUFFIX) compute_auc.$(MEXSUFFIX) load_svmlight_file.$(MEXSUFFIX)
|