212 lines
7.0 KiB
Diff
212 lines
7.0 KiB
Diff
diff -Naur Python-3.7.0-orig/configure.ac Python-3.7.0/configure.ac
|
|
--- Python-3.7.0-orig/configure.ac 2018-07-12 10:20:43.495087100 +0300
|
|
+++ Python-3.7.0/configure.ac 2018-07-12 10:20:43.807087600 +0300
|
|
@@ -1944,6 +1944,46 @@
|
|
BASECFLAGS="$BASECFLAGS $ac_arch_flags"
|
|
fi
|
|
|
|
+dnl NOTE:
|
|
+dnl - GCC 4.4+ for mingw* require and use posix threads(pthreads-w32)
|
|
+dnl - Host may contain installed pthreads-w32.
|
|
+dnl - On windows platform only NT-thread model is supported.
|
|
+dnl To avoid miss detection scipt first will check for NT-thread model
|
|
+dnl and if is not found will try to detect build options for pthread
|
|
+dnl model. Autodetection could be overiden if variable with_nt_threads
|
|
+dnl is set in "Site Configuration" (see autoconf manual).
|
|
+dnl If NT-thread model is enabled script skips some checks that
|
|
+dnl impact build process. When a new functionality is added, developers
|
|
+dnl are responsible to update configure script to avoid thread models
|
|
+dnl to be mixed.
|
|
+
|
|
+AC_MSG_CHECKING([for NT threads])
|
|
+AC_ARG_WITH(nt-threads,
|
|
+ AS_HELP_STRING([--with-nt-threads], [build with windows threads]),
|
|
+[
|
|
+ case $withval in
|
|
+ no) with_nt_threads=no;;
|
|
+ yes) with_nt_threads=yes;;
|
|
+ *) with_nt_threads=yes;;
|
|
+ esac], [
|
|
+ with_nt_threads=no])
|
|
+if test $with_nt_threads = yes ; then
|
|
+AC_LINK_IFELSE([
|
|
+ AC_LANG_PROGRAM([[]],[[_beginthread(0, 0, 0);]])
|
|
+ ],
|
|
+ [with_nt_threads=yes],
|
|
+ [with_nt_threads=no])
|
|
+fi
|
|
+AC_MSG_RESULT([$with_nt_threads])
|
|
+
|
|
+if test $with_nt_threads = yes ; then
|
|
+ dnl temporary default flag to avoid additional pthread checks
|
|
+ dnl and initilize other ac..thread flags to no
|
|
+ ac_cv_pthread_is_default=no
|
|
+ ac_cv_kthread=no
|
|
+ ac_cv_pthread=no
|
|
+ dnl ac_cv_kpthread is set to no if default is yes (see below)
|
|
+else
|
|
# On some compilers, pthreads are available without further options
|
|
# (e.g. MacOS X). On some of these systems, the compiler will not
|
|
# complain if unaccepted options are passed (e.g. gcc on Mac OS X).
|
|
@@ -2062,6 +2102,8 @@
|
|
AC_MSG_RESULT($ac_cv_pthread)
|
|
fi
|
|
|
|
+fi
|
|
+
|
|
# If we have set a CC compiler flag for thread support then
|
|
# check if it works for CXX, too.
|
|
ac_cv_cxx_thread=no
|
|
@@ -2082,6 +2124,10 @@
|
|
then
|
|
CXX="$CXX -pthread"
|
|
ac_cv_cxx_thread=yes
|
|
+elif test $with_nt_threads = yes
|
|
+then
|
|
+ dnl set to always to skip extra pthread check below
|
|
+ ac_cv_cxx_thread=always
|
|
fi
|
|
|
|
if test $ac_cv_cxx_thread = yes
|
|
@@ -2114,8 +2160,8 @@
|
|
AC_HEADER_STDC
|
|
AC_CHECK_HEADERS(asm/types.h crypt.h conio.h direct.h dlfcn.h errno.h \
|
|
fcntl.h grp.h \
|
|
-ieeefp.h io.h langinfo.h libintl.h process.h pthread.h \
|
|
-sched.h shadow.h signal.h stropts.h termios.h \
|
|
+ieeefp.h io.h langinfo.h libintl.h process.h \
|
|
+shadow.h signal.h stropts.h termios.h \
|
|
unistd.h utime.h \
|
|
poll.h sys/devpoll.h sys/epoll.h sys/poll.h \
|
|
sys/audioio.h sys/xattr.h sys/bsdtty.h sys/event.h sys/file.h sys/ioctl.h \
|
|
@@ -2129,6 +2175,14 @@
|
|
AC_HEADER_DIRENT
|
|
AC_HEADER_MAJOR
|
|
|
|
+# If using nt threads, don't look for pthread.h or thread.h
|
|
+if test "x$with_nt_threads" = xno ; then
|
|
+AC_HEADER_STDC
|
|
+AC_CHECK_HEADERS(pthread.h sched.h thread.h)
|
|
+AC_HEADER_DIRENT
|
|
+AC_HEADER_MAJOR
|
|
+fi
|
|
+
|
|
# bluetooth/bluetooth.h has been known to not compile with -std=c99.
|
|
# http://permalink.gmane.org/gmane.linux.bluez.kernel/22294
|
|
SAVE_CFLAGS=$CFLAGS
|
|
@@ -2324,6 +2378,10 @@
|
|
|
|
AC_MSG_CHECKING(for pthread_t)
|
|
have_pthread_t=no
|
|
+if test $with_nt_threads = yes ; then
|
|
+ dnl skip check for pthread_t if NT-thread model is enabled
|
|
+ have_pthread_t=skip
|
|
+else
|
|
AC_COMPILE_IFELSE([
|
|
AC_LANG_PROGRAM([[#include <pthread.h>]], [[pthread_t x; x = *(pthread_t*)0;]])
|
|
],[have_pthread_t=yes],[])
|
|
@@ -2354,6 +2412,7 @@
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
+fi
|
|
CC="$ac_save_cc"
|
|
|
|
AC_SUBST(OTHER_LIBTOOL_OPT)
|
|
@@ -2790,10 +2849,15 @@
|
|
[AC_MSG_RESULT(no)]
|
|
)
|
|
|
|
+if test $with_nt_threads = yes ; then
|
|
+ dnl do not search for sem_init if NT-thread model is enabled
|
|
+ :
|
|
+else
|
|
# 'Real Time' functions on Solaris
|
|
# posix4 on Solaris 2.6
|
|
# pthread (first!) on Linux
|
|
AC_SEARCH_LIBS(sem_init, pthread rt posix4)
|
|
+fi
|
|
|
|
# check if we need libintl for locale functions
|
|
AC_CHECK_LIB(intl, textdomain,
|
|
@@ -3036,6 +3100,11 @@
|
|
CXX="$CXX -pthread"
|
|
fi
|
|
posix_threads=yes
|
|
+elif test $with_nt_threads = yes
|
|
+then
|
|
+ posix_threads=no
|
|
+ AC_DEFINE(NT_THREADS, 1,
|
|
+ [Define to 1 if you want to use native NT threads])
|
|
else
|
|
if test ! -z "$withval" -a -d "$withval"
|
|
then LDFLAGS="$LDFLAGS -L$withval"
|
|
@@ -3505,6 +3574,15 @@
|
|
fi
|
|
|
|
# checks for library functions
|
|
+if test $with_nt_threads = yes ; then
|
|
+ dnl GCC(mingw) 4.4+ require and use posix threads(pthreads-w32)
|
|
+ dnl and host may contain installed pthreads-w32.
|
|
+ dnl Skip checks for some functions declared in pthreads-w32 if
|
|
+ dnl NT-thread model is enabled.
|
|
+ ac_cv_func_pthread_kill=skip
|
|
+ ac_cv_func_sem_open=skip
|
|
+ ac_cv_func_sched_setscheduler=skip
|
|
+fi
|
|
AC_CHECK_FUNCS(alarm accept4 setitimer getitimer bind_textdomain_codeset chown \
|
|
clock confstr ctermid dup3 execv faccessat fchmod fchmodat fchown fchownat \
|
|
fexecve fdopendir fork fpathconf fstatat ftime ftruncate futimesat \
|
|
@@ -4495,6 +4573,10 @@
|
|
# the kernel module that provides POSIX semaphores
|
|
# isn't loaded by default, so an attempt to call
|
|
# sem_open results in a 'Signal 12' error.
|
|
+if test $with_nt_threads = yes ; then
|
|
+ dnl skip posix semaphores test if NT-thread model is enabled
|
|
+ ac_cv_posix_semaphores_enabled=no
|
|
+fi
|
|
AC_MSG_CHECKING(whether POSIX semaphores are enabled)
|
|
AC_CACHE_VAL(ac_cv_posix_semaphores_enabled,
|
|
AC_RUN_IFELSE([AC_LANG_SOURCE([[
|
|
@@ -4528,6 +4610,14 @@
|
|
|
|
# Multiprocessing check for broken sem_getvalue
|
|
AC_MSG_CHECKING(for broken sem_getvalue)
|
|
+if test $with_nt_threads = yes ; then
|
|
+ dnl Skip test if NT-thread model is enabled.
|
|
+ dnl NOTE the test case below fail for pthreads-w32 as:
|
|
+ dnl - SEM_FAILED is not defined;
|
|
+ dnl - sem_open is a stub;
|
|
+ dnl - sem_getvalue work(!).
|
|
+ ac_cv_broken_sem_getvalue=skip
|
|
+fi
|
|
AC_CACHE_VAL(ac_cv_broken_sem_getvalue,
|
|
AC_RUN_IFELSE([AC_LANG_SOURCE([[
|
|
#include <unistd.h>
|
|
diff -Naur Python-3.7.0-orig/Modules/_multiprocessing/multiprocessing.h Python-3.7.0/Modules/_multiprocessing/multiprocessing.h
|
|
--- Python-3.7.0-orig/Modules/_multiprocessing/multiprocessing.h 2018-06-27 06:07:35.000000000 +0300
|
|
+++ Python-3.7.0/Modules/_multiprocessing/multiprocessing.h 2018-07-12 10:20:43.807087600 +0300
|
|
@@ -21,6 +21,9 @@
|
|
# endif
|
|
# define SEM_HANDLE HANDLE
|
|
# define SEM_VALUE_MAX LONG_MAX
|
|
+# if defined(HAVE_SEM_OPEN) && defined(_POSIX_THREADS)
|
|
+# include <semaphore.h>
|
|
+# endif
|
|
#else
|
|
# include <fcntl.h> /* O_CREAT and O_EXCL */
|
|
# if defined(HAVE_SEM_OPEN) && !defined(POSIX_SEMAPHORES_NOT_ENABLED)
|
|
diff -Naur Python-3.7.0-orig/pyconfig.h.in Python-3.7.0/pyconfig.h.in
|
|
--- Python-3.7.0-orig/pyconfig.h.in 2018-06-27 06:07:35.000000000 +0300
|
|
+++ Python-3.7.0/pyconfig.h.in 2018-07-12 10:20:43.807087600 +0300
|
|
@@ -1281,6 +1281,9 @@
|
|
/* Define if mvwdelch in curses.h is an expression. */
|
|
#undef MVWDELCH_IS_EXPRESSION
|
|
|
|
+/* Define to 1 if you want to use native NT threads */
|
|
+#undef NT_THREADS
|
|
+
|
|
/* Define to the address where bug reports for this package should be sent. */
|
|
#undef PACKAGE_BUGREPORT
|
|
|