• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2022 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("//ark/runtime_core/ark_config.gni")
15import("//ark/ts2abc/ts2panda/ts2abc_config.gni")
16import("//build/config/clang/clang.gni")
17import("//build/ohos.gni")
18
19src_dir = target_out_dir + "/src"
20
21ohos_copy("ts2abc_src") {
22  sources = [ "${ts2abc_root}/src" ]
23
24  outputs = [ src_dir ]
25  module_install_name = ""
26}
27
28ohos_copy("node_modules") {
29  sources = [ rebase_path("${node_modules}") ]
30  outputs = [ target_out_dir + "/node_modules" ]
31  module_install_name = ""
32}
33
34ohos_copy("config_files") {
35  sources = [
36    "${ts2abc_root}/package-lock.json",
37    "${ts2abc_root}/package.json",
38    "${ts2abc_root}/tsconfig.json",
39    "${ts2abc_root}/webpack.config.js",
40  ]
41
42  outputs = [ target_out_dir + "/{{source_file_part}}" ]
43  module_install_name = ""
44}
45
46action("ts2abc_diagnostic_ts") {
47  visibility = [ ":*" ]
48  script = "scripts/gen_diagnostic.rb"
49  args = [
50    "--template",
51    rebase_path("templates/diagnostic.ts.erb", root_build_dir),
52    "--data",
53    rebase_path("scripts/diagnosticMessages.json", root_build_dir),
54    "--output",
55    rebase_path("${src_dir}/diagnostic.ts"),
56  ]
57
58  outputs = [ "${src_dir}/diagnostic.ts" ]
59  deps = [ "$ts2abc_root:ts2abc_src" ]
60}
61
62ark_gen_file("ts2abc_irnodes_ts") {
63  template_file = "templates/irnodes.ts.erb"
64  data_file = "$root_gen_dir/isa/isa.yaml"
65  requires = [
66    "$ark_root/isa/isapi.rb",
67    "$ark_root/libpandafile/pandafile_isapi.rb",
68  ]
69  output_file = "$src_dir/irnodes.ts"
70  extra_dependencies = [
71    "$ts2abc_root:ts2abc_src",
72    "$ark_root/isa:isa_combine",
73  ]
74}
75
76action("npm_run_build") {
77  visibility = [ ":*" ]
78  deps = [
79    "$ts2abc_root:config_files",
80    "$ts2abc_root:node_modules",
81    "$ts2abc_root:ts2abc_diagnostic_ts",
82    "$ts2abc_root:ts2abc_irnodes_ts",
83    "$ts2abc_root:ts2abc_src",
84  ]
85
86  if (is_linux || is_mingw || is_mac) {
87    deps += [ "$ts2abc_root/ts2abc:ts2abc" ]
88  }
89
90  script = "${ts2abc_root}/scripts/run.py"
91  args = [
92    "--src-dir",
93    rebase_path(ts2abc_root),
94    "--dist-dir",
95    rebase_path(target_out_dir),
96    "--node",
97    rebase_path(node_path),
98    "--node-modules",
99    rebase_path(node_modules),
100  ]
101
102  if (is_linux) {
103    args += [
104      "--platform",
105      "linux",
106      "--js2abc",
107      rebase_path("${root_out_dir}/ark/ark/js2abc"),
108    ]
109  } else if (is_mingw) {
110    args += [
111      "--platform",
112      "win",
113      "--js2abc",
114      rebase_path("${root_out_dir}/ark/ark/js2abc.exe"),
115    ]
116  } else if (is_mac) {
117    args += [
118      "--platform",
119      "mac",
120      "--js2abc",
121      rebase_path("${root_out_dir}/ark/ark/js2abc"),
122    ]
123  }
124
125  if (is_debug) {
126    args += [
127      "--buildMode",
128      "debug",
129    ]
130  } else {
131    args += [
132      "--buildMode",
133      "release",
134    ]
135  }
136
137  outputs = []
138  if (is_mingw) {
139    outputs += [ "${root_out_dir}/ark/ark/build-win" ]
140  } else if (is_mac) {
141    outputs += [ "${root_out_dir}/ark/ark/build-mac" ]
142  } else {
143    outputs += [ "${root_out_dir}/ark/ark/build" ]
144  }
145}
146
147if (is_linux) {
148  ohos_copy("ts2abc_build") {
149    deps = [ "$ts2abc_root:npm_run_build" ]
150    sources = [ "${root_out_dir}/ark/ark/build" ]
151    outputs = [ "${target_out_dir}/build-tmp" ]
152    module_source_dir = "${root_out_dir}/ark/ark/build"
153    module_install_name = ""
154  }
155
156  ohos_copy("ts2abc_build_ets") {
157    deps = [ "$ts2abc_root:npm_run_build" ]
158
159    sources = [ "${root_out_dir}/ark/ark/build" ]
160    outputs = [ "${root_out_dir}/ark/ark/build-ets" ]
161    module_source_dir = "${root_out_dir}/ark/ark/build-ets"
162    module_install_name = ""
163  }
164}
165
166if (is_mingw) {
167  ohos_copy("ts2abc_build_win") {
168    deps = [ "$ts2abc_root:npm_run_build" ]
169    sources = [ "${root_out_dir}/ark/ark/build-win" ]
170    outputs = [ "${target_out_dir}/build-tmp" ]
171    module_source_dir = "${root_out_dir}/ark/ark/build-win"
172    module_install_name = ""
173  }
174
175  ohos_copy("ts2abc_build_win_ets") {
176    deps = [ "$ts2abc_root:npm_run_build" ]
177    sources = [ "${root_out_dir}/ark/ark/build-win" ]
178    outputs = [ "${root_out_dir}/ark/ark/build-win-ets" ]
179    module_source_dir = "${root_out_dir}/ark/ark/build-win-ets"
180    module_install_name = ""
181  }
182}
183
184if (is_mac) {
185  ohos_copy("ts2abc_build_mac") {
186    deps = [ "$ts2abc_root:npm_run_build" ]
187    sources = [ "${root_out_dir}/ark/ark/build-mac" ]
188    outputs = [ "${target_out_dir}/build-tmp" ]
189    module_source_dir = "${root_out_dir}/ark/ark/build-mac"
190    module_install_name = ""
191  }
192
193  ohos_copy("ts2abc_build_mac_ets") {
194    deps = [ "$ts2abc_root:npm_run_build" ]
195    sources = [ "${root_out_dir}/ark/ark/build-mac" ]
196    outputs = [ "${root_out_dir}/ark/ark/build-mac-ets" ]
197    module_source_dir = "${root_out_dir}/ark/ark/build-mac-ets"
198    module_install_name = ""
199  }
200}
201
202ohos_copy("panda_ts2abc") {
203  sources = [ "${ts2abc_root}/scripts/ts2abc.js" ]
204
205  outputs = [ target_out_dir + "/$target_name/{{source_file_part}}" ]
206  module_source_dir = target_out_dir + "/$target_name/"
207  module_install_name = ""
208}
209
210ohos_copy("panda_ts2abc_ets") {
211  sources = [ "${ts2abc_root}/scripts/ts2abc.js" ]
212  outputs = [ target_out_dir + "/$target_name/{{source_file_part}}" ]
213  module_source_dir = target_out_dir + "/$target_name/"
214  module_install_name = ""
215}
216
217ohos_copy("ts2abc_js_file") {
218  sources = [ "${ts2abc_root}/scripts/ts2abc.js" ]
219  outputs = [ target_out_dir + "/{{source_file_part}}" ]
220}
221
222group("ark_ts2abc_build") {
223  deps = []
224  if (host_os != "mac") {
225    deps += [
226      "${ts2abc_root}:ts2abc_build(${buildtool_linux})",
227      "${ts2abc_root}:ts2abc_build_ets(${buildtool_linux})",
228    ]
229  } else {
230    deps += [
231      "${ts2abc_root}:ts2abc_build_mac(${buildtool_mac})",
232      "${ts2abc_root}:ts2abc_build_mac_ets(${buildtool_mac})",
233    ]
234  }
235}
236
237ohos_copy("copy_ts2abc_tests") {
238  sources = [ "${ts2abc_root}/tests" ]
239  deps = [ ":npm_run_build" ]
240
241  outputs = [ target_out_dir + "/tests" ]
242  module_install_name = ""
243}
244
245group("ts2abc_unittests") {
246  if (host_os == "linux") {
247    testonly = true
248    deps = [ "tests:ts2abc_tests(${buildtool_linux})" ]
249  }
250}
251