summaryrefslogtreecommitdiff
path: root/libpkgconf/fix-mingw-wformat-warning.patch
blob: f4961c549b3a8b52af68b82afc09516c3bb93e1d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
diff --git a/libpkgconf/libpkgconf/libpkgconf.h b/libpkgconf/libpkgconf/libpkgconf.h
index 6f4c8b5..a7d9f9d 100644
--- a/libpkgconf/libpkgconf/libpkgconf.h
+++ b/libpkgconf/libpkgconf/libpkgconf.h
@@ -257,9 +257,17 @@ PKGCONF_API pkgconf_cross_personality_t *pkgconf_cross_personality_find(const ch
 #define PKGCONF_PKG_ERRF_PACKAGE_CONFLICT	0x4
 #define PKGCONF_PKG_ERRF_DEPGRAPH_BREAK		0x8
 
+/* Note that MinGW's printf() format semantics have changed starting GCC 10
+ * (see stdinc.h for details).
+ */
 #if defined(__GNUC__) || defined(__INTEL_COMPILER)
-#define PRINTFLIKE(fmtarg, firstvararg) \
-        __attribute__((__format__ (__printf__, fmtarg, firstvararg)))
+# if defined (_WIN32) && defined(__GNUC__) && __GNUC__ >= 10
+#  define PRINTFLIKE(fmtarg, firstvararg) \
+          __attribute__((__format__ (gnu_printf, fmtarg, firstvararg)))
+# else
+#  define PRINTFLIKE(fmtarg, firstvararg) \
+          __attribute__((__format__ (__printf__, fmtarg, firstvararg)))
+#endif
 #define DEPRECATED \
         __attribute__((deprecated))
 #else
diff --git a/libpkgconf/libpkgconf/stdinc.h b/libpkgconf/libpkgconf/stdinc.h
index 6858503..361f27e 100644
--- a/libpkgconf/libpkgconf/stdinc.h
+++ b/libpkgconf/libpkgconf/stdinc.h
@@ -31,11 +31,21 @@
 # include <windows.h>
 # include <malloc.h>
 # define PATH_DEV_NULL	"nul"
-# ifdef _WIN64
-#  define SIZE_FMT_SPECIFIER	"%I64u"
+
+/* Note that MinGW's printf() format semantics have changed starting GCC 10.
+ * In particular, GCC 10 complains about MSVC's 'I64' length modifier but now
+ * accepts the standard (C99) 'z' modifier.
+ */
+# if defined(__GNUC__) && __GNUC__ >= 10
+#  define SIZE_FMT_SPECIFIER	"%zu"
 # else
-#  define SIZE_FMT_SPECIFIER	"%u"
+#  ifdef _WIN64
+#   define SIZE_FMT_SPECIFIER	"%I64u"
+#  else
+#   define SIZE_FMT_SPECIFIER	"%u"
+#  endif
 # endif
+
 # ifndef ssize_t
 # ifndef __MINGW32__
 #  include <BaseTsd.h>