This patch partly (some stuff went in already) ports Python to Monterey.
- Fix bug in thread_pthread.h::PyThread_get_thread_ident() where sizeof(pthread) < sizeof(long). - Add 'configure' for: - SIZEOF_PTHREAD is pthread_t can be included via <pthread.h> - setting Monterey system name - appropriate CC,LINKCC,LDSHARED,OPT, and CCSHARED for Monterey - Add section in README for Monterey build
This commit is contained in:
parent
b745a0481b
commit
635f6fb0e9
|
@ -171,6 +171,13 @@ PyThread_start_new_thread(void (*func)(void *), void *arg)
|
|||
return success != 0 ? 0 : 1;
|
||||
}
|
||||
|
||||
/* XXX This implementation is considered (to quote Tim Peters) "inherently
|
||||
hosed" because:
|
||||
- It does not guanrantee the promise that a non-zero integer is returned.
|
||||
- The cast to long is inherently unsafe.
|
||||
- It is not clear that the 'volatile' (for AIX?) and ugly casting in the
|
||||
latter return statement (for Alpha OSF/1) are any longer necessary.
|
||||
*/
|
||||
long
|
||||
PyThread_get_thread_ident(void)
|
||||
{
|
||||
|
@ -179,7 +186,11 @@ PyThread_get_thread_ident(void)
|
|||
PyThread_init_thread();
|
||||
/* Jump through some hoops for Alpha OSF/1 */
|
||||
threadid = pthread_self();
|
||||
#if SIZEOF_PTHREAD_T <= SIZEOF_LONG
|
||||
return (long) threadid;
|
||||
#else
|
||||
return (long) *(long *) &threadid;
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
8
README
8
README
|
@ -307,6 +307,14 @@ OS/2: If you are running Warp3 or Warp4 and have IBM's VisualAge C/C++
|
|||
and type NMAKE. Threading and sockets are supported by default
|
||||
in the resulting binaries of PYTHON15.DLL and PYTHON.EXE.
|
||||
|
||||
Monterey (64-bit AIX):
|
||||
The current Monterey C compiler (Visual Age) uses the OBJECT_MODE={32|64}
|
||||
environment variable to set the compilation mode to either 32-bit or
|
||||
64-bit (32-bit mode is the default). Presumably you want 64-bit
|
||||
compilation mode for this 64-bit OS. As a result you must first set
|
||||
OBJECT_MODE=64 in you environment before configuring (./configure) or
|
||||
building (make) Python on Monterey.
|
||||
|
||||
|
||||
Configuring threads
|
||||
-------------------
|
||||
|
|
|
@ -157,6 +157,9 @@
|
|||
/* The number of bytes in a time_t. */
|
||||
#undef SIZEOF_TIME_T
|
||||
|
||||
/* The number of bytes in a pthread_t. */
|
||||
#undef SIZEOF_PTHREAD_T
|
||||
|
||||
/* Defined to enable large file support when an off_t is bigger than a long
|
||||
and long long is available and at least as big as an off_t. You may need
|
||||
to add some flags for configuration and compilation to enable this mode.
|
||||
|
|
|
@ -216,6 +216,9 @@
|
|||
/* The number of bytes in a time_t. */
|
||||
#undef SIZEOF_TIME_T
|
||||
|
||||
/* The number of bytes in a pthread_t. */
|
||||
#undef SIZEOF_PTHREAD_T
|
||||
|
||||
/* Defined to enable large file support when an off_t is bigger than a long
|
||||
and long long is available and at least as big as an off_t. You may need
|
||||
to add some flags for configuration and compilation to enable this mode.
|
||||
|
|
42
configure.in
42
configure.in
|
@ -43,7 +43,7 @@ AC_MSG_CHECKING(MACHDEP)
|
|||
if test -z "$MACHDEP"
|
||||
then
|
||||
ac_sys_system=`uname -s`
|
||||
if test "$ac_sys_system" = "AIX" ; then
|
||||
if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64"; then
|
||||
ac_sys_release=`uname -v`
|
||||
else
|
||||
ac_sys_release=`uname -r`
|
||||
|
@ -148,6 +148,9 @@ AC_ARG_WITH(gcc, [ --without-gcc never use gcc], [
|
|||
;;
|
||||
esac
|
||||
;;
|
||||
Monterey*)
|
||||
RANLIB=:
|
||||
without_gcc=;;
|
||||
*) without_gcc=no;;
|
||||
esac])
|
||||
AC_MSG_RESULT($without_gcc)
|
||||
|
@ -207,6 +210,10 @@ BeOS*)
|
|||
case $CC in
|
||||
cc) CC=cc;;
|
||||
esac;;
|
||||
Monterey*)
|
||||
case $CC in
|
||||
cc) CC="$CC -Wl,-Bexport";;
|
||||
esac;;
|
||||
esac
|
||||
|
||||
# LDLIBRARY is the name of the library to link against (as opposed to the
|
||||
|
@ -236,6 +243,8 @@ then
|
|||
LDLIBRARY='libpython$(VERSION).so';;
|
||||
dgux*)
|
||||
LINKCC="LD_RUN_PATH=$libdir \$(PURIFY) \$(CC)";;
|
||||
Monterey64*)
|
||||
LINKCC="\$(PURIFY) \$(CC) -L/usr/lib/ia64l64";;
|
||||
*) LINKCC="\$(PURIFY) \$(CC)";;
|
||||
esac
|
||||
fi
|
||||
|
@ -308,6 +317,11 @@ then
|
|||
esac
|
||||
fi
|
||||
|
||||
# The current (beta) Monterey compiler dies with optimizations
|
||||
case $ac_sys_system in
|
||||
Monterey*) OPT="";;
|
||||
esac
|
||||
|
||||
if test "$ac_arch_flags"
|
||||
then
|
||||
OPT="$OPT $ac_arch_flags"
|
||||
|
@ -450,6 +464,30 @@ AC_MSG_RESULT($ac_cv_sizeof_time_t)
|
|||
AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t)
|
||||
|
||||
|
||||
# if have pthread_t then define SIZEOF_PTHREAD_T
|
||||
AC_MSG_CHECKING(for pthread_t)
|
||||
have_pthread_t=no
|
||||
AC_TRY_COMPILE([#include <pthread.h>], [pthread_t x; x = (pthread_t)0;], have_pthread_t=yes)
|
||||
AC_MSG_RESULT($have_pthread_t)
|
||||
if test "$have_pthread_t" = yes ; then
|
||||
# AC_CHECK_SIZEOF() doesn't include <pthread.h>.
|
||||
AC_MSG_CHECKING(size of pthread_t)
|
||||
AC_CACHE_VAL(ac_cv_sizeof_pthread_t,
|
||||
[AC_TRY_RUN([#include <stdio.h>
|
||||
#include <pthread.h>
|
||||
main()
|
||||
{
|
||||
FILE *f=fopen("conftestval", "w");
|
||||
if (!f) exit(1);
|
||||
fprintf(f, "%d\n", sizeof(pthread_t));
|
||||
exit(0);
|
||||
}], ac_cv_sizeof_pthread_t=`cat conftestval`, ac_cv_sizeof_pthread_t=0)
|
||||
])
|
||||
AC_MSG_RESULT($ac_cv_sizeof_pthread_t)
|
||||
AC_DEFINE_UNQUOTED(SIZEOF_PTHREAD_T, $ac_cv_sizeof_pthread_t)
|
||||
fi
|
||||
|
||||
|
||||
# Minor variations in building a framework between NextStep versions 4 and 5
|
||||
AC_SUBST(LIBTOOL_CRUFT)
|
||||
case $ac_sys_system/$ac_sys_release in
|
||||
|
@ -547,6 +585,7 @@ then
|
|||
LDSHARED="ld -Bshareable"
|
||||
fi;;
|
||||
SCO_SV*) LDSHARED="cc -G -KPIC -Ki486 -belf -Wl,-Bexport";;
|
||||
Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";;
|
||||
*) LDSHARED="ld";;
|
||||
esac
|
||||
fi
|
||||
|
@ -566,6 +605,7 @@ then
|
|||
FreeBSD*|OpenBSD*) CCSHARED="-fpic";;
|
||||
NetBSD*) CCSHARED="-fPIC";;
|
||||
SCO_SV*) CCSHARED="-KPIC -dy -Bdynamic";;
|
||||
Monterey*) CCSHARED="-G";;
|
||||
IRIX*/6*) case $CC in
|
||||
*gcc*) CCSHARED="-shared";;
|
||||
*) CCSHARED="";;
|
||||
|
|
Loading…
Reference in New Issue