[Distutils] Cygwin Python DLL and Shared Extension Patch

Jason Tishler Jason.Tishler@dothill.com
Fri Nov 10 09:34:01 2000


--zN+5Yck3deUF6VTH
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 <jt@dothill.com>

	* 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.Tishler@dothill.com
Hazlet, NJ 07730 USA                 WWW:   http://www.dothill.com

--zN+5Yck3deUF6VTH
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

--zN+5Yck3deUF6VTH
Content-Type: application/x-gunzip
Content-Disposition: attachment; filename="CygwinPython-2.0-full.patch.gz"
Content-Transfer-Encoding: base64

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

--zN+5Yck3deUF6VTH--