Create a shared version of the MUMPS library. Index: mumps/src/Makefile =================================================================== --- mumps.orig/src/Makefile 2020-10-01 23:59:29.359262672 +0800 +++ mumps/src/Makefile 2020-10-02 00:36:33.502904903 +0800 @@ -23,8 +23,10 @@ include $(topdir)/Makefile.inc mumps_lib: $(incdir)/mumps_int_def.h \ - $(libdir)/libmumps_common$(PLAT)$(LIBEXT) \ - $(libdir)/lib$(ARITH)mumps$(PLAT)$(LIBEXT) + $(libdir)/libmumps_common$(PLAT).a \ + $(libdir)/libmumps_common$(PLAT).so \ + $(libdir)/lib$(ARITH)mumps$(PLAT).a \ + $(libdir)/lib$(ARITH)mumps$(PLAT).so # Build $(incdir)/mumps_int_def.h, needed by mumps_c_types.h $(incdir)/mumps_int_def.h: build_mumps_int_def @@ -188,14 +190,24 @@ $(ARITH)tools.o\ $(ARITH)type3_root.o -$(libdir)/libmumps_common$(PLAT)$(LIBEXT): $(OBJS_COMMON_MOD) $(OBJS_COMMON_OTHER) - $(AR)$@ $? +$(libdir)/libmumps_common$(PLAT).a: $(OBJS_COMMON_MOD) $(OBJS_COMMON_OTHER) + $(AR) $@ $? $(RANLIB) $@ -$(libdir)/lib$(ARITH)mumps$(PLAT)$(LIBEXT): $(OBJS_MOD) $(OBJS_OTHER) - $(AR)$@ $? +$(libdir)/libmumps_common$(PLAT).so: $(OBJS_COMMON_MOD) $(OBJS_COMMON_OTHER) + $(FC) $(OPTL) -shared $^ -Wl,-soname,libmumps_common$(PLAT)-$(SOVERSION).so -L$(libdir) $(LORDERINGS) -lpthread $(MPIFLIB) $(MPICLIB) -o $(libdir)/libmumps_common$(PLAT)-$(VERSION).so -Wl,-z,defs + ln -s libmumps_common$(PLAT)-$(VERSION).so $(libdir)/libmumps_common$(PLAT)-$(SOVERSION).so + ln -s libmumps_common$(PLAT)-$(VERSION).so $@ + +$(libdir)/lib$(ARITH)mumps$(PLAT).a: $(OBJS_MOD) $(OBJS_OTHER) + $(AR) $@ $? $(RANLIB) $@ +$(libdir)/lib$(ARITH)mumps$(PLAT).so: $(OBJS_MOD) $(OBJS_OTHER) + $(FC) $(OPTL) -shared $^ -Wl,-soname,lib$(ARITH)mumps$(PLAT)-$(SOVERSION).so -L$(libdir) -lmumps_common$(PLAT) $(LORDERINGS) $(MPIFLIB) -lblas $(SCALAP) $(LAPACK) -o $(libdir)/lib$(ARITH)mumps$(PLAT)-$(VERSION).so -Wl,-z,defs + ln -s lib$(ARITH)mumps$(PLAT)-$(VERSION).so $(libdir)/lib$(ARITH)mumps$(PLAT)-$(SOVERSION).so + ln -s lib$(ARITH)mumps$(PLAT)-$(VERSION).so $@ + # Dependencies between modules: # i) arithmetic-dependent modules: $(ARITH)ana_aux.o: $(ARITH)mumps_struc_def.o \ @@ -405,13 +417,13 @@ .SUFFIXES: .c .F .o .F.o: - $(FC) $(OPTF) -I. -I../include $(INCS) $(IORDERINGSF) $(ORDERINGSF) -c $*.F $(OUTF)$*.o + $(FC) $(OPTF) -I. -I../include $(INCS) $(IORDERINGSF) $(ORDERINGSF) -fPIC -c $*.F $(OUTF)$*.o .c.o: - $(CC) $(OPTC) -I../include $(INCS) $(CDEFS) $(IORDERINGSC) $(ORDERINGSC) -c $*.c $(OUTC)$*.o + $(CC) $(OPTC) -I../include $(INCS) $(CDEFS) $(IORDERINGSC) $(ORDERINGSC) -fPIC -c $*.c $(OUTC)$*.o $(ARITH)mumps_c.o: mumps_c.c $(CC) $(OPTC) -I../include $(INCS) $(CDEFS) -DMUMPS_ARITH=MUMPS_ARITH_$(ARITH) \ - $(IORDERINGSC) $(ORDERINGSC) -c mumps_c.c $(OUTC)$@ + $(IORDERINGSC) $(ORDERINGSC) -fPIC -c mumps_c.c $(OUTC)$@ clean: $(RM) *.o *.mod $(incdir)/mumps_int_def.h