diff --git a/ace_config.gni b/ace_config.gni index 91adf3ca1decaae31a2b9c17153eee47aeecb1c2..f07116f57c2ee5898aef58ecadd064eb0711da65 100644 --- a/ace_config.gni +++ b/ace_config.gni @@ -144,6 +144,9 @@ if (is_ohos_standard_system) { if (host_cpu == "arm64") { objcopy_default = "//prebuilts/clang/ohos/linux-aarch64/llvm/bin/llvm-objcopy" + } else if (host_cpu == "loongarch64") { + objcopy_default = + "//prebuilts/clang/ohos/linux-loongarch64/llvm/bin/llvm-objcopy" } else { objcopy_default = "//prebuilts/clang/ohos/linux-x86_64/llvm/bin/llvm-objcopy" diff --git a/adapter/ohos/entrance/BUILD.gn b/adapter/ohos/entrance/BUILD.gn index 34e6ee621ebd7f13dcc58e5d7a6dcb4e8e2ca2e8..250c52212bb88976e3d2cf03299fe0abdb1ff3a8 100644 --- a/adapter/ohos/entrance/BUILD.gn +++ b/adapter/ohos/entrance/BUILD.gn @@ -85,6 +85,8 @@ template("ace_ohos_standard_source_set") { if (target_cpu == "arm64") { defines += [ "_ARM64_" ] + } else if (target_cpu == "loongarch64") { + defines += [ "_LOONGARCH64_" ] } if (current_os == "ohos" && current_cpu == "x86_64") { defines += [ "SIMULATOR_64" ] diff --git a/adapter/ohos/entrance/ace_container.cpp b/adapter/ohos/entrance/ace_container.cpp index 8db821765ac216d095db4306745adf323fb66f41..39049b1f3d8f4784eeab9bdcde4121941a37181b 100644 --- a/adapter/ohos/entrance/ace_container.cpp +++ b/adapter/ohos/entrance/ace_container.cpp @@ -123,6 +123,8 @@ constexpr uint32_t RES_TYPE_CROWN_ROTATION_STATUS = 129; constexpr int32_t EXTENSION_HALF_SCREEN_MODE = 2; #ifdef _ARM64_ const std::string ASSET_LIBARCH_PATH = "/lib/arm64"; +#elif defined(_LOONGARCH64_) +const std::string ASSET_LIBARCH_PATH = "/lib/loongarch64"; #else const std::string ASSET_LIBARCH_PATH = "/lib/arm"; #endif diff --git a/adapter/ohos/entrance/pa_engine/engine/jsi/BUILD.gn b/adapter/ohos/entrance/pa_engine/engine/jsi/BUILD.gn index 99b774161e256e0d6721df1b4f5e7560ad65e3b8..e283c65747cef496ba861e40bece3fd606770087 100644 --- a/adapter/ohos/entrance/pa_engine/engine/jsi/BUILD.gn +++ b/adapter/ohos/entrance/pa_engine/engine/jsi/BUILD.gn @@ -110,6 +110,8 @@ template("js_pa_engine_ark") { defines += [ "APP_USE_ARM64" ] } else if (target_cpu == "arm") { defines += [ "APP_USE_ARM" ] + } else if (target_cpu == "loongarch64") { + defines += [ "APP_USE_LOONGARCH64" ] } } } diff --git a/adapter/ohos/osal/ace_engine_ext.cpp b/adapter/ohos/osal/ace_engine_ext.cpp index f35220e76b20b88f5cdadd7699f6815d2080a18f..37fc785dae9d6a820039104956c83bc8b1c5cbf0 100644 --- a/adapter/ohos/osal/ace_engine_ext.cpp +++ b/adapter/ohos/osal/ace_engine_ext.cpp @@ -21,7 +21,7 @@ namespace OHOS::Ace { namespace { -#if (defined(__aarch64__) || defined(__x86_64__)) +#if (defined(__aarch64__) || defined(__x86_64__) || defined(__loongarch_lp64)) const std::string DRAG_EXTENSION_SO_PATH = "system/lib64/module/autorun/libhmos_drag_drop.z.so"; #else const std::string DRAG_EXTENSION_SO_PATH = "system/lib/module/autorun/libhmos_drag_drop.z.so"; diff --git a/adapter/ohos/osal/data_detector_loader.cpp b/adapter/ohos/osal/data_detector_loader.cpp index 3060034d0bd80451153c5c5e01679baf676aad17..e8e87bc82b26939ab6109fea7b8e77fb5292c931 100644 --- a/adapter/ohos/osal/data_detector_loader.cpp +++ b/adapter/ohos/osal/data_detector_loader.cpp @@ -18,7 +18,7 @@ #include "core/common/ai/data_detector_loader.h" namespace OHOS::Ace { namespace { -#ifdef __aarch64__ +#if (defined(__aarch64__) || defined(__x86_64__) || defined(__loongarch_lp64)) constexpr char AI_ADAPTER_SO_PATH[] = "system/lib64/libai_text_analyzer_innerapi.z.so"; #else constexpr char AI_ADAPTER_SO_PATH[] = "system/lib/libai_text_analyzer_innerapi.z.so"; diff --git a/adapter/ohos/osal/data_url_analyzer_loader.cpp b/adapter/ohos/osal/data_url_analyzer_loader.cpp index ca68a08f6e6cccffd46ad1ba9821b36b5e705328..d816cafc55c9429dbe5902464eb252897d7b0b91 100644 --- a/adapter/ohos/osal/data_url_analyzer_loader.cpp +++ b/adapter/ohos/osal/data_url_analyzer_loader.cpp @@ -18,7 +18,7 @@ #include "core/common/ai/data_url_analyzer_loader.h" namespace OHOS::Ace { namespace { -#ifdef __aarch64__ + #if (defined(__aarch64__) || defined(__x86_64__) || defined(__loongarch_lp64)) constexpr char AI_ADAPTER_SO_PATH[] = "system/lib64/libai_nlu_innerapi.z.so"; #else constexpr char AI_ADAPTER_SO_PATH[] = "system/lib/libai_nlu_innerapi.z.so"; diff --git a/adapter/ohos/osal/image_analyzer_loader.cpp b/adapter/ohos/osal/image_analyzer_loader.cpp index afa87f8e2af01041fdafd294f011fa2696260f50..c94ae7861228a35b3b34e76e96f986ce0222d850 100644 --- a/adapter/ohos/osal/image_analyzer_loader.cpp +++ b/adapter/ohos/osal/image_analyzer_loader.cpp @@ -20,7 +20,7 @@ namespace OHOS::Ace { namespace { -#ifdef __aarch64__ + #if (defined(__aarch64__) || defined(__x86_64__) || defined(__loongarch_lp64)) constexpr char IMAGE_ANALYZER_SO_PATH[] = "system/lib64/libai_image_analyzer_innerapi.z.so"; #else constexpr char IMAGE_ANALYZER_SO_PATH[] = "system/lib/libai_image_analyzer_innerapi.z.so"; diff --git a/adapter/ohos/osal/stylus_detector_loader.cpp b/adapter/ohos/osal/stylus_detector_loader.cpp index 7799f6108b0a422643d4bc0f2cfd3e86dd004974..c21190af706a6a88eaeb200d0a95f80797282485 100644 --- a/adapter/ohos/osal/stylus_detector_loader.cpp +++ b/adapter/ohos/osal/stylus_detector_loader.cpp @@ -21,7 +21,7 @@ namespace OHOS::Ace { namespace { -#if (defined(__aarch64__) || defined(__x86_64__)) +#if (defined(__aarch64__) || defined(__x86_64__) || defined(__loongarch_lp64)) const std::string STYLUS_CLIENT_SO_PATH = "/system/lib64/libstylus_innerapi.z.so"; #else const std::string STYLUS_CLIENT_SO_PATH = "/system/lib/libstylus_innerapi.z.so"; diff --git a/adapter/ohos/osal/text_share_loader.cpp b/adapter/ohos/osal/text_share_loader.cpp index 65abfcabe8a679601c5466304d9157df43d7e3ec..4e309f468f1dfc2cbbadbfad35b2ff5faf866cc2 100644 --- a/adapter/ohos/osal/text_share_loader.cpp +++ b/adapter/ohos/osal/text_share_loader.cpp @@ -19,7 +19,7 @@ namespace OHOS::Ace { namespace { -#ifdef __aarch64__ + #if (defined(__aarch64__) || defined(__x86_64__) || defined(__loongarch_lp64)) constexpr char TEXT_SHARE_SO_PATH[] = "system/lib64/libsystemshare_innerkits.z.so"; #else constexpr char TEXT_SHARE_SO_PATH[] = "system/lib/libsystemshare_innerkits.z.so"; diff --git a/adapter/ohos/osal/text_translation_loader.cpp b/adapter/ohos/osal/text_translation_loader.cpp index 0ed8e0931272f6211ad05c000a4097c8ef98c860..a2fb8993d2d51d6a2e3c4637fa8dcf69cd4e99de 100644 --- a/adapter/ohos/osal/text_translation_loader.cpp +++ b/adapter/ohos/osal/text_translation_loader.cpp @@ -21,7 +21,7 @@ namespace OHOS::Ace { namespace { -#ifdef __aarch64__ + #if (defined(__aarch64__) || defined(__x86_64__) || defined(__loongarch_lp64)) constexpr char AI_TEXT_TRANS_SO_PATH[] = "system/lib64/libai_text_translation_innerapi.z.so"; #else constexpr char AI_TEXT_TRANS_SO_PATH[] = "system/lib/libai_text_translation_innerapi.z.so"; diff --git a/build/tools/run_objcopy.py b/build/tools/run_objcopy.py index 855c3d7df87d7b092f4fedd46d0fe8b18a8620d4..6d6c015768fe15666682b632adc007ad58820932 100755 --- a/build/tools/run_objcopy.py +++ b/build/tools/run_objcopy.py @@ -26,6 +26,7 @@ OUTPUT_TARGET = { "x86_64": "elf64-x86-64", "arm": "elf32-littlearm", "arm64": "elf64-littleaarch64", + "loongarch64": "elf64-loongarch", } BUILD_ID_LINK_OUTPUT = { @@ -33,6 +34,7 @@ BUILD_ID_LINK_OUTPUT = { "x86_64": "i386:x86-64", "arm": "arm", "arm64": "aarch64", + "loongarch64": "loongarch64", } diff --git a/build/tools/run_objcopy_pc_mac.py b/build/tools/run_objcopy_pc_mac.py index c3936d616bdf415a348b0cf606a0c69c6b027133..c8cae9d6a1a6b4f8ebe8e4d90c009377f34e24e5 100755 --- a/build/tools/run_objcopy_pc_mac.py +++ b/build/tools/run_objcopy_pc_mac.py @@ -27,6 +27,7 @@ OUTPUT_TARGET = { "x86_64": "pe-x86-64", "arm": "elf32-littlearm", "arm64": "elf64-littleaarch64", + "loongarch64": "elf64-loongarch", } BUILD_ID_LINK_OUTPUT = { @@ -35,6 +36,7 @@ BUILD_ID_LINK_OUTPUT = { "x86_64": "i386:x86-64", "arm": "arm", "arm64": "aarch64", + "loongarch64": "loongarch64", } diff --git a/frameworks/bridge/declarative_frontend/BUILD.gn b/frameworks/bridge/declarative_frontend/BUILD.gn index 34ef6bbda08e45cc7f77521af0ce84ca119ad81f..a04caec168d3198484eabe18f161a776c06a70f5 100644 --- a/frameworks/bridge/declarative_frontend/BUILD.gn +++ b/frameworks/bridge/declarative_frontend/BUILD.gn @@ -188,6 +188,11 @@ template("declarative_js_engine") { defines += [ "_ARM64_" ] } } + if (target_cpu == "loongarch64") { + if (!is_mingw) { + defines += [ "_LOONGARCH64_" ] + } + } if (current_os == "ohos" && current_cpu == "x86_64") { defines += [ "SIMULATOR_64" ] } @@ -754,6 +759,11 @@ template("declarative_js_engine_ng") { defines += [ "_ARM64_" ] } } + if (target_cpu == "loongarch64") { + if (!is_mingw) { + defines += [ "_LOONGARCH64_" ] + } + } if (current_os == "ohos" && current_cpu == "x86_64") { defines += [ "SIMULATOR_64" ] } diff --git a/frameworks/bridge/declarative_frontend/engine/jsi/BUILD.gn b/frameworks/bridge/declarative_frontend/engine/jsi/BUILD.gn index b84dc9e60279829d3eb6acc538b05a255eeb1cec..116cf4c3fd28f83099228349a9569102ce48e7b7 100644 --- a/frameworks/bridge/declarative_frontend/engine/jsi/BUILD.gn +++ b/frameworks/bridge/declarative_frontend/engine/jsi/BUILD.gn @@ -197,6 +197,8 @@ template("declarative_js_engine_ark") { defines += [ "APP_USE_ARM64" ] } else if (target_cpu == "arm") { defines += [ "APP_USE_ARM" ] + } else if (target_cpu == "loongarch64") { + defines += [ "APP_USE_LOONGARCH64" ] } configs = [ "$ace_root:ace_config" ] diff --git a/frameworks/bridge/js_frontend/engine/BUILD.gn b/frameworks/bridge/js_frontend/engine/BUILD.gn index 5687982532cc4f3241ba87635a4a6fda71fd4014..40413ed12650b1a799c3a2e60b4e8fd4a57124f4 100644 --- a/frameworks/bridge/js_frontend/engine/BUILD.gn +++ b/frameworks/bridge/js_frontend/engine/BUILD.gn @@ -27,6 +27,11 @@ template("js_engine") { defines += [ "_ARM64_" ] } } + if (target_cpu == "loongarch64") { + if (!is_mingw) { + defines += [ "_LOONGARCH64_" ] + } + } if (current_os == "ohos" && current_cpu == "x86_64") { defines += [ "SIMULATOR_64" ] } diff --git a/frameworks/bridge/js_frontend/engine/common/js_engine.cpp b/frameworks/bridge/js_frontend/engine/common/js_engine.cpp index 812f83794c1bee4d8cbe8b2762d6c430f31672a0..019136db4acaddf30412813b03cea25e67b1d9af 100644 --- a/frameworks/bridge/js_frontend/engine/common/js_engine.cpp +++ b/frameworks/bridge/js_frontend/engine/common/js_engine.cpp @@ -41,7 +41,7 @@ PixelMapNapiEntry JsEngine::GetPixelMapNapiEntry() #else static PixelMapNapiEntry pixelMapNapiEntry_ = nullptr; if (!pixelMapNapiEntry_) { -#if defined(_ARM64_) || defined(SIMULATOR_64) +#if defined(_ARM64_) || defined(SIMULATOR_64) || defined(_LOONGARCH64_) std::string prefix = "/system/lib64/module/"; #else std::string prefix = "/system/lib/module/"; diff --git a/frameworks/bridge/js_frontend/engine/jsi/BUILD.gn b/frameworks/bridge/js_frontend/engine/jsi/BUILD.gn index 38b04158beaf83235d6a8469848e513bf93fec21..488e8c024b57b852c65ea4b617a3234b65fa1ce5 100644 --- a/frameworks/bridge/js_frontend/engine/jsi/BUILD.gn +++ b/frameworks/bridge/js_frontend/engine/jsi/BUILD.gn @@ -123,6 +123,8 @@ template("js_engine_ark") { defines += [ "APP_USE_ARM64" ] } else if (target_cpu == "arm") { defines += [ "APP_USE_ARM" ] + } else if (target_cpu == "loongarch64") { + defines += [ "APP_USE_LOONGARCH64" ] } # add for cross_platfrom_build temporarily, shall be removed after external_deps is supported diff --git a/frameworks/core/components_ng/base/frame_node.cpp b/frameworks/core/components_ng/base/frame_node.cpp index ee1d5c8ec1506ab2543b4eef6397b161ba1ab3c5..fd0a09f8e06061a626dc1be6381a22f4dff1926a 100644 --- a/frameworks/core/components_ng/base/frame_node.cpp +++ b/frameworks/core/components_ng/base/frame_node.cpp @@ -2397,7 +2397,7 @@ void FrameNode::MarkModifyDone() eventHub_->MarkModifyDone(); } renderContext_->OnModifyDone(); -#if (defined(__aarch64__) || defined(__x86_64__)) +#if (defined(__aarch64__) || defined(__x86_64__) || defined(__loongarch_lp64)) if (Recorder::IsCacheAvaliable()) { auto pipeline = PipelineContext::GetCurrentContext(); CHECK_NULL_VOID(pipeline); diff --git a/frameworks/core/components_ng/pattern/select_overlay/expanded_menu_plugin_loader.h b/frameworks/core/components_ng/pattern/select_overlay/expanded_menu_plugin_loader.h index 53eea6d639dd3d7699d863ec40b48fe8df2be1f7..86524a409b3a972c957572bc553be3c1d28aeea6 100644 --- a/frameworks/core/components_ng/pattern/select_overlay/expanded_menu_plugin_loader.h +++ b/frameworks/core/components_ng/pattern/select_overlay/expanded_menu_plugin_loader.h @@ -23,7 +23,7 @@ namespace OHOS::Ace::NG { class ExpandedMenuPluginLoader { -#if (defined(__aarch64__) || defined(__x86_64__)) +#if (defined(__aarch64__) || defined(__x86_64__) || defined(__loongarch_lp64)) const std::string EXPANDED_MENU_PLUGIN_SO_PATH = "/system/lib64/expanded_menu/libexpanded_menu.z.so"; #else const std::string EXPANDED_MENU_PLUGIN_SO_PATH = "/system/lib/expanded_menu/libexpanded_menu.z.so"; diff --git a/interfaces/inner_api/ace/uicast/uicast_subscriber.cpp b/interfaces/inner_api/ace/uicast/uicast_subscriber.cpp index 4c034906fff63a8e243c4ee55b10261e54d5e642..66ec1e12edf5f37e7b6d76f9d18773000fc247a0 100644 --- a/interfaces/inner_api/ace/uicast/uicast_subscriber.cpp +++ b/interfaces/inner_api/ace/uicast/uicast_subscriber.cpp @@ -30,7 +30,7 @@ constexpr char UICAST_PROXY_UPDATE_CONTEXT_FUNC[] = "OHOS_ACE_UICastProxyUpdateC using UICastProxyStartFunc = void (*)(int, UIContent*); using UICastProxyUpdateContextFunc = void (*)(UIContent*); -#if (defined(__aarch64__) || defined(__x86_64__)) +#if (defined(__aarch64__) || defined(__x86_64__) || defined(__loongarch_lp64)) const char* DISTRIBUTED_UI_PROXY_SO_PATH = "/system/lib64/libace_uicast_proxy.z.so"; #else const char* DISTRIBUTED_UI_PROXY_SO_PATH = "/system/lib/libace_uicast_proxy.z.so";