kumquat-buildroot/package/zlib-ng/0003-zlib-ng-check-that-sys-auxv.h-exists-at-configure-time.patch
Ben Hutchings 1666b661c6 package/zlib-ng: add upstream patch to fix build with uclibc
Fix the following build failure with uclibc on arm architectures (and
similar on powerpc):

/home/buildroot/autobuild/instance-2/output-1/build/zlib-ng-2.0.6/arch/arm/armfeature.c:4:12: fatal error: sys/auxv.h: No such file or directory
    4 | #  include <sys/auxv.h>
      |            ^~~~~~~~~~~~
compilation terminated.

Fixes:

  http://autobuild.buildroot.net/results/1ac782825e897981d932b405ca60cd2ec4b3b8cb/

Signed-off-by: Ben Hutchings <ben.hutchings@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2022-07-22 22:59:53 +02:00

91 lines
2.9 KiB
Diff

From e1baa6b439c06f3d0e6be3e381cc746ffb55aee1 Mon Sep 17 00:00:00 2001
From: Mika Lindqvist <postmaster@raasu.org>
Date: Wed, 13 Apr 2022 01:22:29 +0300
Subject: [PATCH] Check that sys/auxv.h exists at configure time and add
preprocessor define for it. * Protect including sys/auxv.h in all relevant
files with the new preprocessor define * Test for both existence of both
sys/auxv.h and getauxval() with both cmake and configure
[Ben Hutchings: Backport to 2.0.6:
- Drop the s390 changes
- Change some filenames]
Backported from: e1baa6b439c06f3d0e6be3e381cc746ffb55aee1
Signed-off-by: Ben Hutchings <ben.hutchings@mind.be>
---
CMakeLists.txt | 4 ++++
arch/arm/armfeature.c | 2 +-
arch/power/power.c | 5 ++++-
configure | 13 +++++++++++++
4 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0dd196130..e4e4b7332 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -338,6 +338,10 @@ endif()
#
# Check for standard/system includes
#
+check_include_file(sys/auxv.h HAVE_SYS_AUXV_H)
+if(HAVE_SYS_AUXV_H)
+ add_definitions(-DHAVE_SYS_AUXV_H)
+endif()
check_include_file(sys/sdt.h HAVE_SYS_SDT_H)
if(HAVE_SYS_SDT_H)
add_definitions(-DHAVE_SYS_SDT_H)
diff --git a/arch/arm/arm_features.c b/arch/arm/arm_features.c
index 195c94992..f6b67687f 100644
--- a/arch/arm/armfeature.c
+++ b/arch/arm/armfeature.c
@@ -1,6 +1,6 @@
#include "../../zutil.h"
-#if defined(__linux__)
+#if defined(__linux__) && defined(HAVE_SYS_AUXV_H)
# include <sys/auxv.h>
# ifdef ARM_ASM_HWCAP
# include <asm/hwcap.h>
diff --git a/arch/power/power_features.c b/arch/power/power_features.c
index 9186b40d8..65599d9a7 100644
--- a/arch/power/power.c
+++ b/arch/power/power.c
@@ -1,9 +1,12 @@
/* POWER feature check
* Copyright (C) 2020 Matheus Castanho <msc@linux.ibm.com>, IBM
+ * Copyright (C) 2021-2022 Mika T. Lindqvist <postmaster@raasu.org>
* For conditions of distribution and use, see copyright notice in zlib.h
*/
-#include <sys/auxv.h>
+#ifdef HAVE_SYS_AUXV_H
+# include <sys/auxv.h>
+#endif
#include "../../zutil.h"
Z_INTERNAL int power_cpu_has_arch_2_07;
diff --git a/configure b/configure
index aed1909cc..a357e1c8a 100755
--- a/configure
+++ b/configure
@@ -776,6 +776,19 @@ else
echo "Checking for strerror... No." | tee -a configure.log
fi
+# check for getauxval() for architecture feature detection at run-time
+cat > $test.c <<EOF
+#include <sys/auxv.h>
+int main() { return getauxval(0); }
+EOF
+if try $CC $CFLAGS -o $test $test.c $LDSHAREDLIBC; then
+ echo "Checking for getauxval() in sys/auxv.h... Yes." | tee -a configure.log
+ CFLAGS="${CFLAGS} -DHAVE_SYS_AUXV_H"
+ SFLAGS="${SFLAGS} -DHAVE_SYS_AUXV_H"
+else
+ echo "Checking for getauxval() in sys/auxv.h... No." | tee -a configure.log
+fi
+
# We need to remove zconf.h from source directory if building outside of it
if [ "$SRCDIR" != "$BUILDDIR" ]; then
rm -f $SRCDIR/zconf${SUFFIX}.h