From: Rémi Bernon <rbernon@codeweavers.com> --- libs/mesa/include/c99_alloca.h | 6 +++++- libs/mesa/src/mesa/glapi/glapi/glapi.h | 2 +- libs/mesa/src/util/bitscan.c | 6 ++++-- libs/mesa/src/util/bitscan.h | 18 ++++++++++++++---- libs/mesa/src/util/blake3/blake3_dispatch.c | 2 +- libs/mesa/src/util/detect_cc.h | 2 +- libs/mesa/src/util/memstream.h | 2 +- libs/mesa/src/util/u_atomic.h | 4 ++-- libs/mesa/src/util/u_printf.c | 2 +- libs/mesa/src/util/xxhash.h | 2 +- 10 files changed, 31 insertions(+), 15 deletions(-) diff --git a/libs/mesa/include/c99_alloca.h b/libs/mesa/include/c99_alloca.h index 5a3b8c19abb..27482030e64 100644 --- a/libs/mesa/include/c99_alloca.h +++ b/libs/mesa/include/c99_alloca.h @@ -29,7 +29,11 @@ #define _C99_ALLOCA_H_ -#if defined(_MSC_VER) +#if defined(__WINE_PE_BUILD) + +# include <malloc.h> + +#elif defined(_MSC_VER) # include <malloc.h> diff --git a/libs/mesa/src/mesa/glapi/glapi/glapi.h b/libs/mesa/src/mesa/glapi/glapi/glapi.h index 14575cc370c..40a270d6df4 100644 --- a/libs/mesa/src/mesa/glapi/glapi/glapi.h +++ b/libs/mesa/src/mesa/glapi/glapi/glapi.h @@ -72,7 +72,7 @@ struct _glapi_table; _GLAPI_EXPORT extern __THREAD_INITIAL_EXEC struct _glapi_table * _mesa_glapi_tls_Dispatch; _GLAPI_EXPORT extern __THREAD_INITIAL_EXEC void * _mesa_glapi_tls_Context; -#if DETECT_OS_WINDOWS && !defined(MAPI_MODE_SHARED_GLAPI) +#if (DETECT_OS_WINDOWS && !defined(MAPI_MODE_SHARED_GLAPI)) || defined(__WINE_PE_BUILD) # define GET_DISPATCH() _mesa_glapi_get_dispatch() # define GET_CURRENT_CONTEXT(C) struct gl_context *C = (struct gl_context *) _mesa_glapi_get_context() #else diff --git a/libs/mesa/src/util/bitscan.c b/libs/mesa/src/util/bitscan.c index 88d7f94e119..4b9716c288d 100644 --- a/libs/mesa/src/util/bitscan.c +++ b/libs/mesa/src/util/bitscan.c @@ -29,7 +29,8 @@ #include "bitscan.h" #ifdef HAVE___BUILTIN_FFS -#elif defined(_MSC_VER) && (_M_IX86 || _M_ARM || _M_AMD64 || _M_IA64) +#elif (defined(_MSC_VER) && (_M_IX86 || _M_ARM || _M_AMD64 || _M_IA64)) || \ + (defined(__WINE_PE_BUILD) && (defined(__i386__) || defined(__x86_64__))) #else int ffs(int i) @@ -60,7 +61,8 @@ ffs(int i) #endif #ifdef HAVE___BUILTIN_FFSLL -#elif defined(_MSC_VER) && (_M_AMD64 || _M_ARM64 || _M_IA64) +#elif (defined(_MSC_VER) && (_M_AMD64 || _M_ARM64 || _M_IA64)) || \ + (defined(__WINE_PE_BUILD) && (defined(__x86_64__) || defined(__aarch64__) || defined(__GNUC__))) #else int ffsll(long long int val) diff --git a/libs/mesa/src/util/bitscan.h b/libs/mesa/src/util/bitscan.h index bcefa82aa28..33ba213e27b 100644 --- a/libs/mesa/src/util/bitscan.h +++ b/libs/mesa/src/util/bitscan.h @@ -36,6 +36,12 @@ #if defined(_MSC_VER) #include <intrin.h> +#elif defined(__WINE_PE_BUILD) +#include <stddef.h> +#include <stdarg.h> +#include <windef.h> +#include <winbase.h> +#include <winnt.h> #endif #if defined(__POPCNT__) @@ -57,7 +63,8 @@ extern "C" { */ #ifdef HAVE___BUILTIN_FFS #define ffs __builtin_ffs -#elif defined(_MSC_VER) && (_M_IX86 || _M_ARM || _M_AMD64 || _M_IA64) +#elif (defined(_MSC_VER) && (_M_IX86 || _M_ARM || _M_AMD64 || _M_IA64)) || \ + (defined(__WINE_PE_BUILD) && (defined(__i386__) || defined(__x86_64__))) static inline int ffs(int i) { @@ -74,7 +81,8 @@ int ffs(int i); #ifdef HAVE___BUILTIN_FFSLL #define ffsll __builtin_ffsll -#elif defined(_MSC_VER) && (_M_AMD64 || _M_ARM64 || _M_IA64) +#elif (defined(_MSC_VER) && (_M_AMD64 || _M_ARM64 || _M_IA64)) || \ + (defined(__WINE_PE_BUILD) && (defined(__x86_64__) || defined(__aarch64__) || defined(__GNUC__))) static inline int ffsll(long long int i) { @@ -253,7 +261,8 @@ util_last_bit(unsigned u) { #if defined(HAVE___BUILTIN_CLZ) return u == 0 ? 0 : 32 - __builtin_clz(u); -#elif defined(_MSC_VER) && (_M_IX86 || _M_ARM || _M_AMD64 || _M_IA64) +#elif (defined(_MSC_VER) && (_M_IX86 || _M_ARM || _M_AMD64 || _M_IA64)) || \ + (defined(__WINE_PE_BUILD) && (defined(__i386__) || defined(__x86_64__))) unsigned long index; if (_BitScanReverse(&index, u)) return index + 1; @@ -279,7 +288,8 @@ util_last_bit64(uint64_t u) { #if defined(HAVE___BUILTIN_CLZLL) return u == 0 ? 0 : 64 - __builtin_clzll(u); -#elif defined(_MSC_VER) && (_M_AMD64 || _M_ARM64 || _M_IA64) +#elif (defined(_MSC_VER) && (_M_AMD64 || _M_ARM64 || _M_IA64)) || \ + (defined(__WINE_PE_BUILD) && (defined(__x86_64__) || defined(__aarch64__))) unsigned long index; if (_BitScanReverse64(&index, u)) return index + 1; diff --git a/libs/mesa/src/util/blake3/blake3_dispatch.c b/libs/mesa/src/util/blake3/blake3_dispatch.c index 52db9058689..67ecd84af92 100644 --- a/libs/mesa/src/util/blake3/blake3_dispatch.c +++ b/libs/mesa/src/util/blake3/blake3_dispatch.c @@ -5,7 +5,7 @@ #include "blake3_impl.h" #if defined(_MSC_VER) -#include <Windows.h> +#include <windows.h> #endif #if defined(IS_X86) diff --git a/libs/mesa/src/util/detect_cc.h b/libs/mesa/src/util/detect_cc.h index 0cb11d511f1..4b5c3eb98aa 100644 --- a/libs/mesa/src/util/detect_cc.h +++ b/libs/mesa/src/util/detect_cc.h @@ -43,7 +43,7 @@ * Compiler */ -#if defined(__GNUC__) +#if defined(__GNUC__) || defined(__clang__) #define DETECT_CC_GCC 1 #define DETECT_CC_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__) #endif diff --git a/libs/mesa/src/util/memstream.h b/libs/mesa/src/util/memstream.h index 42f374cd69b..3c5d94b6ce5 100644 --- a/libs/mesa/src/util/memstream.h +++ b/libs/mesa/src/util/memstream.h @@ -32,7 +32,7 @@ #include <stdio.h> #include <limits.h> /* PATH_MAX */ -#ifdef _MSC_VER +#if defined(_MSC_VER) || defined(__WINE_PE_BUILD) #include <stdlib.h> #ifndef PATH_MAX #define PATH_MAX _MAX_PATH /* Equivalent to MAX_PATH from minwindef.h */ diff --git a/libs/mesa/src/util/u_atomic.h b/libs/mesa/src/util/u_atomic.h index 9f79113280a..730c41c70d4 100644 --- a/libs/mesa/src/util/u_atomic.h +++ b/libs/mesa/src/util/u_atomic.h @@ -22,9 +22,9 @@ */ #if defined(__sun) #define PIPE_ATOMIC_OS_SOLARIS -#elif defined(_MSC_VER) +#elif defined(_MSC_VER) && !defined(__clang__) #define PIPE_ATOMIC_MSVC_INTRINSIC -#elif defined(__GNUC__) +#elif defined(__GNUC__) || defined(__clang__) #define PIPE_ATOMIC_GCC_INTRINSIC #else #error "Unsupported platform" diff --git a/libs/mesa/src/util/u_printf.c b/libs/mesa/src/util/u_printf.c index fb5fd7dc524..1d7e0ff8e61 100644 --- a/libs/mesa/src/util/u_printf.c +++ b/libs/mesa/src/util/u_printf.c @@ -43,7 +43,7 @@ /* Some versions of MinGW are missing _vscprintf's declaration, although they * still provide the symbol in the import library. */ -#ifdef __MINGW32__ +#if defined(__MINGW32__) && !defined(__WINE_PE_BUILD) _CRTIMP int _vscprintf(const char *format, va_list argptr); #endif diff --git a/libs/mesa/src/util/xxhash.h b/libs/mesa/src/util/xxhash.h index 78fc2e8dbf6..eb97d186db5 100644 --- a/libs/mesa/src/util/xxhash.h +++ b/libs/mesa/src/util/xxhash.h @@ -4406,7 +4406,7 @@ XXH_mult32to64(xxh_u64 x, xxh_u64 y) { return (x & 0xFFFFFFFF) * (y & 0xFFFFFFFF); } -#elif defined(_MSC_VER) && defined(_M_IX86) +#elif defined(_MSC_VER) && defined(_M_IX86) && !defined(__WINE_PE_BUILD) # define XXH_mult32to64(x, y) __emulu((unsigned)(x), (unsigned)(y)) #else /* -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10531