Index: Python/dynload_shlib.c =================================================================== --- Python/dynload_shlib.c (revision 86870) +++ Python/dynload_shlib.c (working copy) @@ -51,10 +51,12 @@ {"module.exe", "rb", C_EXTENSION}, {"MODULE.EXE", "rb", C_EXTENSION}, #else /* !__VMS */ - {"." SOABI ".so", "rb", C_EXTENSION}, - {"module." SOABI ".so", "rb", C_EXTENSION}, - {".so", "rb", C_EXTENSION}, - {"module.so", "rb", C_EXTENSION}, +#ifdef SO_EXTRA + {SO_EXTRA, "rb", C_EXTENSION}, + {"module" SO_EXTRA, "rb", C_EXTENSION}, +#endif + {SO_BASE, "rb", C_EXTENSION}, + {"module" SO_BASE, "rb", C_EXTENSION}, #endif /* __VMS */ #endif /* defined(PYOS_OS2) && defined(PYCC_GCC) */ #endif /* __CYGWIN__ */ Index: configure.in =================================================================== --- configure.in (revision 86870) +++ configure.in (working copy) @@ -3643,14 +3643,32 @@ AC_SUBST(SOABI) AC_MSG_CHECKING(ABIFLAGS) AC_MSG_RESULT($ABIFLAGS) + +AC_MSG_CHECKING(LDVERSION) +LDVERSION=$VERSION$ABIFLAGS +AC_MSG_RESULT($LDVERSION) + AC_MSG_CHECKING(SOABI) +# default value for SOABI: 'cpython-'+version+flags SOABI='cpython-'`echo $VERSION | tr -d .`${ABIFLAGS} + +AC_ARG_WITH(soabi, + AS_HELP_STRING([--with-soabi], [ABI version string for extension modules]), +[ + case $withval in + no) SOABI="";; # no version tag + yes) ;; # use precomputed version tag + *) SOABI="$withval";; # use given tag + esac +], +[ # when the option is not passed... + case $ac_sys_system in + Linux*|GNU*) ;; # ...Linux uses the value computed above + *) SOABI="";; # ...but other platforms don't use it. + esac +]) AC_MSG_RESULT($SOABI) -AC_MSG_CHECKING(LDVERSION) -LDVERSION='$(VERSION)$(ABIFLAGS)' -AC_MSG_RESULT($LDVERSION) - # SO is the extension of shared libraries `(including the dot!) # -- usually .so, .sl on HP-UX, .dll on Cygwin AC_MSG_CHECKING(SO) @@ -3664,8 +3683,6 @@ esac ;; CYGWIN*) SO=.dll;; - Linux*|GNU*) - SO=.${SOABI}.so;; *) SO=.so;; esac else @@ -3680,7 +3697,17 @@ echo '=====================================================================' sleep 10 fi +AC_SUBST(DYNLOAD_CFLAGS) +DYNLOAD_CFLAGS="-DSO_BASE='\"$SO\"'" +# prepend the SOABI to shared modules extension +if test ! -z "$SOABI" +then + SO=.$SOABI$SO + DYNLOAD_CFLAGS=$DYNLOAD_CFLAGS" -DSO_EXTRA='\"$SO\"'" +fi AC_MSG_RESULT($SO) +AC_MSG_CHECKING(dynload flags) +AC_MSG_RESULT($DYNLOAD_CFLAGS) # Check whether right shifting a negative integer extends the sign bit # or fills with zeros (like the Cray J90, according to Tim Peters). Index: Makefile.pre.in =================================================================== --- Makefile.pre.in (revision 86870) +++ Makefile.pre.in (working copy) @@ -37,6 +37,7 @@ SVNVERSION= @SVNVERSION@ SOABI= @SOABI@ LDVERSION= @LDVERSION@ +DYNLOAD_CFLAGS=@DYNLOAD_CFLAGS@ GNULD= @GNULD@ @@ -562,9 +563,8 @@ Modules/python.o: $(srcdir)/Modules/python.c $(MAINCC) -c $(PY_CORE_CFLAGS) -o $@ $(srcdir)/Modules/python.c Python/dynload_shlib.o: $(srcdir)/Python/dynload_shlib.c Makefile - $(CC) -c $(PY_CORE_CFLAGS) \ - -DSOABI='"$(SOABI)"' \ + $(CC) -c $(PY_CORE_CFLAGS) $(DYNLOAD_CFLAGS) \ -o $@ $(srcdir)/Python/dynload_shlib.c Python/sysmodule.o: $(srcdir)/Python/sysmodule.c Makefile