From 79c7c6c661908dfb621276120072d378422d0e90 Mon Sep 17 00:00:00 2001 From: sybapp Date: Fri, 14 Feb 2025 06:59:42 +0000 Subject: [PATCH] add loongarch64 support Change-Id: I7ac27a4f1c66ea357cd8714a55e926392f9a554c Signed-off-by: sybapp --- BUILD.gn | 10 +++++++++- interfaces/inner_api/cjffi/ark_interop/BUILD.gn | 2 ++ .../inner_api/cjffi/ark_interop/ark_interop_loader.cpp | 2 ++ jsvm/build_jsvm.sh | 2 +- jsvm/build_jsvm_inter.sh | 6 ++++++ module_manager/native_module_manager.cpp | 2 +- test/unittest/BUILD.gn | 3 ++- 7 files changed, 23 insertions(+), 4 deletions(-) diff --git a/BUILD.gn b/BUILD.gn index f80bbc8ff..0c175d415 100755 --- a/BUILD.gn +++ b/BUILD.gn @@ -65,6 +65,11 @@ config("ace_napi_config") { "NAPI_TARGET_ARM32", "NAPI_TARGET_32", ] + } else if (current_cpu == "loongarch64") { + defines += [ + "NAPI_TARGET_LOONGARCH64", + "NAPI_TARGET_64", + ] } if (current_os == "ohos" && current_cpu == "x86_64") { @@ -131,6 +136,8 @@ ohos_source_set("ace_napi_static") { if (current_cpu == "arm64") { defines += [ "_ARM64_" ] + } else if (current_cpu == "loongarch64") { + defines += [ "_LOONGARCH64_" ] } if (is_ohos && !is_arkui_x) { external_deps += [ "faultloggerd:libunwinder" ] @@ -348,7 +355,8 @@ if (!ark_standalone_build) { group("napi_packages") { deps = [ ":ace_napi" ] - if (target_cpu == "arm64" || target_cpu == "x86_64") { + if (target_cpu == "arm64" || target_cpu == "x86_64" || + target_cpu == "looongarch64") { deps += [ "interfaces/inner_api/cjffi/ark_interop:ark_interop", "interfaces/inner_api/cjffi/ark_interop:cjLibLoader", diff --git a/interfaces/inner_api/cjffi/ark_interop/BUILD.gn b/interfaces/inner_api/cjffi/ark_interop/BUILD.gn index e44902fc4..ac3699f70 100644 --- a/interfaces/inner_api/cjffi/ark_interop/BUILD.gn +++ b/interfaces/inner_api/cjffi/ark_interop/BUILD.gn @@ -135,6 +135,8 @@ ohos_shared_library("cjLibLoader") { defines += [ "USE_LIBS_ARM" ] } else if (current_cpu == "x86_64") { defines += [ "USE_LIBS_x86_64" ] + } else if (current_cpu == "loongarch64") { + defines += [ "USE_LIBS_LoongArch64" ] } else { print("unsupported cpu ${current_cpu}") assert(false) diff --git a/interfaces/inner_api/cjffi/ark_interop/ark_interop_loader.cpp b/interfaces/inner_api/cjffi/ark_interop/ark_interop_loader.cpp index e2e6101b0..80c0f562e 100644 --- a/interfaces/inner_api/cjffi/ark_interop/ark_interop_loader.cpp +++ b/interfaces/inner_api/cjffi/ark_interop/ark_interop_loader.cpp @@ -28,6 +28,8 @@ #define LIBS_NAME "arm" #elif defined(USE_LIBS_x86_64) #define LIBS_NAME "x86_64" +#elif defined(USE_LIBS_LoongArch64) +#define LIBS_NAME "loongarch64" #else #error current platform not supported #endif diff --git a/jsvm/build_jsvm.sh b/jsvm/build_jsvm.sh index c785d728b..3d5867aaf 100755 --- a/jsvm/build_jsvm.sh +++ b/jsvm/build_jsvm.sh @@ -35,7 +35,7 @@ usage() { echo "-h|--help" echo "--sysroot Sysroot path." echo "--prefix Cross-compiler prefix." - echo "--target_cpu Cross-compile CPU types." + echo "--target_cpu Cross-compile CPU types." echo "--target_gen_dir " echo " if target_gen_dir not set, will install only to the default path." exit 0 diff --git a/jsvm/build_jsvm_inter.sh b/jsvm/build_jsvm_inter.sh index 6befea6b0..d4c3f950c 100755 --- a/jsvm/build_jsvm_inter.sh +++ b/jsvm/build_jsvm_inter.sh @@ -157,6 +157,12 @@ do_env() { cflags+=" -mfpu=neon" cflags_host="-m64" ARCH="aarch64" + elif [[ "${TARGET_CPU}" = "loongarch64" ]]; then + cflags=" --target=loongarch64-linux-ohos" + cflags+=" --sysroot=${SYSROOT}" + cflags+=" -march=loongarch64" + cflags_host="-m64" + ARCH="loongarch64" elif [[ "${TARGET_CPU}" = "x86_64" ]]; then export CC="${CCACHE_EXEC} gcc" export CXX="${CCACHE_EXEC} g++" diff --git a/module_manager/native_module_manager.cpp b/module_manager/native_module_manager.cpp index 532ca2c17..895ca28cd 100644 --- a/module_manager/native_module_manager.cpp +++ b/module_manager/native_module_manager.cpp @@ -701,7 +701,7 @@ bool NativeModuleManager::GetNativeModulePath(const char* moduleName, const char std::string sysPrefix("./module"); const char* abcfix = ".abc"; std::string sysAbcPrefix("./module"); -#elif defined(_ARM64_) || defined(SIMULATOR) +#elif defined(_ARM64_) || defined(SIMULATOR) || defined(_LOONGARCH64_) const char* soPostfix = ".so"; const char* zfix = ".z"; std::string sysPrefix("/system/lib64/module"); diff --git a/test/unittest/BUILD.gn b/test/unittest/BUILD.gn index 101a92b02..c0deb3baf 100644 --- a/test/unittest/BUILD.gn +++ b/test/unittest/BUILD.gn @@ -141,7 +141,8 @@ group("unittest") { ":test_unittest_sendevent", ":test_worker_manager", ] - if (target_cpu == "arm64" || target_cpu == "x86_64") { + if (target_cpu == "arm64" || target_cpu == "x86_64" || + target_cpu == "loongarch64") { deps += [ "cj_native:cj_native_unittest" ] } } -- Gitee