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