15f9996aaSopenharmony_ci# Copyright (c) 2021 Huawei Device Co., Ltd.
25f9996aaSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
35f9996aaSopenharmony_ci# you may not use this file except in compliance with the License.
45f9996aaSopenharmony_ci# You may obtain a copy of the License at
55f9996aaSopenharmony_ci#
65f9996aaSopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
75f9996aaSopenharmony_ci#
85f9996aaSopenharmony_ci# Unless required by applicable law or agreed to in writing, software
95f9996aaSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
105f9996aaSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
115f9996aaSopenharmony_ci# See the License for the specific language governing permissions and
125f9996aaSopenharmony_ci# limitations under the License
135f9996aaSopenharmony_ci
145f9996aaSopenharmony_ciimport("//build/config/clang/clang.gni")
155f9996aaSopenharmony_ciimport("//build/config/ohos/musl.gni")
165f9996aaSopenharmony_ciimport("//build/ohos.gni")
175f9996aaSopenharmony_ci
185f9996aaSopenharmony_cigroup("musl_install") {
195f9996aaSopenharmony_ci  deps = [
205f9996aaSopenharmony_ci    ":musl-libcxx.so",
215f9996aaSopenharmony_ci    ":musl_ld_path_etc_cfg",
225f9996aaSopenharmony_ci    "//third_party/musl:musl_libs",
235f9996aaSopenharmony_ci  ]
245f9996aaSopenharmony_ci
255f9996aaSopenharmony_ci  if (target_cpu == "riscv64") {
265f9996aaSopenharmony_ci    deps += [
275f9996aaSopenharmony_ci      ":ld-musl-riscv64.so.1",
285f9996aaSopenharmony_ci      ":musl-libc.so",
295f9996aaSopenharmony_ci    ]
305f9996aaSopenharmony_ci  } else {
315f9996aaSopenharmony_ci    deps += [ ":ld-musl-arm.so.1" ]
325f9996aaSopenharmony_ci  }
335f9996aaSopenharmony_ci}
345f9996aaSopenharmony_ci
355f9996aaSopenharmony_ciif (target_cpu == "riscv64") {
365f9996aaSopenharmony_ci  ohos_prebuilt_shared_library("ld-musl-riscv64.so.1") {
375f9996aaSopenharmony_ci    deps = [ "//third_party/musl:soft_create_linker" ]
385f9996aaSopenharmony_ci    if (is_asan || is_tsan) {
395f9996aaSopenharmony_ci      asan = "-asan"
405f9996aaSopenharmony_ci    } else {
415f9996aaSopenharmony_ci      asan = ""
425f9996aaSopenharmony_ci    }
435f9996aaSopenharmony_ci
445f9996aaSopenharmony_ci    _muls_linker_so =
455f9996aaSopenharmony_ci        "${root_out_dir}/common/common/libc/ld-musl-${musl_arch}${asan}.so.1"
465f9996aaSopenharmony_ci    source = _muls_linker_so
475f9996aaSopenharmony_ci    install_enable = true
485f9996aaSopenharmony_ci    install_images = [
495f9996aaSopenharmony_ci      "system",
505f9996aaSopenharmony_ci      "updater",
515f9996aaSopenharmony_ci      "ramdisk",
525f9996aaSopenharmony_ci    ]
535f9996aaSopenharmony_ci    subsystem_name = "build"
545f9996aaSopenharmony_ci    part_name = "build_framework"
555f9996aaSopenharmony_ci    module_install_dir = "lib"
565f9996aaSopenharmony_ci  }
575f9996aaSopenharmony_ci} else {
585f9996aaSopenharmony_ci  ohos_prebuilt_shared_library("ld-musl-arm.so.1") {
595f9996aaSopenharmony_ci    deps = [ "//third_party/musl:soft_create_linker" ]
605f9996aaSopenharmony_ci    if (is_asan || is_tsan) {
615f9996aaSopenharmony_ci      asan = "-asan"
625f9996aaSopenharmony_ci    } else {
635f9996aaSopenharmony_ci      asan = ""
645f9996aaSopenharmony_ci    }
655f9996aaSopenharmony_ci
665f9996aaSopenharmony_ci    _musl_linker_so =
675f9996aaSopenharmony_ci        "${root_out_dir}/common/common/libc/./ld-musl-${musl_arch}${asan}.so.1"
685f9996aaSopenharmony_ci    source = _musl_linker_so
695f9996aaSopenharmony_ci    install_enable = true
705f9996aaSopenharmony_ci    install_images = [
715f9996aaSopenharmony_ci      "system",
725f9996aaSopenharmony_ci      "updater",
735f9996aaSopenharmony_ci      "ramdisk",
745f9996aaSopenharmony_ci    ]
755f9996aaSopenharmony_ci    if (target_cpu == "arm") {
765f9996aaSopenharmony_ci      symlink_ext = [ "lib/libc.so" ]
775f9996aaSopenharmony_ci    } else if (target_cpu == "arm64" || target_cpu == "x86_64") {
785f9996aaSopenharmony_ci      symlink_ext = [ "lib64/libc.so" ]
795f9996aaSopenharmony_ci    }
805f9996aaSopenharmony_ci    subsystem_name = "build"
815f9996aaSopenharmony_ci    part_name = "build_framework"
825f9996aaSopenharmony_ci    module_install_dir = "lib"
835f9996aaSopenharmony_ci  }
845f9996aaSopenharmony_ci}
855f9996aaSopenharmony_ci
865f9996aaSopenharmony_ciohos_prebuilt_shared_library("musl-libc.so") {
875f9996aaSopenharmony_ci  deps = [ "//third_party/musl:soft_libc_musl_shared" ]
885f9996aaSopenharmony_ci  source = "${musl_sysroot}/usr/lib/${musl_target_triple}/libc.so"
895f9996aaSopenharmony_ci  install_images = [
905f9996aaSopenharmony_ci    "system",
915f9996aaSopenharmony_ci    "updater",
925f9996aaSopenharmony_ci    "ramdisk",
935f9996aaSopenharmony_ci  ]
945f9996aaSopenharmony_ci  subsystem_name = "build"
955f9996aaSopenharmony_ci  part_name = "build_framework"
965f9996aaSopenharmony_ci  innerapi_tags = [ "chipsetsdk" ]
975f9996aaSopenharmony_ci  relative_install_dir = ""
985f9996aaSopenharmony_ci}
995f9996aaSopenharmony_ci
1005f9996aaSopenharmony_ciohos_prebuilt_etc("musl_ld_path_etc_cfg") {
1015f9996aaSopenharmony_ci  if (target_cpu == "arm") {
1025f9996aaSopenharmony_ci    source = "ld-musl-arm.path"
1035f9996aaSopenharmony_ci  } else if (target_cpu == "riscv64") {
1045f9996aaSopenharmony_ci    source = "ld-musl-riscv64.path"
1055f9996aaSopenharmony_ci  } else {
1065f9996aaSopenharmony_ci    source = "ld-musl-aarch64.path"
1075f9996aaSopenharmony_ci  }
1085f9996aaSopenharmony_ci  if (is_asan || is_tsan) {
1095f9996aaSopenharmony_ci    output = string_replace(source, ".path", "-asan.path")
1105f9996aaSopenharmony_ci  }
1115f9996aaSopenharmony_ci  install_images = [
1125f9996aaSopenharmony_ci    "system",
1135f9996aaSopenharmony_ci    "updater",
1145f9996aaSopenharmony_ci    "ramdisk",
1155f9996aaSopenharmony_ci  ]
1165f9996aaSopenharmony_ci  subsystem_name = "build"
1175f9996aaSopenharmony_ci  part_name = "build_framework"
1185f9996aaSopenharmony_ci}
1195f9996aaSopenharmony_ci
1205f9996aaSopenharmony_ciohos_prebuilt_shared_library("musl-libcxx.so") {
1215f9996aaSopenharmony_ci  enable_strip = true
1225f9996aaSopenharmony_ci  mini_debug = true
1235f9996aaSopenharmony_ci  if (target_cpu == "arm") {
1245f9996aaSopenharmony_ci    source = "${clang_base_path}/lib/arm-linux-ohos/libc++.so"
1255f9996aaSopenharmony_ci  } else if (target_cpu == "arm64") {
1265f9996aaSopenharmony_ci    source = "${clang_base_path}/lib/aarch64-linux-ohos/libc++.so"
1275f9996aaSopenharmony_ci  } else if (target_cpu == "x86_64") {
1285f9996aaSopenharmony_ci    source = "${clang_base_path}/lib/x86_64-linux-ohos/libc++.so"
1295f9996aaSopenharmony_ci  } else if (target_cpu == "riscv64") {
1305f9996aaSopenharmony_ci    source = "${clang_base_path}/lib/riscv64-linux-ohos/libc++.so"
1315f9996aaSopenharmony_ci  } else if (target_cpu == "loongarch64") {
1325f9996aaSopenharmony_ci    source = "${clang_base_path}/lib/loongarch64-linux-ohos/libc++.so"
1335f9996aaSopenharmony_ci  } else {
1345f9996aaSopenharmony_ci    source = ""
1355f9996aaSopenharmony_ci  }
1365f9996aaSopenharmony_ci  deps = [ ":musl-libcxx_unstripped_copy" ]
1375f9996aaSopenharmony_ci  install_images = [
1385f9996aaSopenharmony_ci    "system",
1395f9996aaSopenharmony_ci    "updater",
1405f9996aaSopenharmony_ci    "ramdisk",
1415f9996aaSopenharmony_ci  ]
1425f9996aaSopenharmony_ci  subsystem_name = "build"
1435f9996aaSopenharmony_ci  part_name = "build_framework"
1445f9996aaSopenharmony_ci  innerapi_tags = [ "chipsetsdk" ]
1455f9996aaSopenharmony_ci  relative_install_dir = ""
1465f9996aaSopenharmony_ci}
1475f9996aaSopenharmony_ci
1485f9996aaSopenharmony_cicopy("musl-libcxx_unstripped_copy") {
1495f9996aaSopenharmony_ci  if (target_cpu == "arm") {
1505f9996aaSopenharmony_ci    sources = [ "${clang_base_path}/lib/arm-linux-ohos/libc++.so" ]
1515f9996aaSopenharmony_ci  } else if (target_cpu == "arm64") {
1525f9996aaSopenharmony_ci    sources = [ "${clang_base_path}/lib/aarch64-linux-ohos/libc++.so" ]
1535f9996aaSopenharmony_ci  } else if (target_cpu == "x86_64") {
1545f9996aaSopenharmony_ci    sources = [ "${clang_base_path}/lib/x86_64-linux-ohos/libc++.so" ]
1555f9996aaSopenharmony_ci  } else if (target_cpu == "riscv64") {
1565f9996aaSopenharmony_ci    sources = [ "${clang_base_path}/lib/riscv64-linux-ohos/libc++.so" ]
1575f9996aaSopenharmony_ci  } else if (target_cpu == "loongarch64") {
1585f9996aaSopenharmony_ci    sources = [ "${clang_base_path}/lib/loongarch64-linux-ohos/libc++.so" ]
1595f9996aaSopenharmony_ci  } else {
1605f9996aaSopenharmony_ci    sources = [ "" ]
1615f9996aaSopenharmony_ci  }
1625f9996aaSopenharmony_ci  outputs = [ root_out_dir + "/lib.unstripped/clang/{{source_file_part}}" ]
1635f9996aaSopenharmony_ci}
164