diff --git a/BUILD.gn b/BUILD.gn index f80bbc8ffe85f2e6b9058211f0743aa3254943b6..0c175d415207cefdf7f9855dd4d5acede7679e2e 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 e44902fc4709d97cf9a231a98b517ad374b65af9..ac3699f70ed4e055d81c91f38b09c9b277b1dc03 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 e2e6101b0b98433193572acd56e26a304b2e9118..80c0f562e1c76a5f690ffccb3e8dac53dc71058d 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 c785d728b389ceac7d275f321bd792d6d1a4f1e2..3d5867aaf19b5c1ee13b7df4dacce00caac5408c 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 6befea6b0bf07213cd819aa32f5342f35f0e6aab..d4c3f950cb94ea71067966476fdc8752ce8217b7 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 532ca2c177918febe947d28a38f878e0c22db147..895ca28cda2609d6607f28459f9f828a7eac2319 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 101a92b0209ab222876a1da7b23a9ecf81aa2115..c0deb3baf98743da6af0c7194a4ca57fa644ab4f 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" ] } }