diff -rupN Pillow-10.0.0/setup.py Pillow-10.0.0-new/setup.py --- Pillow-10.0.0/setup.py 2023-07-01 14:08:11.000000000 +0200 +++ Pillow-10.0.0-new/setup.py 2023-07-05 20:54:06.603404501 +0200 @@ -136,7 +136,7 @@ class RequiredDependencyException(Except pass -PLATFORM_MINGW = os.name == "nt" and "GCC" in sys.version +PLATFORM_MINGW = "mingw32" in os.getenv("CC", "") def _dbg(s, tp=None): @@ -509,7 +509,7 @@ class pil_build_ext(build_ext): # # add platform directories - if self.disable_platform_guessing: + if self.disable_platform_guessing or PLATFORM_MINGW: pass elif sys.platform == "cygwin": @@ -600,7 +600,7 @@ class pil_build_ext(build_ext): # FIXME: check /opt/stuff directories here? # standard locations - if not self.disable_platform_guessing: + if not self.disable_platform_guessing and not PLATFORM_MINGW: _add_directory(library_dirs, "/usr/local/lib") _add_directory(include_dirs, "/usr/local/include") @@ -842,7 +842,7 @@ class pil_build_ext(build_ext): if feature.xcb: libs.append(feature.xcb) defs.append(("HAVE_XCB", None)) - if sys.platform == "win32": + if sys.platform == "win32" or PLATFORM_MINGW: libs.extend(["kernel32", "user32", "gdi32"]) if struct.unpack("h", b"\0\1")[0] == 1: defs.append(("WORDS_BIGENDIAN", None)) @@ -857,6 +857,8 @@ class pil_build_ext(build_ext): if feature.freetype: srcs = [] libs = ["freetype"] + if sys.platform == "win32" or PLATFORM_MINGW: + libs.extend(["dl"]) defs = [] if feature.raqm: if not feature.want_vendor("raqm"): # using system Raqm @@ -879,7 +881,7 @@ class pil_build_ext(build_ext): if feature.lcms: extra = [] - if sys.platform == "win32": + if sys.platform == "win32" or PLATFORM_MINGW: extra.extend(["user32", "gdi32"]) self._update_extension("PIL._imagingcms", [feature.lcms] + extra) else: @@ -898,7 +900,7 @@ class pil_build_ext(build_ext): else: self._remove_extension("PIL._webp") - tk_libs = ["psapi"] if sys.platform in ("win32", "cygwin") else [] + tk_libs = ["psapi"] if sys.platform in ("win32", "cygwin") or PLATFORM_MINGW else [] self._update_extension("PIL._imagingtk", tk_libs) build_ext.build_extensions(self) diff -rupN Pillow-10.0.0/src/libImaging/ImPlatform.h Pillow-10.0.0-new/src/libImaging/ImPlatform.h --- Pillow-10.0.0/src/libImaging/ImPlatform.h 2023-07-01 14:08:11.000000000 +0200 +++ Pillow-10.0.0-new/src/libImaging/ImPlatform.h 2023-07-05 20:05:24.129483278 +0200 @@ -28,7 +28,7 @@ #if defined(_WIN32) || defined(__CYGWIN__) /* WIN */ #define WIN32_LEAN_AND_MEAN -#include +#include #ifdef __CYGWIN__ #undef _WIN64 diff -rupN Pillow-10.0.0/src/libImaging/ImPlatform.h.orig Pillow-10.0.0-new/src/libImaging/ImPlatform.h.orig --- Pillow-10.0.0/src/libImaging/ImPlatform.h.orig 1970-01-01 01:00:00.000000000 +0100 +++ Pillow-10.0.0-new/src/libImaging/ImPlatform.h.orig 2023-07-01 14:08:11.000000000 +0200 @@ -0,0 +1,98 @@ +/* + * The Python Imaging Library + * $Id$ + * + * platform declarations for the imaging core library + * + * Copyright (c) Fredrik Lundh 1995-2003. + */ + +#include "Python.h" + +/* Check that we have an ANSI compliant compiler */ +#ifndef HAVE_PROTOTYPES +#error Sorry, this library requires support for ANSI prototypes. +#endif +#ifndef STDC_HEADERS +#error Sorry, this library requires ANSI header files. +#endif + +#if defined(PIL_NO_INLINE) +#define inline +#else +#if defined(_MSC_VER) && !defined(__GNUC__) +#define inline __inline +#endif +#endif + +#if defined(_WIN32) || defined(__CYGWIN__) /* WIN */ + +#define WIN32_LEAN_AND_MEAN +#include + +#ifdef __CYGWIN__ +#undef _WIN64 +#undef _WIN32 +#undef __WIN32__ +#undef WIN32 +#endif + +#else /* not WIN */ +/* For System that are not Windows, we'll need to define these. */ +/* We have to define them instead of using typedef because the JPEG lib also + defines their own types with the same names, so we need to be able to undef + ours before including the JPEG code. */ + +#if __STDC_VERSION__ >= 199901L /* C99+ */ + +#include + +#define INT8 int8_t +#define UINT8 uint8_t +#define INT16 int16_t +#define UINT16 uint16_t +#define INT32 int32_t +#define UINT32 uint32_t + +#else /* < C99 */ + +#define INT8 signed char + +#if SIZEOF_SHORT == 2 +#define INT16 short +#elif SIZEOF_INT == 2 +#define INT16 int +#else +#error Cannot find required 16-bit integer type +#endif + +#if SIZEOF_SHORT == 4 +#define INT32 short +#elif SIZEOF_INT == 4 +#define INT32 int +#elif SIZEOF_LONG == 4 +#define INT32 long +#else +#error Cannot find required 32-bit integer type +#endif + +#define UINT8 unsigned char +#define UINT16 unsigned INT16 +#define UINT32 unsigned INT32 + +#endif /* < C99 */ + +#endif /* not WIN */ + +/* assume IEEE; tweak if necessary (patches are welcome) */ +#define FLOAT16 UINT16 +#define FLOAT32 float +#define FLOAT64 double + +#ifdef _MSC_VER +typedef signed __int64 int64_t; +#endif + +#ifdef __GNUC__ +#define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) +#endif