package/libglib2: fix atomic handling

Correctly fix atomic handling to avoid the following build failure with
all users of libglib2 (e.g. gdk-pixbuf) raised since bump to version
2.76.1 in commit 3f9622fe3d:

/usr/lib/libglib-2.0.a(gthread-posix.c.o): in function `g_mutex_trylock':
gthread-posix.c:(.text+0xda8): undefined reference to `__atomic_compare_exchange_4'

Fixes:
 - http://autobuild.buildroot.org/results/24a358869b98d83ab374c7c3a185ced450064d35

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
Fabrice Fontaine 2023-09-17 20:51:16 +02:00 committed by Thomas Petazzoni
parent ce3ce432fe
commit 929bffbf4b
2 changed files with 45 additions and 5 deletions

View File

@ -0,0 +1,45 @@
From d1814dbd3a88c95a43d4c9805bb4a523cf62d97b Mon Sep 17 00:00:00 2001
From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Date: Sun, 17 Sep 2023 20:42:00 +0200
Subject: [PATCH] link with -latomic when needed
Some architecture such as sparc and some flavors of arm needs -latomic
to avoid the following build failure:
gthread-posix.c:(.text+0xda8): undefined reference to `__atomic_compare_exchange_4'
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Upstream: https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3586
---
glib/meson.build | 1 +
meson.build | 2 ++
2 files changed, 3 insertions(+)
diff --git a/glib/meson.build b/glib/meson.build
index c26a35e42..7a761306b 100644
--- a/glib/meson.build
+++ b/glib/meson.build
@@ -426,6 +426,7 @@ libglib = library('glib-2.0',
pcre2,
platform_deps,
thread_dep,
+ atomic_dep
],
c_args : glib_c_args,
objc_args : glib_c_args,
diff --git a/meson.build b/meson.build
index 25ae10fc2..5ae84b3b3 100644
--- a/meson.build
+++ b/meson.build
@@ -2130,6 +2130,8 @@ libffi_dep = dependency('libffi', version : '>= 3.0.0')
libz_dep = dependency('zlib')
+atomic_dep = cc.find_library('atomic', required: false)
+
# First check in libc, fallback to libintl, and as last chance build
# proxy-libintl subproject.
# FIXME: glib-gettext.m4 has much more checks to detect broken/uncompatible
--
2.40.1

View File

@ -64,11 +64,6 @@ ifeq ($(BR2_PACKAGE_ELFUTILS),y)
LIBGLIB2_DEPENDENCIES += elfutils
endif
# Uses __atomic_compare_exchange_4
ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)
LIBGLIB2_LDFLAGS += -latomic
endif
ifeq ($(BR2_PACKAGE_LIBICONV),y)
LIBGLIB2_DEPENDENCIES += libiconv
endif