15f9996aaSopenharmony_ci# Copyright (c) 2020 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/lite/config/subsystem/aafwk/path.gni")
155f9996aaSopenharmony_ciimport("//build/lite/ndk/ndk.gni")
165f9996aaSopenharmony_ci
175f9996aaSopenharmony_ciif (ohos_build_ndk_target_host == "linux-x86_64" &&
185f9996aaSopenharmony_ci    ohos_build_compiler == "gcc") {
195f9996aaSopenharmony_ci  copy("compiler") {
205f9996aaSopenharmony_ci    sources = [
215f9996aaSopenharmony_ci      "//prebuilts/gcc/linux-x86/arm/arm-linux-ohoseabi-gcc/arm-linux-musleabi",
225f9996aaSopenharmony_ci      "//prebuilts/gcc/linux-x86/arm/arm-linux-ohoseabi-gcc/arm-linux-ohoseabi",
235f9996aaSopenharmony_ci      "//prebuilts/gcc/linux-x86/arm/arm-linux-ohoseabi-gcc/bin",
245f9996aaSopenharmony_ci      "//prebuilts/gcc/linux-x86/arm/arm-linux-ohoseabi-gcc/host_bin",
255f9996aaSopenharmony_ci      "//prebuilts/gcc/linux-x86/arm/arm-linux-ohoseabi-gcc/lib",
265f9996aaSopenharmony_ci      "//prebuilts/gcc/linux-x86/arm/arm-linux-ohoseabi-gcc/libexec",
275f9996aaSopenharmony_ci      "//prebuilts/gcc/linux-x86/arm/arm-linux-ohoseabi-gcc/runtime_musl",
285f9996aaSopenharmony_ci      "//prebuilts/gcc/linux-x86/arm/arm-linux-ohoseabi-gcc/target",
295f9996aaSopenharmony_ci    ]
305f9996aaSopenharmony_ci    outputs = [ "$ndk_linux_toolchains_out_dir/{{source_file_part}}" ]
315f9996aaSopenharmony_ci  }
325f9996aaSopenharmony_ci}
335f9996aaSopenharmony_ci
345f9996aaSopenharmony_ciif (ohos_build_compiler == "clang") {
355f9996aaSopenharmony_ci  copy("compiler") {
365f9996aaSopenharmony_ci    sources = [
375f9996aaSopenharmony_ci      "//prebuilts/clang/ohos/$ohos_build_ndk_target_host/llvm/NOTICE",
385f9996aaSopenharmony_ci      "//prebuilts/clang/ohos/$ohos_build_ndk_target_host/llvm/bin",
395f9996aaSopenharmony_ci      "//prebuilts/clang/ohos/$ohos_build_ndk_target_host/llvm/include",
405f9996aaSopenharmony_ci      "//prebuilts/clang/ohos/$ohos_build_ndk_target_host/llvm/lib",
415f9996aaSopenharmony_ci      "//prebuilts/clang/ohos/$ohos_build_ndk_target_host/llvm/libexec",
425f9996aaSopenharmony_ci      "//prebuilts/clang/ohos/$ohos_build_ndk_target_host/llvm/share",
435f9996aaSopenharmony_ci    ]
445f9996aaSopenharmony_ci    if (ohos_build_ndk_target_host == "linux-x86_64") {
455f9996aaSopenharmony_ci      outputs = [ "$ndk_linux_toolchains_out_dir/{{source_file_part}}" ]
465f9996aaSopenharmony_ci    } else if (ohos_build_ndk_target_host == "windows-x86_64") {
475f9996aaSopenharmony_ci      outputs = [ "$ndk_windows_toolchains_out_dir/{{source_file_part}}" ]
485f9996aaSopenharmony_ci    }
495f9996aaSopenharmony_ci  }
505f9996aaSopenharmony_ci}
515f9996aaSopenharmony_ci
525f9996aaSopenharmony_cindk_toolchains("build_script") {
535f9996aaSopenharmony_ci  src_type = "file"
545f9996aaSopenharmony_ci  src_dir = [
555f9996aaSopenharmony_ci    "//build/lite/ndk/build/BUILD.gn",
565f9996aaSopenharmony_ci    "//build/lite/ndk/build/build.py",
575f9996aaSopenharmony_ci    "//build/lite/ndk/README.md",
585f9996aaSopenharmony_ci    "//build/lite/ndk/build/.gn",
595f9996aaSopenharmony_ci  ]
605f9996aaSopenharmony_ci  dest_dir = [
615f9996aaSopenharmony_ci    "$root_out_dir/ndk",
625f9996aaSopenharmony_ci    "$root_out_dir/ndk",
635f9996aaSopenharmony_ci    "$root_out_dir/ndk",
645f9996aaSopenharmony_ci    "$root_out_dir/ndk/build",
655f9996aaSopenharmony_ci  ]
665f9996aaSopenharmony_ci}
675f9996aaSopenharmony_ci
685f9996aaSopenharmony_cindk_toolchains("source") {
695f9996aaSopenharmony_ci  src_dir = [
705f9996aaSopenharmony_ci    "//build/lite/ndk/sample",
715f9996aaSopenharmony_ci    "//build/lite/ndk/build/config",
725f9996aaSopenharmony_ci    "//build/lite/ndk/build/toolchain",
735f9996aaSopenharmony_ci  ]
745f9996aaSopenharmony_ci  dest_dir = [
755f9996aaSopenharmony_ci    "$root_out_dir/ndk/sample",
765f9996aaSopenharmony_ci    "$root_out_dir/ndk/build/config",
775f9996aaSopenharmony_ci    "$root_out_dir/ndk/build/toolchain",
785f9996aaSopenharmony_ci  ]
795f9996aaSopenharmony_ci  if (ohos_build_compiler == "clang") {
805f9996aaSopenharmony_ci    src_dir += [
815f9996aaSopenharmony_ci      "$root_out_dir/sysroot/usr/lib",
825f9996aaSopenharmony_ci      "$root_out_dir/sysroot/usr/include",
835f9996aaSopenharmony_ci    ]
845f9996aaSopenharmony_ci    dest_dir += [
855f9996aaSopenharmony_ci      "$root_out_dir/ndk/sysroot/usr/lib",
865f9996aaSopenharmony_ci      "$root_out_dir/ndk/sysroot/usr/include",
875f9996aaSopenharmony_ci    ]
885f9996aaSopenharmony_ci  }
895f9996aaSopenharmony_ci  if (host_os == "win") {
905f9996aaSopenharmony_ci    src_dir += [ "//prebuilts/build-tools/win-x86/bin" ]
915f9996aaSopenharmony_ci  } else {
925f9996aaSopenharmony_ci    src_dir += [ "//prebuilts/build-tools/linux-x86/bin" ]
935f9996aaSopenharmony_ci  }
945f9996aaSopenharmony_ci  dest_dir += [ "$root_out_dir/ndk/prebuilts/build-tools/bin" ]
955f9996aaSopenharmony_ci}
965f9996aaSopenharmony_ci
975f9996aaSopenharmony_cigroup("ndk_build") {
985f9996aaSopenharmony_ci  deps = [
995f9996aaSopenharmony_ci    ":build_script",
1005f9996aaSopenharmony_ci    ":source",
1015f9996aaSopenharmony_ci    "//base/startup/bootstrap_lite/services:bootstrap_lite_ndk",
1025f9996aaSopenharmony_ci    "//base/startup/syspara_lite/frameworks/parameter:parameter_notes",
1035f9996aaSopenharmony_ci    "//base/update/sys_installer_lite/frameworks:update_api",
1045f9996aaSopenharmony_ci    "//build/lite/config/subsystem/hiviewdfx:hilog_ndk",
1055f9996aaSopenharmony_ci    "//commonlibrary/utils_lite:native_api",
1065f9996aaSopenharmony_ci  ]
1075f9996aaSopenharmony_ci  if (ohos_kernel_type != "liteos_m") {
1085f9996aaSopenharmony_ci    deps += [
1095f9996aaSopenharmony_ci      "${aafwk_lite_path}/frameworks/ability_lite:ability_notes",
1105f9996aaSopenharmony_ci      "${appexecfwk_lite_path}/frameworks/bundle_lite:bundle_notes",
1115f9996aaSopenharmony_ci      "//base/security/permission_lite/interfaces/kits:permission_notes",
1125f9996aaSopenharmony_ci      "//base/sensors/sensor_lite/interfaces/kits/native:sensors_api",
1135f9996aaSopenharmony_ci      "//base/startup/init_lite/interfaces/kits/token:token_notes",
1145f9996aaSopenharmony_ci      "//build/lite/config/component/cJSON:cjson_ndk",
1155f9996aaSopenharmony_ci      "//drivers/hdf_core/adapter/khdf/liteos/ndk:hdf_api",
1165f9996aaSopenharmony_ci      "//foundation/arkui/ui_lite:ui_lite_ndk",
1175f9996aaSopenharmony_ci      "//foundation/graphic/graphic_utils_lite:graphic_utils_lite_ndk",
1185f9996aaSopenharmony_ci      "//foundation/graphic/graphic_utils_lite:lite_graphic_hals_ndk",
1195f9996aaSopenharmony_ci      "//foundation/graphic/surface_lite:surface_lite_ndk",
1205f9996aaSopenharmony_ci      "//foundation/multimedia/media_lite/services:media_ndk",
1215f9996aaSopenharmony_ci      "//foundation/systemabilitymgr/samgr_lite:samgr_lite_ndk",
1225f9996aaSopenharmony_ci      "//foundation/window/window_manager_lite:window_manager_lite_ndk",
1235f9996aaSopenharmony_ci      "//third_party/mbedtls:mbedtls_ndk",
1245f9996aaSopenharmony_ci      "//third_party/wpa_supplicant/wpa_supplicant-2.9:wpa_supplicant",
1255f9996aaSopenharmony_ci    ]
1265f9996aaSopenharmony_ci  } else {
1275f9996aaSopenharmony_ci    deps += [
1285f9996aaSopenharmony_ci      "$ohos_vendor_adapter_dir/hals/communication/wifi_lite/wifiservice:wifiservice_ndk",
1295f9996aaSopenharmony_ci      "//base/hiviewdfx/hilog_lite/frameworks/mini:hilog_lite_ndk",
1305f9996aaSopenharmony_ci      "//base/iothardware/peripheral:iothardware_ndk",
1315f9996aaSopenharmony_ci    ]
1325f9996aaSopenharmony_ci  }
1335f9996aaSopenharmony_ci}
1345f9996aaSopenharmony_ci
1355f9996aaSopenharmony_ciaction("ndk") {
1365f9996aaSopenharmony_ci  if (ohos_build_ndk) {
1375f9996aaSopenharmony_ci    deps = [ "doc" ]
1385f9996aaSopenharmony_ci    script = "//build/lite//ndk/archive_ndk.py"
1395f9996aaSopenharmony_ci    depfile = "${target_gen_dir}/${target_name}.d"
1405f9996aaSopenharmony_ci    ndk_name = "$ohos_build_ndk_target_host-$ohos_build_compiler-$ohos_build_ndk_version"
1415f9996aaSopenharmony_ci    args = [
1425f9996aaSopenharmony_ci      "--src_dir",
1435f9996aaSopenharmony_ci      rebase_path("$root_build_dir/ndk"),
1445f9996aaSopenharmony_ci      "--name",
1455f9996aaSopenharmony_ci      ndk_name,
1465f9996aaSopenharmony_ci      "--dest_dir",
1475f9996aaSopenharmony_ci      rebase_path("$root_build_dir/packages/ndk"),
1485f9996aaSopenharmony_ci    ]
1495f9996aaSopenharmony_ci    outputs = [ "$root_build_dir/packages/ndk/$ndk_name.zip" ]
1505f9996aaSopenharmony_ci  }
1515f9996aaSopenharmony_ci}
152