--- Makefile.orig 2023-02-17 20:01:34.000000000 +0800 +++ Makefile 2023-05-15 18:46:27.000000000 +0800 @@ -3,18 +3,22 @@ CFLAGS = -Wall -Wconversion -O3 -fPIC LIBS = blas/blas.a #LIBS = -lblas -SHVER = 5 +#SHVER = 5 +PREFIX ?= /usr/local + OS = $(shell uname) -ifeq ($(OS),Darwin) - SHARED_LIB_FLAG = -dynamiclib -Wl,-install_name,liblinear.so.$(SHVER) -else - SHARED_LIB_FLAG = -shared -Wl,-soname,liblinear.so.$(SHVER) -endif -all: train predict +all: train predict lib lib: linear.o newton.o blas/blas.a - $(CXX) $(SHARED_LIB_FLAG) linear.o newton.o blas/blas.a -o liblinear.so.$(SHVER) + if [ "$(OS)" = "Darwin" ]; then \ + LIBEXT=".dylib"; \ + SHARED_LIB_FLAG="-dynamiclib -install_name $(PREFIX)/lib/liblinear$${LIBEXT}"; \ + else \ + LIBEXT=".so"; \ + SHARED_LIB_FLAG="-shared -Wl,-soname,liblinear$${LIBEXT}"; \ + fi; \ + $(CXX) $${SHARED_LIB_FLAG} linear.o newton.o blas/blas.a -o liblinear$${LIBEXT} train: newton.o linear.o train.c blas/blas.a $(CXX) $(CFLAGS) -o train train.c newton.o linear.o $(LIBS) @@ -34,4 +38,4 @@ clean: make -C blas clean make -C matlab clean - rm -f *~ newton.o linear.o train predict liblinear.so.$(SHVER) + rm -f *~ newton.o linear.o train predict liblinear.*