python-pillow/pillow_mingw.patch
2023-07-06 08:45:26 +02:00

181 lines
5.3 KiB
Diff

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 <Windows.h>
+#include <windows.h>
#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 <Windows.h>
+
+#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 <stdint.h>
+
+#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