Build shared version of CXSparse library

 -- Daniel Rus Morales <danirus@tol-project.org>  Tue, 17 Jul 2007 12:15:41 +0200

diff -u upstrm/CXSparse/Lib/Makefile debsrc/CXSparse/Lib/Makefile
--- upstrm/CXSparse/Lib/Makefile	2007-05-05 23:03:41.000000000 +0200
+++ debsrc/CXSparse/Lib/Makefile	2007-12-15 19:09:49.000000000 +0100
@@ -10,7 +10,9 @@
 # AR = ar cr
 # RANLIB = ranlib
 
+SOVERSION = $(shell perl ../../debian/library-soname.pl CXSparse | sed 's/libcxsparse//')
+
-all: libcxsparse.a
+all: libcxsparse.a libcxsparse.so.$(SOVERSION)
 
 CS_SOURCE = cs_add.c cs_amd.c cs_chol.c cs_cholsol.c cs_counts.c cs_cumsum.c \
 	cs_droptol.c cs_dropzeros.c cs_dupl.c cs_entry.c \
@@ -33,6 +35,7 @@
 	cs_scc_di.o cs_maxtrans_di.o cs_dmperm_di.o cs_updown_di.o cs_print_di.o \
 	cs_norm_di.o cs_load_di.o cs_dfs_di.o cs_reach_di.o cs_spsolve_di.o \
 	cs_leaf_di.o cs_ereach_di.o cs_randperm_di.o
+CS_DI_OBJ_SL = $(subst .o,.oo,$(CS_DI_OBJ))
 
 CS_DL_OBJ =  cs_add_dl.o cs_amd_dl.o cs_chol_dl.o cs_cholsol_dl.o cs_counts_dl.o \
 	cs_cumsum_dl.o cs_droptol_dl.o cs_dropzeros_dl.o cs_dupl_dl.o \
@@ -45,6 +48,7 @@
 	cs_scc_dl.o cs_maxtrans_dl.o cs_dmperm_dl.o cs_updown_dl.o cs_print_dl.o \
 	cs_norm_dl.o cs_load_dl.o cs_dfs_dl.o cs_reach_dl.o cs_spsolve_dl.o \
 	cs_leaf_dl.o cs_ereach_dl.o cs_randperm_dl.o
+CS_DL_OBJ_SL = $(subst .o,.oo,$(CS_DL_OBJ))
 
 CS_CI_OBJ =  cs_add_ci.o cs_amd_ci.o cs_chol_ci.o cs_cholsol_ci.o cs_counts_ci.o \
 	cs_cumsum_ci.o cs_droptol_ci.o cs_dropzeros_ci.o cs_dupl_ci.o \
@@ -57,6 +60,7 @@
 	cs_scc_ci.o cs_maxtrans_ci.o cs_dmperm_ci.o cs_updown_ci.o cs_print_ci.o \
 	cs_norm_ci.o cs_load_ci.o cs_dfs_ci.o cs_reach_ci.o cs_spsolve_ci.o \
 	cs_leaf_ci.o cs_ereach_ci.o cs_randperm_ci.o
+CS_CI_OBJ_SL = $(subst .o,.oo,$(CS_CI_OBJ))
 
 CS_CL_OBJ =  cs_add_cl.o cs_amd_cl.o cs_chol_cl.o cs_cholsol_cl.o cs_counts_cl.o \
 	cs_cumsum_cl.o cs_droptol_cl.o cs_dropzeros_cl.o cs_dupl_cl.o \
@@ -69,32 +73,50 @@
 	cs_scc_cl.o cs_maxtrans_cl.o cs_dmperm_cl.o cs_updown_cl.o cs_print_cl.o \
 	cs_norm_cl.o cs_load_cl.o cs_dfs_cl.o cs_reach_cl.o cs_spsolve_cl.o \
 	cs_leaf_cl.o cs_ereach_cl.o cs_randperm_cl.o
+CS_CL_OBJ_SL = $(subst .o,.oo,$(CS_CL_OBJ))
 
 CS = cs_convert.o $(CS_DI_OBJ) $(CS_DL_OBJ) $(CS_CI_OBJ) $(CS_CL_OBJ)
+CS_SL = cs_convert.oo $(CS_DI_OBJ_SL) $(CS_DL_OBJ_SL) $(CS_CI_OBJ_SL) $(CS_CL_OBJ_SL)
 
 $(CS): ../Include/cs.h Makefile
 
 cs_convert.o: ../Source/cs_convert.c
 	$(CC) $(CFLAGS) $(I) -c $< -o $@
+cs_convert.oo: ../Source/cs_convert.c
+	$(CC) -fPIC $(CFLAGS) $(I) -c $< -o $@
 
 %_di.o : ../Source/%.c
 	$(CC) $(CFLAGS) $(I) -c $< -o $@
+%_di.oo: ../Source/%.c
+	$(CC) -fPIC $(CFLAGS) $(I) -c $< -o $@
 
 %_dl.o : ../Source/%.c
 	$(CC) $(CFLAGS) $(I) -DCS_LONG -c $< -o $@
+%_dl.oo : ../Source/%.c
+	$(CC) -fPIC $(CFLAGS) $(I) -DCS_LONG -c $< -o $@
 
 %_ci.o : ../Source/%.c
 	$(CC) $(CFLAGS) $(I) -DCS_COMPLEX -c $< -o $@
+%_ci.oo : ../Source/%.c
+	$(CC) -fPIC $(CFLAGS) $(I) -DCS_COMPLEX -c $< -o $@
 
 %_cl.o : ../Source/%.c
 	$(CC) $(CFLAGS) $(I) -DCS_LONG -DCS_COMPLEX -c $< -o $@
+%_cl.oo : ../Source/%.c
+	$(CC) -fPIC $(CFLAGS) $(I) -DCS_LONG -DCS_COMPLEX -c $< -o $@
 
 libcxsparse.a: $(CS)
 	$(AR) libcxsparse.a $(CS)
 	$(RANLIB) libcxsparse.a
 
+libcxsparse.so.$(SOVERSION): $(CS_SL)
+	$(CC) -shared $^ -lm -Wl,-soname -Wl,$@ -o $@
+	ln -s $@ libcxsparse.so
+
 clean:
-	rm -f *.o
+	rm -f *.o *.oo
+	-$(RM) *.a
+	-$(RM) *.so*
 
 purge: distclean
 
