]> granicus.if.org Git - python/commitdiff
This patch enables the building of Cygwin Python with a static core
authorJason Tishler <jason@tishler.net>
Thu, 4 Sep 2003 11:04:06 +0000 (11:04 +0000)
committerJason Tishler <jason@tishler.net>
Thu, 4 Sep 2003 11:04:06 +0000 (11:04 +0000)
which still supports shared extensions. It takes advantage the latest
Cygwin binutils (i.e., 20030901-1) which can export symbols from
executables:

http://cygwin.com/ml/cygwin-announce/2003-09/msg00002.html

Additionally, it finally lays to rest the following mailing list
subthread:

http://mail.python.org/pipermail/python-list/2002-May/102500.html

I tested the patch under Red Hat Linux 8.0 too

Include/pyport.h
Makefile.pre.in
configure
configure.in

index c358cc2ac9b18267961c36c15deb166ad5ddeb9d..06ce6ab56b2a6decdb5aa6c7a6c75eea6ea28e27 100644 (file)
@@ -421,7 +421,8 @@ extern double hypot(double, double);
 #      define HAVE_DECLSPEC_DLL
 #endif
 
-#if defined(Py_ENABLE_SHARED) /* only get special linkage if built as shared */
+/* only get special linkage if built as shared or platform is Cygwin */
+#if defined(Py_ENABLE_SHARED) || defined(__CYGWIN__)
 #      if defined(HAVE_DECLSPEC_DLL)
 #              ifdef Py_BUILD_CORE
 #                      define PyAPI_FUNC(RTYPE) __declspec(dllexport) RTYPE
index a91e36c4f4468bc7b81deb5adf1ddb20fb2a7400..82073fee4c0292fc8e219bb684c23344fed40d8f 100644 (file)
@@ -379,10 +379,14 @@ $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): \
        $(LN) -fsn Versions/Current/Headers $(PYTHONFRAMEWORKDIR)/Headers
        $(LN) -fsn Versions/Current/Resources $(PYTHONFRAMEWORKDIR)/Resources
 
-# This rule builds the Cygwin Python DLL
-libpython$(VERSION).dll.a: $(LIBRARY_OBJS)
-       $(LDSHARED) -Wl,--out-implib=$@ -o $(DLLLIBRARY) $^ \
-               $(LIBS) $(MODLIBS) $(SYSLIBS)
+# This rule builds the Cygwin Python DLL and import library if configured
+# for a shared core library; otherwise, this rule is a noop.
+$(DLLLIBRARY) libpython$(VERSION).dll.a: $(LIBRARY_OBJS)
+       if test -n "$(DLLLIBRARY)"; then \
+               $(LDSHARED) -Wl,--out-implib=$@ -o $(DLLLIBRARY) $^ \
+                       $(LIBS) $(MODLIBS) $(SYSLIBS); \
+       else true; \
+       fi
 
 
 oldsharedmods: $(SHAREDMODS)
index 795d5cd9cba1908fdadc9c0e58fb8416ac7fddcc..0f74a29274e6e6c98d5f8ffe4f62de28ee27f5cc 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
 #! /bin/sh
-# From configure.in Revision: 1.428 .
+# From configure.in Revision: 1.429 .
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.57 for python 2.4.
 #
@@ -3619,6 +3619,13 @@ _ACEOF
         BASECFLAGS="$BASECFLAGS -pic"
         ;;
   esac
+else # shared is disabled
+  case $ac_sys_system in
+    CYGWIN*)
+          BLDLIBRARY='$(LIBRARY)'
+          LDLIBRARY='libpython$(VERSION).dll.a'
+          ;;
+  esac
 fi
 
 echo "$as_me:$LINENO: result: $LDLIBRARY" >&5
@@ -10192,6 +10199,11 @@ then
                        LINKFORSHARED="-Xlinker --export-dynamic"
                    fi;;
                  esac;;
+       CYGWIN*)
+               if test $enable_shared = "no"
+               then
+                       LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
+               fi;;
        esac
 fi
 echo "$as_me:$LINENO: result: $LINKFORSHARED" >&5
index 00483ed491e7fd937c7c31e3bed8bbe2454f72d7..44da831c852c6e8e3863d6896502e0ea5e620fb7 100644 (file)
@@ -539,6 +539,13 @@ if test $enable_shared = "yes"; then
         BASECFLAGS="$BASECFLAGS -pic"
         ;;
   esac
+else # shared is disabled
+  case $ac_sys_system in
+    CYGWIN*)
+          BLDLIBRARY='$(LIBRARY)'
+          LDLIBRARY='libpython$(VERSION).dll.a'
+          ;;
+  esac
 fi
 
 AC_MSG_RESULT($LDLIBRARY)
@@ -1371,6 +1378,11 @@ then
                        LINKFORSHARED="-Xlinker --export-dynamic"
                    fi;;
                  esac;;
+       CYGWIN*)
+               if test $enable_shared = "no"
+               then
+                       LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
+               fi;;
        esac
 fi
 AC_MSG_RESULT($LINKFORSHARED)