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/ohos/build_var.gni") 155f9996aaSopenharmony_ciimport("//build/ohos/sdk/sdk.gni") 165f9996aaSopenharmony_ciimport("//build/ohos_var.gni") 175f9996aaSopenharmony_ciimport("${build_configs_path}/platforms_list.gni") 185f9996aaSopenharmony_ci 195f9996aaSopenharmony_ciif (!use_current_sdk) { 205f9996aaSopenharmony_ci parse_script = "//build/ohos/sdk/parse_sdk_description.py" 215f9996aaSopenharmony_ci ohos_sdk_description_file = "//build/ohos/sdk/ohos_sdk_description_std.json" 225f9996aaSopenharmony_ci if (defined(ext_sdk_config_file) && ext_sdk_config_file != "") { 235f9996aaSopenharmony_ci ohos_sdk_description_file = ext_sdk_config_file 245f9996aaSopenharmony_ci } 255f9996aaSopenharmony_ci if (sdk_for_hap_build) { 265f9996aaSopenharmony_ci hap_build_sdk_config_parser = 275f9996aaSopenharmony_ci "//build/ohos/sdk/generate_hap_build_sdk_config.py" 285f9996aaSopenharmony_ci hap_build_sdk_description_file = "//out/sdk/ohos_sdk_description_hap.json" 295f9996aaSopenharmony_ci hap_build_sdk_args = [ 305f9996aaSopenharmony_ci "--sdk-description-file", 315f9996aaSopenharmony_ci rebase_path(ohos_sdk_description_file, root_build_dir), 325f9996aaSopenharmony_ci "--output-hap-build-sdk-desc-file", 335f9996aaSopenharmony_ci rebase_path(hap_build_sdk_description_file, root_build_dir), 345f9996aaSopenharmony_ci ] 355f9996aaSopenharmony_ci exec_script(hap_build_sdk_config_parser, hap_build_sdk_args) 365f9996aaSopenharmony_ci ohos_sdk_description_file = hap_build_sdk_description_file 375f9996aaSopenharmony_ci } 385f9996aaSopenharmony_ci 395f9996aaSopenharmony_ci if (sdk_build_public) { 405f9996aaSopenharmony_ci public_sdk_config_parser = "//build/ohos/sdk/parse_public_sdk.py" 415f9996aaSopenharmony_ci ohos_sdk_pub_description_file = 425f9996aaSopenharmony_ci "//out/sdk-public/ohos_sdk_pub_description_std.json" 435f9996aaSopenharmony_ci public_sdk_args = [ 445f9996aaSopenharmony_ci "--sdk-description-file", 455f9996aaSopenharmony_ci rebase_path(ohos_sdk_description_file, root_build_dir), 465f9996aaSopenharmony_ci "--root-build-dir", 475f9996aaSopenharmony_ci rebase_path("//", root_build_dir), 485f9996aaSopenharmony_ci "--node-js", 495f9996aaSopenharmony_ci rebase_path(nodejs, root_build_dir), 505f9996aaSopenharmony_ci "--output-pub-sdk-desc-file", 515f9996aaSopenharmony_ci rebase_path(ohos_sdk_pub_description_file, root_build_dir), 525f9996aaSopenharmony_ci ] 535f9996aaSopenharmony_ci exec_script(public_sdk_config_parser, public_sdk_args) 545f9996aaSopenharmony_ci ohos_sdk_description_file = ohos_sdk_pub_description_file 555f9996aaSopenharmony_ci } 565f9996aaSopenharmony_ci 575f9996aaSopenharmony_ci generated_sdk_modules_gni = "${generated_files_dir}/ohos_sdk_modules.gni" 585f9996aaSopenharmony_ci generated_sdk_types_file = "${generated_files_dir}/generated_sdk_types.txt" 595f9996aaSopenharmony_ci 605f9996aaSopenharmony_ci parse_args = [ 615f9996aaSopenharmony_ci "--sdk-description-file", 625f9996aaSopenharmony_ci rebase_path(ohos_sdk_description_file, root_build_dir), 635f9996aaSopenharmony_ci "--sdk-modules-gni", 645f9996aaSopenharmony_ci rebase_path(generated_sdk_modules_gni, root_build_dir), 655f9996aaSopenharmony_ci "--sdk-install-info-file", 665f9996aaSopenharmony_ci rebase_path(generated_sdk_module_install_paths, root_build_dir), 675f9996aaSopenharmony_ci "--sdk-types-file", 685f9996aaSopenharmony_ci rebase_path(generated_sdk_types_file, root_build_dir), 695f9996aaSopenharmony_ci "--base-platform", 705f9996aaSopenharmony_ci "phone", 715f9996aaSopenharmony_ci "--variant-to-product", 725f9996aaSopenharmony_ci rebase_path("./variant_to_product.json", root_build_dir), 735f9996aaSopenharmony_ci "--source-root-dir", 745f9996aaSopenharmony_ci rebase_path("//", root_build_dir), 755f9996aaSopenharmony_ci "--node-js", 765f9996aaSopenharmony_ci rebase_path(nodejs, root_build_dir), 775f9996aaSopenharmony_ci ] 785f9996aaSopenharmony_ci foreach(p, target_platform_list) { 795f9996aaSopenharmony_ci parse_args += [ 805f9996aaSopenharmony_ci "--platforms", 815f9996aaSopenharmony_ci p, 825f9996aaSopenharmony_ci ] 835f9996aaSopenharmony_ci } 845f9996aaSopenharmony_ci 855f9996aaSopenharmony_ci exec_script(parse_script, parse_args) 865f9996aaSopenharmony_ci 875f9996aaSopenharmony_ci sdk_types = read_file(generated_sdk_types_file, "list lines") 885f9996aaSopenharmony_ci 895f9996aaSopenharmony_ci import("${generated_sdk_modules_gni}") 905f9996aaSopenharmony_ci 915f9996aaSopenharmony_ci generate_all_types_sdk_script = "//build/ohos/sdk/generate_all_types_sdk.py" 925f9996aaSopenharmony_ci generated_build_gn = "$generated_files_dir/BUILD.gn" 935f9996aaSopenharmony_ci generate_args = [ 945f9996aaSopenharmony_ci "--sdk-modules", 955f9996aaSopenharmony_ci "ohos_sdk_modules", 965f9996aaSopenharmony_ci "--output", 975f9996aaSopenharmony_ci rebase_path(generated_build_gn, root_build_dir), 985f9996aaSopenharmony_ci "--current-dir", 995f9996aaSopenharmony_ci get_path_info(sdk_base_build_gn, "dir"), 1005f9996aaSopenharmony_ci "--generated-sdk-modules-gni", 1015f9996aaSopenharmony_ci generated_sdk_modules_gni, 1025f9996aaSopenharmony_ci "--type2displayname", 1035f9996aaSopenharmony_ci rebase_path("./type_to_display_name.json", root_build_dir), 1045f9996aaSopenharmony_ci "--api-version", 1055f9996aaSopenharmony_ci api_version, 1065f9996aaSopenharmony_ci "--release-type", 1075f9996aaSopenharmony_ci release_type, 1085f9996aaSopenharmony_ci "--meta-version", 1095f9996aaSopenharmony_ci meta_version, 1105f9996aaSopenharmony_ci ] 1115f9996aaSopenharmony_ci 1125f9996aaSopenharmony_ci foreach(os, sdk_systems) { 1135f9996aaSopenharmony_ci generate_args += [ 1145f9996aaSopenharmony_ci "--sdk-systems", 1155f9996aaSopenharmony_ci os, 1165f9996aaSopenharmony_ci ] 1175f9996aaSopenharmony_ci } 1185f9996aaSopenharmony_ci 1195f9996aaSopenharmony_ci foreach(sdk_type, sdk_types) { 1205f9996aaSopenharmony_ci generate_args += [ 1215f9996aaSopenharmony_ci "--sdk-types", 1225f9996aaSopenharmony_ci sdk_type, 1235f9996aaSopenharmony_ci ] 1245f9996aaSopenharmony_ci } 1255f9996aaSopenharmony_ci 1265f9996aaSopenharmony_ci exec_script(generate_all_types_sdk_script, generate_args) 1275f9996aaSopenharmony_ci 1285f9996aaSopenharmony_ci action_with_pydeps("generate_sdk_notice") { 1295f9996aaSopenharmony_ci deps = [ "${generated_files_dir}:generated_ohos_sdk" ] 1305f9996aaSopenharmony_ci inputs = [] 1315f9996aaSopenharmony_ci 1325f9996aaSopenharmony_ci script = "//build/ohos/notice/merge_notice_files.py" 1335f9996aaSopenharmony_ci depfile = "$target_gen_dir/$target_name.d" 1345f9996aaSopenharmony_ci _install_path = "${target_out_dir}/SDK_NOTICE_FILES/" 1355f9996aaSopenharmony_ci 1365f9996aaSopenharmony_ci outputs = [ 1375f9996aaSopenharmony_ci sdk_notice_txt, 1385f9996aaSopenharmony_ci sdk_notice_gz, 1395f9996aaSopenharmony_ci ] 1405f9996aaSopenharmony_ci args = [ 1415f9996aaSopenharmony_ci "--image-name", 1425f9996aaSopenharmony_ci "sdk", 1435f9996aaSopenharmony_ci "--notice-root-dir", 1445f9996aaSopenharmony_ci rebase_path(sdk_notice_dir, root_build_dir), 1455f9996aaSopenharmony_ci "--output-notice-txt", 1465f9996aaSopenharmony_ci rebase_path(sdk_notice_txt, root_build_dir), 1475f9996aaSopenharmony_ci "--output-notice-gz", 1485f9996aaSopenharmony_ci rebase_path(sdk_notice_gz, root_build_dir), 1495f9996aaSopenharmony_ci "--notice-title", 1505f9996aaSopenharmony_ci "Notices for files contained in SDK in this directory:", 1515f9996aaSopenharmony_ci "--static-library-notice-dir", 1525f9996aaSopenharmony_ci rebase_path(static_libraries_notice_dir, root_build_dir), 1535f9996aaSopenharmony_ci "--target-cpu", 1545f9996aaSopenharmony_ci target_cpu, 1555f9996aaSopenharmony_ci "--depfile", 1565f9996aaSopenharmony_ci rebase_path(depfile, root_build_dir), 1575f9996aaSopenharmony_ci ] 1585f9996aaSopenharmony_ci 1595f9996aaSopenharmony_ci foreach(type, sdk_types) { 1605f9996aaSopenharmony_ci foreach(os, sdk_systems) { 1615f9996aaSopenharmony_ci args += [ 1625f9996aaSopenharmony_ci "--collected-notice-zipfile", 1635f9996aaSopenharmony_ci rebase_path("${sdk_notice_archive_dir}/${os}-${type}.zip", 1645f9996aaSopenharmony_ci root_build_dir), 1655f9996aaSopenharmony_ci ] 1665f9996aaSopenharmony_ci inputs += [ "${sdk_notice_archive_dir}/${os}-${type}.zip" ] 1675f9996aaSopenharmony_ci } 1685f9996aaSopenharmony_ci } 1695f9996aaSopenharmony_ci } 1705f9996aaSopenharmony_ci 1715f9996aaSopenharmony_ci action("verify_sdk_notice_file") { 1725f9996aaSopenharmony_ci deps = [ ":generate_sdk_notice" ] 1735f9996aaSopenharmony_ci 1745f9996aaSopenharmony_ci script = "//build/core/build_scripts/verify_notice.sh" 1755f9996aaSopenharmony_ci _verify_result = "${target_out_dir}/sdk_notice_verify_result.out" 1765f9996aaSopenharmony_ci 1775f9996aaSopenharmony_ci outputs = [ _verify_result ] 1785f9996aaSopenharmony_ci 1795f9996aaSopenharmony_ci args = [ 1805f9996aaSopenharmony_ci rebase_path(sdk_notice_txt, root_build_dir), 1815f9996aaSopenharmony_ci rebase_path(_verify_result, root_build_dir), 1825f9996aaSopenharmony_ci rebase_path("${product_output_dir}/${product_name}", root_build_dir), 1835f9996aaSopenharmony_ci ] 1845f9996aaSopenharmony_ci } 1855f9996aaSopenharmony_ci 1865f9996aaSopenharmony_ci group("ohos_sdk_pre") { 1875f9996aaSopenharmony_ci deps = [] 1885f9996aaSopenharmony_ci if (enable_process_notice) { 1895f9996aaSopenharmony_ci deps += [ 1905f9996aaSopenharmony_ci ":generate_sdk_notice", 1915f9996aaSopenharmony_ci ":verify_sdk_notice_file", 1925f9996aaSopenharmony_ci ] 1935f9996aaSopenharmony_ci } 1945f9996aaSopenharmony_ci deps += [ "${generated_files_dir}:generated_ohos_sdk" ] 1955f9996aaSopenharmony_ci } 1965f9996aaSopenharmony_ci 1975f9996aaSopenharmony_ci sdk_delivery_list = "//build/ohos/sdk/sdk_delivery_list.json" 1985f9996aaSopenharmony_ci action("check_sdk_completeness") { 1995f9996aaSopenharmony_ci deps = [ 2005f9996aaSopenharmony_ci ":ohos_sdk", 2015f9996aaSopenharmony_ci "//build/ohos/ndk:ohos_ndk", 2025f9996aaSopenharmony_ci ] 2035f9996aaSopenharmony_ci if (host_os == "mac" && enable_sign) { 2045f9996aaSopenharmony_ci deps += [ ":sign_sdk" ] 2055f9996aaSopenharmony_ci } 2065f9996aaSopenharmony_ci 2075f9996aaSopenharmony_ci script = "//build/ohos/sdk/check_sdk_completeness.py" 2085f9996aaSopenharmony_ci _verify_result = "${target_out_dir}/check_sdk_completeness.txt" 2095f9996aaSopenharmony_ci 2105f9996aaSopenharmony_ci outputs = [ _verify_result ] 2115f9996aaSopenharmony_ci 2125f9996aaSopenharmony_ci args = [ 2135f9996aaSopenharmony_ci "--sdk-delivery-list", 2145f9996aaSopenharmony_ci rebase_path(sdk_delivery_list, root_build_dir), 2155f9996aaSopenharmony_ci root_build_dir, 2165f9996aaSopenharmony_ci "--sdk-archive-dir", 2175f9996aaSopenharmony_ci rebase_path("${product_output_dir}/${product_name}", root_build_dir), 2185f9996aaSopenharmony_ci product_name, 2195f9996aaSopenharmony_ci sdk_version, 2205f9996aaSopenharmony_ci "--sdk-platform", 2215f9996aaSopenharmony_ci sdk_platform, 2225f9996aaSopenharmony_ci ] 2235f9996aaSopenharmony_ci } 2245f9996aaSopenharmony_ci 2255f9996aaSopenharmony_ci action_with_pydeps("add_notice_file") { 2265f9996aaSopenharmony_ci deps = [ 2275f9996aaSopenharmony_ci ":generate_sdk_notice", 2285f9996aaSopenharmony_ci ":ohos_sdk_pre", 2295f9996aaSopenharmony_ci ] 2305f9996aaSopenharmony_ci script = "//build/ohos/sdk/add_notice_file.py" 2315f9996aaSopenharmony_ci _output = target_gen_dir + "/$target_name.stamp" 2325f9996aaSopenharmony_ci depfile = "$target_gen_dir/$target_name.d" 2335f9996aaSopenharmony_ci args = [ 2345f9996aaSopenharmony_ci "--sdk-notice-file", 2355f9996aaSopenharmony_ci rebase_path(sdk_notice_txt, root_build_dir), 2365f9996aaSopenharmony_ci "--sdk-archive-dir", 2375f9996aaSopenharmony_ci rebase_path("${product_output_dir}/${product_name}", root_build_dir), 2385f9996aaSopenharmony_ci "--output", 2395f9996aaSopenharmony_ci rebase_path(_output, root_build_dir), 2405f9996aaSopenharmony_ci "--depfile", 2415f9996aaSopenharmony_ci rebase_path(depfile, root_build_dir), 2425f9996aaSopenharmony_ci "--skip-pattern", 2435f9996aaSopenharmony_ci "native", 2445f9996aaSopenharmony_ci ] 2455f9996aaSopenharmony_ci 2465f9996aaSopenharmony_ci inputs = [ sdk_notice_txt ] 2475f9996aaSopenharmony_ci outputs = [ _output ] 2485f9996aaSopenharmony_ci } 2495f9996aaSopenharmony_ci 2505f9996aaSopenharmony_ci action("sign_sdk") { 2515f9996aaSopenharmony_ci deps = [ 2525f9996aaSopenharmony_ci ":ohos_sdk", 2535f9996aaSopenharmony_ci "//build/ohos/ndk:ohos_ndk", 2545f9996aaSopenharmony_ci ] 2555f9996aaSopenharmony_ci script = "//build/scripts/sign_sdk.py" 2565f9996aaSopenharmony_ci args = [ 2575f9996aaSopenharmony_ci "--sdk-out-dir", 2585f9996aaSopenharmony_ci rebase_path(ohos_sdk_out_dir, root_build_dir), 2595f9996aaSopenharmony_ci ] 2605f9996aaSopenharmony_ci outputs = [ "$target_out_dir/$target_name.stamp" ] 2615f9996aaSopenharmony_ci } 2625f9996aaSopenharmony_ci 2635f9996aaSopenharmony_ci group("ohos_sdk") { 2645f9996aaSopenharmony_ci deps = [] 2655f9996aaSopenharmony_ci if (enable_process_notice) { 2665f9996aaSopenharmony_ci deps += [ ":add_notice_file" ] 2675f9996aaSopenharmony_ci } 2685f9996aaSopenharmony_ci deps += [ ":ohos_sdk_pre" ] 2695f9996aaSopenharmony_ci } 2705f9996aaSopenharmony_ci 2715f9996aaSopenharmony_ci group("ohos_sdk_verify") { 2725f9996aaSopenharmony_ci deps = [] 2735f9996aaSopenharmony_ci 2745f9996aaSopenharmony_ci if (sdk_check_flag) { 2755f9996aaSopenharmony_ci deps += [ ":check_sdk_completeness" ] 2765f9996aaSopenharmony_ci } 2775f9996aaSopenharmony_ci } 2785f9996aaSopenharmony_ci} 279