--- SRC/Makefile.orig	2011-10-27 21:49:47.000000000 +0200
+++ SRC/Makefile	2014-08-28 21:11:48.000000000 +0200
@@ -111,35 +111,43 @@
 	ilu_zcolumn_dfs.o ilu_zpanel_dfs.o ilu_zcopy_to_ucol.o \
 	ilu_zpivotL.o zdiagonal.o
 
-all:    single double complex complex16
+SINGLE = $(SLUSRC) $(ALLAUX) $(LAAUX) $(SLASRC) $(SCLAUX)
+DOUBLE = $(DLUSRC) $(ALLAUX) $(LAAUX) $(DLASRC) $(DZLAUX)
+COMPLEX = $(CLUSRC) $(ALLAUX) $(LAAUX) $(CLASRC) $(SCLAUX)
+COMPLEX16 = $(ZLUSRC) $(ALLAUX) $(LAAUX) $(ZLASRC) $(DZLAUX)
+
+all:    static shared
 
 single: $(SLUSRC) $(ALLAUX) $(LAAUX) $(SLASRC) $(SCLAUX)
-	$(ARCH) $(ARCHFLAGS) $(SUPERLULIB) \
-		$(SLUSRC) $(ALLAUX) $(LAAUX) $(SLASRC) $(SCLAUX)
-	$(RANLIB) $(SUPERLULIB)
 
 double: $(DLUSRC) $(ALLAUX) $(LAAUX) $(DLASRC) $(DZLAUX)
-	$(ARCH) $(ARCHFLAGS) $(SUPERLULIB) \
-                $(DLUSRC) $(ALLAUX) $(LAAUX) $(DLASRC) $(DZLAUX)
-	$(RANLIB) $(SUPERLULIB)
 
 complex: $(CLUSRC) $(ALLAUX) $(LAAUX) $(CLASRC) $(SCLAUX)
-	$(ARCH) $(ARCHFLAGS) $(SUPERLULIB) \
-		$(CLUSRC) $(ALLAUX) $(LAAUX) $(CLASRC) $(SCLAUX)
-	$(RANLIB) $(SUPERLULIB)
 
 complex16: $(ZLUSRC) $(ALLAUX) $(LAAUX) $(ZLASRC) $(DZLAUX)
-	$(ARCH) $(ARCHFLAGS) $(SUPERLULIB) \
-		$(ZLUSRC) $(ALLAUX) $(LAAUX) $(ZLASRC) $(DZLAUX)
+
+static: single double complex complex16
+	$(ARCMD) $(ARCHFLAGS) $(SUPERLULIB) $(SINGLE)
+	$(ARCMD) $(ARCHFLAGS) $(SUPERLULIB) $(DOUBLE)
+	$(ARCMD) $(ARCHFLAGS) $(SUPERLULIB) $(COMPLEX)
+	$(ARCMD) $(ARCHFLAGS) $(SUPERLULIB) $(COMPLEX16)
 	$(RANLIB) $(SUPERLULIB)
 
+shared:	single double complex complex16
+	$(CC) -shared -Wl,-soname=$(SUPERLULIB_SHARED) -o ../$(SUPERLULIB_SHARED) \
+		$(ALLAUX) $(LAAUX) $(SCLAUX) $(DZLAUX) \
+		$(SLUSRC) $(SLASRC) \
+		$(DLUSRC) $(DLASRC) \
+		$(CLUSRC) $(CLASRC) \
+		$(ZLUSRC) $(ZLASRC)
+
 
 ##################################
 # Do not optimize these routines #
 ##################################
-slamch.o: slamch.c ; $(CC) -c $(NOOPTS) $(CDEFS) $<
-dlamch.o: dlamch.c ; $(CC) -c $(NOOPTS) $(CDEFS) $<
-superlu_timer.o:  superlu_timer.c ; $(CC) -c $(NOOPTS) $<
+slamch.o: slamch.c ; $(CC) -fpic -c $(NOOPTS) $(CDEFS) $<
+dlamch.o: dlamch.c ; $(CC) -fpic -c $(NOOPTS) $(CDEFS) $<
+superlu_timer.o:  superlu_timer.c ; $(CC) -fpic -c $(NOOPTS) $<
 ##################################
 
 .c.o:
@@ -149,4 +157,4 @@
 	$(FORTRAN) $(FFLAGS) -c $<
 
 clean:	
-	rm -f *.o $(SUPERLULIB)
+	rm -f *.o $(SUPERLULIB) $(SUPERLULIB_SHARED)
