1# Copyright (c) 2021 Huawei Device Co., Ltd. 2# Licensed under the Apache License, Version 2.0 (the "License"); 3# you may not use this file except in compliance with the License. 4# You may obtain a copy of the License at 5# 6# http://www.apache.org/licenses/LICENSE-2.0 7# 8# Unless required by applicable law or agreed to in writing, software 9# distributed under the License is distributed on an "AS IS" BASIS, 10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11# See the License for the specific language governing permissions and 12# limitations under the License. 13 14import("//build/ohos/build_var.gni") 15import("//build/ohos/sdk/sdk.gni") 16import("//build/ohos_var.gni") 17import("${build_configs_path}/platforms_list.gni") 18 19parse_script = "//build/ohos/sdk/parse_sdk_description.py" 20ohos_sdk_description_file = "//build/ohos/sdk/ohos_sdk_description_std.json" 21 22if (sdk_build_public) { 23 pulibc_sdk_config_parser = "//build/ohos/sdk/parse_public_sdk.py" 24 ohos_sdk_pub_description_file = 25 "//out/sdk-public/ohos_sdk_pub_description_std.json" 26 public_sdk_args = [ 27 "--sdk-description-file", 28 rebase_path(ohos_sdk_description_file, root_build_dir), 29 "--root-build-dir", 30 rebase_path("//", root_build_dir), 31 "--node-js", 32 rebase_path(nodejs, root_build_dir), 33 "--output-pub-sdk-desc-file", 34 rebase_path(ohos_sdk_pub_description_file, root_build_dir), 35 ] 36 exec_script(pulibc_sdk_config_parser, public_sdk_args) 37 ohos_sdk_description_file = ohos_sdk_pub_description_file 38} 39 40generated_sdk_modules_gni = "${generated_files_dir}/ohos_sdk_modules.gni" 41generated_sdk_types_file = "${generated_files_dir}/generated_sdk_types.txt" 42 43parse_args = [ 44 "--sdk-description-file", 45 rebase_path(ohos_sdk_description_file, root_build_dir), 46 "--sdk-modules-gni", 47 rebase_path(generated_sdk_modules_gni, root_build_dir), 48 "--sdk-install-info-file", 49 rebase_path(generated_sdk_module_install_paths, root_build_dir), 50 "--sdk-types-file", 51 rebase_path(generated_sdk_types_file, root_build_dir), 52 "--base-platform", 53 "phone", 54 "--variant-to-product", 55 rebase_path("./variant_to_product.json", root_build_dir), 56 "--source-root-dir", 57 rebase_path("//", root_build_dir), 58 "--node-js", 59 rebase_path(nodejs, root_build_dir), 60] 61foreach(p, target_platform_list) { 62 parse_args += [ 63 "--platforms", 64 p, 65 ] 66} 67 68exec_script(parse_script, parse_args) 69 70sdk_types = read_file(generated_sdk_types_file, "list lines") 71 72import("${generated_sdk_modules_gni}") 73 74generate_all_types_sdk_script = "//build/ohos/sdk/generate_all_types_sdk.py" 75generated_build_gn = "$generated_files_dir/BUILD.gn" 76generate_args = [ 77 "--sdk-modules", 78 "ohos_sdk_modules", 79 "--output", 80 rebase_path(generated_build_gn, root_build_dir), 81 "--current-dir", 82 get_path_info(sdk_base_build_gn, "dir"), 83 "--generated-sdk-modules-gni", 84 generated_sdk_modules_gni, 85 "--type2displayname", 86 rebase_path("./type_to_display_name.json", root_build_dir), 87 "--api-version", 88 api_version, 89 "--release-type", 90 release_type, 91 "--meta-version", 92 meta_version, 93] 94 95foreach(os, sdk_systems) { 96 generate_args += [ 97 "--sdk-systems", 98 os, 99 ] 100} 101 102foreach(sdk_type, sdk_types) { 103 generate_args += [ 104 "--sdk-types", 105 sdk_type, 106 ] 107} 108 109exec_script(generate_all_types_sdk_script, generate_args) 110 111action_with_pydeps("generate_sdk_notice") { 112 deps = [ "${generated_files_dir}:generated_ohos_sdk" ] 113 inputs = [] 114 115 script = "//build/ohos/notice/merge_notice_files.py" 116 depfile = "$target_gen_dir/$target_name.d" 117 _install_path = "${target_out_dir}/SDK_NOTICE_FILES/" 118 119 outputs = [ 120 sdk_notice_txt, 121 sdk_notice_gz, 122 ] 123 args = [ 124 "--image-name", 125 "sdk", 126 "--notice-root-dir", 127 rebase_path(sdk_notice_dir, root_build_dir), 128 "--output-notice-txt", 129 rebase_path(sdk_notice_txt, root_build_dir), 130 "--output-notice-gz", 131 rebase_path(sdk_notice_gz, root_build_dir), 132 "--notice-title", 133 "Notices for files contained in SDK in this directory:", 134 "--static-library-notice-dir", 135 rebase_path(static_libraries_notice_dir, root_build_dir), 136 "--target-cpu", 137 target_cpu, 138 "--depfile", 139 rebase_path(depfile, root_build_dir), 140 ] 141 142 foreach(type, sdk_types) { 143 foreach(os, sdk_systems) { 144 args += [ 145 "--collected-notice-zipfile", 146 rebase_path("${sdk_notice_archive_dir}/${os}-${type}.zip", 147 root_build_dir), 148 ] 149 inputs += [ "${sdk_notice_archive_dir}/${os}-${type}.zip" ] 150 } 151 } 152} 153 154action("verify_sdk_notice_file") { 155 deps = [ ":generate_sdk_notice" ] 156 157 script = "//build/core/build_scripts/verify_notice.sh" 158 _verify_result = "${target_out_dir}/sdk_notice_verify_result.out" 159 160 outputs = [ _verify_result ] 161 162 args = [ 163 rebase_path(sdk_notice_txt, root_build_dir), 164 rebase_path(_verify_result, root_build_dir), 165 rebase_path("${product_output_dir}/ohos-sdk", root_build_dir), 166 ] 167} 168 169group("ohos_sdk_pre") { 170 deps = [ 171 ":generate_sdk_notice", 172 ":verify_sdk_notice_file", 173 "${generated_files_dir}:generated_ohos_sdk", 174 ] 175} 176 177action_with_pydeps("add_notice_file") { 178 deps = [ 179 ":generate_sdk_notice", 180 ":ohos_sdk_pre", 181 ] 182 script = "//build/ohos/sdk/add_notice_file.py" 183 _output = target_gen_dir + "/$target_name.stamp" 184 depfile = "$target_gen_dir/$target_name.d" 185 args = [ 186 "--sdk-notice-file", 187 rebase_path(sdk_notice_txt, root_build_dir), 188 "--sdk-archive-dir", 189 rebase_path("${product_output_dir}/ohos-sdk", root_build_dir), 190 "--output", 191 rebase_path(_output, root_build_dir), 192 "--depfile", 193 rebase_path(depfile, root_build_dir), 194 "--skip-pattern", 195 "native", 196 ] 197 198 inputs = [ sdk_notice_txt ] 199 outputs = [ _output ] 200} 201 202group("ohos_sdk") { 203 deps = [ 204 ":add_notice_file", 205 ":ohos_sdk_pre", 206 ] 207} 208