Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT sources DOT redhat DOT com Delivered-To: mailing list cygwin AT sources DOT redhat DOT com Date: Thu, 9 Nov 2000 09:44:32 -0500 From: Jason Tishler To: Python , Cygwin Subject: Cygwin Python DLL and Shared Extension Patch Message-ID: <20001109094432.C71@dothill.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="TZEnLbWdOJeZmr1W" Content-Disposition: inline User-Agent: Mutt/1.2.5i Organization: Dot Hill Systems Corp. --TZEnLbWdOJeZmr1W Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Attached is a patch that builds Cygwin Python with its core as a DLL -- similar to the way that one builds Win32 Python. Once Cygwin Python is built as a "shared library" (i.e., DLL), one can build extensions using the same procedure as on other UNIX platforms that support shared libraries. It's as easy as copying Misc/Makefile.pre.in, creating a Setup.in file, make -f Makefile.pre.in boot, make. Actually, attached is two versions of the same patch. The first one is the real patch but requires autoconf. The second one was generated after I ran autoconf and hence only requires the more typical build environment. Use the following procedure to patch and build Cygwin Python if you *have* autoconf: $ tar -xvzf Python-2.0.tar.gz $ cd Python-2.0 $ patch -p1 <../CygwinPython-2.0-minimal.patch $ autoheader $ autoconf $ configure --with-threads=no --with-libm= --with-suffix=.exe $ make $ make install Use the following procedure to patch and build Cygwin Python if you *do not* have autoconf: $ tar -xvzf Python-2.0.tar.gz $ gunzip CygwinPython-2.0-full.patch.gz $ cd Python-2.0 $ patch -p1 <../CygwinPython-2.0-full.patch $ configure --with-threads=no --with-libm= --with-suffix=.exe $ make $ make install To test out shared extensions, try the following: $ cd Demo/extend $ make_shared $ python Python 2.0 (#1, Nov 1 2000, 08:51:39) [GCC 2.95.2 19991024 (release-2)] on cygwin_nt-4.01 Type "copyright", "credits" or "license" for more information. >>> import xx >>> dir(xx) ['__doc__', '__file__', '__name__', 'bug', 'error', 'foo', 'new', 'roj'] >>> xx.foo(2, 3) 5 As a more realistic example, I was able to build python-ldap 1.10alpha3 (http://sourceforge.net/projects/python-ldap) with the following minimal changes: 1. replaced #ifdef WIN32 with #if defined(WIN32) || defined(__CYGWIN__) as described in http://www.python.org/doc/FAQ.html#3.24 2. added DL_EXPORT to init_ldap() Note that there were no changes of any kind to the build files (i.e, configure.in, Makefile.in, and Modules/Setup.in) or functionality changes to the C source. My goal is to ultimately submit the patch (redone against Python CVS) to the Python patch collector. I am hoping interested people will help me refine the patch before submittal. The following is an annotated ChangeLog for the patch: Wed Nov 8 23:22:46 2000 Jason Tishler * Makefile.in: Add autoconf variable SET_DLLLIBRARY. * Makefile.in (altbininstall): Enhance altbininstall rule to also install the Cygwin Python DLL. * Makefile.in (libainstall): Change libainstall rule to install LDLIBRARY instead of LIBRARY. Will installing LDLIBRARY instead of LIBRARY break other platforms? The terse description of LDLIBRARY in configure.in seems to indicate that possibly the original build procedure should be been installing it instead of LIBRARY. Anyway, I am very willing to change the patch to install both LDLIBRARY and LIBRARY (if they are different) or some other suitable solution. * Modules/Makefile.in: Add autoconf variable SET_DLLLIBRARY. * Modules/Makefile.in ($(DLLLIBRARY)): Add $(DLLLIBRARY) rule to build the Cygwin Python DLL. Should the body of this rule be hidden in a shell script? I have stumbled across various platform specific scripts like BeOS/ar-fake that has me thinking that this may be desirable. If not, then I will clean up the rule to use variables like LDSHARED instead of "gcc -shared", etc. * Modules/makesetup: Add shell variable module and default its value to "module". * Modules/makesetup: Add Cygwin specific definitions to set shell variables module, CygwinFlags, and CygwinLibs appropriately. Is it undesirable to put platform specific code in makesetup? * Modules/makesetup: Add .def to the list of known file types. * Modules/makesetup: Change object rule to include CygwinFlags. * Modules/makesetup: Change to use shell variable module instead of hardcoded "module". * Modules/makesetup: Change shared extension rule to include CygwinLibs. * acconfig.h: Add __CYGWIN__ guarded #defines for DL_IMPORT and DL_EXPORT. Is there a better way of accomplishing this without affecting config.h on all other autoconf supported platforms too? * configure.in: Add autoconf variable SET_DLLLIBRARY. * configure.in: Add Cygwin case to set LDLIBRARY and SET_DLLLIBRARY appropriately. I have chosen to call the import library libpython$(VERSION).dll.a and the DLL libpython$(VERSION).dll. Recently there has been a proposal (http://sources.redhat.com/ml/cygwin/2000-10/msg01275.html) to name Cygwin DLLs cygfoo.dll instead of libfoo.dll in order to avoid clashing with Win32 versions of the same DLL. I have stayed with libpython2.0.dll because it is more consistent with the UNIX naming convention and because there is no (current) possibility of clashing with the Win32 Python DLL, python20.dll. Nevertheless, I am willing to change the name of the Cygwin Python DLL, if desired. * configure.in: Add Cygwin case to set MAKE_LDLIBRARY appropriately. * configure.in: Add Cygwin case to set SO appropriately. * configure.in: Add Cygwin case to set LDSHARED appropriately. Should LDSHARED contain more flags? For example, -Wl,--enable-auto-image-base, etc.? Any feedback is greatly appreciated. Thanks, Jason -- Jason Tishler Director, Software Engineering Phone: +1 (732) 264-8770 x235 Dot Hill Systems Corporation Fax: +1 (732) 264-8798 82 Bethany Road, Suite 7 Email: Jason DOT Tishler AT dothill DOT com Hazlet, NJ 07730 USA WWW: http://www.dothill.com --TZEnLbWdOJeZmr1W Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="CygwinPython-2.0-minimal.patch" diff -rc Python-2.0.orig/Makefile.in Python-2.0/Makefile.in *** Python-2.0.orig/Makefile.in Mon Oct 16 17:50:06 2000 --- Python-2.0/Makefile.in Wed Nov 1 07:37:11 2000 *************** *** 131,136 **** --- 131,137 ---- LIBRARY= libpython$(VERSION).a LDLIBRARY= @LDLIBRARY@ + @SET_DLLLIBRARY@ # Default target all: $(LIBRARY) python$(EXE) sharedmods *************** *** 247,252 **** --- 248,257 ---- $(INSTALL_DATA) libpython$(VERSION).so $(LIBDIR); \ else true; \ fi + if test -f "$(DLLLIBRARY)"; then \ + $(INSTALL_DATA) $(DLLLIBRARY) $(BINDIR); \ + else true; \ + fi # Install the manual page maninstall: *************** *** 371,379 **** else true; \ fi; \ done ! @if test -d $(LIBRARY); then :; else \ ! $(INSTALL_DATA) $(LIBRARY) $(LIBPL)/$(LIBRARY) ; \ ! $(RANLIB) $(LIBPL)/$(LIBRARY) ; \ fi $(INSTALL_DATA) Modules/config.c $(LIBPL)/config.c $(INSTALL_DATA) Modules/python.o $(LIBPL)/python.o --- 376,384 ---- else true; \ fi; \ done ! @if test -d $(LDLIBRARY); then :; else \ ! $(INSTALL_DATA) $(LDLIBRARY) $(LIBPL)/$(LDLIBRARY) ; \ ! $(RANLIB) $(LIBPL)/$(LDLIBRARY) ; \ fi $(INSTALL_DATA) Modules/config.c $(LIBPL)/config.c $(INSTALL_DATA) Modules/python.o $(LIBPL)/python.o diff -rc Python-2.0.orig/Modules/Makefile.pre.in Python-2.0/Modules/Makefile.pre.in *** Python-2.0.orig/Modules/Makefile.pre.in Mon Oct 16 17:49:33 2000 --- Python-2.0/Modules/Makefile.pre.in Wed Nov 1 07:37:11 2000 *************** *** 105,110 **** --- 105,111 ---- LIBRARY= ../libpython$(VERSION).a LDLIBRARY= ../@LDLIBRARY@ + @SET_DLLLIBRARY@ # === Rules === *************** *** 126,131 **** --- 127,140 ---- $(LINKCC) $(LDFLAGS) $(LINKFORSHARED) $(MAINOBJ) \ $(LDLIBRARY) $(MODLIBS) $(LIBS) $(SYSLIBS) -o python$(EXE) $(LDLAST) mv python$(EXE) ../python$(EXE) + + # This rule builds the Python DLL for Cygwin + $(DLLLIBRARY): $(LIBRARY) + test -d cygwin || mkdir cygwin + (cd cygwin; ar x ../$^) + dlltool --export-all --output-def $(basename $@).def cygwin/*.o + gcc -shared -Wl,--enable-auto-image-base -Wl,--out-implib=$(LDLIBRARY) -o $@ $(basename $@).def cygwin/*.o $(MODLIBS) $(LIBS) $(SYSLIBS) + rm -fr cygwin clean: -rm -f *.o python$(EXE) core *~ [@,#]* *.old *.orig *.rej diff -rc Python-2.0.orig/Modules/makesetup Python-2.0/Modules/makesetup *** Python-2.0.orig/Modules/makesetup Mon Oct 16 17:49:33 2000 --- Python-2.0/Modules/makesetup Wed Nov 1 08:07:29 2000 *************** *** 79,84 **** --- 79,102 ---- NL='\ ' + # Default module names to so that their basename ends in "module" + module='module' + + # Cygwin specific definitions: + # 1. do not append ${module} to the end of Cygwin module names + # 2. use -DUSE_DL_IMPORT when compiling shared extensions that are not + # part of the Python core + # 3. use -L$(LIBPL) -lpython$(VERSION) when linking shared extensions + # that are not part of the Python core + case `uname -s` in + CYGWIN*) module='' + if test $srcdir != . + then + CygwinFlags='-DUSE_DL_IMPORT' + CygwinLibs='-L$(LIBPL) -lpython$(VERSION)' + fi;; + esac + # Main loop for i in ${*-Setup} do *************** *** 149,154 **** --- 167,173 ---- *.so) libs="$libs $arg";; *.sl) libs="$libs $arg";; /*.o) libs="$libs $arg";; + *.def) libs="$libs $arg";; *.o) srcs="$srcs `basename $arg .o`.c";; *.[cC]) srcs="$srcs $arg";; *.cc) srcs="$srcs $arg";; *************** *** 196,202 **** case $doconfig in no) cc="$cc \$(CCSHARED)";; esac ! rule="$obj: $src; $cc $cpps \$(CFLAGS) -c $src" echo "$rule" >>$rulesf done case $doconfig in --- 215,221 ---- case $doconfig in no) cc="$cc \$(CCSHARED)";; esac ! rule="$obj: $src; $cc $cpps \$(CFLAGS) $CygwinFlags -c $src" echo "$rule" >>$rulesf done case $doconfig in *************** *** 206,219 **** do case $objs in *$mod.o*) base=$mod;; ! *) base=${mod}module;; esac file="$base\$(SO)" case $doconfig in no) SHAREDMODS="$SHAREDMODS $file";; esac rule="$file: $objs" ! rule="$rule; \$(LDSHARED) $objs $libs -o $file" echo "$rule" >>$rulesf done done --- 225,238 ---- do case $objs in *$mod.o*) base=$mod;; ! *) base=${mod}${module};; esac file="$base\$(SO)" case $doconfig in no) SHAREDMODS="$SHAREDMODS $file";; esac rule="$file: $objs" ! rule="$rule; \$(LDSHARED) $objs $libs $CygwinLibs -o $file" echo "$rule" >>$rulesf done done diff -rc Python-2.0.orig/acconfig.h Python-2.0/acconfig.h *** Python-2.0.orig/acconfig.h Mon Oct 16 17:50:06 2000 --- Python-2.0/acconfig.h Wed Nov 1 07:37:11 2000 *************** *** 179,181 **** --- 179,193 ---- /* Leave that blank line there-- autoheader needs it! */ + + @BOTTOM@ + + #ifdef __CYGWIN__ + #ifdef USE_DL_IMPORT + #define DL_IMPORT(RTYPE) __declspec(dllimport) RTYPE + #define DL_EXPORT(RTYPE) __declspec(dllexport) RTYPE + #else + #define DL_IMPORT(RTYPE) __declspec(dllexport) RTYPE + #define DL_EXPORT(RTYPE) __declspec(dllexport) RTYPE + #endif + #endif diff -rc Python-2.0.orig/configure.in Python-2.0/configure.in *** Python-2.0.orig/configure.in Mon Oct 16 17:50:06 2000 --- Python-2.0/configure.in Wed Nov 1 07:37:11 2000 *************** *** 217,226 **** # LDLIBRARY is the name of the library to link against (as opposed to the # name of the library into which to insert object files). On systems # without shared libraries, LDLIBRARY is the same as LIBRARY (defined in ! # the Makefiles). AC_SUBST(MAKE_LDLIBRARY) AC_SUBST(LDLIBRARY) LDLIBRARY='' # LINKCC is the command that links the python executable -- default is $(CC). # This is altered for AIX in order to build the export list before --- 217,229 ---- # LDLIBRARY is the name of the library to link against (as opposed to the # name of the library into which to insert object files). On systems # without shared libraries, LDLIBRARY is the same as LIBRARY (defined in ! # the Makefiles). On Cygwin LDLIBRARY is the import library, DLLLIBRARY is the ! # shared (i.e., DLL) library. AC_SUBST(MAKE_LDLIBRARY) AC_SUBST(LDLIBRARY) + AC_SUBST(SET_DLLLIBRARY) LDLIBRARY='' + SET_DLLLIBRARY='' # LINKCC is the command that links the python executable -- default is $(CC). # This is altered for AIX in order to build the export list before *************** *** 263,268 **** --- 266,275 ---- beos*) LDLIBRARY='libpython$(VERSION).so' ;; + cygwin*) + LDLIBRARY='libpython$(VERSION).dll.a' + SET_DLLLIBRARY='DLLLIBRARY= $(basename $(LDLIBRARY))' + ;; esac AC_MSG_RESULT($LDLIBRARY) *************** *** 272,278 **** LDLIBRARY='libpython$(VERSION).a' MAKE_LDLIBRARY="true" else ! MAKE_LDLIBRARY='$(MAKE) $(LDLIBRARY)' fi AC_PROG_RANLIB --- 279,288 ---- LDLIBRARY='libpython$(VERSION).a' MAKE_LDLIBRARY="true" else ! case $MACHDEP in ! cygwin*) MAKE_LDLIBRARY='$(MAKE) -C Modules ../$(DLLLIBRARY)';; ! *) MAKE_LDLIBRARY='$(MAKE) $(LDLIBRARY)';; ! esac fi AC_PROG_RANLIB *************** *** 297,302 **** --- 307,313 ---- if test -z "$LN" ; then case $ac_sys_system in BeOS*) LN="ln -s";; + CYGWIN*) LN="ln -s";; *) LN=ln;; esac fi *************** *** 539,550 **** AC_SUBST(CCSHARED) AC_SUBST(LINKFORSHARED) # SO is the extension of shared libraries `(including the dot!) ! # -- usually .so, .sl on HP-UX AC_MSG_CHECKING(SO) if test -z "$SO" then case $ac_sys_system in hp*|HP*) SO=.sl;; *) SO=.so;; esac fi --- 550,562 ---- AC_SUBST(CCSHARED) AC_SUBST(LINKFORSHARED) # SO is the extension of shared libraries `(including the dot!) ! # -- usually .so, .sl on HP-UX, .dll on Cygwin AC_MSG_CHECKING(SO) if test -z "$SO" then case $ac_sys_system in hp*|HP*) SO=.sl;; + CYGWIN*) SO=.dll;; *) SO=.so;; esac fi *************** *** 602,607 **** --- 614,620 ---- fi;; SCO_SV*) LDSHARED="cc -G -KPIC -Ki486 -belf -Wl,-Bexport";; Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";; + CYGWIN*) LDSHARED="gcc -shared";; *) LDSHARED="ld";; esac fi --TZEnLbWdOJeZmr1W Content-Type: application/x-gunzip Content-Disposition: attachment; filename="CygwinPython-2.0-full.patch.gz" Content-Transfer-Encoding: base64 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 --TZEnLbWdOJeZmr1W Content-Type: text/plain; charset=us-ascii -- Want to unsubscribe from this list? Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com --TZEnLbWdOJeZmr1W--