• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2021-2025 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("//arkcompiler/ets_frontend/es2panda/es2abc_config.gni")
15import("//arkcompiler/ets_frontend/ets_frontend_config.gni")
16
17if ((defined(ark_standalone_build) && ark_standalone_build) || (defined(is_arkui_x) && is_arkui_x)) {
18  import("//arkcompiler/runtime_core/ark_config.gni")
19} else {
20  import("//arkcompiler/ets_frontend/ark_config.gni")
21}
22
23es2panda_src = [
24  "es2panda.cpp",
25  "binder/binder.cpp",
26  "binder/declaration.cpp",
27  "binder/scope.cpp",
28  "binder/variable.cpp",
29  "compiler/base/catchTable.cpp",
30  "compiler/base/condition.cpp",
31  "compiler/base/destructuring.cpp",
32  "compiler/base/hoisting.cpp",
33  "compiler/base/iterators.cpp",
34  "compiler/base/lexenv.cpp",
35  "compiler/base/literals.cpp",
36  "compiler/base/lreference.cpp",
37  "compiler/base/optionalChain.cpp",
38  "compiler/core/compileQueue.cpp",
39  "compiler/core/compilerContext.cpp",
40  "compiler/core/compilerImpl.cpp",
41  "compiler/core/dynamicContext.cpp",
42  "compiler/core/emitter/commonjs.cpp",
43  "compiler/core/emitter/emitter.cpp",
44  "compiler/core/emitter/moduleRecordEmitter.cpp",
45  "compiler/core/envScope.cpp",
46  "compiler/core/function.cpp",
47  "compiler/core/inlineCache.cpp",
48  "compiler/core/labelTarget.cpp",
49  "compiler/core/pandagen.cpp",
50  "compiler/core/regAllocator.cpp",
51  "compiler/core/regScope.cpp",
52  "compiler/core/switchBuilder.cpp",
53  "compiler/debugger/debuginfoDumper.cpp",
54  "compiler/function/asyncFunctionBuilder.cpp",
55  "compiler/function/asyncGeneratorFunctionBuilder.cpp",
56  "compiler/function/functionBuilder.cpp",
57  "compiler/function/generatorFunctionBuilder.cpp",
58  "ir/astDump.cpp",
59  "ir/base/annotation.cpp",
60  "ir/base/catchClause.cpp",
61  "ir/base/classDefinition.cpp",
62  "ir/base/classProperty.cpp",
63  "ir/base/classStaticBlock.cpp",
64  "ir/base/decorator.cpp",
65  "ir/base/metaProperty.cpp",
66  "ir/base/methodDefinition.cpp",
67  "ir/base/property.cpp",
68  "ir/base/scriptFunction.cpp",
69  "ir/base/spreadElement.cpp",
70  "ir/base/templateElement.cpp",
71  "ir/expression.cpp",
72  "ir/expressions/arrayExpression.cpp",
73  "ir/expressions/arrowFunctionExpression.cpp",
74  "ir/expressions/assignmentExpression.cpp",
75  "ir/expressions/awaitExpression.cpp",
76  "ir/expressions/binaryExpression.cpp",
77  "ir/expressions/callExpression.cpp",
78  "ir/expressions/chainExpression.cpp",
79  "ir/expressions/classExpression.cpp",
80  "ir/expressions/conditionalExpression.cpp",
81  "ir/expressions/functionExpression.cpp",
82  "ir/expressions/identifier.cpp",
83  "ir/expressions/importExpression.cpp",
84  "ir/expressions/literal.cpp",
85  "ir/expressions/literals/bigIntLiteral.cpp",
86  "ir/expressions/literals/booleanLiteral.cpp",
87  "ir/expressions/literals/nullLiteral.cpp",
88  "ir/expressions/literals/numberLiteral.cpp",
89  "ir/expressions/literals/regExpLiteral.cpp",
90  "ir/expressions/literals/stringLiteral.cpp",
91  "ir/expressions/literals/taggedLiteral.cpp",
92  "ir/expressions/memberExpression.cpp",
93  "ir/expressions/newExpression.cpp",
94  "ir/expressions/objectExpression.cpp",
95  "ir/expressions/omittedExpression.cpp",
96  "ir/expressions/privateIdentifier.cpp",
97  "ir/expressions/sequenceExpression.cpp",
98  "ir/expressions/superExpression.cpp",
99  "ir/expressions/taggedTemplateExpression.cpp",
100  "ir/expressions/templateLiteral.cpp",
101  "ir/expressions/thisExpression.cpp",
102  "ir/expressions/typeArgumentsExpression.cpp",
103  "ir/expressions/unaryExpression.cpp",
104  "ir/expressions/updateExpression.cpp",
105  "ir/expressions/yieldExpression.cpp",
106  "ir/module/assertClause.cpp",
107  "ir/module/assertEntry.cpp",
108  "ir/module/exportAllDeclaration.cpp",
109  "ir/module/exportDefaultDeclaration.cpp",
110  "ir/module/exportNamedDeclaration.cpp",
111  "ir/module/exportSpecifier.cpp",
112  "ir/module/importDeclaration.cpp",
113  "ir/module/importDefaultSpecifier.cpp",
114  "ir/module/importNamespaceSpecifier.cpp",
115  "ir/module/importSpecifier.cpp",
116  "ir/statement.cpp",
117  "ir/statements/blockStatement.cpp",
118  "ir/statements/breakStatement.cpp",
119  "ir/statements/classDeclaration.cpp",
120  "ir/statements/continueStatement.cpp",
121  "ir/statements/debuggerStatement.cpp",
122  "ir/statements/doWhileStatement.cpp",
123  "ir/statements/emptyStatement.cpp",
124  "ir/statements/expressionStatement.cpp",
125  "ir/statements/forInStatement.cpp",
126  "ir/statements/forOfStatement.cpp",
127  "ir/statements/forUpdateStatement.cpp",
128  "ir/statements/functionDeclaration.cpp",
129  "ir/statements/ifStatement.cpp",
130  "ir/statements/labelledStatement.cpp",
131  "ir/statements/loopStatement.cpp",
132  "ir/statements/returnStatement.cpp",
133  "ir/statements/switchCaseStatement.cpp",
134  "ir/statements/switchStatement.cpp",
135  "ir/statements/throwStatement.cpp",
136  "ir/statements/tryStatement.cpp",
137  "ir/statements/variableDeclaration.cpp",
138  "ir/statements/variableDeclarator.cpp",
139  "ir/statements/whileStatement.cpp",
140  "ir/ts/tsAnyKeyword.cpp",
141  "ir/ts/tsArrayType.cpp",
142  "ir/ts/tsAsExpression.cpp",
143  "ir/ts/tsBigintKeyword.cpp",
144  "ir/ts/tsBooleanKeyword.cpp",
145  "ir/ts/tsClassImplements.cpp",
146  "ir/ts/tsConditionalType.cpp",
147  "ir/ts/tsConstructorType.cpp",
148  "ir/ts/tsEnumDeclaration.cpp",
149  "ir/ts/tsEnumMember.cpp",
150  "ir/ts/tsExternalModuleReference.cpp",
151  "ir/ts/tsFunctionType.cpp",
152  "ir/ts/tsImportEqualsDeclaration.cpp",
153  "ir/ts/tsImportType.cpp",
154  "ir/ts/tsIndexSignature.cpp",
155  "ir/ts/tsIndexedAccessType.cpp",
156  "ir/ts/tsInferType.cpp",
157  "ir/ts/tsInterfaceBody.cpp",
158  "ir/ts/tsInterfaceDeclaration.cpp",
159  "ir/ts/tsInterfaceHeritage.cpp",
160  "ir/ts/tsIntersectionType.cpp",
161  "ir/ts/tsLiteralType.cpp",
162  "ir/ts/tsMappedType.cpp",
163  "ir/ts/tsMethodSignature.cpp",
164  "ir/ts/tsModuleBlock.cpp",
165  "ir/ts/tsModuleDeclaration.cpp",
166  "ir/ts/tsNamedTupleMember.cpp",
167  "ir/ts/tsNamespaceExportDeclaration.cpp",
168  "ir/ts/tsNeverKeyword.cpp",
169  "ir/ts/tsNonNullExpression.cpp",
170  "ir/ts/tsNullKeyword.cpp",
171  "ir/ts/tsNumberKeyword.cpp",
172  "ir/ts/tsObjectKeyword.cpp",
173  "ir/ts/tsOptionalType.cpp",
174  "ir/ts/tsParameterProperty.cpp",
175  "ir/ts/tsParenthesizedType.cpp",
176  "ir/ts/tsPrivateIdentifier.cpp",
177  "ir/ts/tsPropertySignature.cpp",
178  "ir/ts/tsQualifiedName.cpp",
179  "ir/ts/tsRestType.cpp",
180  "ir/ts/tsSatisfiesExpression.cpp",
181  "ir/ts/tsSignatureDeclaration.cpp",
182  "ir/ts/tsStringKeyword.cpp",
183  "ir/ts/tsSymbolKeyword.cpp",
184  "ir/ts/tsTemplateLiteralType.cpp",
185  "ir/ts/tsThisType.cpp",
186  "ir/ts/tsTupleType.cpp",
187  "ir/ts/tsTypeAliasDeclaration.cpp",
188  "ir/ts/tsTypeAssertion.cpp",
189  "ir/ts/tsTypeLiteral.cpp",
190  "ir/ts/tsTypeOperator.cpp",
191  "ir/ts/tsTypeParameter.cpp",
192  "ir/ts/tsTypeParameterDeclaration.cpp",
193  "ir/ts/tsTypeParameterInstantiation.cpp",
194  "ir/ts/tsTypePredicate.cpp",
195  "ir/ts/tsTypeQuery.cpp",
196  "ir/ts/tsTypeReference.cpp",
197  "ir/ts/tsUndefinedKeyword.cpp",
198  "ir/ts/tsUnionType.cpp",
199  "ir/ts/tsUnknownKeyword.cpp",
200  "ir/ts/tsVoidKeyword.cpp",
201  "lexer/keywordsUtil.cpp",
202  "lexer/lexer.cpp",
203  "lexer/regexp/regexp.cpp",
204  "lexer/token/sourceLocation.cpp",
205  "lexer/token/token.cpp",
206  "parser/commonjs.cpp",
207  "parser/context/parserContext.cpp",
208  "parser/expressionParser.cpp",
209  "parser/module/sourceTextModuleRecord.cpp",
210  "parser/parserImpl.cpp",
211  "parser/program/program.cpp",
212  "parser/statementParser.cpp",
213  "parser/transformer/transformer.cpp",
214  "typescript/checker.cpp",
215  "typescript/core/binaryLikeExpression.cpp",
216  "typescript/core/destructuringContext.cpp",
217  "typescript/core/function.cpp",
218  "typescript/core/helpers.cpp",
219  "typescript/core/object.cpp",
220  "typescript/core/typeCreation.cpp",
221  "typescript/core/typeElaborationContext.cpp",
222  "typescript/core/typeRelation.cpp",
223  "typescript/core/util.cpp",
224  "typescript/types/anyType.cpp",
225  "typescript/types/arrayType.cpp",
226  "typescript/types/bigintLiteralType.cpp",
227  "typescript/types/bigintType.cpp",
228  "typescript/types/booleanLiteralType.cpp",
229  "typescript/types/booleanType.cpp",
230  "typescript/types/constructorType.cpp",
231  "typescript/types/enumLiteralType.cpp",
232  "typescript/types/enumType.cpp",
233  "typescript/types/functionType.cpp",
234  "typescript/types/globalTypesHolder.cpp",
235  "typescript/types/indexInfo.cpp",
236  "typescript/types/interfaceType.cpp",
237  "typescript/types/neverType.cpp",
238  "typescript/types/nonPrimitiveType.cpp",
239  "typescript/types/nullType.cpp",
240  "typescript/types/numberLiteralType.cpp",
241  "typescript/types/numberType.cpp",
242  "typescript/types/objectDescriptor.cpp",
243  "typescript/types/objectLiteralType.cpp",
244  "typescript/types/objectType.cpp",
245  "typescript/types/signature.cpp",
246  "typescript/types/stringLiteralType.cpp",
247  "typescript/types/stringType.cpp",
248  "typescript/types/symbolType.cpp",
249  "typescript/types/tupleType.cpp",
250  "typescript/types/type.cpp",
251  "typescript/types/typeParameter.cpp",
252  "typescript/types/typeReference.cpp",
253  "typescript/types/typeRelation.cpp",
254  "typescript/types/undefinedType.cpp",
255  "typescript/types/unionType.cpp",
256  "typescript/types/unknownType.cpp",
257  "typescript/types/voidType.cpp",
258  "util/base64.cpp",
259  "util/bitset.cpp",
260  "util/concurrent.cpp",
261  "util/dumper.cpp",
262  "util/helpers.cpp",
263  "util/patchFix.cpp",
264  "util/moduleHelpers.cpp",
265  "util/symbolTable.cpp",
266  "util/ustring.cpp",
267  "util/workerQueue.cpp",
268  "util/commonUtil.cpp",
269]
270
271config("es2abc_config_src") {
272  include_dirs = [
273    "./",
274    "./binder",
275    "./util",
276    "./compiler/base",
277    "./compiler/core",
278    "./compiler/debugger",
279    "./compiler/function",
280    "./ir",
281    "./ir/base",
282    "./ir/expressions",
283    "./ir/module",
284    "./ir/statements",
285    "./ir/ts",
286    "./parser",
287    "./parser/context",
288    "./lexer",
289    "./lexer/token",
290    "./lexer/regexp",
291    "./typescript",
292    "./typescript/types",
293  ]
294
295  cflags = [ "-fexceptions" ]
296}
297
298config("es2abc_config_common") {
299  configs = [
300    "$ark_root:ark_config",
301    "$ark_root/libpandafile:arkfile_public_config",
302    "$ark_root/libpandabase:arkbase_public_config",
303    "$ark_root/assembler:arkassembler_public_config",
304    "$ark_root/abc2program:abc2program_public_config",
305    ":es2abc_config_src",
306  ]
307  if (defined(is_arkui_x) && is_arkui_x) {
308    configs += [
309      "$sdk_libc_secshared_config",
310      "$ark_third_party_root/json:nlohmann_json_config",
311    ]
312  }
313
314  if (enable_bytecode_optimizer) {
315    defines = [ "ENABLE_BYTECODE_OPT" ]
316    configs += [
317      "$ark_root/compiler:arkcompiler_public_config",
318      "$ark_root/bytecode_optimizer:bytecodeopt_public_config",
319    ]
320  }
321}
322
323# generate headers for es2panda parser
324generated_header_dir = "${target_out_dir}/gen"
325action_foreach("gen_keywords_headers") {
326  template_files = [
327    "keywords.h.erb",
328    "keywordsMap.h.erb",
329  ]
330  keywords_templates_dir = "./lexer/templates"
331  keywords_generator = "./lexer/scripts/keywords.rb"
332
333  sources = []
334  foreach(file, template_files) {
335    sources += [ rebase_path("${keywords_templates_dir}/${file}") ]
336  }
337  outputs = [ "${generated_header_dir}/{{source_name_part}}" ]
338
339  script = "scripts/gen_keywords.sh"
340  inputs = [ "${keywords_generator}" ]
341  args = [
342    "-g",
343    rebase_path("${keywords_generator}"),
344    "-t",
345    "{{source}}",
346    "-o",
347    "{{source_name_part}}",
348    "-d",
349    rebase_path("${generated_header_dir}"),
350  ]
351}
352
353# generate headers for es2panda compiler
354isa_gen = "${ark_root}/isa/gen.rb"
355if ((defined(ark_standalone_build) && ark_standalone_build) ||
356    (defined(is_arkui_x) && is_arkui_x)) {
357  isa_gen_data = "$root_gen_dir/isa/isa.yaml"
358} else {
359  isa_combine_etc_out_dir =
360      get_label_info("runtime_core:isa_combine_etc", "target_out_dir")
361  isa_gen_data = "$isa_combine_etc_out_dir/$root_gen_dir/isa/isa.yaml"
362}
363isa_gen_require = "${ark_root}/isa/isapi.rb"
364action_foreach("gen_isa_headers") {
365  if ((defined(ark_standalone_build) && ark_standalone_build) ||
366      (defined(is_arkui_x) && is_arkui_x)) {
367    deps = [ "//arkcompiler/runtime_core/isa:isa_combine" ]
368  } else {
369    external_deps = [ "runtime_core:isa_combine_etc" ]
370  }
371
372  template_files = [
373    "isa.h.erb",
374    "formats.h.erb",
375  ]
376  keywords_templates_dir = "./compiler/templates"
377
378  sources = []
379  foreach(file, template_files) {
380    sources += [ rebase_path("${keywords_templates_dir}/${file}") ]
381  }
382  outputs = [ "${generated_header_dir}/{{source_name_part}}" ]
383
384  script = "scripts/gen_isa.sh"
385  if (defined(ohos_indep_compiler_enable) && !ohos_indep_compiler_enable) {
386    inputs = [
387      "${isa_gen}",
388      "${isa_gen_data}",
389      "${isa_gen_require}",
390    ]
391  }
392  args = [
393    "-g",
394    rebase_path("${isa_gen}"),
395    "-t",
396    "{{source}}",
397    "-a",
398    rebase_path("${isa_gen_data}"),
399    "-o",
400    "{{source_name_part}}",
401    "-d",
402    rebase_path("${generated_header_dir}"),
403    "-r",
404    rebase_path("${isa_gen_require}"),
405  ]
406}
407
408ohos_static_library("es2panda_lib") {
409  sources = es2panda_src
410  use_exceptions = true
411  if (is_mac && current_cpu == "arm64") {
412    use_rtti = true
413  }
414
415  configs = [
416    ":es2abc_config_common",
417    "../merge_abc:panda_assembly_proto_public_config",
418  ]
419
420  include_dirs = [ "${target_out_dir}" ]
421
422  deps = [
423    ":gen_isa_headers",
424    ":gen_keywords_headers",
425    "../merge_abc:panda_assembly_proto_static",
426  ]
427  external_deps = [ sdk_libc_secshared_dep ]
428  if (ark_standalone_build || (defined(is_arkui_x) && is_arkui_x)) {
429    deps += [ "$ark_third_party_root/icu/icu4c:static_icuuc" ]
430    include_dirs += [
431      "//third_party/icu/icu4c/source/common",
432      "//third_party/icu/icu4c/source/i18n",
433      "//third_party/icu/icu4c/source",
434    ]
435  } else {
436    external_deps += [ "icu:static_icuuc" ]
437  }
438
439  if (!is_arkui_x) {
440    external_deps += [
441      "json:nlohmann_json_static",
442      "runtime_core:abc2program_frontend_static",
443      "runtime_core:libarkassembler_frontend_static",
444      "runtime_core:libarkbase_frontend_static",
445      "runtime_core:libarkfile_frontend_static",
446      "runtime_core:libarkziparchive_frontend_static",
447    ]
448
449    if (enable_bytecode_optimizer) {
450      external_deps += [
451        "runtime_core:libarkbytecodeopt_frontend_static",
452        "runtime_core:libarkcompiler_frontend_static",
453      ]
454    }
455  } else {
456    deps += [
457      "$ark_root/abc2program:abc2program_frontend_static",
458      "$ark_root/assembler:libarkassembler_frontend_static",
459      "$ark_root/libpandabase:libarkbase_frontend_static",
460      "$ark_root/libpandafile:libarkfile_frontend_static",
461      "$ark_root/libziparchive:libarkziparchive_frontend_static",
462      "$ark_third_party_root/json:nlohmann_json_static",
463    ]
464    if (enable_bytecode_optimizer) {
465      deps += [
466        "$ark_root/bytecode_optimizer:libarkbytecodeopt_frontend_static",
467        "$ark_root/compiler:libarkcompiler_frontend_static",
468      ]
469    }
470  }
471  if (ark_standalone_build) {
472    external_deps += [
473      "protobuf:protobuf_lite_static",
474      "protobuf:protobuf_static",
475    ]
476  }
477  cflags = [
478    "-Wno-c++20-designator",
479    "-Wno-implicit-fallthrough",
480  ]
481  if (defined(ohos_indep_compiler_enable) && ohos_indep_compiler_enable) {
482    external_deps += [ "runtime_core:libarkassembler_static" ]
483    if (enable_hilog) {
484      external_deps += [ "hilog:libhilog" ]
485    }
486    cflags += [ "-I" + rebase_path(
487                    "$root_build_dir/gen/arkcompiler/runtime_core/compiler/generated") ]
488  }
489  part_name = "ets_frontend"
490  subsystem_name = "arkcompiler"
491}
492
493ohos_executable("es2panda") {
494  use_exceptions = true
495  if (is_mac && current_cpu == "arm64") {
496    use_rtti = true
497  }
498
499  sources = [
500    "aot/emitFiles.cpp",
501    "aot/main.cpp",
502    "aot/options.cpp",
503    "aot/resolveDepsRelation.cpp",
504  ]
505
506  include_dirs = [ "./aot" ]
507
508  configs = [
509    ":es2abc_config_common",
510    "//arkcompiler/ets_frontend/merge_abc:panda_assembly_proto_public_config",
511  ]
512
513  deps = [
514    ":es2panda_lib",
515    "//arkcompiler/ets_frontend/merge_abc:panda_assembly_proto_static",
516  ]
517
518  external_deps = [
519    "json:nlohmann_json_static",
520    "zlib:libz",
521    sdk_libc_secshared_dep,
522  ]
523
524  if (defined(ohos_indep_compiler_enable) && ohos_indep_compiler_enable) {
525    external_deps += [
526      "abseil-cpp:absl_base_static",
527      "icu:shared_icuuc",
528      "runtime_core:libarkassembler_static",
529    ]
530    if (enable_hilog) {
531      external_deps += [ "hilog:libhilog" ]
532    }
533    cflags = [
534      "-Wno-constant-conversion",
535      "-I" + rebase_path(
536              "$root_build_dir/gen/arkcompiler/runtime_core/bytecode_optimizer"),
537      "-I" + rebase_path(
538              "$root_build_dir/gen/arkcompiler/runtime_core/compiler/generated"),
539    ]
540  }
541
542  if (ark_standalone_build) {
543    external_deps += [
544      "protobuf:protobuf_lite_static",
545      "protobuf:protobuf_static",
546    ]
547  }
548
549  ldflags = []
550  if (is_linux) {
551    if (build_public_version) {
552      ldflags += [ "-Wl,-Bstatic" ]
553      ldflags += [ "-lstdc++" ]
554      ldflags += [ "-Wl,-Bdynamic" ]
555    } else {
556      libs = [ libcpp_static_lib ]
557    }
558  }
559
560  # The default stack size of the Windows platform is 1024 kb, which might lead to stack overflow.
561  # Here is to set the stack size of es2abc.exe to 10M, which is the default value for Linux platform.
562  if (is_mingw) {
563    ldflags += [ "-Wl,--stack,10485760" ]
564  }
565
566  output_name = "es2abc"
567  install_enable = false
568  part_name = "ets_frontend"
569  subsystem_name = "arkcompiler"
570}
571
572if (is_linux || (is_build_sdk && is_ohos)) {
573  ohos_copy("es2abc_build") {
574    deps = [ ":es2panda" ]
575    sources = [ "${root_out_dir}/arkcompiler/ets_frontend/es2abc" ]
576    outputs = [ "${target_out_dir}/es2abc-tmp" ]
577    module_source_dir = "${root_out_dir}/arkcompiler/ets_frontend"
578    module_install_name = "es2abc"
579  }
580
581  ohos_copy("es2abc_build_ets") {
582    deps = [ ":es2panda" ]
583    sources = [ "${root_out_dir}/arkcompiler/ets_frontend/es2abc" ]
584    outputs = [ "${root_out_dir}/arkcompiler/ets_frontend/es2abc-ets" ]
585    module_source_dir = "${root_out_dir}/arkcompiler/ets_frontend"
586    module_install_name = "es2abc"
587  }
588}
589
590if (is_mingw) {
591  ohos_copy("es2abc_build_win") {
592    deps = [ ":es2panda" ]
593    sources = [ "${root_out_dir}/arkcompiler/ets_frontend/es2abc.exe" ]
594    outputs = [ "${target_out_dir}/es2abc-tmp" ]
595    module_source_dir = "${root_out_dir}/arkcompiler/ets_frontend"
596    module_install_name = "es2abc.exe"
597  }
598
599  ohos_copy("es2abc_build_win_ets") {
600    deps = [ ":es2panda" ]
601    sources = [ "${root_out_dir}/arkcompiler/ets_frontend/es2abc.exe" ]
602    outputs = [ "${root_out_dir}/arkcompiler/ets_frontend/es2abc-win-ets" ]
603    module_source_dir = "${root_out_dir}/arkcompiler/ets_frontend"
604    module_install_name = "es2abc.exe"
605  }
606}
607
608if (is_mac) {
609  ohos_copy("es2abc_build_mac") {
610    deps = [ ":es2panda" ]
611    sources = [ "${root_out_dir}/arkcompiler/ets_frontend/es2abc" ]
612    outputs = [ "${target_out_dir}/es2abc-tmp" ]
613    module_source_dir = "${root_out_dir}/arkcompiler/ets_frontend"
614    module_install_name = "es2abc"
615  }
616
617  ohos_copy("es2abc_build_mac_ets") {
618    deps = [ ":es2panda" ]
619    sources = [ "${root_out_dir}/arkcompiler/ets_frontend/es2abc" ]
620    outputs = [ "${root_out_dir}/arkcompiler/ets_frontend/es2abc-mac-ets" ]
621    module_source_dir = "${root_out_dir}/arkcompiler/ets_frontend"
622    module_install_name = "es2abc"
623  }
624}
625
626if (is_linux) {
627  ohos_copy("build_es2abc_for_hap") {
628    deps = [ ":es2panda(${host_toolchain})" ]
629    es2abc_root_out_dir =
630        get_label_info(":es2panda_build($host_toolchain)", "root_out_dir")
631    es2abc_target_out_dir =
632        get_label_info(":es2panda_build($host_toolchain)", "target_out_dir")
633
634    sources = [ "${es2abc_root_out_dir}/arkcompiler/ets_frontend/es2abc" ]
635    outputs = [ "${es2abc_target_out_dir}/build/bin/es2abc" ]
636  }
637} else if (is_mac) {
638  ohos_copy("build_es2abc_for_hap") {
639    deps = [ ":es2panda(${host_toolchain})" ]
640    es2abc_root_out_dir =
641        get_label_info(":es2panda_build($host_toolchain)", "root_out_dir")
642    es2abc_target_out_dir =
643        get_label_info(":es2panda_build($host_toolchain)", "target_out_dir")
644
645    sources = [ "${es2abc_root_out_dir}/arkcompiler/ets_frontend/es2abc" ]
646    outputs = [ "${es2abc_target_out_dir}/build-mac/bin/es2abc" ]
647  }
648}
649
650ohos_copy("panda_es2abc") {
651  sources = [ "${es2abc_root}/scripts/ts2abc.js" ]
652
653  outputs = [ target_out_dir + "/$target_name/{{source_file_part}}" ]
654  module_source_dir = target_out_dir + "/$target_name/"
655  module_install_name = ""
656
657  part_name = "ets_frontend"
658  subsystem_name = "arkcompiler"
659}
660
661ohos_copy("panda_es2abc_ets") {
662  sources = [ "${es2abc_root}/scripts/ts2abc.js" ]
663  outputs = [ target_out_dir + "/$target_name/{{source_file_part}}" ]
664  module_source_dir = target_out_dir + "/$target_name/"
665  module_install_name = ""
666
667  part_name = "ets_frontend"
668  subsystem_name = "arkcompiler"
669}
670
671ohos_copy("es2abc_js_file") {
672  sources = [ "${es2abc_root}/scripts/ts2abc.js" ]
673  outputs = [ target_out_dir + "/{{source_file_part}}" ]
674
675  part_name = "ets_frontend"
676  subsystem_name = "arkcompiler"
677}
678
679group("es2panda_build") {
680  if (host_os == "linux") {
681    deps = [ ":es2panda(${toolchain_linux})" ]
682  }
683
684  if (host_os == "mac") {
685    deps = [ ":es2panda(${toolchain_mac})" ]
686  }
687
688  if (host_os == "ohos") {
689    deps = [ ":es2panda(${toolchain_ohos})" ]
690  }
691}
692
693group("es2panda_build_win") {
694  deps = [ ":es2panda(${toolchain_win})" ]
695}
696
697group("es2abc_tests") {
698}
699