[libcxx-commits] [libcxx] [libcxx] Add OHOS support (PR #73114)
Pavel Kosov via libcxx-commits
libcxx-commits at lists.llvm.org
Wed Nov 22 11:49:40 PST 2023
https://github.com/kpdev updated https://github.com/llvm/llvm-project/pull/73114
>From 5ef728bfa6b86ad863059278f38cc6e6c2888532 Mon Sep 17 00:00:00 2001
From: Pavel Kosov <kpdev42 at gmail.com>
Date: Wed, 22 Nov 2023 16:02:59 +0300
Subject: [PATCH 1/3] [libcxx] Add OHOS support
Add support for OpenHarmony OS (OHOS)
OpenHarmony is an open-source project incubated and operated by the OpenAtom Foundation.
It targets IoT, and already used on production devices.
General OpenHarmony OS discussion on discourse thread:
"Add support for OpenHarmony OS"
https://discourse.llvm.org/t/rfc-add-support-for-openharmony-os/66656
LLVM and clang parts of OHOS support: D138202, D145227
Phabricator review: D146804
~~
Huawei RRI, OS Lab
---
libcxx/cmake/config-ix.cmake | 2 ++
libcxx/include/__config | 5 +++--
libcxx/include/__locale | 3 +++
libcxx/src/include/config_elast.h | 2 ++
libcxx/utils/ci/BOT_OWNERS.txt | 5 +++++
libcxx/utils/ci/buildkite-pipeline.yml | 11 +++++++++++
6 files changed, 26 insertions(+), 2 deletions(-)
diff --git a/libcxx/cmake/config-ix.cmake b/libcxx/cmake/config-ix.cmake
index a365517936e7565..c92fd0f8762ea98 100644
--- a/libcxx/cmake/config-ix.cmake
+++ b/libcxx/cmake/config-ix.cmake
@@ -103,6 +103,8 @@ elseif(APPLE)
set(LIBCXX_HAS_PTHREAD_LIB NO)
set(LIBCXX_HAS_RT_LIB NO)
set(LIBCXX_HAS_ATOMIC_LIB NO)
+elseif(OHOS)
+ set(LIBCXX_HAS_ATOMIC_LIB NO)
elseif(FUCHSIA)
set(LIBCXX_HAS_PTHREAD_LIB NO)
set(LIBCXX_HAS_RT_LIB NO)
diff --git a/libcxx/include/__config b/libcxx/include/__config
index e8da358bb8d7cd5..da5613fe189b8cb 100644
--- a/libcxx/include/__config
+++ b/libcxx/include/__config
@@ -1098,7 +1098,8 @@ __sanitizer_verify_double_ended_contiguous_container(const void*, const void*, c
defined(__APPLE__) || \
defined(__MVS__) || \
defined(_AIX) || \
- defined(__EMSCRIPTEN__)
+ defined(__EMSCRIPTEN__) || \
+ defined(__OHOS_FAMILY__)
// clang-format on
# define _LIBCPP_HAS_THREAD_API_PTHREAD
# elif defined(__Fuchsia__)
@@ -1176,7 +1177,7 @@ __sanitizer_verify_double_ended_contiguous_container(const void*, const void*, c
# endif
# if defined(__BIONIC__) || defined(__NuttX__) || defined(__Fuchsia__) || defined(__wasi__) || \
- defined(_LIBCPP_HAS_MUSL_LIBC) || defined(__OpenBSD__)
+ defined(_LIBCPP_HAS_MUSL_LIBC) || defined(__OpenBSD__) || defined(__OHOS_FAMILY__)
# define _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE
# endif
diff --git a/libcxx/include/__locale b/libcxx/include/__locale
index b1502dd71edadf6..c5d8fe72cdf9631 100644
--- a/libcxx/include/__locale
+++ b/libcxx/include/__locale
@@ -48,6 +48,9 @@
#elif defined(__wasi__)
// WASI libc uses musl's locales support.
# include <__support/musl/xlocale.h>
+#elif defined(__OHOS_FAMILY__)
+// LiteOS libc uses musl's locales support.
+# include <__support/musl/xlocale.h>
#elif defined(_LIBCPP_HAS_MUSL_LIBC)
# include <__support/musl/xlocale.h>
#endif
diff --git a/libcxx/src/include/config_elast.h b/libcxx/src/include/config_elast.h
index a772ea7a01bcefb..64a548f63c98282 100644
--- a/libcxx/src/include/config_elast.h
+++ b/libcxx/src/include/config_elast.h
@@ -29,6 +29,8 @@
// No _LIBCPP_ELAST needed on Fuchsia
#elif defined(__wasi__)
// No _LIBCPP_ELAST needed on WASI
+#elif defined(__OHOS_FAMILY__)
+// No _LIBCPP_ELAST needed on OHOS
#elif defined(__EMSCRIPTEN__)
// No _LIBCPP_ELAST needed on Emscripten
#elif defined(__linux__) || defined(_LIBCPP_HAS_MUSL_LIBC)
diff --git a/libcxx/utils/ci/BOT_OWNERS.txt b/libcxx/utils/ci/BOT_OWNERS.txt
index 721b19e52d8bcb1..1e624257d3dfd40 100644
--- a/libcxx/utils/ci/BOT_OWNERS.txt
+++ b/libcxx/utils/ci/BOT_OWNERS.txt
@@ -20,3 +20,8 @@ N: Android libc++
E: rprichard at google.com
H: rprichard
D: Emulator-based x86[-64] libc++ CI testing
+
+N: OpenHarmony libc++
+E: kosov.pavel at huawei.com
+H: kpdev42
+D: AArch64
diff --git a/libcxx/utils/ci/buildkite-pipeline.yml b/libcxx/utils/ci/buildkite-pipeline.yml
index 39db2bfc473813a..a72700c6d83add8 100644
--- a/libcxx/utils/ci/buildkite-pipeline.yml
+++ b/libcxx/utils/ci/buildkite-pipeline.yml
@@ -82,6 +82,10 @@ agents_definitions:
agents:
queue: libcxx-builders
os: android
+ _ohos_agent: &ohos_agent
+ agents:
+ queue: libcxx-builders
+ os: ohos
environment_definitions:
@@ -274,6 +278,13 @@ steps:
<<: *android_agent
<<: *common
+- group: ':ohos: OpenHarmony'
+ steps:
+ - label: OpenHarmony Aarch64
+ command: libcxx/utils/ci/run-buildbot aarch64-linux-ohos
+ soft_fail: true
+ <<: *ohos_agent
+ <<: *common
# TODO: Re-enable this once we've figured out how to run back-deployment testing on arm64 on recent OSes
# - label: "Apple back-deployment macosx11.0 arm64"
>From 755adf2556d5f524ab46892714211704c87f33dc Mon Sep 17 00:00:00 2001
From: Pavel Kosov <kpdev42 at gmail.com>
Date: Wed, 22 Nov 2023 20:56:24 +0300
Subject: [PATCH 2/3] [libcxx][ohos] Add ohos site to bot_owners file
---
libcxx/utils/ci/BOT_OWNERS.txt | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/libcxx/utils/ci/BOT_OWNERS.txt b/libcxx/utils/ci/BOT_OWNERS.txt
index 1e624257d3dfd40..e42b2513e4abec6 100644
--- a/libcxx/utils/ci/BOT_OWNERS.txt
+++ b/libcxx/utils/ci/BOT_OWNERS.txt
@@ -22,6 +22,7 @@ H: rprichard
D: Emulator-based x86[-64] libc++ CI testing
N: OpenHarmony libc++
+W: https://www.openharmony.cn/docs/en/overview
E: kosov.pavel at huawei.com
H: kpdev42
-D: AArch64
+D: AArch64 libc++ CI testing
>From 9ca108104dc030ffe976d82c3e1ea60399d5a482 Mon Sep 17 00:00:00 2001
From: Pavel Kosov <kpdev42 at gmail.com>
Date: Wed, 22 Nov 2023 22:48:40 +0300
Subject: [PATCH 3/3] [libcxx][ohos] Simplify ci group name
---
libcxx/utils/ci/buildkite-pipeline.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libcxx/utils/ci/buildkite-pipeline.yml b/libcxx/utils/ci/buildkite-pipeline.yml
index a72700c6d83add8..5312201eabe43a4 100644
--- a/libcxx/utils/ci/buildkite-pipeline.yml
+++ b/libcxx/utils/ci/buildkite-pipeline.yml
@@ -278,7 +278,7 @@ steps:
<<: *android_agent
<<: *common
-- group: ':ohos: OpenHarmony'
+- group: ' OpenHarmony'
steps:
- label: OpenHarmony Aarch64
command: libcxx/utils/ci/run-buildbot aarch64-linux-ohos
More information about the libcxx-commits
mailing list