• 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.gni")
15import("//build/ohos/ace/ace.gni")
16import("//build/ohos_var.gni")
17import("//foundation/arkui/ace_engine/ace_config.gni")
18if (sdk_build_public) {
19  import("//out/sdk-public/public_interface/sdk-js/interface_config.gni")
20} else {
21  import("//interface/sdk-js/interface_config.gni")
22}
23
24ets_loader_lib_dir =
25    get_label_info(":build_ets_loader_library", "target_out_dir") + "/lib"
26ets_loader_declarations_dir = get_label_info(":build_ets_loader_library",
27                                             "target_out_dir") + "/declarations"
28ets_loader_component_config_file =
29    get_label_info(":build_ets_loader_library", "target_out_dir") +
30    "/component_config.json"
31ets_loader_form_config_file =
32    get_label_info(":build_ets_loader_library", "target_out_dir") +
33    "/form_config.json"
34ets_sysResource = get_label_info(":build_ets_sysResource", "target_out_dir") +
35                  "/sysResource.js"
36
37action("build_ets_loader_library") {
38  deps = [
39    ":components",
40    ":form_components",
41    ":server",
42  ]
43  script = "build_ets_loader_library.py"
44  depfile = "$target_gen_dir/$target_name.d"
45  outputs = [
46    ets_loader_lib_dir,
47    ets_loader_declarations_dir,
48    ets_loader_component_config_file,
49    ets_loader_form_config_file,
50  ]
51
52  _ets_loader_dir = "compiler"
53  if (is_standard_system) {
54    _ace_config_dir = "compiler"
55  } else {
56    _ace_config_dir = "//prebuilts/ace-toolkit/ets-loader/compiler"
57  }
58  _declarations_file_dir = "//interface/sdk-js/api/@internal/component/ets"
59  if (sdk_build_public) {
60    _declarations_file_dir =
61        "//out/sdk-public/public_interface/sdk-js/api/@internal/component/ets"
62  }
63
64  _babel_js = _ace_config_dir + "/node_modules/@babel/cli/bin/babel.js"
65  _babel_config_js = _ace_config_dir + "/babel.config.js"
66  _uglify_source_js = _ace_config_dir + "/uglify-source.js"
67  _build_declarations_file_js = _ace_config_dir + "/build_declarations_file.js"
68
69  inputs = [
70    _babel_config_js,
71    _babel_js,
72    _uglify_source_js,
73    _build_declarations_file_js,
74  ]
75
76  # different host platform nodejs tool directory
77  if (host_os == "linux") {
78    if (is_standard_system) {
79      nodejs_path = "//prebuilts/build-tools/common/nodejs/node-v12.18.4-linux-x64/bin/node"
80    } else {
81      nodejs_path =
82          "//prebuilts/ace-toolkit/nodejs/node-v12.18.4-linux-x64/bin/node"
83    }
84  } else if (host_os == "mac") {
85    if (is_standard_system) {
86      nodejs_path = "//prebuilts/build-tools/common/nodejs/node-v12.18.4-darwin-x64/bin/node"
87    } else {
88      nodejs_path =
89          "//prebuilts/ace-toolkit/nodejs/node-v12.18.4-darwin-x64/bin/node"
90    }
91  } else {
92    assert(false, "Unsupported host_os: $host_os")
93  }
94
95  args = [
96    "--depfile",
97    rebase_path(depfile, root_build_dir),
98    "--node",
99    rebase_path(nodejs_path, root_build_dir),
100    "--babel-js",
101    rebase_path(_babel_js, root_build_dir),
102    "--ets-loader-src-dir",
103    rebase_path(_ets_loader_dir + "/src", root_build_dir),
104    "--babel-config-js",
105    rebase_path(_babel_config_js, root_build_dir),
106    "--uglify-source-js",
107    rebase_path(_uglify_source_js, root_build_dir),
108    "--output-dir",
109    rebase_path(ets_loader_lib_dir, root_build_dir),
110    "--declarations-file-dir",
111    rebase_path(_declarations_file_dir, root_build_dir),
112    "--build-declarations-file-js",
113    rebase_path(_build_declarations_file_js, root_build_dir),
114    "--output-declarations-dir",
115    rebase_path(ets_loader_declarations_dir, root_build_dir),
116    "--output-component-config-file",
117    rebase_path(ets_loader_component_config_file, root_build_dir),
118    "--output-form-config-file",
119    rebase_path(ets_loader_form_config_file, root_build_dir),
120  ]
121}
122
123action("build_ets_sysResource") {
124  if (is_standard_system) {
125    script = "//developtools/ace_ets2bundle/generateSysResource.py"
126  } else {
127    script = "//foundation/ace/huawei_proprietary/tools/ets-loader/generateSysResource.py"
128  }
129  outputs = [ ets_sysResource ]
130
131  _id_defined_json = "//base/global/system_resources/systemres/main/resources/base/element/id_defined.json"
132  inputs = [ _id_defined_json ]
133
134  args = [
135    "--input-json",
136    rebase_path(_id_defined_json, root_build_dir),
137    "--output-js",
138    rebase_path(ets_sysResource, root_build_dir),
139  ]
140}
141
142ets_loader_sources = [
143  "compiler/compile_plugin.js",
144  "compiler/main.js",
145  "compiler/npm-install.js",
146  "compiler/package-lock.json",
147  "compiler/package.json",
148  "compiler/rollup.config.js",
149  "compiler/tsconfig.esm.json",
150  "compiler/tsconfig.json",
151  "compiler/webpack.config.js",
152]
153
154ohos_copy("ets_loader_deps") {
155  sources =
156      [ "//third_party/typescript/build_package/ohos-typescript-4.2.3-r2.tgz" ]
157  outputs = [ target_out_dir + "/$target_name/{{source_file_part}}" ]
158  module_source_dir = target_out_dir + "/$target_name"
159  module_install_name = ""
160  license_file = "//third_party/typescript/LICENSE"
161}
162
163ohos_copy("ets_loader") {
164  deps = [
165    ":build_ets_loader_library",
166    ":ets_loader_deps",
167  ]
168  sources = ets_loader_sources
169  deps += [ ":build_ets_sysResource" ]
170  sources += [ ets_sysResource ]
171
172  outputs = [ target_out_dir + "/$target_name/{{source_file_part}}" ]
173  module_source_dir = target_out_dir + "/$target_name"
174  module_install_name = ""
175}
176
177ohos_copy("ets_loader_component_config") {
178  deps = [ ":build_ets_loader_library" ]
179  sources = [ ets_loader_component_config_file ]
180
181  outputs = [ target_out_dir + "/$target_name/{{source_file_part}}" ]
182  module_source_dir = target_out_dir + "/$target_name"
183  module_install_name = ""
184}
185
186ohos_copy("ets_loader_form_config") {
187  deps = [ ":build_ets_loader_library" ]
188  sources = [ ets_loader_form_config_file ]
189
190  outputs = [ target_out_dir + "/$target_name/{{source_file_part}}" ]
191  module_source_dir = target_out_dir + "/$target_name"
192  module_install_name = ""
193}
194
195ohos_copy("ets_loader_library") {
196  deps = [ ":build_ets_loader_library" ]
197  sources = [ ets_loader_lib_dir ]
198  outputs = [ target_out_dir + "/$target_name" ]
199  module_source_dir = target_out_dir + "/$target_name"
200  module_install_name = ""
201}
202
203ohos_copy("components") {
204  sources = [ "compiler/components" ]
205  outputs = [ target_out_dir + "/$target_name" ]
206  module_source_dir = target_out_dir + "/$target_name"
207  module_install_name = ""
208}
209
210ohos_copy("form_components") {
211  sources = [ "compiler/form_components" ]
212  outputs = [ target_out_dir + "/$target_name" ]
213  module_source_dir = target_out_dir + "/$target_name"
214  module_install_name = ""
215}
216
217ohos_copy("server") {
218  sources = [ "compiler/server" ]
219  outputs = [ target_out_dir + "/$target_name" ]
220  module_source_dir = target_out_dir + "/$target_name"
221  module_install_name = ""
222}
223
224ohos_copy("codegen") {
225  sources = [ "compiler/codegen" ]
226  outputs = [ target_out_dir + "/$target_name" ]
227  module_source_dir = target_out_dir + "/$target_name"
228  module_install_name = ""
229}
230
231ohos_copy("ets_loader_declaration") {
232  deps = [ ":build_ets_loader_library" ]
233  sources = [ ets_loader_declarations_dir ]
234  outputs = [ target_out_dir + "/$target_name" ]
235  module_source_dir = target_out_dir + "/$target_name"
236  module_install_name = ""
237}
238
239ohos_copy("ets_loader_ark") {
240  deps = [ ":build_ets_loader_library" ]
241  sources = ets_loader_sources
242  deps += [ ":build_ets_sysResource" ]
243  sources += [ ets_sysResource ]
244  outputs = [ target_out_dir + "/$target_name/{{source_file_part}}" ]
245}
246
247ohos_copy("ets_loader_ark_lib") {
248  deps = [
249    ":build_ets_loader_library",
250    ":ets_loader_ark",
251  ]
252  sources = [ ets_loader_lib_dir ]
253  outputs = [ target_out_dir + "/ets_loader_ark/lib" ]
254}
255
256ohos_copy("ets_loader_ark_declaration") {
257  deps = [
258    ":build_ets_loader_library",
259    ":ets_loader_ark",
260  ]
261  sources = [ ets_loader_declarations_dir ]
262  outputs = [ target_out_dir + "/ets_loader_ark/declarations" ]
263}
264
265ohos_copy("ets_loader_ark_components") {
266  deps = [
267    ":build_ets_loader_library",
268    ":ets_loader_ark",
269  ]
270  sources = [ "compiler/components" ]
271  outputs = [ target_out_dir + "/ets_loader_ark/components" ]
272}
273
274ohos_copy("ets_loader_ark_form_components") {
275  deps = [
276    ":build_ets_loader_library",
277    ":ets_loader_ark",
278  ]
279  sources = [ "compiler/form_components" ]
280  outputs = [ target_out_dir + "/ets_loader_ark/form_components" ]
281}
282
283ohos_copy("ets_loader_ark_server") {
284  deps = [
285    ":build_ets_loader_library",
286    ":ets_loader_ark",
287  ]
288  sources = [ "compiler/server" ]
289  outputs = [ target_out_dir + "/ets_loader_ark/server" ]
290}
291
292ohos_copy("ets_loader_ark_codegen") {
293  deps = [
294    ":build_ets_loader_library",
295    ":ets_loader_ark",
296  ]
297  sources = [ "compiler/codegen" ]
298  outputs = [ target_out_dir + "/ets_loader_ark/codegen" ]
299}
300
301ohos_copy("ohos_declaration_ets_ark") {
302  deps = []
303  if (sdk_build_public) {
304    deps += [ "//out/sdk-public/public_interface/sdk-js:ohos_declaration_ets" ]
305  } else {
306    deps += [ "//interface/sdk-js:ohos_declaration_ets" ]
307  }
308
309  sources = [ root_out_dir + "/ohos_declaration/ohos_declaration_ets" ]
310
311  outputs = [ target_out_dir + "/../api" ]
312}
313
314ohos_copy("common_api_ark") {
315  sources = common_api_src
316  deps = [ ":ohos_declaration_ets_ark" ]
317  outputs = [ target_out_dir + "/../../developtools/api/{{source_file_part}}" ]
318  module_install_name = ""
319}
320
321ohos_copy("ets_loader_node_modules") {
322  deps = [
323    ":common_api_ark",
324    ":ets_loader_ark",
325    ":ets_loader_ark_codegen",
326    ":ets_loader_ark_components",
327    ":ets_loader_ark_declaration",
328    ":ets_loader_ark_form_components",
329    ":ets_loader_ark_lib",
330    ":ets_loader_ark_server",
331  ]
332  sources = [ "//developtools/ace_ets2bundle/compiler/node_modules" ]
333  outputs = [ target_out_dir + "/ets_loader_ark/node_modules" ]
334}
335