--- 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.*
