• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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