Index: slepc/gmakefile
===================================================================
--- slepc.orig/gmakefile	2021-09-17 19:09:07.403316641 +0200
+++ slepc/gmakefile	2021-09-17 19:09:07.395316527 +0200
@@ -25,14 +25,14 @@
 absbasename_all = $(basename $(basename $(basename $(basename $(abspath $(1))))))# arch/lib/libpetsc.so.3.8.0 -> /path/to/arch/lib/libpetsc
 sl_linker_args = $(call SL_LINKER_FUNCTION,$(call absbasename_all,$@),$(libslepc_abi_version),$(libslepc_lib_version))
 
-libslepc_shared  := $(LIBDIR)/libslepc.$(SL_LINKER_SUFFIX)
-libslepc_soname  := $(call soname_function,$(LIBDIR)/libslepc)
-libslepc_libname := $(call libname_function,$(LIBDIR)/libslepc)
-libslepc_static  := $(LIBDIR)/libslepc.$(AR_LIB_SUFFIX)
-libslepcpkgs_shared  := $(foreach pkg, $(pkgs), $(LIBDIR)/libslepc$(pkg).$(SL_LINKER_SUFFIX))
-libslepcpkgs_soname  := $(foreach pkg, $(pkgs), $(call soname_function,$(LIBDIR)/libslepc$(pkg)))
-libslepcpkgs_libname := $(foreach pkg, $(pkgs), $(call libname_function,$(LIBDIR)/libslepc$(pkg)))
-libslepcpkgs_static  := $(foreach pkg, $(pkgs), $(LIBDIR)/libslepc$(pkg).$(AR_LIB_SUFFIX))
+libslepc_shared  := $(LIBDIR)/libslepc$(SLEPC_LIB_EXT).$(SL_LINKER_SUFFIX)
+libslepc_soname  := $(call soname_function,$(LIBDIR)/libslepc$(SLEPC_LIB_EXT))
+libslepc_libname := $(call libname_function,$(LIBDIR)/libslepc$(SLEPC_LIB_EXT))
+libslepc_static  := $(LIBDIR)/libslepc$(SLEPC_LIB_EXT).$(AR_LIB_SUFFIX)
+libslepcpkgs_shared  := $(foreach pkg, $(pkgs), $(LIBDIR)/libslepc$(pkg)$(SLEPC_LIB_EXT).$(SL_LINKER_SUFFIX))
+libslepcpkgs_soname  := $(foreach pkg, $(pkgs), $(call soname_function,$(LIBDIR)/libslepc$(pkg)$(SLEPC_LIB_EXT)))
+libslepcpkgs_libname := $(foreach pkg, $(pkgs), $(call libname_function,$(LIBDIR)/libslepc$(pkg)$(SLEPC_LIB_EXT)))
+libslepcpkgs_static  := $(foreach pkg, $(pkgs), $(LIBDIR)/libslepc$(pkg)$(SLEPC_LIB_EXT).$(AR_LIB_SUFFIX))
 
 ifeq ($(PETSC_WITH_EXTERNAL_LIB),)
   libslepcall_shared  := $(libslepcpkgs_shared)
@@ -139,7 +139,7 @@
 	$(if $(findstring win32fe lib,$(AR)),$(ARCHIVE_RECIPE_WIN32FE_LIB),$(if $(findstring yes,$(AR_ARGFILE)),$(if $(findstring 3.99,$(firstword $(sort 3.99 $(MAKE_VERSION)))),$(ARCHIVE_RECIPE_ARGFILE),$(ARCHIVE_RECIPE_DEFAULT)),$(ARCHIVE_RECIPE_DEFAULT)))
 
 # with-single-library=0
-libpkg = $(foreach pkg, $1, $(LIBDIR)/libslepc$(pkg).$(SL_LINKER_SUFFIX))
+libpkg = $(foreach pkg, $1, $(LIBDIR)/libslepc$(pkg)$(SLEPC_LIB_EXT).$(SL_LINKER_SUFFIX))
 define pkg_template
   $(LIBDIR)/libslepc$(1).$(AR_LIB_SUFFIX)  : $(call concatlang,$(1))
   $(call libname_function,$(LIBDIR)/libslepc$(1)) : $(call concatlang,$(1))
Index: slepc/lib/slepc/conf/slepc_variables
===================================================================
--- slepc.orig/lib/slepc/conf/slepc_variables	2021-09-17 19:09:07.403316641 +0200
+++ slepc/lib/slepc/conf/slepc_variables	2021-09-17 19:09:07.395316527 +0200
@@ -32,14 +32,14 @@
 FCPPFLAGS	= ${SLEPC_FCPPFLAGS}
 
 # Variables for the different SLEPc modules
-SLEPC_SYS_LIB_BASIC = -lslepcsys
-SLEPC_MFN_LIB_BASIC = -lslepcmfn ${SLEPC_SYS_LIB_BASIC}
-SLEPC_LME_LIB_BASIC = -lslepclme ${SLEPC_SYS_LIB_BASIC}
-SLEPC_EPS_LIB_BASIC = -lslepceps ${SLEPC_SYS_LIB_BASIC}
-SLEPC_SVD_LIB_BASIC = -lslepcsvd ${SLEPC_EPS_LIB_BASIC}
-SLEPC_PEP_LIB_BASIC = -lslepcpep ${SLEPC_EPS_LIB_BASIC}
-SLEPC_NEP_LIB_BASIC = -lslepcnep ${SLEPC_PEP_LIB_BASIC}
-SLEPC_LIB_BASIC     = -lslepcnep -lslepcpep -lslepcsvd -lslepceps -lslepcmfn -lslepclme -lslepcsys
+SLEPC_SYS_LIB_BASIC = -lslepcsys$(SLEPC_LIB_EXT)
+SLEPC_MFN_LIB_BASIC = -lslepcmfn$(SLEPC_LIB_EXT) ${SLEPC_SYS_LIB_BASIC}
+SLEPC_LME_LIB_BASIC = -lslepclme$(SLEPC_LIB_EXT) ${SLEPC_SYS_LIB_BASIC}
+SLEPC_EPS_LIB_BASIC = -lslepceps$(SLEPC_LIB_EXT) ${SLEPC_SYS_LIB_BASIC}
+SLEPC_SVD_LIB_BASIC = -lslepcsvd$(SLEPC_LIB_EXT) ${SLEPC_EPS_LIB_BASIC}
+SLEPC_PEP_LIB_BASIC = -lslepcpep$(SLEPC_LIB_EXT) ${SLEPC_EPS_LIB_BASIC}
+SLEPC_NEP_LIB_BASIC = -lslepcnep$(SLEPC_LIB_EXT) ${SLEPC_PEP_LIB_BASIC}
+SLEPC_LIB_BASIC     = -lslepcnep$(SLEPC_LIB_EXT) -lslepcpep$(SLEPC_LIB_EXT)$(SLEPC_LIB_EXT) -lslepcsvd$(SLEPC_LIB_EXT) -lslepceps$(SLEPC_LIB_EXT) -lslepcmfn$(SLEPC_LIB_EXT) -lslepclme$(SLEPC_LIB_EXT) -lslepcsys$(SLEPC_LIB_EXT)
 
 SLEPC_SYS_LIB   = ${SLEPC_C_SH_LIB_PATH} -L${SLEPC_LIB_DIR} ${SLEPC_SYS_LIB_BASIC} ${SLEPC_EXTERNAL_LIB} ${PETSC_SNES_LIB}
 SLEPC_MFN_LIB   = ${SLEPC_C_SH_LIB_PATH} -L${SLEPC_LIB_DIR} ${SLEPC_MFN_LIB_BASIC} ${SLEPC_EXTERNAL_LIB} ${PETSC_SNES_LIB}
@@ -53,7 +53,7 @@
 SLEPC_EXTERNAL_LIB = ${ARPACK_LIB} ${BLOPEX_LIB} ${BLZPACK_LIB} ${ELPA_LIB} ${EVSL_LIB} ${HPDDM_LIB} ${PRIMME_LIB} ${SLICOT_LIB} ${TRLAN_LIB}
 
 # Redefine variable used to build shared libraries
-SHLIBS = libslepcsys libslepcmfn libslepclme libslepceps libslepcsvd libslepcpep libslepcnep
+SHLIBS = libslepcsys$(SLEPC_LIB_EXT) libslepcmfn$(SLEPC_LIB_EXT) libslepclme$(SLEPC_LIB_EXT) libslepceps$(SLEPC_LIB_EXT) libslepcsvd$(SLEPC_LIB_EXT) libslepcpep$(SLEPC_LIB_EXT) libslepcnep$(SLEPC_LIB_EXT)
 
 # Include definitions customized by configuration
 include ${SLEPC_DIR}/${PETSC_ARCH}/lib/slepc/conf/slepcvariables
Index: slepc/config/configure.py
===================================================================
--- slepc.orig/config/configure.py	2021-09-17 19:09:07.403316641 +0200
+++ slepc/config/configure.py	2021-09-17 19:09:07.399316584 +0200
@@ -30,22 +30,23 @@
 
 def WritePkgconfigFile(pkgconfig,version,pversion,sdir,isinstall,prefixdir,singlelib):
   ''' Write the contents of the pkg-config file '''
+  slepc64Ext = '64' if ('64' in slepc.slepcLibExt) else ''
   pkgconfig.write('prefix=%s\n' % prefixdir)
   pkgconfig.write('exec_prefix=${prefix}\n')
   pkgconfig.write('includedir=${prefix}/include\n')
   pkgconfig.write('libdir=${prefix}/lib\n\n')
-  pkgconfig.write('Name: SLEPc\n')
+  pkgconfig.write('Name: SLEPc{}\n'.format(slepc64Ext) )
   pkgconfig.write('Description: the Scalable Library for Eigenvalue Problem Computations\n')
   pkgconfig.write('Version: %s\n' % version)
-  pkgconfig.write('Requires: PETSc >= %s\n' % pversion)
+  pkgconfig.write('Requires: PETSc{} >= {:s}\n'.format(slepc64Ext, pversion))
   pkgconfig.write('Cflags: -I${includedir}')
   if not isinstall:
     pkgconfig.write(' -I'+os.path.join(sdir,'include'))
   pkgconfig.write('\nLibs:')
   if singlelib:
-    pkgconfig.write(' -L${libdir} -lslepc\n')
+    pkgconfig.write(' -L${libdir} -lslepc%s\n' % (slepc.slepcLibExt) )
   else:
-    pkgconfig.write(' -L${libdir} -lslepcnep -lslepcpep -lslepcsvd -lslepceps -lslepcmfn -lslepclme -lslepcsys\n')
+    pkgconfig.write(' -L${{libdir}} -lslepcnep{0} -lslepcpep{0} -lslepcsvd{0} -lslepceps{0} -lslepcmfn{0} -lslepclme{0} -lslepcsys{0}\n'.format(slepc.slepcLibExt))
 
 def WriteReconfigScript(reconfig,slepcdir,usedargs):
   ''' Write the contents of the reconfigure script '''
Index: slepc/config/packages/slepc.py
===================================================================
--- slepc.orig/config/packages/slepc.py	2021-09-17 19:09:07.403316641 +0200
+++ slepc/config/packages/slepc.py	2021-09-17 19:09:07.399316584 +0200
@@ -26,10 +26,12 @@
     print('  --with-packages-download-dir=<dir>'.ljust(wd)+': Skip network download of tarballs and locate them in specified dir')
     print('\nSLEPc:')
     print('  --prefix=<dir>'.ljust(wd)+': Specify location to install SLEPc (e.g., /usr/local)')
+    print('  --shared-library-extension=<string>   : Extension to name of shared library')
     print('  --DATAFILESPATH=<dir>'.ljust(wd)+': Location of datafiles (available at https://slepc.upv.es/datafiles)')
 
   def ProcessArgs(self,argdb):
     self.clean       = argdb.PopBool('with-clean')[0]
+    self.slepcLibExt = argdb.PopString('shared-library-extension')[0]
     self.datadir     = argdb.PopPath('DATAFILESPATH',exist=True)[0]
     self.downloaddir = argdb.PopPath('with-packages-download-dir',exist=True)[0]
     self.prefixdir   = argdb.PopPath('prefix')[0]
@@ -56,11 +58,12 @@
       self.AddDefine(slepcconf,'VERSION_BRANCH_GIT',slepc.branch)
     # Single library installation
     if petsc.singlelib:
-      slepcvars.write('SHLIBS = libslepc\n')
-      slepcvars.write('LIBNAME = '+os.path.join('${INSTALL_LIB_DIR}','libslepc.${AR_LIB_SUFFIX}')+'\n')
+      slepcvars.write('SHLIBS = libslepc'+self.slepcLibExt+'\n')
+      slepcvars.write('LIBNAME = '+os.path.join('${INSTALL_LIB_DIR}','libslepc'+self.slepcLibExt+'.${AR_LIB_SUFFIX}')+'\n')
+      slepcvars.write('SLEPC_LIB_EXT = '+self.slepcLibExt+'\n')
       for module in ['SYS','EPS','SVD','PEP','NEP','MFN','LME']:
-        slepcvars.write('SLEPC_'+module+'_LIB = ${CC_LINKER_SLFLAG}${SLEPC_LIB_DIR} -L${SLEPC_LIB_DIR} -lslepc ${SLEPC_EXTERNAL_LIB} ${PETSC_SNES_LIB}\n')
-      slepcvars.write('SLEPC_LIB = ${CC_LINKER_SLFLAG}${SLEPC_LIB_DIR} -L${SLEPC_LIB_DIR} -lslepc ${SLEPC_EXTERNAL_LIB} ${PETSC_SNES_LIB}\n')
+        slepcvars.write('SLEPC_'+module+'_LIB = ${CC_LINKER_SLFLAG}${SLEPC_LIB_DIR} -L${SLEPC_LIB_DIR} -lslepc'+self.slepcLibExt+' ${SLEPC_EXTERNAL_LIB} ${PETSC_SNES_LIB}\n')
+      slepcvars.write('SLEPC_LIB = ${CC_LINKER_SLFLAG}${SLEPC_LIB_DIR} -L${SLEPC_LIB_DIR} -lslepc'+self.slepcLibExt+' ${SLEPC_EXTERNAL_LIB} ${PETSC_SNES_LIB}\n')
 
   def ShowInfo(self):
     self.log.Println('\nSLEPc directory:\n  '+self.dir)
