diff options
Diffstat (limited to '0003-MINGW-BASE-use-NT-thread-model.patch')
-rw-r--r-- | 0003-MINGW-BASE-use-NT-thread-model.patch | 234 |
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 - |