From 49eda1f793982f4d3786fafe8168c9c079c32941 Mon Sep 17 00:00:00 2001 From: zhangjialing Date: Fri, 14 Feb 2025 08:27:46 +0000 Subject: [PATCH] Add LoongArch support Change-Id: Ic3e1b8670d95fdccbfbbf5f2abafc7f566e2ac5d Signed-off-by: zhangjialing --- third_party/musl/ndk_script/BUILD.gn | 73 +++++++++++++++++++ .../musl/ndk_script/copy_musl_sysroot.sh | 4 + 2 files changed, 77 insertions(+) diff --git a/third_party/musl/ndk_script/BUILD.gn b/third_party/musl/ndk_script/BUILD.gn index 6001b9347..d3dab0955 100644 --- a/third_party/musl/ndk_script/BUILD.gn +++ b/third_party/musl/ndk_script/BUILD.gn @@ -205,6 +205,7 @@ group("musl_sysroot") { ":musl_arm_bits_arm32", ":musl_arm_uapi_arm32", ":musl_bits_aarch64", + ":musl_bits_loongarch64", ":musl_bits_x86_64", ] } @@ -258,6 +259,12 @@ musl_libs_aarch64 = [ "//third_party/musl:musl_copy_inc_bits(//build/toolchain/ohos:ohos_clang_arm64)", ] +musl_libs_loongarch64 = [ + "//third_party/musl:create_alltypes_h(//build/toolchain/ohos:ohos_clang_loongarch64)", + "//third_party/musl:create_syscall_h(//build/toolchain/ohos:ohos_clang_loongarch64)", + "//third_party/musl:musl_copy_inc_bits(//build/toolchain/ohos:ohos_clang_loongarch64)", +] + musl_libs_x86_64 = [ "//third_party/musl:create_alltypes_h(//build/toolchain/ohos:ohos_clang_x86_64)", "//third_party/musl:create_syscall_h(//build/toolchain/ohos:ohos_clang_x86_64)", @@ -290,6 +297,19 @@ musl_lib_arm64 = [ "//third_party/musl:soft_librt(//build/toolchain/ohos:ohos_clang_arm64)", ] +musl_lib_loongarch64 = [ + "//third_party/musl:soft_musl_crt_install_action(//build/toolchain/ohos:ohos_clang_loongarch64)", + "//third_party/musl:soft_libc_musl_static(//build/toolchain/ohos:ohos_clang_loongarch64)", + "//third_party/musl:soft_libm(//build/toolchain/ohos:ohos_clang_loongarch64)", + "//third_party/musl:soft_libdl(//build/toolchain/ohos:ohos_clang_loongarch64)", + "//third_party/musl:soft_libpthread(//build/toolchain/ohos:ohos_clang_loongarch64)", + "//third_party/musl:soft_libcrypt(//build/toolchain/ohos:ohos_clang_loongarch64)", + "//third_party/musl:soft_libutil(//build/toolchain/ohos:ohos_clang_loongarch64)", + "//third_party/musl:soft_libxnet(//build/toolchain/ohos:ohos_clang_loongarch64)", + "//third_party/musl:soft_libresolv(//build/toolchain/ohos:ohos_clang_loongarch64)", + "//third_party/musl:soft_librt(//build/toolchain/ohos:ohos_clang_loongarch64)", +] + musl_lib_x86_64 = [ "//third_party/musl:soft_musl_crt_install_action(//build/toolchain/ohos:ohos_clang_x86_64)", "//third_party/musl:soft_libc_musl_static(//build/toolchain/ohos:ohos_clang_x86_64)", @@ -352,6 +372,26 @@ ohos_copy("musl_bits_aarch64") { outputs = [ "$ndk_os_irrelevant_out_dir/sysroot/usr/include/aarch64-linux-ohos/bits/{{source_file_part}}" ] } +## loongarch64-linux-ohos bits directory +ohos_copy("musl_bits_loongarch64") { + deps = musl_libs_loongarch64 + sources = [] + sources_temp = [ + "alltypes.h", + "syscall.h", + ] + sources_temp += musl_inc_bits_files + sources_orig = get_path_info(sources_temp, "file") + + # print("${sources_orig}") + + foreach(s, sources_orig) { + sources += [ get_label_info(deps[0], "target_out_dir") + + "/usr/include/loongarch64-linux-ohos/bits/${s}" ] + } + outputs = [ "$ndk_os_irrelevant_out_dir/sysroot/usr/include/loongarch64-linux-ohos/bits/{{source_file_part}}" ] +} + ## x86_64-linux-ohos bits directory ohos_copy("musl_bits_x86_64") { deps = musl_libs_x86_64 @@ -438,6 +478,39 @@ ohos_copy("musl_ndk_libs_aarch64") { outputs = [ "$ndk_os_irrelevant_out_dir/sysroot/usr/lib/aarch64-linux-ohos/{{source_file_part}}" ] } +ohos_copy("musl_ndk_libs_loongarch64") { + deps = musl_lib_loongarch64 + crt_dir = + "${root_build_dir}/obj/third_party/musl/usr/lib/loongarch64-linux-ohos" + sources = [ + "${crt_dir}/Scrt1.o", + "${crt_dir}/crt1.o", + "${crt_dir}/crti.o", + "${crt_dir}/crtn.o", + "${crt_dir}/rcrt1.o", + ] + sources += [ get_label_info(deps[0], "target_out_dir") + + "/usr/lib/loongarch64-linux-ohos/libc.a" ] + sources += [ get_label_info(deps[0], "target_out_dir") + + "/usr/lib/loongarch64-linux-ohos/libdl.a" ] + sources += [ get_label_info(deps[0], "target_out_dir") + + "/usr/lib/loongarch64-linux-ohos/libm.a" ] + sources += [ get_label_info(deps[0], "target_out_dir") + + "/usr/lib/loongarch64-linux-ohos/libcrypt.a" ] + sources += [ get_label_info(deps[0], "target_out_dir") + + "/usr/lib/loongarch64-linux-ohos/libpthread.a" ] + sources += [ get_label_info(deps[0], "target_out_dir") + + "/usr/lib/loongarch64-linux-ohos/libresolv.a" ] + sources += [ get_label_info(deps[0], "target_out_dir") + + "/usr/lib/loongarch64-linux-ohos/librt.a" ] + sources += [ get_label_info(deps[0], "target_out_dir") + + "/usr/lib/loongarch64-linux-ohos/libutil.a" ] + sources += [ get_label_info(deps[0], "target_out_dir") + + "/usr/lib/loongarch64-linux-ohos/libxnet.a" ] + + outputs = [ "$ndk_os_irrelevant_out_dir/sysroot/usr/lib/loongarch64-linux-ohos/{{source_file_part}}" ] +} + ohos_copy("musl_ndk_libs_x86_64") { deps = musl_lib_x86_64 crt_dir = "${root_build_dir}/obj/third_party/musl/usr/lib/x86_64-linux-ohos" diff --git a/third_party/musl/ndk_script/copy_musl_sysroot.sh b/third_party/musl/ndk_script/copy_musl_sysroot.sh index d8c700b3b..fa85fc0a6 100755 --- a/third_party/musl/ndk_script/copy_musl_sysroot.sh +++ b/third_party/musl/ndk_script/copy_musl_sysroot.sh @@ -31,6 +31,7 @@ fi mkdir -p ${OUT_DIR}/${TARGET_ARCH}-linux-ohos mkdir -p ${OUT_DIR}/x86_64-linux-ohos mkdir -p ${OUT_DIR}/i686-linux-ohos +mkdir -p ${OUT_DIR}/loongarch64-linux-ohos cp -rp ${SOURCE_DIR}/* ${OUT_DIR} mv ${OUT_DIR}/asm ${OUT_DIR}/${TARGET_ARCH}-linux-ohos/ @@ -38,3 +39,6 @@ mv ${OUT_DIR}/asm ${OUT_DIR}/${TARGET_ARCH}-linux-ohos/ cp -rp ${OUT_DIR}/asm-x86/asm ${OUT_DIR}/x86_64-linux-ohos mv ${OUT_DIR}/asm-x86/asm ${OUT_DIR}/i686-linux-ohos rm -fr ${OUT_DIR}/asm-x86 + +mv ${OUT_DIR}/asm-loongarch/asm ${OUT_DIR}/loongarch64-linux-ohos +rm -fr ${OUT_DIR}/asm-loongarch -- Gitee