diff -ur ppython.old/Makefile.pre.in ppython.new/Makefile.pre.in --- ppython.old/Makefile.pre.in Wed Dec 19 10:24:40 2001 +++ ppython.new/Makefile.pre.in Thu Mar 7 17:33:53 2002 @@ -108,6 +108,9 @@ PYTHONFRAMEWORKPREFIX= @PYTHONFRAMEWORKPREFIX@ PYTHONFRAMEWORKINSTALLDIR= @PYTHONFRAMEWORKINSTALLDIR@ +# Environment to run shared python without installed libraries +RUNSHARED= @RUNSHARED@ + # Modes for directories, executables and data files created by the # install process. Default to user-only-writable for all file types. DIRMODE= 755 @@ -136,6 +139,7 @@ BLDLIBRARY= @BLDLIBRARY@ DLLLIBRARY= @DLLLIBRARY@ LDLIBRARYDIR= @LDLIBRARYDIR@ +INSTSONAME= @INSTSONAME@ LIBS= @LIBS@ @@ -291,20 +295,20 @@ all: $(BUILDPYTHON) oldsharedmods sharedmods # Build the interpreter -$(BUILDPYTHON): Modules/$(MAINOBJ) $(LDLIBRARY) +$(BUILDPYTHON): Modules/$(MAINOBJ) $(LIBRARY) $(LDLIBRARY) $(LINKCC) $(LDFLAGS) $(LINKFORSHARED) -o $@ \ Modules/$(MAINOBJ) \ $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST) platform: $(BUILDPYTHON) - ./$(BUILDPYTHON) -E -c 'import sys ; from distutils.util import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform + $(RUNSHARED) ./$(BUILDPYTHON) -E -c 'import sys ; from distutils.util import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform # Build the shared modules sharedmods: $(BUILDPYTHON) case $$MAKEFLAGS in \ - *-s*) CC='$(CC)' LDSHARED='$(LDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py -q build;; \ - *) CC='$(CC)' LDSHARED='$(LDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py build;; \ + *-s*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(LDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py -q build;; \ + *) $(RUNSHARED) CC='$(CC)' LDSHARED='$(LDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py build;; \ esac # buildno should really depend on something like LIBRARY_SRC @@ -332,18 +336,11 @@ $(AR) cr $@ $(MODOBJS) $(RANLIB) $@ -# This rule is only here for DG/UX and BeOS!!! -libpython$(VERSION).so: $(LIBRARY) - case `uname -s | tr -d '/ ' | tr '[A-Z]' '[a-z]'` in \ - *dgux*) \ - test -d dgux || mkdir dgux; \ - (cd dgux;ar x ../$^;ld -G -o ../$@ * ); \ - /bin/rm -rf ./dgux \ - ;; \ - beos) \ - $(AR) so $(LIBRARY) $@ \ - ;; \ - esac +libpython$(VERSION).so: $(LIBRARY_OBJS) + $(LDSHARED) -o $@ $(LIBRARY_OBJS) $(LIBC) $(LIBM) + +libpython$(VERSION).sl: $(LIBRARY_OBJS) + $(LDSHARED) -o $@ $(LIBRARY_OBJS) $(LIBC) $(LIBM) # This rule is here for OPENSTEP/Rhapsody/MacOSX $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): $(LIBRARY) $(PYTHONFRAMEWORKDIR) @@ -418,10 +415,10 @@ Python/compile.o Python/symtable.o: $(GRAMMAR_H) Python/getplatform.o: $(srcdir)/Python/getplatform.c - $(CC) -c $(CFLAGS) $(CPPFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c + $(CC) -c $(CFLAGS) $(CPPFLAGS) $(CFLAGSFORSHARED) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c Python/importdl.o: $(srcdir)/Python/importdl.c - $(CC) -c $(CFLAGS) $(CPPFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c + $(CC) -c $(CFLAGS) $(CPPFLAGS) $(CFLAGSFORSHARED) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c Objects/object.o: $(srcdir)/Objects/object.c $(srcdir)/Objects/obmalloc.c @@ -486,7 +483,7 @@ # Test the interpreter (twice, once without .pyc files, once with) TESTOPTS= -l TESTPROG= $(srcdir)/Lib/test/regrtest.py -TESTPYTHON= ./$(BUILDPYTHON) -E -tt +TESTPYTHON= $(RUNSHARED) ./$(BUILDPYTHON) -E -tt test: all platform -find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f -$(TESTPYTHON) $(TESTPROG) $(TESTOPTS) @@ -556,8 +553,8 @@ fi; \ done $(INSTALL_PROGRAM) $(BUILDPYTHON) $(BINDIR)/python$(VERSION)$(EXE) - if test -f libpython$(VERSION).so; then \ - $(INSTALL_DATA) libpython$(VERSION).so $(LIBDIR); \ + if test -f libpython$(VERSION)$(SO); then \ + $(INSTALL_SHARED) libpython$(VERSION)$(SO) $(LIBDIR)/$(INSTSONAME); \ else true; \ fi if test -f "$(DLLLIBRARY)"; then \ @@ -640,10 +637,10 @@ done; \ done $(INSTALL_DATA) $(srcdir)/LICENSE $(LIBDEST)/LICENSE.txt - PYTHONPATH=$(LIBDEST) \ + PYTHONPATH=$(LIBDEST) $(RUNSHARED) \ ./$(BUILDPYTHON) -tt $(LIBDEST)/compileall.py -x badsyntax \ $(LIBDEST) - PYTHONPATH=$(LIBDEST) \ + PYTHONPATH=$(LIBDEST) $(RUNSHARED) \ ./$(BUILDPYTHON) -O $(LIBDEST)/compileall.py -x badsyntax $(LIBDEST) # Create the PLATDIR source directory, if one wasn't distributed.. @@ -686,12 +683,12 @@ else true; \ fi; \ done - @if test -d $(LDLIBRARY); then :; else \ + @if test -d $(LIBRARY); then :; else \ if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \ - $(INSTALL_DATA) $(LDLIBRARY) $(LIBPL)/$(LDLIBRARY) ; \ - $(RANLIB) $(LIBPL)/$(LDLIBRARY) ; \ + $(INSTALL_DATA) $(LIBRARY) $(LIBPL)/$(LIBRARY) ; \ + $(RANLIB) $(LIBPL)/$(LIBRARY) ; \ else \ - echo Skip install of $(LDLIBRARY) - use make frameworkinstall; \ + echo Skip install of $(LIBRARY) - use make frameworkinstall; \ fi; \ fi $(INSTALL_DATA) Modules/config.c $(LIBPL)/config.c @@ -733,7 +730,8 @@ # Install the dynamically loadable modules # This goes into $(exec_prefix) sharedinstall: - ./$(BUILDPYTHON) -E $(srcdir)/setup.py install \ + $(RUNSHARED) ./$(BUILDPYTHON) -E $(srcdir)/setup.py install \ + --prefix=$(prefix) \ --install-scripts=$(BINDIR) \ --install-platlib=$(DESTSHARED) diff -ur ppython.old/configure.in ppython.new/configure.in --- ppython.old/configure.in Fri Dec 7 16:38:26 2001 +++ ppython.new/configure.in Thu Mar 7 17:33:53 2002 @@ -8,6 +8,9 @@ AC_SUBST(VERSION) VERSION=2.2 +AC_SUBST(SOVERSION) +SOVERSION=0.0 + # Arguments passed to configure. AC_SUBST(CONFIG_ARGS) CONFIG_ARGS="$ac_configure_args" @@ -257,14 +260,22 @@ # (defined in the Makefiles). On Cygwin LDLIBRARY is the import library, # DLLLIBRARY is the shared (i.e., DLL) library. # +# RUNSHARED is used to run shared python without installed libraries +# +# INSTSONAME is the name of the shared library that will be use to install +# on the system - some systems like version suffix, others don't AC_SUBST(LDLIBRARY) AC_SUBST(DLLLIBRARY) AC_SUBST(BLDLIBRARY) AC_SUBST(LDLIBRARYDIR) +AC_SUBST(INSTSONAME) +AC_SUBST(RUNSHARED) LDLIBRARY="$LIBRARY" BLDLIBRARY='$(LDLIBRARY)' +INSTSONMAE='$(LDLIBRARY)' DLLLIBRARY='' LDLIBRARYDIR='' +RUNSHARED='' # LINKCC is the command that links the python executable -- default is $(CC). # If CXX is set, and if it is needed to link a main function that was @@ -301,22 +312,18 @@ fi AC_MSG_RESULT($LINKCC) -AC_MSG_CHECKING(LDLIBRARY) +AC_MSG_CHECKING(for --enable-shared-python) +AC_ARG_ENABLE(shared-python, +[ --enable-shared-python disable/enable building shared python library]) -# DG/UX requires some fancy ld contortions to produce a .so from an .a -case $MACHDEP in -dguxR4) - LDLIBRARY='libpython$(VERSION).so' - OPT="$OPT -pic" - ;; -beos*) - LDLIBRARY='libpython$(VERSION).so' - ;; -cygwin*) - LDLIBRARY='libpython$(VERSION).dll.a' - DLLLIBRARY='libpython$(VERSION).dll' - ;; -esac +if test -z "$enable_shared_python" +then + enable_shared_python="no" +fi +AC_MSG_RESULT($enable_shared_python) + + +AC_MSG_CHECKING(LDLIBRARY) # MacOSX framework builds need more magic. LDLIBRARY is the dynamic # library that we build, but we do not want to link against it (we @@ -333,6 +340,47 @@ BLDLIBRARY='$(LDLIBRARY)' fi +# Other platforms follow +if test $enable_shared_python = "yes"; then + case $ac_sys_system in + BeOS*) + LDLIBRARY='libpython$(VERSION).so' + ;; + CYGWIN*) + LDLIBRARY='libpython$(VERSION).dll.a' + DLLLIBRARY='libpython$(VERSION).dll' + ;; + SunOS*) + LDLIBRARY='libpython$(VERSION).so' + BLDLIBRARY='-Wl,-rpath,$(LIBDIR) -L. -lpython$(VERSION)' + RUNSHARED=LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH + ;; + Linux*) + LDLIBRARY='libpython$(VERSION).so' + BLDLIBRARY='-L. -lpython$(VERSION)' + RUNSHARED=LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH + INSTSONAME="$LDLIBRARY".$SOVERSION + ;; + hp*|HP*) + LDLIBRARY='libpython$(VERSION).sl' + BLDLIBRARY='-Wl,+b,$(LIBDIR) -L. -lpython$(VERSION)' + RUNSHARED=SHLIB_PATH=`pwd`:$SHLIB_PATH + ;; + OSF*) + LDLIBRARY='libpython$(VERSION).so' + BLDLIBRARY='-L. -lpython$(VERSION)' + RUNSHARED=LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH + ;; + esac + # DG/UX requires some fancy ld contortions to produce a .so from an .a + case $MACHDEP in + dguxR4) + LDLIBRARY='libpython$(VERSION).so' + OPT="$OPT -pic" + ;; + esac +fi + AC_MSG_RESULT($LDLIBRARY) AC_PROG_RANLIB @@ -858,7 +906,8 @@ case $ac_sys_system/$ac_sys_release in AIX*) LINKFORSHARED='-Wl,-bE:Modules/python.exp -lld';; hp*|HP*) - LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";; + LINKFORSHARED="-Wl,-E -Wl,+s";; +# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";; BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";; Linux*) LINKFORSHARED="-Xlinker -export-dynamic";; # -u libsys_s pulls in all symbols in libsys @@ -1123,10 +1172,13 @@ LIBS="$LIBS -lmpc" LIBOBJS="$LIBOBJS thread.o" USE_THREAD_MODULE=""]) - AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD) - LIBS="$LIBS -lthread" - LIBOBJS="$LIBOBJS thread.o" - USE_THREAD_MODULE=""]) + + if test $posix_threads != "yes"; then + AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD) + LIBS="$LIBS -lthread" + LIBOBJS="$LIBOBJS thread.o" + USE_THREAD_MODULE=""]) + fi if test "$USE_THREAD_MODULE" != "#" then