From fc9f68fd8a1d9c27f6dc08d924c8f6dcaa7cf198 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bernhard=20Rosenkr=C3=A4nzer?=
 <bernhard.rosenkraenzer.ext@huawei.com>
Date: Thu, 4 Aug 2022 13:40:21 +0200
Subject: [PATCH] openharmony: Initial support for building on 64-bit targets
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Bernhard Rosenkränzer <bernhard.rosenkraenzer.ext@huawei.com>
---
 .../openharmony/openharmony-standard_3.0.bb   | 27 ++++++++++++++-----
 1 file changed, 21 insertions(+), 6 deletions(-)

diff --git a/recipes-openharmony/openharmony/openharmony-standard_3.0.bb b/recipes-openharmony/openharmony/openharmony-standard_3.0.bb
index 5a280a70..59aedc49 100644
--- a/recipes-openharmony/openharmony/openharmony-standard_3.0.bb
+++ b/recipes-openharmony/openharmony/openharmony-standard_3.0.bb
@@ -70,9 +70,24 @@ inherit python3native gn_base ptest
 
 B = "${S}/out/ohos-arm-release"
 
-COMPATIBLE_MACHINE = "qemuarm"
-
-OHOS_DEVICE_CPU_ARCH = "arm"
+COMPATIBLE_MACHINE = "(qemuarm|qemuarm64|raspberrypi4-64)"
+
+def get_ohos_arch(d):
+    arch = get_musl_loader_arch(d)
+    if arch.startswith("aarch64"):
+        return "arm64"
+    elif arch.startswith("arm"):
+        return "arm"
+    return arch
+
+def get_ohos_libdir(d):
+    if get_ohos_arch(d).endswith("64"):
+        return "lib64"
+    else:
+        return "lib"
+
+OHOS_DEVICE_CPU_ARCH = "${@get_ohos_arch(d)}"
+#OHOS_DEVICE_NAME = "${MACHINE}"
 OHOS_DEVICE_NAME = "qemuarm"
 OHOS_DEVICE_COMPANY = "oniro"
 OHOS_PRODUCT_NAME = "yocto-ohos-${OHOS_DEVICE_NAME}"
@@ -156,9 +171,9 @@ do_install () {
     # then setup /system/lib and /system/bin symlinks to avoid breaking use of
     # hard-coded paths.
     mkdir -p ${D}/system ${D}${libdir} ${D}${bindir}
-    cp -r ${OHOS_PACKAGE_OUT_DIR}/system/lib/* ${D}${libdir}/
+    cp -r ${OHOS_PACKAGE_OUT_DIR}/system/${@get_ohos_libdir(d)}/* ${D}${libdir}/
     install -m 755 -t ${D}${bindir}/ ${OHOS_PACKAGE_OUT_DIR}/system/bin/*
-    ln -sfT ..${libdir} ${D}/system/lib
+    ln -sfT ..${libdir} ${D}/system/${@get_ohos_libdir(d)}
     ln -sfT ..${bindir} ${D}/system/bin
 
     # system ability configurations
@@ -202,7 +217,7 @@ FILES:${PN}:remove = "${libdir}/${BPN}/*"
 FILES:${PN}-configs = "${sysconfdir}"
 FILES:${PN}-fonts = "${datadir}/fonts"
 
-FILES:${PN} += "/system/bin /system/lib /system/profile"
+FILES:${PN} += "/system/bin /system/${@get_ohos_libdir(d)} /system/profile"
 FILES:${PN}-configs += "/system/etc"
 FILES:${PN}-fonts += "/system/fonts"
 
-- 
GitLab