* [meta-oe][PATCH v2] abseil-cpp: add recipe for git version
@ 2020-02-10 17:47 Sinan Kaya
2020-02-10 18:17 ` Andrey Zhizhikin
0 siblings, 1 reply; 7+ messages in thread
From: Sinan Kaya @ 2020-02-10 17:47 UTC (permalink / raw)
To: openembedded-devel; +Cc: Sinan Kaya, Changyu Li
The repository contains the Abseil C++ library code. Abseil is an
open-source collection of C++ code (compliant to C++11) designed to
augment the C++ standard library.
https://github.com/abseil/abseil-cpp
Signed-off-by: Changyu Li <Changyu.Li@microsoft.com>
Signed-off-by: Sinan Kaya <sinan.kaya@microsoft.com>
---
...e-maes-option-from-cross-compilation.patch | 53 +++++++++++++++++++
.../abseil-cpp/abseil-cpp_git.bb | 42 +++++++++++++++
2 files changed, 95 insertions(+)
create mode 100644 meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0001-Remove-maes-option-from-cross-compilation.patch
create mode 100644 meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_git.bb
diff --git a/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0001-Remove-maes-option-from-cross-compilation.patch b/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0001-Remove-maes-option-from-cross-compilation.patch
new file mode 100644
index 0000000000..4c41cd8902
--- /dev/null
+++ b/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0001-Remove-maes-option-from-cross-compilation.patch
@@ -0,0 +1,53 @@
+From 70926666f7c5c35add363e3bcade6eaabace7206 Mon Sep 17 00:00:00 2001
+From: Sinan Kaya <sinan.kaya@microsoft.com>
+Date: Mon, 3 Feb 2020 03:25:57 +0000
+Subject: [PATCH] Remove maes option from cross-compilation
+
+---
+ absl/copts/GENERATED_AbseilCopts.cmake | 4 ----
+ absl/copts/GENERATED_copts.bzl | 4 ----
+ absl/copts/copts.py | 4 ----
+ 3 files changed, 12 deletions(-)
+
+diff --git a/absl/copts/GENERATED_AbseilCopts.cmake b/absl/copts/GENERATED_AbseilCopts.cmake
+index 01bd40b..af99694 100644
+--- a/absl/copts/GENERATED_AbseilCopts.cmake
++++ b/absl/copts/GENERATED_AbseilCopts.cmake
+@@ -230,7 +230,3 @@ list(APPEND ABSL_RANDOM_HWAES_MSVC_X64_FLAGS
+ "/Ob2"
+ )
+
+-list(APPEND ABSL_RANDOM_HWAES_X64_FLAGS
+- "-maes"
+- "-msse4.1"
+-)
+diff --git a/absl/copts/GENERATED_copts.bzl b/absl/copts/GENERATED_copts.bzl
+index 82f332f..9a548d1 100644
+--- a/absl/copts/GENERATED_copts.bzl
++++ b/absl/copts/GENERATED_copts.bzl
+@@ -231,7 +231,3 @@ ABSL_RANDOM_HWAES_MSVC_X64_FLAGS = [
+ "/Ob2",
+ ]
+
+-ABSL_RANDOM_HWAES_X64_FLAGS = [
+- "-maes",
+- "-msse4.1",
+-]
+diff --git a/absl/copts/copts.py b/absl/copts/copts.py
+index 068abce..c2f70fb 100644
+--- a/absl/copts/copts.py
++++ b/absl/copts/copts.py
+@@ -203,10 +203,6 @@ COPT_VARS = {
+ # to improve performance of some random bit generators.
+ "ABSL_RANDOM_HWAES_ARM64_FLAGS": ["-march=armv8-a+crypto"],
+ "ABSL_RANDOM_HWAES_ARM32_FLAGS": ["-mfpu=neon"],
+- "ABSL_RANDOM_HWAES_X64_FLAGS": [
+- "-maes",
+- "-msse4.1",
+- ],
+ "ABSL_RANDOM_HWAES_MSVC_X64_FLAGS": [
+ "/O2", # Maximize speed
+ "/Ob2", # Aggressive inlining
+--
+2.23.0
+
diff --git a/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_git.bb b/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_git.bb
new file mode 100644
index 0000000000..5090dc9fae
--- /dev/null
+++ b/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_git.bb
@@ -0,0 +1,42 @@
+SUMMARY = "Abseil is a cpp library like STL"
+DESCRIPTION = "Abseil provides pieces missing from the C++ standard. Contains \
+additional useful libraries like algorithm, container, debugging, hash, memory, \
+meta, numeric, strings, synchronization, time, types and utility"
+HOMEPAGE = "https://abseil.io/"
+SECTION = "libs"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=df52c6edb7adc22e533b2bacc3bd3915"
+
+SRCREV = "aa844899c937bde5d2b24f276b59997e5b668bde"
+BRANCH = "lts_2019_08_08"
+SRC_URI = "git://github.com/abseil/abseil-cpp;branch=${BRANCH} \
+ file://0001-Remove-maes-option-from-cross-compilation.patch \
+ "
+
+S = "${WORKDIR}/git"
+
+TARGET_CXXFLAGS += "${@bb.utils.contains('TARGET_ARCH', 'aarch64', ' -march=armv8-a+crypto', '', d)}"
+TARGET_CXXFLAGS += "${@bb.utils.contains('TARGET_ARCH', 'x64', ' -maes -msse4.1', '', d)}"
+
+CXXFLAGS_append = " -fPIC"
+ASNEEDED_class-native = ""
+ASNEEDED_class-nativesdk = ""
+
+inherit cmake
+
+BBCLASSEXTEND = "native nativesdk"
+ALLOW_EMPTY_${PN} = "1"
+
+python () {
+ arch = d.getVar("TARGET_ARCH")
+
+ if arch == "aarch64":
+ tunes = d.getVar("TUNE_FEATURES")
+ if not tunes:
+ return
+ pkgn = d.getVar("PN")
+ pkgv = d.getVar("PV")
+ if "crypto" not in tunes:
+ raise bb.parse.SkipPackage("%s-%s Needs support for crypto on armv8" % (pkgn, pkgv))
+}
+
--
2.23.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [meta-oe][PATCH v2] abseil-cpp: add recipe for git version
2020-02-10 17:47 [meta-oe][PATCH v2] abseil-cpp: add recipe for git version Sinan Kaya
@ 2020-02-10 18:17 ` Andrey Zhizhikin
2020-02-10 19:31 ` Sinan Kaya
0 siblings, 1 reply; 7+ messages in thread
From: Andrey Zhizhikin @ 2020-02-10 18:17 UTC (permalink / raw)
To: Sinan Kaya; +Cc: Sinan Kaya, openembeded-devel, Changyu Li
On Mon, Feb 10, 2020 at 6:47 PM Sinan Kaya <okaya@kernel.org> wrote:
>
> The repository contains the Abseil C++ library code. Abseil is an
> open-source collection of C++ code (compliant to C++11) designed to
> augment the C++ standard library.
>
> https://github.com/abseil/abseil-cpp
>
> Signed-off-by: Changyu Li <Changyu.Li@microsoft.com>
> Signed-off-by: Sinan Kaya <sinan.kaya@microsoft.com>
> ---
> ...e-maes-option-from-cross-compilation.patch | 53 +++++++++++++++++++
> .../abseil-cpp/abseil-cpp_git.bb | 42 +++++++++++++++
> 2 files changed, 95 insertions(+)
> create mode 100644 meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0001-Remove-maes-option-from-cross-compilation.patch
> create mode 100644 meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_git.bb
>
> diff --git a/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0001-Remove-maes-option-from-cross-compilation.patch b/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0001-Remove-maes-option-from-cross-compilation.patch
> new file mode 100644
> index 0000000000..4c41cd8902
> --- /dev/null
> +++ b/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp/0001-Remove-maes-option-from-cross-compilation.patch
> @@ -0,0 +1,53 @@
> +From 70926666f7c5c35add363e3bcade6eaabace7206 Mon Sep 17 00:00:00 2001
> +From: Sinan Kaya <sinan.kaya@microsoft.com>
> +Date: Mon, 3 Feb 2020 03:25:57 +0000
> +Subject: [PATCH] Remove maes option from cross-compilation
> +
> +---
> + absl/copts/GENERATED_AbseilCopts.cmake | 4 ----
> + absl/copts/GENERATED_copts.bzl | 4 ----
> + absl/copts/copts.py | 4 ----
> + 3 files changed, 12 deletions(-)
> +
> +diff --git a/absl/copts/GENERATED_AbseilCopts.cmake b/absl/copts/GENERATED_AbseilCopts.cmake
> +index 01bd40b..af99694 100644
> +--- a/absl/copts/GENERATED_AbseilCopts.cmake
> ++++ b/absl/copts/GENERATED_AbseilCopts.cmake
> +@@ -230,7 +230,3 @@ list(APPEND ABSL_RANDOM_HWAES_MSVC_X64_FLAGS
> + "/Ob2"
> + )
> +
> +-list(APPEND ABSL_RANDOM_HWAES_X64_FLAGS
> +- "-maes"
> +- "-msse4.1"
> +-)
> +diff --git a/absl/copts/GENERATED_copts.bzl b/absl/copts/GENERATED_copts.bzl
> +index 82f332f..9a548d1 100644
> +--- a/absl/copts/GENERATED_copts.bzl
> ++++ b/absl/copts/GENERATED_copts.bzl
> +@@ -231,7 +231,3 @@ ABSL_RANDOM_HWAES_MSVC_X64_FLAGS = [
> + "/Ob2",
> + ]
> +
> +-ABSL_RANDOM_HWAES_X64_FLAGS = [
> +- "-maes",
> +- "-msse4.1",
> +-]
> +diff --git a/absl/copts/copts.py b/absl/copts/copts.py
> +index 068abce..c2f70fb 100644
> +--- a/absl/copts/copts.py
> ++++ b/absl/copts/copts.py
> +@@ -203,10 +203,6 @@ COPT_VARS = {
> + # to improve performance of some random bit generators.
> + "ABSL_RANDOM_HWAES_ARM64_FLAGS": ["-march=armv8-a+crypto"],
> + "ABSL_RANDOM_HWAES_ARM32_FLAGS": ["-mfpu=neon"],
> +- "ABSL_RANDOM_HWAES_X64_FLAGS": [
> +- "-maes",
> +- "-msse4.1",
> +- ],
> + "ABSL_RANDOM_HWAES_MSVC_X64_FLAGS": [
> + "/O2", # Maximize speed
> + "/Ob2", # Aggressive inlining
> +--
> +2.23.0
> +
> diff --git a/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_git.bb b/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_git.bb
> new file mode 100644
> index 0000000000..5090dc9fae
> --- /dev/null
> +++ b/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_git.bb
> @@ -0,0 +1,42 @@
> +SUMMARY = "Abseil is a cpp library like STL"
> +DESCRIPTION = "Abseil provides pieces missing from the C++ standard. Contains \
> +additional useful libraries like algorithm, container, debugging, hash, memory, \
> +meta, numeric, strings, synchronization, time, types and utility"
> +HOMEPAGE = "https://abseil.io/"
> +SECTION = "libs"
> +LICENSE = "Apache-2.0"
> +LIC_FILES_CHKSUM = "file://LICENSE;md5=df52c6edb7adc22e533b2bacc3bd3915"
> +
> +SRCREV = "aa844899c937bde5d2b24f276b59997e5b668bde"
> +BRANCH = "lts_2019_08_08"
> +SRC_URI = "git://github.com/abseil/abseil-cpp;branch=${BRANCH} \
> + file://0001-Remove-maes-option-from-cross-compilation.patch \
> + "
> +
> +S = "${WORKDIR}/git"
> +
> +TARGET_CXXFLAGS += "${@bb.utils.contains('TARGET_ARCH', 'aarch64', ' -march=armv8-a+crypto', '', d)}"
This cannot be enforced, as it would break those AArch64 derivatives,
which does not have Crypto extension. See my comment above, where I
extracted 2 sets of tune features for Cortex-A53. That means that
there are SoCs there from different vendors, and some vendors decided
to license Crypto extensions from ARM to include it in their RTL, but
some opted out to save either space on a die or cost of the processor.
If you would base your build with '+crypto' unconditionally, then the
binary would segfault on those SoCs which has Crypto opted out.
Moreover, enabling crypto extension in GCC automatically enables
inlined NEON and VFP opcodes (see [1]), and there are more side
effects to be expected on those SOCs which does not have those
integrated.
> +TARGET_CXXFLAGS += "${@bb.utils.contains('TARGET_ARCH', 'x64', ' -maes -msse4.1', '', d)}"
> +
> +CXXFLAGS_append = " -fPIC"
> +ASNEEDED_class-native = ""
> +ASNEEDED_class-nativesdk = ""
> +
> +inherit cmake
> +
> +BBCLASSEXTEND = "native nativesdk"
> +ALLOW_EMPTY_${PN} = "1"
> +
> +python () {
> + arch = d.getVar("TARGET_ARCH")
> +
> + if arch == "aarch64":
> + tunes = d.getVar("TUNE_FEATURES")
> + if not tunes:
> + return
> + pkgn = d.getVar("PN")
> + pkgv = d.getVar("PV")
> + if "crypto" not in tunes:
> + raise bb.parse.SkipPackage("%s-%s Needs support for crypto on armv8" % (pkgn, pkgv))
> +}
> +
> --
> 2.23.0
>
> --
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-devel
[1]: https://gcc.gnu.org/onlinedocs/gcc/AArch64-Options.html#aarch64-feature-modifiers
--
Regards,
Andrey.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [meta-oe][PATCH v2] abseil-cpp: add recipe for git version
2020-02-10 18:17 ` Andrey Zhizhikin
@ 2020-02-10 19:31 ` Sinan Kaya
2020-02-10 19:36 ` Khem Raj
0 siblings, 1 reply; 7+ messages in thread
From: Sinan Kaya @ 2020-02-10 19:31 UTC (permalink / raw)
To: Andrey Zhizhikin; +Cc: Sinan Kaya, openembeded-devel, Changyu Li
On 2/10/2020 1:17 PM, Andrey Zhizhikin wrote:
>> +TARGET_CXXFLAGS += "${@bb.utils.contains('TARGET_ARCH', 'aarch64', '
>> -march=armv8-a+crypto', '', d)}"
> This cannot be enforced, as it would break those AArch64 derivatives,
> which does not have Crypto extension. See my comment above, where I
> extracted 2 sets of tune features for Cortex-A53. That means that
> there are SoCs there from different vendors, and some vendors decided
> to license Crypto extensions from ARM to include it in their RTL, but
> some opted out to save either space on a die or cost of the processor.
>
> If you would base your build with '+crypto' unconditionally, then the
> binary would segfault on those SoCs which has Crypto opted out.
>
> Moreover, enabling crypto extension in GCC automatically enables
> inlined NEON and VFP opcodes (see [1]), and there are more side
> effects to be expected on those SOCs which does not have those
> integrated.
>
I agree. I dropped this line on v3.
I was curious about
TARGET_CXXFLAGS += "${@bb.utils.contains('TARGET_ARCH', 'x64', ' -maes
-msse4.1', '', d)}"
do we have a feature flag for this too?
Code doesn't compile without arch crypt support.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [meta-oe][PATCH v2] abseil-cpp: add recipe for git version
2020-02-10 19:31 ` Sinan Kaya
@ 2020-02-10 19:36 ` Khem Raj
2020-02-11 7:06 ` Khem Raj
2020-02-11 16:43 ` Sinan Kaya
0 siblings, 2 replies; 7+ messages in thread
From: Khem Raj @ 2020-02-10 19:36 UTC (permalink / raw)
To: Sinan Kaya; +Cc: Sinan Kaya, openembeded-devel, Changyu Li
On Mon, Feb 10, 2020 at 11:31 AM Sinan Kaya <okaya@kernel.org> wrote:
>
> On 2/10/2020 1:17 PM, Andrey Zhizhikin wrote:
> >> +TARGET_CXXFLAGS += "${@bb.utils.contains('TARGET_ARCH', 'aarch64', '
> >> -march=armv8-a+crypto', '', d)}"
> > This cannot be enforced, as it would break those AArch64 derivatives,
> > which does not have Crypto extension. See my comment above, where I
> > extracted 2 sets of tune features for Cortex-A53. That means that
> > there are SoCs there from different vendors, and some vendors decided
> > to license Crypto extensions from ARM to include it in their RTL, but
> > some opted out to save either space on a die or cost of the processor.
> >
> > If you would base your build with '+crypto' unconditionally, then the
> > binary would segfault on those SoCs which has Crypto opted out.
> >
> > Moreover, enabling crypto extension in GCC automatically enables
> > inlined NEON and VFP opcodes (see [1]), and there are more side
> > effects to be expected on those SOCs which does not have those
> > integrated.
> >
>
> I agree. I dropped this line on v3.
>
> I was curious about
>
> TARGET_CXXFLAGS += "${@bb.utils.contains('TARGET_ARCH', 'x64', ' -maes
> -msse4.1', '', d)}"
>
> do we have a feature flag for this too?
>
perhaps look for corei7 in TUNE_FEATURES
> Code doesn't compile without arch crypt support.
> --
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-devel
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [meta-oe][PATCH v2] abseil-cpp: add recipe for git version
2020-02-10 19:36 ` Khem Raj
@ 2020-02-11 7:06 ` Khem Raj
2020-02-11 16:41 ` Sinan Kaya
2020-02-11 16:43 ` Sinan Kaya
1 sibling, 1 reply; 7+ messages in thread
From: Khem Raj @ 2020-02-11 7:06 UTC (permalink / raw)
To: Sinan Kaya; +Cc: Sinan Kaya, openembeded-devel, Changyu Li
also fails on x86/musl
http://errors.yoctoproject.org/Errors/Details/390565/
On Mon, Feb 10, 2020 at 11:36 AM Khem Raj <raj.khem@gmail.com> wrote:
>
> On Mon, Feb 10, 2020 at 11:31 AM Sinan Kaya <okaya@kernel.org> wrote:
> >
> > On 2/10/2020 1:17 PM, Andrey Zhizhikin wrote:
> > >> +TARGET_CXXFLAGS += "${@bb.utils.contains('TARGET_ARCH', 'aarch64', '
> > >> -march=armv8-a+crypto', '', d)}"
> > > This cannot be enforced, as it would break those AArch64 derivatives,
> > > which does not have Crypto extension. See my comment above, where I
> > > extracted 2 sets of tune features for Cortex-A53. That means that
> > > there are SoCs there from different vendors, and some vendors decided
> > > to license Crypto extensions from ARM to include it in their RTL, but
> > > some opted out to save either space on a die or cost of the processor.
> > >
> > > If you would base your build with '+crypto' unconditionally, then the
> > > binary would segfault on those SoCs which has Crypto opted out.
> > >
> > > Moreover, enabling crypto extension in GCC automatically enables
> > > inlined NEON and VFP opcodes (see [1]), and there are more side
> > > effects to be expected on those SOCs which does not have those
> > > integrated.
> > >
> >
> > I agree. I dropped this line on v3.
> >
> > I was curious about
> >
> > TARGET_CXXFLAGS += "${@bb.utils.contains('TARGET_ARCH', 'x64', ' -maes
> > -msse4.1', '', d)}"
> >
> > do we have a feature flag for this too?
> >
>
> perhaps look for corei7 in TUNE_FEATURES
>
> > Code doesn't compile without arch crypt support.
> > --
> > _______________________________________________
> > Openembedded-devel mailing list
> > Openembedded-devel@lists.openembedded.org
> > http://lists.openembedded.org/mailman/listinfo/openembedded-devel
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [meta-oe][PATCH v2] abseil-cpp: add recipe for git version
2020-02-11 7:06 ` Khem Raj
@ 2020-02-11 16:41 ` Sinan Kaya
0 siblings, 0 replies; 7+ messages in thread
From: Sinan Kaya @ 2020-02-11 16:41 UTC (permalink / raw)
To: Khem Raj; +Cc: Sinan Kaya, openembeded-devel, Changyu Li
On 2/11/2020 2:06 AM, Khem Raj wrote:
> also fails on x86/musl
>
> http://errors.yoctoproject.org/Errors/Details/390565/
Upstream bug. Posted v4.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [meta-oe][PATCH v2] abseil-cpp: add recipe for git version
2020-02-10 19:36 ` Khem Raj
2020-02-11 7:06 ` Khem Raj
@ 2020-02-11 16:43 ` Sinan Kaya
1 sibling, 0 replies; 7+ messages in thread
From: Sinan Kaya @ 2020-02-11 16:43 UTC (permalink / raw)
To: Khem Raj; +Cc: Sinan Kaya, openembeded-devel, Changyu Li
On 2/10/2020 2:36 PM, Khem Raj wrote:
>> do we have a feature flag for this too?
>>
> perhaps look for corei7 in TUNE_FEATURES
>
done
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2020-02-11 16:43 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-10 17:47 [meta-oe][PATCH v2] abseil-cpp: add recipe for git version Sinan Kaya
2020-02-10 18:17 ` Andrey Zhizhikin
2020-02-10 19:31 ` Sinan Kaya
2020-02-10 19:36 ` Khem Raj
2020-02-11 7:06 ` Khem Raj
2020-02-11 16:41 ` Sinan Kaya
2020-02-11 16:43 ` Sinan Kaya
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.