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
|
CXX ?= g++
CC ?= gcc
CFLAGS +=
LDFLAGS += -L.
LIBS +=
SHVER = 3
# 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)
PROG_LIBS += $(LIBS) -lsvm -lm
DMAJOR ?= 0
DMINOR ?= 0
DPATCH ?= 0
LIBFILE = libsvm.so.$(SHVER).$(DMINOR)$(DPATCH)
bindir ?= /usr/bin/
libdir ?= /usr/lib/
bindest = $(DESTDIR)$(bindir)
libdest = $(DESTDIR)$(libdir)
all: svm-train svm-predict svm-scale libsvm.a
svm-train: svm-train.c $(LIBFILE)
$(CXX) $(CPPFLAGS) $(PROG_CFLAGS) $(PROG_LDFLAGS) -o $@ svm-train.c $(PROG_LIBS)
svm-predict: svm-predict.c $(LIBFILE)
$(CXX) $(CPPFLAGS) $(PROG_CFLAGS) $(PROG_LDFLAGS) -o $@ svm-predict.c $(PROG_LIBS)
svm-scale: svm-scale.c $(LIBFILE)
$(CXX) $(CPPFLAGS) $(PROG_CFLAGS) $(PROG_LDFLAGS) -o $@ svm-scale.c $(PROG_LIBS)
$(LIBFILE): svm.cpp svm.h
$(CXX) $(CPPFLAGS) $(LIB_CFLAGS) $(LIB_LDFLAGS) -shared \
-Wl,-soname,libsvm.so.$(SHVER) \
-o $@ svm.cpp $(LIB_LIBS)
ln -s $@ libsvm.so.$(SHVER)
ln -s libsvm.so.$(SHVER) libsvm.so
libsvm.a:
$(CXX) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -c -o svm-static.o svm.cpp
ar cru libsvm.a svm-static.o
install: all
install -d $(bindest) $(libdest)
install svm-train svm-predict svm-scale -m 755 $(bindest)
install tools/checkdata.py $(bindest)/svm-checkdata
install tools/easy.py $(bindest)/svm-easy
install tools/grid.py $(bindest)/svm-grid
install tools/subset.py $(bindest)/svm-subset
install libsvm.a -m 644 $(libdest)
install $(LIBFILE) -m 644 $(libdest)
cd $(libdest) && ln -s $(LIBFILE) libsvm.so.$(SHVER)
cd $(libdest) && ln -s libsvm.so.$(SHVER) libsvm.so
clean:
rm -f *~ *.o *.a *.so* svm-train svm-predict svm-scale tools/svm-*
|