* gnu/packages/patches/mumps-shared-libseq.patch, gnu/packages/patches/mumps-shared-mumps.patch, gnu/packages/patches/mumps-shared-pord.patch: New files. * gnu/local.mk (dist_patch_DATA): Add them. * gnu/packages/maths.scm (mumps)[source](patches): Add them. [arguments]: In 'configure' phase, adjust "Makefile.inc" for shared library support. In 'install' phase, install libmpiseq.so when it exists. Co-authored-by: Ludovic Courtès <ludovic.courtes@inria.fr>
		
			
				
	
	
		
			63 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
Create a shared version of the MUMPS library.
 | 
						|
 | 
						|
Index: mumps/src/Makefile
 | 
						|
===================================================================
 | 
						|
--- mumps.orig/src/Makefile
 | 
						|
+++ mumps/src/Makefile
 | 
						|
@@ -23,8 +23,10 @@ z:
 | 
						|
 
 | 
						|
 include $(topdir)/Makefile.inc
 | 
						|
 
 | 
						|
-mumps_lib:    $(libdir)/libmumps_common$(PLAT)$(LIBEXT) \
 | 
						|
-              $(libdir)/lib$(ARITH)mumps$(PLAT)$(LIBEXT)
 | 
						|
+mumps_lib:    $(libdir)/libmumps_common$(PLAT).a \
 | 
						|
+              $(libdir)/libmumps_common$(PLAT).so \
 | 
						|
+              $(libdir)/lib$(ARITH)mumps$(PLAT).a \
 | 
						|
+              $(libdir)/lib$(ARITH)mumps$(PLAT).so
 | 
						|
 
 | 
						|
 OBJS_COMMON_MOD = \
 | 
						|
         lr_common.o \
 | 
						|
@@ -167,14 +169,22 @@ OBJS_OTHER = \
 | 
						|
         $(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) -shared $^ -Wl,-soname,libmumps_common$(PLAT)-5.1.2.so -L$(libdir) $(LORDERINGS) -lpthread $(MPIFLIB) $(MPICLIB) $(LEXTRAS) -o $(libdir)/libmumps_common$(PLAT)-5.1.2.so -Wl,-z,defs
 | 
						|
+	ln -s libmumps_common$(PLAT)-5.1.2.so $@
 | 
						|
+
 | 
						|
+$(libdir)/lib$(ARITH)mumps$(PLAT).a:    $(OBJS_MOD) $(OBJS_OTHER)
 | 
						|
+	$(AR) $@ $?
 | 
						|
 	$(RANLIB) $@
 | 
						|
 
 | 
						|
+$(libdir)/lib$(ARITH)mumps$(PLAT).so:    $(OBJS_MOD) $(OBJS_OTHER)
 | 
						|
+	$(FC) -shared $^ -Wl,-soname,lib$(ARITH)mumps$(PLAT)-5.1.2.so -L$(libdir) -lmumps_common$(PLAT) $(LORDERINGS) $(MPIFLIB) $(LEXTRAS) $(LIBBLAS) $(SCALAP) $(LAPACK) -o $(libdir)/lib$(ARITH)mumps$(PLAT)-5.1.2.so -Wl,-z,defs
 | 
						|
+	ln -s lib$(ARITH)mumps$(PLAT)-5.1.2.so $@
 | 
						|
+
 | 
						|
 # Dependencies between modules:
 | 
						|
 $(ARITH)mumps_load.o:		$(ARITH)mumps_comm_buffer.o \
 | 
						|
 				$(ARITH)mumps_struc_def.o \
 | 
						|
@@ -290,13 +300,13 @@ $(OBJS_OTHER):$(OBJS_COMMON_MOD) $(OBJS_
 | 
						|
 
 | 
						|
 .SUFFIXES: .c .F .o
 | 
						|
 .F.o:
 | 
						|
-	$(FC) $(OPTF) $(INCS) $(IORDERINGSF) $(ORDERINGSF) -I. -I../include -c $*.F $(OUTF)$*.o
 | 
						|
+	$(FC) $(OPTF) $(INCS) $(IORDERINGSF) $(ORDERINGSF) -I. -I../include -fPIC -c $*.F $(OUTF)$*.o
 | 
						|
 .c.o:
 | 
						|
-	$(CC) $(OPTC) $(INCS) -I../include $(CDEFS) $(IORDERINGSC) $(ORDERINGSC) -c $*.c $(OUTC)$*.o
 | 
						|
+	$(CC) $(OPTC) $(INCS) -I../include $(CDEFS) $(IORDERINGSC) $(ORDERINGSC) -fPIC -c $*.c $(OUTC)$*.o
 | 
						|
 
 | 
						|
 $(ARITH)mumps_c.o:	mumps_c.c
 | 
						|
 	$(CC) $(OPTC) $(INCS) $(CDEFS) -DMUMPS_ARITH=MUMPS_ARITH_$(ARITH) \
 | 
						|
-	      $(IORDERINGSC) $(ORDERINGSC) -I../include -c mumps_c.c $(OUTC)$@
 | 
						|
+	      $(IORDERINGSC) $(ORDERINGSC) -I../include -fPIC -c mumps_c.c $(OUTC)$@
 | 
						|
 
 | 
						|
 
 | 
						|
 clean:
 |