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