| Message ID | 20260202192055.1588477-1-yogesh.tyagi@intel.com |
|---|---|
| State | Under Review |
| Headers | show |
| Series | [meta-oe] abseil-cpp: Set CMAKE_CXX_STANDARD to 17 | expand |
> -----Original Message----- > From: openembedded-devel@lists.openembedded.org <openembedded-devel@lists.openembedded.org> On Behalf Of Yogesh Tyagi via lists.openembedded.org > Sent: den 2 februari 2026 20:17 > To: openembedded-devel@lists.openembedded.org > Cc: yogesh.tyagi@intel.com > Subject: [oe] [meta-oe][PATCH] abseil-cpp: Set CMAKE_CXX_STANDARD to 17 > > The compiler defaults to C++ < 17 which causes build failures. > Abseil requires C++17 or higher, so explicitly set CMAKE_CXX_STANDARD=17 > to ensure the build uses the correct C++ standard. > > Error: > CMake Error at CMake/AbseilDll.cmake:745 (message): > The compiler defaults to or is configured for C++ < 17. C++ >= 17 is > required and Abseil and all libraries that use Abseil must use the same C++ > language standard > > Signed-off-by: Yogesh Tyagi <yogesh.tyagi@intel.com> > --- > meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_20260107.0.bb | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_20260107.0.bb b/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_20260107.0.bb > index e2bce0be11..d4475ee73a 100644 > --- a/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_20260107.0.bb > +++ b/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_20260107.0.bb > @@ -21,6 +21,7 @@ inherit cmake > EXTRA_OECMAKE = "-DBUILD_SHARED_LIBS=ON \ > -DBUILD_TESTING=OFF \ > -DABSL_ENABLE_INSTALL=ON \ > + -DCMAKE_CXX_STANDARD=17 \ > " > # riscv32-yoe-linux-ld.lld: error: undefined reference: __atomic_store_8 > # >>> referenced by <recipe-sysroot>/usr/lib/libabsl_flags_internal.so.2505.0.0 (disallowed by --no-allow-shlib-undefined) > -- > 2.34.1 I am not sure this is the correct thing to do. This means that for target, you will now downgrade the C++ standard when building abseil. However, as it says, all libraries that use abseil must use the same C++ standard. This will thus no longer be the case, unless all users of abseil are also modified to use C++17. I believe the error you are seeing comes from building abseil-native, i.e., the native compiler you use uses an older C++ standard by default. But also in this case, just changing it for abseil is probably not the right thing to do. The correct solution, I believe, is to use a newer native compiler. This may mean that you will have to use a buildtools tarball unless you can upgrade your host system. //Peter
diff --git a/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_20260107.0.bb b/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_20260107.0.bb index e2bce0be11..d4475ee73a 100644 --- a/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_20260107.0.bb +++ b/meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_20260107.0.bb @@ -21,6 +21,7 @@ inherit cmake EXTRA_OECMAKE = "-DBUILD_SHARED_LIBS=ON \ -DBUILD_TESTING=OFF \ -DABSL_ENABLE_INSTALL=ON \ + -DCMAKE_CXX_STANDARD=17 \ " # riscv32-yoe-linux-ld.lld: error: undefined reference: __atomic_store_8 # >>> referenced by <recipe-sysroot>/usr/lib/libabsl_flags_internal.so.2505.0.0 (disallowed by --no-allow-shlib-undefined)
The compiler defaults to C++ < 17 which causes build failures. Abseil requires C++17 or higher, so explicitly set CMAKE_CXX_STANDARD=17 to ensure the build uses the correct C++ standard. Error: CMake Error at CMake/AbseilDll.cmake:745 (message): The compiler defaults to or is configured for C++ < 17. C++ >= 17 is required and Abseil and all libraries that use Abseil must use the same C++ language standard Signed-off-by: Yogesh Tyagi <yogesh.tyagi@intel.com> --- meta-oe/recipes-devtools/abseil-cpp/abseil-cpp_20260107.0.bb | 1 + 1 file changed, 1 insertion(+)