diff --git a/meson.build b/meson.build index ce2ec7a79c8..0cfd5a7dc99 100644 --- a/meson.build +++ b/meson.build @@ -1598,8 +1598,15 @@ elif with_shader_cache error('Shader Cache requires compression') endif -dep_thread = dependency('threads') -if dep_thread.found() and host_machine.system() != 'windows' +if host_machine.system() == 'windows' + # For MSVC and MinGW we aren't using pthreads, and dependency('threads') will add linkage + # to pthread for MinGW, so leave the dependency null_dep for Windows. For Windows linking to + # kernel32 is enough for c11/threads.h and it's already linked by meson by default + dep_thread = null_dep +else + dep_thread = dependency('threads') +endif +if dep_thread.found() pre_args += '-DHAVE_PTHREAD' if host_machine.system() != 'netbsd' and cc.has_function( 'pthread_setaffinity_np', diff --git a/src/c11/impl/time.c b/src/c11/impl/time.c index ebbb5ceac2d..f99788c0fea 100644 --- a/src/c11/impl/time.c +++ b/src/c11/impl/time.c @@ -32,7 +32,7 @@ #ifndef HAVE_TIMESPEC_GET -#if defined(_WIN32) && !defined(__CYGWIN__) +#if defined(_WIN32) && !defined(HAVE_PTHREAD) #include diff --git a/src/c11/threads.h b/src/c11/threads.h index fe9ad387fcd..598948bf1cc 100644 --- a/src/c11/threads.h +++ b/src/c11/threads.h @@ -37,7 +37,7 @@ #include #include -#if defined(_WIN32) && !defined(__CYGWIN__) +#if defined(_WIN32) && !defined(HAVE_PTHREAD) # include /* close */ # include /* _exit */ #elif defined(HAVE_PTHREAD) @@ -97,7 +97,7 @@ extern "C" { typedef void (*tss_dtor_t)(void *); typedef int (*thrd_start_t)(void *); -#if defined(_WIN32) && !defined(__CYGWIN__) +#if defined(_WIN32) && !defined(HAVE_PTHREAD) typedef struct { void *Ptr; diff --git a/src/util/u_thread.h b/src/util/u_thread.h index 0971dd82599..544eea55829 100644 --- a/src/util/u_thread.h +++ b/src/util/u_thread.h @@ -49,7 +49,7 @@ #if DETECT_OS_LINUX && !defined(ANDROID) #include -#elif defined(_WIN32) && !defined(__CYGWIN__) +#elif defined(_WIN32) && !defined(HAVE_PTHREAD) #include #endif @@ -93,7 +93,7 @@ util_get_current_cpu(void) #if DETECT_OS_LINUX && !defined(ANDROID) return sched_getcpu(); -#elif defined(_WIN32) && !defined(__CYGWIN__) +#elif defined(_WIN32) && !defined(HAVE_PTHREAD) return GetCurrentProcessorNumber(); #else @@ -188,7 +188,7 @@ util_set_thread_affinity(thrd_t thread, } return pthread_setaffinity_np(thread, sizeof(cpuset), &cpuset) == 0; -#elif defined(_WIN32) && !defined(__CYGWIN__) +#elif defined(_WIN32) && !defined(HAVE_PTHREAD) DWORD_PTR m = mask[0]; if (sizeof(m) > 4 && num_mask_bits > 32)