From f27b53753b00e63784ff8d04027a55f8a666cdf2 Mon Sep 17 00:00:00 2001 From: zhaoqi Date: Sat, 21 Sep 2024 10:30:01 +0800 Subject: [PATCH 1/3] Add ohos-sdk building support for loongarch64 Signed-off-by: zhaoqi --- third_party/musl/ndk_script/BUILD.gn | 72 +++++++++++++++++++ .../musl/ndk_script/copy_musl_sysroot.sh | 4 ++ 2 files changed, 76 insertions(+) diff --git a/third_party/musl/ndk_script/BUILD.gn b/third_party/musl/ndk_script/BUILD.gn index a71e33565..fa9101c45 100644 --- a/third_party/musl/ndk_script/BUILD.gn +++ b/third_party/musl/ndk_script/BUILD.gn @@ -201,6 +201,7 @@ group("musl_sysroot") { ":musl_arm_bits_arm32", ":musl_arm_uapi_arm32", ":musl_bits_aarch64", + ":musl_bits_loongarch64", ":musl_bits_x86_64", ] } @@ -245,6 +246,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 +284,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 +359,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 +465,38 @@ 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 From 1df9df3ae61d0a25f0fecf29f939dff7275e8871 Mon Sep 17 00:00:00 2001 From: zhaoqi Date: Wed, 25 Sep 2024 19:31:08 +0800 Subject: [PATCH 2/3] format .gn file Signed-off-by: zhaoqi --- third_party/musl/ndk_script/BUILD.gn | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/third_party/musl/ndk_script/BUILD.gn b/third_party/musl/ndk_script/BUILD.gn index fa9101c45..b286a1d57 100644 --- a/third_party/musl/ndk_script/BUILD.gn +++ b/third_party/musl/ndk_script/BUILD.gn @@ -467,7 +467,8 @@ ohos_copy("musl_ndk_libs_aarch64") { ohos_copy("musl_ndk_libs_loongarch64") { deps = musl_lib_loongarch64 - crt_dir = "${root_build_dir}/obj/third_party/musl/usr/lib/loongarch64-linux-ohos" + crt_dir = + "${root_build_dir}/obj/third_party/musl/usr/lib/loongarch64-linux-ohos" sources = [ "${crt_dir}/Scrt1.o", "${crt_dir}/crt1.o", -- Gitee From 4bf4859835192ce1b42422653a550639969745f5 Mon Sep 17 00:00:00 2001 From: zhaoqi Date: Mon, 14 Oct 2024 19:20:54 +0800 Subject: [PATCH 3/3] Add ohos-sdk building option to enable loongarch64 usage: `./build.sh ... --enable-loongarch64` default: false Signed-off-by: zhaoqi --- third_party/musl/ndk_script/BUILD.gn | 5 ++++- .../musl/ndk_script/copy_musl_sysroot.sh | 17 ++++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/third_party/musl/ndk_script/BUILD.gn b/third_party/musl/ndk_script/BUILD.gn index b286a1d57..1eb6a1f3a 100644 --- a/third_party/musl/ndk_script/BUILD.gn +++ b/third_party/musl/ndk_script/BUILD.gn @@ -201,9 +201,11 @@ group("musl_sysroot") { ":musl_arm_bits_arm32", ":musl_arm_uapi_arm32", ":musl_bits_aarch64", - ":musl_bits_loongarch64", ":musl_bits_x86_64", ] + if (enable_loongarch64) { + deps += [ ":musl_bits_loongarch64" ] + } } action("copy_ndk_uapi") { @@ -231,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" ] } diff --git a/third_party/musl/ndk_script/copy_musl_sysroot.sh b/third_party/musl/ndk_script/copy_musl_sysroot.sh index fa85fc0a6..805712a5f 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,7 +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 -mkdir -p ${OUT_DIR}/loongarch64-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/ @@ -40,5 +45,7 @@ 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 +if [ ${ENABLE_LOONGARCH64} = true ];then + mv ${OUT_DIR}/asm-loongarch/asm ${OUT_DIR}/loongarch64-linux-ohos + rm -fr ${OUT_DIR}/asm-loongarch +fi -- Gitee