* [PATCH] pulseaudio: Fix build with clang for non-x86 target
@ 2020-12-20 16:05 Khem Raj
2020-12-21 13:35 ` Tanu Kaskinen
0 siblings, 1 reply; 2+ messages in thread
From: Khem Raj @ 2020-12-20 16:05 UTC (permalink / raw)
To: openembedded-core; +Cc: Khem Raj, Tanu Kaskinen
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Cc: Tanu Kaskinen <tanuk@iki.fi>
---
.../0001-meson-Check-for-__get_cpuid.patch | 82 +++++++++++++++++++
.../pulseaudio/pulseaudio_14.0.bb | 1 +
2 files changed, 83 insertions(+)
create mode 100644 meta/recipes-multimedia/pulseaudio/pulseaudio/0001-meson-Check-for-__get_cpuid.patch
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-meson-Check-for-__get_cpuid.patch b/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-meson-Check-for-__get_cpuid.patch
new file mode 100644
index 0000000000..c9d8abcbf2
--- /dev/null
+++ b/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-meson-Check-for-__get_cpuid.patch
@@ -0,0 +1,82 @@
+From 9d0dc8aedd08d77797f90fa6075a59613f18bf0d Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 20 Dec 2020 07:56:07 -0800
+Subject: [PATCH] meson: Check for __get_cpuid
+
+checking for presence of cpuid.h header alone is not sufficient in some case to use
+cpuid related functions. e.g. when using clang which is built for
+multiple targets will have cpuid.h header as part of compiler headers in
+distribution but one maybe compiling pulseaudion for non-x86 target. The
+current check in meson succeeds and then compile fails later because
+cpuid.h is x86-specific header. Therefore checking for symbol that is
+needed makes this robust, so even if header exist it will try to ensure
+the given symbol can be used
+
+Fixes
+src/pulsecore/core-util.c:113:
+| /mnt/b/yoe/master/build/tmp/work/riscv64-yoe-linux/pulseaudio/14.0-r0/recipe-sysroot-native/usr/lib/clang/11.0.1/include/cpuid.h:11:2: error: this header is for x86 only
+| #error this header is for x86 only
+| ^
+
+Upstream-Status: Pending
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Cc: Tanu Kaskinen <tanuk@iki.fi>
+---
+ meson.build | 5 ++++-
+ src/pulsecore/core-util.c | 2 +-
+ src/pulsecore/cpu-x86.c | 2 +-
+ 3 files changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index 2589627..5f5127e 100644
+--- a/meson.build
++++ b/meson.build
+@@ -185,7 +185,6 @@ endif
+ check_headers = [
+ 'arpa/inet.h',
+ 'byteswap.h',
+- 'cpuid.h',
+ 'dlfcn.h',
+ 'execinfo.h',
+ 'grp.h',
+@@ -243,6 +242,10 @@ if cc.has_header_symbol('pthread.h', 'PTHREAD_PRIO_INHERIT')
+ cdata.set('HAVE_PTHREAD_PRIO_INHERIT', 1)
+ endif
+
++if cc.has_header_symbol('cpuid.h', '__get_cpuid')
++ cdata.set('HAVE_GET_CPUID', 1)
++endif
++
+ # Functions
+
+ check_functions = [
+diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c
+index 601b1d1..6f34e7c 100644
+--- a/src/pulsecore/core-util.c
++++ b/src/pulsecore/core-util.c
+@@ -109,7 +109,7 @@
+ #include <sys/personality.h>
+ #endif
+
+-#ifdef HAVE_CPUID_H
++#ifdef HAVE_GET_CPUID
+ #include <cpuid.h>
+ #endif
+
+diff --git a/src/pulsecore/cpu-x86.c b/src/pulsecore/cpu-x86.c
+index 4e59e14..86595d4 100644
+--- a/src/pulsecore/cpu-x86.c
++++ b/src/pulsecore/cpu-x86.c
+@@ -24,7 +24,7 @@
+
+ #include <stdint.h>
+
+-#ifdef HAVE_CPUID_H
++#ifdef HAVE_GET_CPUID
+ #include <cpuid.h>
+ #endif
+
+--
+2.29.2
+
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio_14.0.bb b/meta/recipes-multimedia/pulseaudio/pulseaudio_14.0.bb
index 63ef3a9c12..fccca1ba48 100644
--- a/meta/recipes-multimedia/pulseaudio/pulseaudio_14.0.bb
+++ b/meta/recipes-multimedia/pulseaudio/pulseaudio_14.0.bb
@@ -4,6 +4,7 @@ SRC_URI = "http://freedesktop.org/software/pulseaudio/releases/${BP}.tar.xz \
file://0001-client-conf-Add-allow-autospawn-for-root.patch \
file://0002-do-not-display-CLFAGS-to-improve-reproducibility-bui.patch \
file://0001-build-sys-Add-an-option-for-enabling-disabling-Valgr.patch \
+ file://0001-meson-Check-for-__get_cpuid.patch \
file://volatiles.04_pulse \
"
SRC_URI[md5sum] = "84a7776e63dd55c40db8fbd7c7e2e18e"
--
2.29.2
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] pulseaudio: Fix build with clang for non-x86 target
2020-12-20 16:05 [PATCH] pulseaudio: Fix build with clang for non-x86 target Khem Raj
@ 2020-12-21 13:35 ` Tanu Kaskinen
0 siblings, 0 replies; 2+ messages in thread
From: Tanu Kaskinen @ 2020-12-21 13:35 UTC (permalink / raw)
To: Khem Raj, openembedded-core
On Sun, 2020-12-20 at 08:05 -0800, Khem Raj wrote:
> Signed-off-by: Khem Raj <raj.khem@gmail.com>
> Cc: Tanu Kaskinen <tanuk@iki.fi>
> ---
> .../0001-meson-Check-for-__get_cpuid.patch | 82 +++++++++++++++++++
> .../pulseaudio/pulseaudio_14.0.bb | 1 +
> 2 files changed, 83 insertions(+)
> create mode 100644 meta/recipes-multimedia/pulseaudio/pulseaudio/0001-meson-Check-for-__get_cpuid.patch
>
> diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-meson-Check-for-__get_cpuid.patch b/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-meson-Check-for-__get_cpuid.patch
> new file mode 100644
> index 0000000000..c9d8abcbf2
> --- /dev/null
> +++ b/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-meson-Check-for-__get_cpuid.patch
> @@ -0,0 +1,82 @@
> +From 9d0dc8aedd08d77797f90fa6075a59613f18bf0d Mon Sep 17 00:00:00 2001
> +From: Khem Raj <raj.khem@gmail.com>
> +Date: Sun, 20 Dec 2020 07:56:07 -0800
> +Subject: [PATCH] meson: Check for __get_cpuid
> +
> +checking for presence of cpuid.h header alone is not sufficient in some case to use
> +cpuid related functions. e.g. when using clang which is built for
> +multiple targets will have cpuid.h header as part of compiler headers in
> +distribution but one maybe compiling pulseaudion for non-x86 target. The
> +current check in meson succeeds and then compile fails later because
> +cpuid.h is x86-specific header. Therefore checking for symbol that is
> +needed makes this robust, so even if header exist it will try to ensure
> +the given symbol can be used
> +
> +Fixes
> +src/pulsecore/core-util.c:113:
> +| /mnt/b/yoe/master/build/tmp/work/riscv64-yoe-linux/pulseaudio/14.0-r0/recipe-sysroot-native/usr/lib/clang/11.0.1/include/cpuid.h:11:2: error: this header is for x86 only
> +| #error this header is for x86 only
> +| ^
> +
> +Upstream-Status: Pending
> +
> +Signed-off-by: Khem Raj <raj.khem@gmail.com>
> +Cc: Tanu Kaskinen <tanuk@iki.fi>
> +---
> + meson.build | 5 ++++-
> + src/pulsecore/core-util.c | 2 +-
> + src/pulsecore/cpu-x86.c | 2 +-
> + 3 files changed, 6 insertions(+), 3 deletions(-)
> +
> +diff --git a/meson.build b/meson.build
> +index 2589627..5f5127e 100644
> +--- a/meson.build
> ++++ b/meson.build
> +@@ -185,7 +185,6 @@ endif
> + check_headers = [
> + 'arpa/inet.h',
> + 'byteswap.h',
> +- 'cpuid.h',
> + 'dlfcn.h',
> + 'execinfo.h',
> + 'grp.h',
> +@@ -243,6 +242,10 @@ if cc.has_header_symbol('pthread.h', 'PTHREAD_PRIO_INHERIT')
> + cdata.set('HAVE_PTHREAD_PRIO_INHERIT', 1)
> + endif
> +
> ++if cc.has_header_symbol('cpuid.h', '__get_cpuid')
> ++ cdata.set('HAVE_GET_CPUID', 1)
> ++endif
> ++
> + # Functions
> +
> + check_functions = [
> +diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c
> +index 601b1d1..6f34e7c 100644
> +--- a/src/pulsecore/core-util.c
> ++++ b/src/pulsecore/core-util.c
> +@@ -109,7 +109,7 @@
> + #include <sys/personality.h>
> + #endif
> +
> +-#ifdef HAVE_CPUID_H
> ++#ifdef HAVE_GET_CPUID
> + #include <cpuid.h>
> + #endif
> +
> +diff --git a/src/pulsecore/cpu-x86.c b/src/pulsecore/cpu-x86.c
> +index 4e59e14..86595d4 100644
> +--- a/src/pulsecore/cpu-x86.c
> ++++ b/src/pulsecore/cpu-x86.c
> +@@ -24,7 +24,7 @@
> +
> + #include <stdint.h>
> +
> +-#ifdef HAVE_CPUID_H
> ++#ifdef HAVE_GET_CPUID
There are more instances of HAVE_CPUID_H in core-util.c and cpu-x86.c,
they all need to be replaced with HAVE_GET_CPUID. Could you update the
patch?
When upstreaming, I think this change needs to be ported to the
Autotools build system too as long as it exists in PulseAudio, but I
can take care of that.
--
Tanu
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2020-12-21 13:36 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-20 16:05 [PATCH] pulseaudio: Fix build with clang for non-x86 target Khem Raj
2020-12-21 13:35 ` Tanu Kaskinen
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.