Final part of SF patch #102409 by jlt63: Cygwin Python DLL and Shared
Extension Patch.
These are the changes to the Modules Makefile and makesetup script for
Cygwin.
diff --git a/Modules/Makefile.pre.in b/Modules/Makefile.pre.in
index 82a4e16..9487980 100644
--- a/Modules/Makefile.pre.in
+++ b/Modules/Makefile.pre.in
@@ -105,6 +105,7 @@
LIBRARY= ../libpython$(VERSION).a
LDLIBRARY= ../@LDLIBRARY@
+@SET_DLLLIBRARY@
# === Rules ===
@@ -127,6 +128,14 @@
$(LDLIBRARY) $(MODLIBS) $(LIBS) $(SYSLIBS) -o python$(EXE) $(LDLAST)
mv python$(EXE) ../python$(EXE)
+# This rule builds the Cygwin Python DLL
+$(DLLLIBRARY): $(LIBRARY)
+ test -d cygwin || mkdir cygwin
+ (cd cygwin; ar x ../$^)
+ dlltool --export-all --output-def $(basename $@).def cygwin/*.o
+ $(LDSHARED) -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
-rm -f add2lib hassignal
diff --git a/Modules/makesetup b/Modules/makesetup
index 528f118..125a51e 100755
--- a/Modules/makesetup
+++ b/Modules/makesetup
@@ -79,6 +79,18 @@
NL='\
'
+# Setup to link with extra libraries when makeing shared extensions.
+# Currently, only Cygwin needs this baggage.
+case `uname -s` in
+CYGWIN*) if test $srcdir = .
+ then
+ ExtraLibDir=..
+ else
+ ExtraLibDir='$(LIBPL)'
+ fi
+ ExtraLibs="-L$ExtraLibDir -lpython\$(VERSION)";;
+esac
+
# Main loop
for i in ${*-Setup}
do
@@ -149,6 +161,7 @@
*.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";;
@@ -213,7 +226,7 @@
no) SHAREDMODS="$SHAREDMODS $file";;
esac
rule="$file: $objs"
- rule="$rule; \$(LDSHARED) $objs $libs -o $file"
+ rule="$rule; \$(LDSHARED) $objs $libs $ExtraLibs -o $file"
echo "$rule" >>$rulesf
done
done