* [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 a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox