diff --git a/third_party/musl/ndk_script/BUILD.gn b/third_party/musl/ndk_script/BUILD.gn index a71e33565ab354dd49bfb34bdfa2de31e336bbe8..1eb6a1f3a843cf6f629f58e745945228d26364fa 100644 --- a/third_party/musl/ndk_script/BUILD.gn +++ b/third_party/musl/ndk_script/BUILD.gn @@ -203,6 +203,9 @@ group("musl_sysroot") { ":musl_bits_aarch64", ":musl_bits_x86_64", ] + if (enable_loongarch64) { + deps += [ ":musl_bits_loongarch64" ] + } } action("copy_ndk_uapi") { @@ -230,6 +233,7 @@ action("copy_musl_sysroot") { [ "-i" ] + [ rebase_path("${musl_target_out_dir}/${ndk_musl_include}") ] args += [ "-o" ] + [ rebase_path("${ndk_headers_out_dir}") ] args += [ "-t" ] + [ "${musl_arch}" ] + args += [ "-l" ] + [ "${enable_loongarch64}" ] deps = [ ":copy_ndk_musl_headers" ] } @@ -245,6 +249,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)", @@ -277,6 +287,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)", @@ -339,6 +362,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 @@ -425,6 +468,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 d8c700b3b63f98e0381695faecb852b70d101a15..805712a5f3909c5af0cae43f0814377388056ae2 100755 --- a/third_party/musl/ndk_script/copy_musl_sysroot.sh +++ b/third_party/musl/ndk_script/copy_musl_sysroot.sh @@ -2,7 +2,7 @@ # Copyright (c) Huawei Technologies Co., Ltd. 2020-2030. All rights reserved. set -e -while getopts "o:i:t:h" arg +while getopts "o:i:t:l:h" arg do case "${arg}" in "o") @@ -12,7 +12,10 @@ do SOURCE_DIR=${OPTARG} ;; "t") - TARGET_ARCH=${OPTARG} + TARGET_ARCH=${OPTARG} + ;; + "l") + ENABLE_LOONGARCH64=${OPTARG} ;; "h") echo "help" @@ -31,6 +34,9 @@ fi mkdir -p ${OUT_DIR}/${TARGET_ARCH}-linux-ohos mkdir -p ${OUT_DIR}/x86_64-linux-ohos mkdir -p ${OUT_DIR}/i686-linux-ohos +if [ ${ENABLE_LOONGARCH64} = true ];then + mkdir -p ${OUT_DIR}/loongarch64-linux-ohos +fi cp -rp ${SOURCE_DIR}/* ${OUT_DIR} mv ${OUT_DIR}/asm ${OUT_DIR}/${TARGET_ARCH}-linux-ohos/ @@ -38,3 +44,8 @@ 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 + +if [ ${ENABLE_LOONGARCH64} = true ];then + mv ${OUT_DIR}/asm-loongarch/asm ${OUT_DIR}/loongarch64-linux-ohos + rm -fr ${OUT_DIR}/asm-loongarch +fi