]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
- Issue #7658: Ensure that the new pythonw executable works on OSX 10.4
authorRonald Oussoren <ronaldoussoren@mac.com>
Sun, 17 Jan 2010 16:25:57 +0000 (16:25 +0000)
committerRonald Oussoren <ronaldoussoren@mac.com>
Sun, 17 Jan 2010 16:25:57 +0000 (16:25 +0000)
- Issue #7714: Use ``gcc -dumpversion`` to detect the version of GCC on
  MacOSX.

- Make configure look for util.h as well as libutil.h. The former
  is the header file that on OSX contains the defition of openpty.

  (Needed to compile for OSX 10.4 on OSX 10.6)

- Use the correct definition of CC to compile the pythonw executable

Include/pyport.h
Mac/Makefile.in
Mac/Tools/pythonw.c
Misc/NEWS
Modules/posixmodule.c
configure
configure.in
pyconfig.h.in

index 7c537a961964e71f5d8e8bc47146476e791bdb1f..a6ddbeecfce2f5d5cb378b843f6c427a3c03adb9 100644 (file)
@@ -627,7 +627,7 @@ extern char * _getpty(int *, int, mode_t, int);
 #endif
 
 #if defined(HAVE_OPENPTY) || defined(HAVE_FORKPTY)
-#if !defined(HAVE_PTY_H) && !defined(HAVE_LIBUTIL_H)
+#if !defined(HAVE_PTY_H) && !defined(HAVE_LIBUTIL_H) && !defined(HAVE_UTIL_H)
 /* BSDI does not supply a prototype for the 'openpty' and 'forkpty'
    functions, even though they are included in libutil. */
 #include <termios.h>
index 8c389eddcd90c160c0550be3fd90b4fe356df43f..c66190ce9264fe3bfdb36cd5616febae559dea66 100644 (file)
@@ -16,6 +16,7 @@ FRAMEWORKUNIXTOOLSPREFIX=@FRAMEWORKUNIXTOOLSPREFIX@
 PYTHONFRAMEWORK=@PYTHONFRAMEWORK@
 PYTHONFRAMEWORKIDENTIFIER=@PYTHONFRAMEWORKIDENTIFIER@
 LIPO_32BIT_FLAGS=@LIPO_32BIT_FLAGS@
+CC=@CC@
 
 
 # These are normally glimpsed from the previous set
index d7a86f26432e2d98c6e3b91ff7c4724e847b665b..991a738d8c3b2b63551255cc83cd1be4a296cf86 100644 (file)
@@ -6,16 +6,26 @@
  *
  * This program uses posix_spawn rather than plain execv because we need
  * slightly more control over how the "real" interpreter is executed.
+ *
+ * On OSX 10.4 (and earlier) this falls back to using exec because the
+ * posix_spawnv functions aren't available there.
  */
+#pragma weak_import posix_spawnattr_init
+#pragma weak_import posix_spawnattr_setbinpref_np
+#pragma weak_import posix_spawnattr_setflags
+#pragma weak_import posix_spawn
+
+#include <Python.h>
 #include <unistd.h>
+#ifdef HAVE_SPAWN_H
 #include <spawn.h>
+#endif
 #include <stdio.h>
 #include <string.h>
 #include <errno.h>
 #include <err.h>
 #include <dlfcn.h>
 #include <stdlib.h>
-#include <Python.h>
 
 
 extern char** environ;
@@ -74,6 +84,7 @@ static char* get_python_path(void)
        return g_path;
 }
 
+#ifdef HAVE_SPAWN_H
 static void
 setup_spawnattr(posix_spawnattr_t* spawnattr)
 {
@@ -132,16 +143,28 @@ setup_spawnattr(posix_spawnattr_t* spawnattr)
                /* NOTREACHTED */
        }
 }
+#endif
 
 int 
 main(int argc, char **argv) {
-       posix_spawnattr_t spawnattr = NULL;
        char* exec_path = get_python_path();
 
+#ifdef HAVE_SPAWN_H
 
-       setup_spawnattr(&spawnattr);            
-       posix_spawn(NULL, exec_path, NULL,
-               &spawnattr, argv, environ);
-       err(1, "posix_spawn: %s", argv[0]);
+       /* We're weak-linking to posix-spawnv to ensure that
+        * an executable build on 10.5 can work on 10.4.
+        */
+       if (posix_spawn != NULL) {
+               posix_spawnattr_t spawnattr = NULL;
+
+
+               setup_spawnattr(&spawnattr);            
+               posix_spawn(NULL, exec_path, NULL,
+                       &spawnattr, argv, environ);
+               err(1, "posix_spawn: %s", argv[0]);
+       }
+#endif
+       execve(exec_path, argv, environ);
+       err(1, "execve: %s", argv[0]);
        /* NOTREACHED */
 }
index 7ff642014c8d756726cd48a90d1afe4efecb0794..9360f286eef841f270e59cdd5cf3e873c2d53c9c 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -66,10 +66,14 @@ Library
   Extension extra options may change the output without changing the .c
   file). Initial patch by Collin Winter.
 
-
 Build
 -----
 
+- Issue #7658: Ensure that the new pythonw executable works on OSX 10.4
+
+- Issue #7714: Use ``gcc -dumpversion`` to detect the version of GCC on
+  MacOSX.
+
 - Issue #7661: Allow ctypes to be built from a non-ASCII directory path.
   Patch by Florent Xicluna.
 
index 76609eeae3e9bed27060f31d02c1cd986ddba47c..46053febdb69920b8928084546a367f861bb4245 100644 (file)
@@ -3667,6 +3667,10 @@ posix_fork(PyObject *self, PyObject *noargs)
 #else
 #ifdef HAVE_LIBUTIL_H
 #include <libutil.h>
+#else
+#ifdef HAVE_UTIL_H
+#include <util.h>
+#endif /* HAVE_UTIL_H */
 #endif /* HAVE_LIBUTIL_H */
 #endif /* HAVE_PTY_H */
 #ifdef HAVE_STROPTS_H
index 7b9da8771083db294577a65e568852ea25c4c571..dffff124870e49d59c0df90df9ffc6ee2b712d14 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
 #! /bin/sh
-# From configure.in Revision: 77193 .
+# From configure.in Revision: 77212 .
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.61 for python 2.7.
 #
@@ -2142,6 +2142,8 @@ _ACEOF
   # has no effect, don't bother defining them
   Darwin/[6789].*)
     define_xopen_source=no;;
+  Darwin/1[0-9].*)
+    define_xopen_source=no;;
   # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
   # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
   # or has another value. By not (re)defining it, the defaults come in place.
@@ -3861,7 +3863,7 @@ else
   { echo "$as_me:$LINENO: result: no" >&5
 echo "${ECHO_T}no" >&6; }
 fi
-rm -f conftest*
+rm -f -r conftest*
 
 
 
@@ -4685,7 +4687,63 @@ echo "${ECHO_T}$ac_cv_no_strict_aliasing_ok" >&6; }
        Darwin*)
            # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
            # used to be here, but non-Apple gcc doesn't accept them.
+           if test "${CC}" = gcc
+           then
+               { echo "$as_me:$LINENO: checking which compiler should be used" >&5
+echo $ECHO_N "checking which compiler should be used... $ECHO_C" >&6; }
+               case "${UNIVERSALSDK}" in
+               */MacOSX10.4u.sdk)
+                       # Build using 10.4 SDK, force usage of gcc when the
+                       # compiler is gcc, otherwise the user will get very
+                       # confusing error messages when building on OSX 10.6
+                       CC=gcc-4.0
+                       CPP=cpp-4.0
+                       ;;
+               esac
+               { echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6; }
+           fi
+
+           # Calculate the right deployment target for this build.
+           #
+           cur_target=`sw_vers -productVersion | sed 's/\(10\.[0-9]*\).*/\1/'`
+           if test ${cur_target} '>' 10.2; then
+                   cur_target=10.3
+                   if test ${enable_universalsdk}; then
+                           if test "${UNIVERSAL_ARCHS}" = "all"; then
+                                   # Ensure that the default platform for a
+                                   # 4-way universal build is OSX 10.5,
+                                   # that's the first OS release where
+                                   # 4-way builds make sense.
+                                   cur_target='10.5'
+
+                           elif test "${UNIVERSAL_ARCHS}" = "3-way"; then
+                                   cur_target='10.5'
+
+                           elif test "${UNIVERSAL_ARCHS}" = "intel"; then
+                                   cur_target='10.5'
 
+                           elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then
+                                   cur_target='10.5'
+                           fi
+                   else
+                           if test `arch` = "i386"; then
+                                   # On Intel macs default to a deployment
+                                   # target of 10.4, that's the first OSX
+                                   # release with Intel support.
+                                   cur_target="10.4"
+                           fi
+                   fi
+           fi
+           CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
+
+           # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
+           # environment with a value that is the same as what we'll use
+           # in the Makefile to ensure that we'll get the same compiler
+           # environment during configure and build time.
+           MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
+           export MACOSX_DEPLOYMENT_TARGET
+           EXPORT_MACOSX_DEPLOYMENT_TARGET=''
 
            if test "${enable_universalsdk}"; then
                UNIVERSAL_ARCH_FLAGS=""
@@ -4694,6 +4752,39 @@ echo "${ECHO_T}$ac_cv_no_strict_aliasing_ok" >&6; }
                   ARCH_RUN_32BIT=""
                   LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
 
+
+                  # You have to use different flags on various versions of
+                  # OSX to extract PPC code from an universal binary, basically
+                  # '-arch ppc' on OSX 10.4 and '-arch ppc7400' on anything
+                  # newer.
+                  # Because '-arch pp7400' works on OSX 10.5 or higher this
+                  # test is only present in the '32-bit' branch, all other
+                  # branches require OSX 10.5 to compile.
+
+                  { echo "$as_me:$LINENO: checking lipo flag for extracting ppc code" >&5
+echo $ECHO_N "checking lipo flag for extracting ppc code... $ECHO_C" >&6; }
+                  FN="test.$$"
+                  cat >${FN}.c <<-EOF
+                       int main() { return 0; }
+EOF
+                  ${CC} ${CFLAGS} -arch ppc -arch i386 -o ${FN} ${FN}.c -isysroot ${UNIVERSALSDK}
+                  if test $? != 0 ; then
+                          rm ${FN} ${FN}.c
+                          { echo "$as_me:$LINENO: result: failed, assumee -extract ppc7400" >&5
+echo "${ECHO_T}failed, assumee -extract ppc7400" >&6; }
+                  else
+                       lipo -extract -output "${FN}.out" -arch ppc7400 "${FN}" 2>/dev/null
+                       if test $? != 0 ; then
+                               LIPO_32BIT_FLAGS="-extract ppc -extract i386"
+                               { echo "$as_me:$LINENO: result: \"'-extract ppc'\"" >&5
+echo "${ECHO_T}\"'-extract ppc'\"" >&6; }
+                       else
+                               { echo "$as_me:$LINENO: result: \"'-extract ppc7400'\"" >&5
+echo "${ECHO_T}\"'-extract ppc7400'\"" >&6; }
+                       fi
+                       rm -f ${FN} ${FN}.c ${FN}.out
+                  fi
+
                 elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
                   UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
                   LIPO_32BIT_FLAGS=""
@@ -4726,49 +4817,11 @@ echo "$as_me: error: proper usage is --with-universal-arch=32-bit|64-bit|all|int
                tgt=`sw_vers -productVersion | sed 's/\(10\.[0-9]*\).*/\1/'`
                if test "${UNIVERSALSDK}" != "/" -a "${tgt}" '>' '10.4' ; then
                        CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
+                       CPPFLAGS="-isysroot ${UNIVERSALSDK}"
                fi
-           fi
-
-           # Calculate the right deployment target for this build.
-           #
-           cur_target=`sw_vers -productVersion | sed 's/\(10\.[0-9]*\).*/\1/'`
-           if test ${cur_target} '>' 10.2; then
-                   cur_target=10.3
-                   if test ${enable_universalsdk}; then
-                           if test "${UNIVERSAL_ARCHS}" = "all"; then
-                                   # Ensure that the default platform for a
-                                   # 4-way universal build is OSX 10.5,
-                                   # that's the first OS release where
-                                   # 4-way builds make sense.
-                                   cur_target='10.5'
-
-                           elif test "${UNIVERSAL_ARCHS}" = "3-way"; then
-                                   cur_target='10.5'
-
-                           elif test "${UNIVERSAL_ARCHS}" = "intel"; then
-                                   cur_target='10.5'
 
-                           elif test "${UNIVERSAL_ARCHS}" = "64-bit"; then
-                                   cur_target='10.5'
-                           fi
-                   else
-                           if test `arch` = "i386"; then
-                                   # On Intel macs default to a deployment
-                                   # target of 10.4, that's the first OSX
-                                   # release with Intel support.
-                                   cur_target="10.4"
-                           fi
-                   fi
            fi
-           CONFIGURE_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET-${cur_target}}
 
-           # Make sure that MACOSX_DEPLOYMENT_TARGET is set in the
-           # environment with a value that is the same as what we'll use
-           # in the Makefile to ensure that we'll get the same compiler
-           # environment during configure and build time.
-           MACOSX_DEPLOYMENT_TARGET="$CONFIGURE_MACOSX_DEPLOYMENT_TARGET"
-           export MACOSX_DEPLOYMENT_TARGET
-           EXPORT_MACOSX_DEPLOYMENT_TARGET=''
 
            ;;
        OSF*)
@@ -5414,7 +5467,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
 else
   ac_cv_header_stdc=no
 fi
-rm -f conftest*
+rm -f -r conftest*
 
 fi
 
@@ -5435,7 +5488,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
 else
   ac_cv_header_stdc=no
 fi
-rm -f conftest*
+rm -f -r conftest*
 
 fi
 
@@ -5640,6 +5693,8 @@ done
 
 
 
+
+
 
 
 
@@ -5654,7 +5709,7 @@ sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
 sys/termio.h sys/time.h \
 sys/times.h sys/types.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
 sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
-bluetooth/bluetooth.h linux/tipc.h
+bluetooth/bluetooth.h linux/tipc.h spawn.h util.h
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
@@ -6533,7 +6588,7 @@ _ACEOF
 
 
 fi
-rm -f conftest*
+rm -f -r conftest*
 
 { echo "$as_me:$LINENO: result: $was_it_defined" >&5
 echo "${ECHO_T}$was_it_defined" >&6; }
@@ -7063,7 +7118,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
 else
   ac_cv_type_uid_t=no
 fi
-rm -f conftest*
+rm -f -r conftest*
 
 fi
 { echo "$as_me:$LINENO: result: $ac_cv_type_uid_t" >&5
@@ -14508,7 +14563,7 @@ case $ac_sys_system/$ac_sys_release in
     LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
     LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
   Darwin/*)
-    gcc_version=`gcc -v 2>&1 |  grep version | cut -d\  -f3`
+    gcc_version=`gcc -dumpversion`
     if test ${gcc_version} '<' 4.0
         then
             LIBTOOL_CRUFT="-lcc_dynamic"
@@ -15850,7 +15905,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
 else
   unistd_defines_pthreads=no
 fi
-rm -f conftest*
+rm -f -r conftest*
 
     { echo "$as_me:$LINENO: result: $unistd_defines_pthreads" >&5
 echo "${ECHO_T}$unistd_defines_pthreads" >&6; }
@@ -17464,7 +17519,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   $EGREP "yes" >/dev/null 2>&1; then
   ipv6type=$i
 fi
-rm -f conftest*
+rm -f -r conftest*
 
                        ;;
                kame)
@@ -17487,7 +17542,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
                                ipv6libdir=/usr/local/v6/lib
                                ipv6trylibc=yes
 fi
-rm -f conftest*
+rm -f -r conftest*
 
                        ;;
                linux-glibc)
@@ -17508,7 +17563,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   ipv6type=$i;
                                ipv6trylibc=yes
 fi
-rm -f conftest*
+rm -f -r conftest*
 
                        ;;
                linux-inet6)
@@ -17546,7 +17601,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
                                ipv6lib=inet6;
                                ipv6libdir=/usr/local/v6/lib
 fi
-rm -f conftest*
+rm -f -r conftest*
 
                        ;;
                v6d)
@@ -17569,7 +17624,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
                                ipv6libdir=/usr/local/v6/lib;
                                BASECFLAGS="-I/usr/local/v6/include $BASECFLAGS"
 fi
-rm -f conftest*
+rm -f -r conftest*
 
                        ;;
                zeta)
@@ -17591,7 +17646,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
                                ipv6lib=inet6;
                                ipv6libdir=/usr/local/v6/lib
 fi
-rm -f conftest*
+rm -f -r conftest*
 
                        ;;
                esac
@@ -26134,7 +26189,7 @@ cat >>confdefs.h <<\_ACEOF
 _ACEOF
 
 fi
-rm -f conftest*
+rm -f -r conftest*
 
   cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
@@ -26153,7 +26208,7 @@ cat >>confdefs.h <<\_ACEOF
 _ACEOF
 
 fi
-rm -f conftest*
+rm -f -r conftest*
 
 fi
 
@@ -26423,7 +26478,7 @@ cat >>confdefs.h <<\_ACEOF
 _ACEOF
 
 fi
-rm -f conftest*
+rm -f -r conftest*
 
 fi
 
index 7070a42ffaacc4bb3417b284d99cfe5fabc4a829..16a743e910bfb73f56b98be4b9b9b123d3d4e5ed 100644 (file)
@@ -307,6 +307,8 @@ case $ac_sys_system/$ac_sys_release in
   # has no effect, don't bother defining them
   Darwin/@<:@6789@:>@.*)
     define_xopen_source=no;;
+  Darwin/1@<:@0-9@:>@.*)
+    define_xopen_source=no;;
   # On AIX 4 and 5.1, mbstate_t is defined only when _XOPEN_SOURCE == 500 but
   # used in wcsnrtombs() and mbsnrtowcs() even if _XOPEN_SOURCE is not defined
   # or has another value. By not (re)defining it, the defaults come in place.
@@ -935,46 +937,19 @@ yes)
        Darwin*)
            # -Wno-long-double, -no-cpp-precomp, and -mno-fused-madd
            # used to be here, but non-Apple gcc doesn't accept them.
-
-
-           if test "${enable_universalsdk}"; then
-               UNIVERSAL_ARCH_FLAGS=""
-               if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
-                  UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
-                  ARCH_RUN_32BIT=""
-                  LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
-
-                elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
-                  UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
-                  LIPO_32BIT_FLAGS=""
-                  ARCH_RUN_32BIT="true"
-
-                elif test "$UNIVERSAL_ARCHS" = "all" ; then
-                  UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
-                  LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
-                  ARCH_RUN_32BIT="arch -i386 -ppc"
-
-                elif test "$UNIVERSAL_ARCHS" = "intel" ; then
-                  UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
-                  LIPO_32BIT_FLAGS="-extract i386"
-                  ARCH_RUN_32BIT="arch -i386"
-
-                elif test "$UNIVERSAL_ARCHS" = "3-way" ; then
-                  UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
-                  LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
-                  ARCH_RUN_32BIT="arch -i386 -ppc7400"
-
-                else
-                  AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
-
-                fi
-
-
-               BASECFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
-               tgt=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
-               if test "${UNIVERSALSDK}" != "/" -a "${tgt}" '>' '10.4' ; then
-                       CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
-               fi
+           if test "${CC}" = gcc
+           then
+               AC_MSG_CHECKING(which compiler should be used)
+               case "${UNIVERSALSDK}" in
+               */MacOSX10.4u.sdk)
+                       # Build using 10.4 SDK, force usage of gcc when the 
+                       # compiler is gcc, otherwise the user will get very
+                       # confusing error messages when building on OSX 10.6
+                       CC=gcc-4.0
+                       CPP=cpp-4.0
+                       ;;
+               esac
+               AC_MSG_RESULT($CC)
            fi
 
            # Calculate the right deployment target for this build.
@@ -1018,6 +993,78 @@ yes)
            export MACOSX_DEPLOYMENT_TARGET
            EXPORT_MACOSX_DEPLOYMENT_TARGET=''
 
+           if test "${enable_universalsdk}"; then
+               UNIVERSAL_ARCH_FLAGS=""
+               if test "$UNIVERSAL_ARCHS" = "32-bit" ; then
+                  UNIVERSAL_ARCH_FLAGS="-arch ppc -arch i386"
+                  ARCH_RUN_32BIT=""
+                  LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
+
+
+                  # You have to use different flags on various versions of
+                  # OSX to extract PPC code from an universal binary, basically
+                  # '-arch ppc' on OSX 10.4 and '-arch ppc7400' on anything
+                  # newer. 
+                  # Because '-arch pp7400' works on OSX 10.5 or higher this
+                  # test is only present in the '32-bit' branch, all other
+                  # branches require OSX 10.5 to compile.
+                       
+                  AC_MSG_CHECKING(lipo flag for extracting ppc code)
+                  FN="test.$$"
+                  cat >${FN}.c <<-EOF
+                       int main() { return 0; }
+EOF
+                  ${CC} ${CFLAGS} -arch ppc -arch i386 -o ${FN} ${FN}.c -isysroot ${UNIVERSALSDK}
+                  if test $? != 0 ; then
+                          rm ${FN} ${FN}.c
+                          AC_MSG_RESULT([failed, assumee -extract ppc7400])
+                  else
+                       lipo -extract -output "${FN}.out" -arch ppc7400 "${FN}" 2>/dev/null
+                       if test $? != 0 ; then
+                               LIPO_32BIT_FLAGS="-extract ppc -extract i386"
+                               AC_MSG_RESULT("'-extract ppc'")
+                       else
+                               AC_MSG_RESULT("'-extract ppc7400'")
+                       fi
+                       rm -f ${FN} ${FN}.c ${FN}.out
+                  fi
+
+                elif test "$UNIVERSAL_ARCHS" = "64-bit" ; then
+                  UNIVERSAL_ARCH_FLAGS="-arch ppc64 -arch x86_64"
+                  LIPO_32BIT_FLAGS=""
+                  ARCH_RUN_32BIT="true"
+
+                elif test "$UNIVERSAL_ARCHS" = "all" ; then
+                  UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch ppc64 -arch x86_64"
+                  LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
+                  ARCH_RUN_32BIT="arch -i386 -ppc"
+
+                elif test "$UNIVERSAL_ARCHS" = "intel" ; then
+                  UNIVERSAL_ARCH_FLAGS="-arch i386 -arch x86_64"
+                  LIPO_32BIT_FLAGS="-extract i386"
+                  ARCH_RUN_32BIT="arch -i386"
+
+                elif test "$UNIVERSAL_ARCHS" = "3-way" ; then
+                  UNIVERSAL_ARCH_FLAGS="-arch i386 -arch ppc -arch x86_64"
+                  LIPO_32BIT_FLAGS="-extract ppc7400 -extract i386"
+                  ARCH_RUN_32BIT="arch -i386 -ppc7400"
+
+                else
+                  AC_MSG_ERROR([proper usage is --with-universal-arch=32-bit|64-bit|all|intel|3-way])
+
+                fi
+
+
+               BASECFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${BASECFLAGS}"
+               tgt=`sw_vers -productVersion | sed 's/\(10\.[[0-9]]*\).*/\1/'`
+               if test "${UNIVERSALSDK}" != "/" -a "${tgt}" '>' '10.4' ; then
+                       CFLAGS="${UNIVERSAL_ARCH_FLAGS} -isysroot ${UNIVERSALSDK} ${CFLAGS}"
+                       CPPFLAGS="-isysroot ${UNIVERSALSDK}"
+               fi
+
+           fi
+
+
            ;;
        OSF*)
            BASECFLAGS="$BASECFLAGS -mieee"
@@ -1297,7 +1344,7 @@ sys/param.h sys/poll.h sys/select.h sys/socket.h sys/statvfs.h sys/stat.h \
 sys/termio.h sys/time.h \
 sys/times.h sys/types.h sys/un.h sys/utsname.h sys/wait.h pty.h libutil.h \
 sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \
-bluetooth/bluetooth.h linux/tipc.h)
+bluetooth/bluetooth.h linux/tipc.h spawn.h util.h)
 AC_HEADER_DIRENT
 AC_HEADER_MAJOR
 
@@ -1557,7 +1604,7 @@ case $ac_sys_system/$ac_sys_release in
     LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
     LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
   Darwin/*)
-    gcc_version=`gcc -v 2>&1 |  grep version | cut -d\  -f3`
+    gcc_version=`gcc -dumpversion`
     if test ${gcc_version} '<' 4.0
         then
             LIBTOOL_CRUFT="-lcc_dynamic"
index 85d58d1562725098311ddb7b888307f8e4cf717d..cb65189f74b28c347dc77ec5f414b82cc2389618 100644 (file)
 /* Define if you have the 'socketpair' function. */
 #undef HAVE_SOCKETPAIR
 
+/* Define to 1 if you have the <spawn.h> header file. */
+#undef HAVE_SPAWN_H
+
 /* Define if your compiler provides ssize_t */
 #undef HAVE_SSIZE_T
 
    Include/unicodeobject.h). */
 #undef HAVE_USABLE_WCHAR_T
 
+/* Define to 1 if you have the <util.h> header file. */
+#undef HAVE_UTIL_H
+
 /* Define to 1 if you have the `utimes' function. */
 #undef HAVE_UTIMES