[Buildroot] [PATCH v2] package/libcamera: fix build failure due to lack of sys/auxv.h and getauxval()

Giulio Benetti giulio.benetti at micronovasrl.com
Tue Apr 23 16:02:30 UTC 2019


On some libc sys/auxv.h and getauxval() could not be present.

Add patch to check if they are present or not.

Fixes:
http://autobuild.buildroot.net/results/80484849540786b913e353077cc4ff7c6443a4ca/

Signed-off-by: Giulio Benetti <giulio.benetti at micronovasrl.com>
---
Changes:
V1 -> V2: removed useless newlines in patch

 ...when-sys-auxv.h-and-getauxval-are-no.patch | 71 +++++++++++++++++++
 1 file changed, 71 insertions(+)
 create mode 100644 package/libcamera/0001-meson-fix-build-when-sys-auxv.h-and-getauxval-are-no.patch

diff --git a/package/libcamera/0001-meson-fix-build-when-sys-auxv.h-and-getauxval-are-no.patch b/package/libcamera/0001-meson-fix-build-when-sys-auxv.h-and-getauxval-are-no.patch
new file mode 100644
index 0000000000..332a95ad76
--- /dev/null
+++ b/package/libcamera/0001-meson-fix-build-when-sys-auxv.h-and-getauxval-are-no.patch
@@ -0,0 +1,71 @@
+From cf9f63e63658d4df979e02708e435b9175a6c4f6 Mon Sep 17 00:00:00 2001
+From: Giulio Benetti <giulio.benetti at micronovasrl.com>
+Date: Tue, 23 Apr 2019 12:50:15 +0200
+Subject: [PATCH] meson: fix build when sys/auxv.h and getauxval() are not
+ present
+
+On some libc sys/auxv.h could not be present and getauxval() too.
+This way build will fail.
+
+Check in meson if they are present and add HAVE_SYS_AUXV_H and
+HAVE_GETAUXVAL defines to cxx arguments.
+Add #ifdef HAVE_ statements around #include <sys/auxv.h> and getauxval()
+in utils.cpp.
+
+Signed-off-by: Giulio Benetti <giulio.benetti at micronovasrl.com>
+---
+ meson.build             | 12 ++++++++++++
+ src/libcamera/utils.cpp |  4 ++++
+ 2 files changed, 16 insertions(+)
+
+diff --git a/meson.build b/meson.build
+index 6e68c3e..72a3652 100644
+--- a/meson.build
++++ b/meson.build
+@@ -20,6 +20,18 @@ common_arguments = [
+ c_arguments = common_arguments
+ cpp_arguments = common_arguments
+ 
++cxx = meson.get_compiler('cpp')
++
++# check for header sys/auxv.h
++if cxx.has_header('sys/auxv.h')
++  cpp_arguments += ['-DHAVE_SYS_AUXV_H']
++endif
++
++# check for function getauxval()
++if cxx.has_function('getauxval')
++  cpp_arguments += ['-DHAVE_GETAUXVAL']
++endif
++
+ add_project_arguments(c_arguments, language: 'c')
+ add_project_arguments(cpp_arguments, language: 'cpp')
+ 
+diff --git a/src/libcamera/utils.cpp b/src/libcamera/utils.cpp
+index cd0fd76..0fa915b 100644
+--- a/src/libcamera/utils.cpp
++++ b/src/libcamera/utils.cpp
+@@ -6,7 +6,9 @@
+  */
+ 
+ #include <string.h>
++#ifdef HAVE_SYS_AUXV_H
+ #include <sys/auxv.h>
++#endif
+ 
+ #include "utils.h"
+ 
+@@ -57,8 +59,10 @@ const char *basename(const char *path)
+  */
+ char *secure_getenv(const char *name)
+ {
++#ifdef HAVE_GETAUXVAL
+ 	if (getauxval(AT_SECURE))
+ 		return NULL;
++#endif
+ 
+ 	return getenv(name);
+ }
+-- 
+2.17.1
+
-- 
2.17.1



More information about the buildroot mailing list