kumquat-buildroot/package/xz/0001-Detect-symver-attribute-support.patch
Vincent Fazio e5a83df8da package/xz: patch configure due to microblaze patch
Commit bed21bb9b added a patch to change configure.ac but failed to
update configure which caused build failures due to the timestamp
difference between configure and configure.ac and the makefile attempting
to run aclocal.

XZ_AUTORECONF = YES creates a circular dependency where the host autotools
need host-xz which also gets patched.  Because of this, we need to patch
xz's configure script manually and NOT patch configure.ac so its timestamp
stays older than Makefile.in.

While we're doing this, correct the language in the commit body of the
patch, remove a stray whitespace, and fix the offset for configure.ac

Fixes: bed21bb9b ("package/xz: fix microblaze compiles")
Fixes: http://autobuild.buildroot.net/results/958/9586f21e447ef9923606b1385ff333138406b685/

Signed-off-by: Vincent Fazio <vfazio@xes-inc.com>
[Peter: Only patch configure]
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2023-02-08 16:24:25 +01:00

71 lines
2.5 KiB
Diff

From f0e0e8bd08b4d4e7c89a5a3b7d9a3c083f7e5432 Mon Sep 17 00:00:00 2001
From: Vincent Fazio <vfazio@gmail.com>
Date: Wed, 8 Feb 2023 12:58:37 +0000
Subject: [PATCH] Detect symver attribute support
On Microblaze, builds will fail when trying to add symver information
because __attribute__((symver ..)) is not supported even though
__has_attribute(__symver__) returns true.
Support for symver needs to be detected via a compile test since
__has_attribute can report false positives [0].
Add a configure compile check for __attribute__((symver ..)) to ensure
it is supported and define a variable to advertise support.
[0] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101766#c1
Upstream: https://github.com/tukaani-project/xz/pull/32
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Vincent Fazio <vfazio@gmail.com>
[Peter: patch configure instead of configure.ac so autoreconf isn't
triggered at build time]
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
---
configure | 15 +++++++++++++++
src/liblzma/common/common.h | 2 +-
2 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/src/liblzma/common/common.h b/src/liblzma/common/common.h
index 671d3bc..27b56ee 100644
--- a/src/liblzma/common/common.h
+++ b/src/liblzma/common/common.h
@@ -76,7 +76,7 @@
// too (which doesn't support __symver__) so use it to detect if __symver__
// is available. This should be far more reliable than looking at compiler
// version macros as nowadays especially __GNUC__ is defined by many compilers.
-# if lzma_has_attribute(__symver__)
+# if defined(HAVE_SYMVER_ATTRIBUTE)
# define LZMA_SYMVER_API(extnamever, type, intname) \
extern __attribute__((__symver__(extnamever))) \
LZMA_API(type) intname
diff --git a/configure b/configure
index ff0eed5..e685b30 100755
--- a/configure
+++ b/configure
@@ -16687,6 +16687,21 @@ printf "%s\n" "" >&6; }
printf "%s\n" "#define HAVE_SYMBOL_VERSIONS_LINUX $have_symbol_versions_linux" >>confdefs.h
+ OLD_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -Werror" # we need -Werror to make sure the attribute is not ignored
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+__attribute__ ((symver ("test@TEST"))) void foo(void) { }
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+
+printf "%s\n" "#define HAVE_SYMVER_ATTRIBUTE 1" >>confdefs.h
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ CFLAGS="$OLD_CFLAGS"
;;
*)
enable_symbol_versions=generic
--
2.34.1