summarylogtreecommitdiffstats
path: root/0003-MINGW-BASE-use-NT-thread-model.patch
diff options
context:
space:
mode:
Diffstat (limited to '0003-MINGW-BASE-use-NT-thread-model.patch')
-rw-r--r--0003-MINGW-BASE-use-NT-thread-model.patch234
1 files changed, 0 insertions, 234 deletions
diff --git a/0003-MINGW-BASE-use-NT-thread-model.patch b/0003-MINGW-BASE-use-NT-thread-model.patch
deleted file mode 100644
index 6f354d35383e..000000000000
--- a/0003-MINGW-BASE-use-NT-thread-model.patch
+++ /dev/null
@@ -1,234 +0,0 @@
-From 51eb50d174eed9942b5edb3f227e1866d9eee092 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?=
- <alexey.pawlow@gmail.com>
-Date: Thu, 17 Jun 2021 18:51:12 +0530
-Subject: [PATCH 003/N] MINGW BASE use NT thread model
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Co-authored-by: Алексей <alexey.pawlow@gmail.com>
-Co-authored-by: Christoph Reiter <reiter.christoph@gmail.com>
----
- Modules/_multiprocessing/multiprocessing.h | 3 +
- configure.ac | 94 +++++++++++++++++++++-
- pyconfig.h.in | 3 +
- 3 files changed, 98 insertions(+), 2 deletions(-)
-
-diff --git a/Modules/_multiprocessing/multiprocessing.h b/Modules/_multiprocessing/multiprocessing.h
-index fe78135..344b76e 100644
---- a/Modules/_multiprocessing/multiprocessing.h
-+++ b/Modules/_multiprocessing/multiprocessing.h
-@@ -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 --git a/configure.ac b/configure.ac
-index 6ae56e1..005fc8f 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -2040,6 +2040,46 @@ then
- 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).
-@@ -2158,6 +2198,8 @@ CC="$ac_save_cc"])
- 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
-@@ -2178,6 +2220,10 @@ elif test "$ac_cv_pthread" = "yes"
- 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
-@@ -2210,8 +2256,8 @@ dnl AC_MSG_RESULT($cpp_type)
- 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 \
- 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 \
-@@ -2225,6 +2271,14 @@ sys/endian.h sys/sysmacros.h linux/memfd.h linux/wait.h sys/memfd.h sys/mman.h)
- 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
-@@ -2422,6 +2476,10 @@ fi
-
- 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],[])
-@@ -2452,6 +2510,7 @@ if test "$ac_cv_sizeof_pthread_key_t" -eq "$ac_cv_sizeof_int" ; then
- else
- AC_MSG_RESULT(no)
- fi
-+fi
- CC="$ac_save_cc"
-
- AC_SUBST(OTHER_LIBTOOL_OPT)
-@@ -2897,10 +2956,15 @@ void *x = uuid_enc_be
- [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,
-@@ -3232,6 +3296,11 @@ then
- 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"
-@@ -3692,6 +3761,15 @@ else
- 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 copy_file_range ctermid dup3 execv explicit_bzero explicit_memset \
- faccessat fchmod fchmodat fchown fchownat \
-@@ -4613,6 +4691,10 @@ AC_CHECK_DECLS([isinf, isnan, isfinite], [], [], [[#include <math.h>]])
- # 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([[
-@@ -4646,6 +4728,14 @@ fi
-
- # 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 --git a/pyconfig.h.in b/pyconfig.h.in
-index 6358e56..5f63cae 100644
---- a/pyconfig.h.in
-+++ b/pyconfig.h.in
-@@ -1359,6 +1359,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
-
---
-2.32.0
-