summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKhem Raj <raj.khem@gmail.com>2021-05-01 14:12:21 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2021-05-02 23:21:42 +0100
commitd7139882688be1908cc614079b26e87b0333a721 (patch)
tree2c1a31ef17a8368fb708b3e0a2a08433f84cd620
parentc19e2c23be453b6ba69aa456c6eb4dd1779dd860 (diff)
downloadpoky-d7139882688be1908cc614079b26e87b0333a721.tar.gz
pkgconfig: Fix nativesdk builds for mingw sdk hosts
pkgconfig uses a vendored version of ancient glib-2.0, which does not have many of fixes that current glib-2.0 will have, we enable this internal version for nativesdk/native recipe, which on mingw hosts does not work well, as its missing necessary mingw support. This patch backports couple of fixes which makes GCC11 happy but its going to be a constant source of pain as long as we support mingw (From OE-Core rev: 348b1ebb917cdd65e6678078e23a3f9fa079badc) Signed-off-by: Khem Raj <raj.khem@gmail.com> Cc: Joshua Watt <jpewhacker@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-devtools/pkgconfig/pkgconfig/0001-autotools-remove-support-for-the-__int64-type.-See-1.patch144
-rw-r--r--meta/recipes-devtools/pkgconfig/pkgconfig/0001-autotools-use-C99-printf-format-specifiers-on-Window.patch68
-rw-r--r--meta/recipes-devtools/pkgconfig/pkgconfig_git.bb2
3 files changed, 214 insertions, 0 deletions
diff --git a/meta/recipes-devtools/pkgconfig/pkgconfig/0001-autotools-remove-support-for-the-__int64-type.-See-1.patch b/meta/recipes-devtools/pkgconfig/pkgconfig/0001-autotools-remove-support-for-the-__int64-type.-See-1.patch
new file mode 100644
index 0000000000..bee4585724
--- /dev/null
+++ b/meta/recipes-devtools/pkgconfig/pkgconfig/0001-autotools-remove-support-for-the-__int64-type.-See-1.patch
@@ -0,0 +1,144 @@
1From 7e821441c482917e54435a07893272d87d3ad9e5 Mon Sep 17 00:00:00 2001
2From: Christoph Reiter <reiter.christoph@gmail.com>
3Date: Fri, 24 Aug 2018 19:43:04 +0200
4Subject: [PATCH] autotools: remove support for the __int64 type. See #1313
5
6__int64 was the 64bit type for Visual Studio before it added support for
7"long long" with VS2013. I think this was used to build glib with mingw and
8make the result usable for VS 6.0 which didn't support "long long" (??)
9
10Given that newer MSVC links against a different crt and mixing is not supported
11and everything supports "long long" nowadays just remove it.
12
13This is also a cleanup for printf format changes needed for #1497
14
15Signed-off-by: Khem Raj <raj.khem@gmail.com>
16Upstream-Status: Backport [https://github.com/GNOME/glib/commit/7e821441c4]
17---
18 configure.ac | 43 ++++---------------------------------------
19 1 file changed, 4 insertions(+), 39 deletions(-)
20
21--- a/glib/configure.ac
22+++ b/glib/configure.ac
23@@ -550,7 +550,6 @@ AC_CHECK_SIZEOF(long)
24 AC_CHECK_SIZEOF(int)
25 AC_CHECK_SIZEOF(void *)
26 AC_CHECK_SIZEOF(long long)
27-AC_CHECK_SIZEOF(__int64)
28
29 AC_CACHE_CHECK([for sig_atomic_t], ac_cv_type_sig_atomic_t,
30 [AC_TRY_LINK([#include <signal.h>
31@@ -564,7 +563,7 @@ if test x$ac_cv_type_sig_atomic_t = xyes
32 [Define if you have the 'sig_atomic_t' type.])
33 fi
34
35-if test x$ac_cv_sizeof_long = x8 || test x$ac_cv_sizeof_long_long = x8 || test x$ac_cv_sizeof___int64 = x8 ; then
36+if test x$ac_cv_sizeof_long = x8 || test x$ac_cv_sizeof_long_long = x8 ; then
37 :
38 else
39 AC_MSG_ERROR([
40@@ -573,7 +572,7 @@ else
41 ])
42 fi
43
44-AS_IF([test x$glib_native_win32 != xyes && test x$ac_cv_sizeof_long_long = x8], [
45+AS_IF([test x$ac_cv_sizeof_long_long = x8], [
46 # long long is a 64 bit integer.
47 AC_MSG_CHECKING(for format to printf and scanf a guint64)
48 AC_CACHE_VAL(glib_cv_long_long_format,[
49@@ -599,14 +598,6 @@ AS_IF([test x$glib_native_win32 != xyes
50 AC_DEFINE(HAVE_INT64_AND_I64,1,[define to support printing 64-bit integers with format I64])
51 fi
52 ], [AC_MSG_RESULT(none)])
53-],[ test x$ac_cv_sizeof___int64 = x8], [
54- # __int64 is a 64 bit integer.
55- AC_MSG_CHECKING(for format to printf and scanf a guint64)
56- # We know this is MSVCRT.DLL, and what the formats are
57- glib_cv_long_long_format=I64
58- AC_MSG_RESULT(%${glib_cv_long_long_format}u)
59- AC_DEFINE(HAVE_LONG_LONG_FORMAT,1,[define if system printf can print long long])
60- AC_DEFINE(HAVE_INT64_AND_I64,1,[define to support printing 64-bit integers with format I64])
61 ])
62
63 AC_C_CONST
64@@ -872,9 +863,6 @@ case $ac_cv_sizeof_size_t in
65 $ac_cv_sizeof_long_long)
66 glib_size_type='long long'
67 ;;
68- $ac_cv_sizeof__int64)
69- glib_size_type='__int64'
70- ;;
71 *) AC_MSG_ERROR([No type matching size_t in size])
72 ;;
73 esac
74@@ -931,9 +919,6 @@ case $ac_cv_sizeof_ssize_t in
75 $ac_cv_sizeof_long_long)
76 glib_ssize_type='long long'
77 ;;
78- $ac_cv_sizeof__int64)
79- glib_ssize_type='__int64'
80- ;;
81 *) AC_MSG_ERROR([No type matching ssize_t in size])
82 ;;
83 esac
84@@ -2985,17 +2970,6 @@ $ac_cv_sizeof_long_long)
85 gint64_constant='(G_GNUC_EXTENSION (val##LL))'
86 guint64_constant='(G_GNUC_EXTENSION (val##ULL))'
87 ;;
88-$ac_cv_sizeof___int64)
89- gint64='__int64'
90- if test -n "$glib_cv_long_long_format"; then
91- gint64_modifier='"'$glib_cv_long_long_format'"'
92- gint64_format='"'$glib_cv_long_long_format'i"'
93- guint64_format='"'$glib_cv_long_long_format'u"'
94- fi
95- glib_extension=
96- gint64_constant='(val##i64)'
97- guint64_constant='(val##ui64)'
98- ;;
99 esac
100 glib_size_t=$ac_cv_sizeof_size_t
101 glib_ssize_t=$ac_cv_sizeof_ssize_t
102@@ -3020,7 +2994,7 @@ long)
103 gsize_format='"lu"'
104 glib_msize_type='LONG'
105 ;;
106-"long long"|__int64)
107+"long long")
108 gsize_modifier='"I64"'
109 gsize_format='"I64u"'
110 glib_msize_type='INT64'
111@@ -3043,7 +3017,7 @@ long)
112 gssize_format='"li"'
113 glib_mssize_type='LONG'
114 ;;
115-"long long"|__int64)
116+"long long")
117 gssize_modifier='"I64"'
118 gssize_format='"I64i"'
119 glib_mssize_type='INT64'
120@@ -3080,14 +3054,6 @@ $ac_cv_sizeof_long_long)
121 glib_gpi_cast='(gint64)'
122 glib_gpui_cast='(guint64)'
123 ;;
124-$ac_cv_sizeof___int64)
125- glib_intptr_type_define=__int64
126- gintptr_modifier='"I64"'
127- gintptr_format='"I64i"'
128- guintptr_format='"I64u"'
129- glib_gpi_cast='(gint64)'
130- glib_gpui_cast='(guint64)'
131- ;;
132 *)
133 glib_unknown_void_p=yes
134 ;;
135@@ -3258,9 +3224,6 @@ $ac_cv_sizeof_long)
136 $ac_cv_sizeof_long_long)
137 gint64='long long'
138 ;;
139-$ac_cv_sizeof___int64)
140- gint64='__int64'
141- ;;
142 esac
143
144 AC_CHECK_TYPE([guint32],,,[typedef unsigned $gint32 guint32;])
diff --git a/meta/recipes-devtools/pkgconfig/pkgconfig/0001-autotools-use-C99-printf-format-specifiers-on-Window.patch b/meta/recipes-devtools/pkgconfig/pkgconfig/0001-autotools-use-C99-printf-format-specifiers-on-Window.patch
new file mode 100644
index 0000000000..a4e92da34b
--- /dev/null
+++ b/meta/recipes-devtools/pkgconfig/pkgconfig/0001-autotools-use-C99-printf-format-specifiers-on-Window.patch
@@ -0,0 +1,68 @@
1From 3d7cde654c4c6f3bdad32f5521f28f5802a7c377 Mon Sep 17 00:00:00 2001
2From: Christoph Reiter <reiter.christoph@gmail.com>
3Date: Fri, 24 Aug 2018 21:46:47 +0200
4Subject: [PATCH] autotools: use C99 printf format specifiers on Windows. Fixes
5 #1497
6
7Since we now require a C99 compatible printf and use gnulib on Windows,
8we also mark our printf functions as gnu_printf. GCC complains about the
9Windows specific I64 specifiers we still write to glibconfig.h with the
10autotools build.
11
12To fix this switch all I64(x) to ll(x).
13
14This also makes the glibconfig.h output for those macros match the ones
15we get when using meson.
16
17Signed-off-by: Khem Raj <raj.khem@gmail.com>
18Upstream-Status: Backport [https://github.com/GNOME/glib/commit/3d7cde654c]
19---
20 configure.ac | 18 +++++++++---------
21 1 file changed, 9 insertions(+), 9 deletions(-)
22
23--- a/glib/configure.ac
24+++ b/glib/configure.ac
25@@ -576,7 +576,7 @@ AS_IF([test x$ac_cv_sizeof_long_long = x
26 # long long is a 64 bit integer.
27 AC_MSG_CHECKING(for format to printf and scanf a guint64)
28 AC_CACHE_VAL(glib_cv_long_long_format,[
29- for format in ll q I64; do
30+ for format in ll q; do
31 AC_TRY_RUN([#include <stdio.h>
32 int main()
33 {
34@@ -2995,8 +2995,8 @@ long)
35 glib_msize_type='LONG'
36 ;;
37 "long long")
38- gsize_modifier='"I64"'
39- gsize_format='"I64u"'
40+ gsize_modifier='"ll"'
41+ gsize_format='"llu"'
42 glib_msize_type='INT64'
43 ;;
44 esac
45@@ -3018,8 +3018,8 @@ long)
46 glib_mssize_type='LONG'
47 ;;
48 "long long")
49- gssize_modifier='"I64"'
50- gssize_format='"I64i"'
51+ gssize_modifier='"ll"'
52+ gssize_format='"lli"'
53 glib_mssize_type='INT64'
54 ;;
55 esac
56@@ -3048,9 +3048,9 @@ $ac_cv_sizeof_long)
57 ;;
58 $ac_cv_sizeof_long_long)
59 glib_intptr_type_define='long long'
60- gintptr_modifier='"I64"'
61- gintptr_format='"I64i"'
62- guintptr_format='"I64u"'
63+ gintptr_modifier='"ll"'
64+ gintptr_format='"lli"'
65+ guintptr_format='"llu"'
66 glib_gpi_cast='(gint64)'
67 glib_gpui_cast='(guint64)'
68 ;;
diff --git a/meta/recipes-devtools/pkgconfig/pkgconfig_git.bb b/meta/recipes-devtools/pkgconfig/pkgconfig_git.bb
index 52ef2a9779..72db876ad0 100644
--- a/meta/recipes-devtools/pkgconfig/pkgconfig_git.bb
+++ b/meta/recipes-devtools/pkgconfig/pkgconfig_git.bb
@@ -16,6 +16,8 @@ SRC_URI = "git://anongit.freedesktop.org/pkg-config \
16 file://pkg-config-native.in \ 16 file://pkg-config-native.in \
17 file://fix-glib-configure-libtool-usage.patch \ 17 file://fix-glib-configure-libtool-usage.patch \
18 file://0001-glib-gettext.m4-Update-AM_GLIB_GNU_GETTEXT-to-match-.patch \ 18 file://0001-glib-gettext.m4-Update-AM_GLIB_GNU_GETTEXT-to-match-.patch \
19 file://0001-autotools-remove-support-for-the-__int64-type.-See-1.patch \
20 file://0001-autotools-use-C99-printf-format-specifiers-on-Window.patch \
19 " 21 "
20 22
21S = "${WORKDIR}/git" 23S = "${WORKDIR}/git"