]> granicus.if.org Git - python/commitdiff
Final part of SF patch #102409 by jlt63: Cygwin Python DLL and Shared
authorGuido van Rossum <guido@python.org>
Wed, 10 Jan 2001 21:12:18 +0000 (21:12 +0000)
committerGuido van Rossum <guido@python.org>
Wed, 10 Jan 2001 21:12:18 +0000 (21:12 +0000)
Extension Patch.

These are the changes to the Modules Makefile and makesetup script for
Cygwin.

Modules/Makefile.pre.in
Modules/makesetup

index 82a4e1683fa8aeab20207a623ac75f8fbdfb9fd3..9487980683a20f61fdb734fa12416c00accc63a1 100644 (file)
@@ -105,6 +105,7 @@ SYSLIBS=    $(LIBM) $(LIBC)
 
 LIBRARY=       ../libpython$(VERSION).a
 LDLIBRARY=     ../@LDLIBRARY@
+@SET_DLLLIBRARY@
 
 # === Rules ===
 
@@ -127,6 +128,14 @@ link:              $(MAINOBJ)
                  $(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
index 528f118dd81237c69e5b40908955900349df9b8d..125a51e86956adb611b7d0b71414a729c44dd30b 100755 (executable)
@@ -79,6 +79,18 @@ esac
 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 @@ sed -e 's/[         ]*#.*//' -e '/^[        ]*$/d' |
                        *.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 @@ sed -e 's/[         ]*#.*//' -e '/^[        ]*$/d' |
                        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