# Copyright (c) 2021-2026 Huawei Device Co., Ltd.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import("//arkcompiler/ets_frontend/es2panda/es2abc_config.gni")
import("//arkcompiler/ets_frontend/ets_frontend_config.gni")
if ((defined(ark_standalone_build) && ark_standalone_build) ||
(defined(is_arkui_x) && is_arkui_x)) {
import("//arkcompiler/runtime_core/ark_config.gni")
} else {
import("//arkcompiler/ets_frontend/ark_config.gni")
}
es2panda_src = [
"es2panda.cpp",
"binder/binder.cpp",
"binder/declaration.cpp",
"binder/scope.cpp",
"binder/variable.cpp",
"compiler/base/catchTable.cpp",
"compiler/base/condition.cpp",
"compiler/base/destructuring.cpp",
"compiler/base/hoisting.cpp",
"compiler/base/iterators.cpp",
"compiler/base/lexenv.cpp",
"compiler/base/literals.cpp",
"compiler/base/lreference.cpp",
"compiler/base/optionalChain.cpp",
"compiler/core/compileQueue.cpp",
"compiler/core/compilerContext.cpp",
"compiler/core/compilerImpl.cpp",
"compiler/core/dynamicContext.cpp",
"compiler/core/emitter/commonjs.cpp",
"compiler/core/emitter/emitter.cpp",
"compiler/core/emitter/moduleRecordEmitter.cpp",
"compiler/core/envScope.cpp",
"compiler/core/function.cpp",
"compiler/core/inlineCache.cpp",
"compiler/core/labelTarget.cpp",
"compiler/core/pandagen.cpp",
"compiler/core/regAllocator.cpp",
"compiler/core/regScope.cpp",
"compiler/core/switchBuilder.cpp",
"compiler/debugger/debuginfoDumper.cpp",
"compiler/function/asyncFunctionBuilder.cpp",
"compiler/function/asyncGeneratorFunctionBuilder.cpp",
"compiler/function/functionBuilder.cpp",
"compiler/function/generatorFunctionBuilder.cpp",
"ir/astDump.cpp",
"ir/base/annotation.cpp",
"ir/base/catchClause.cpp",
"ir/base/classDefinition.cpp",
"ir/base/classProperty.cpp",
"ir/base/classStaticBlock.cpp",
"ir/base/decorator.cpp",
"ir/base/metaProperty.cpp",
"ir/base/methodDefinition.cpp",
"ir/base/property.cpp",
"ir/base/scriptFunction.cpp",
"ir/base/spreadElement.cpp",
"ir/base/templateElement.cpp",
"ir/expression.cpp",
"ir/expressions/arrayExpression.cpp",
"ir/expressions/arrowFunctionExpression.cpp",
"ir/expressions/assignmentExpression.cpp",
"ir/expressions/awaitExpression.cpp",
"ir/expressions/binaryExpression.cpp",
"ir/expressions/callExpression.cpp",
"ir/expressions/chainExpression.cpp",
"ir/expressions/classExpression.cpp",
"ir/expressions/conditionalExpression.cpp",
"ir/expressions/functionExpression.cpp",
"ir/expressions/identifier.cpp",
"ir/expressions/importExpression.cpp",
"ir/expressions/literal.cpp",
"ir/expressions/literals/bigIntLiteral.cpp",
"ir/expressions/literals/booleanLiteral.cpp",
"ir/expressions/literals/nullLiteral.cpp",
"ir/expressions/literals/numberLiteral.cpp",
"ir/expressions/literals/regExpLiteral.cpp",
"ir/expressions/literals/stringLiteral.cpp",
"ir/expressions/literals/taggedLiteral.cpp",
"ir/expressions/memberExpression.cpp",
"ir/expressions/newExpression.cpp",
"ir/expressions/objectExpression.cpp",
"ir/expressions/omittedExpression.cpp",
"ir/expressions/privateIdentifier.cpp",
"ir/expressions/sequenceExpression.cpp",
"ir/expressions/superExpression.cpp",
"ir/expressions/taggedTemplateExpression.cpp",
"ir/expressions/templateLiteral.cpp",
"ir/expressions/thisExpression.cpp",
"ir/expressions/typeArgumentsExpression.cpp",
"ir/expressions/unaryExpression.cpp",
"ir/expressions/updateExpression.cpp",
"ir/expressions/yieldExpression.cpp",
"ir/module/assertClause.cpp",
"ir/module/assertEntry.cpp",
"ir/module/exportAllDeclaration.cpp",
"ir/module/exportDefaultDeclaration.cpp",
"ir/module/exportNamedDeclaration.cpp",
"ir/module/exportSpecifier.cpp",
"ir/module/importDeclaration.cpp",
"ir/module/importDefaultSpecifier.cpp",
"ir/module/importNamespaceSpecifier.cpp",
"ir/module/importSpecifier.cpp",
"ir/statement.cpp",
"ir/statements/blockStatement.cpp",
"ir/statements/breakStatement.cpp",
"ir/statements/classDeclaration.cpp",
"ir/statements/continueStatement.cpp",
"ir/statements/debuggerStatement.cpp",
"ir/statements/doWhileStatement.cpp",
"ir/statements/emptyStatement.cpp",
"ir/statements/expressionStatement.cpp",
"ir/statements/forInStatement.cpp",
"ir/statements/forOfStatement.cpp",
"ir/statements/forUpdateStatement.cpp",
"ir/statements/functionDeclaration.cpp",
"ir/statements/ifStatement.cpp",
"ir/statements/labelledStatement.cpp",
"ir/statements/loopStatement.cpp",
"ir/statements/returnStatement.cpp",
"ir/statements/switchCaseStatement.cpp",
"ir/statements/switchStatement.cpp",
"ir/statements/throwStatement.cpp",
"ir/statements/tryStatement.cpp",
"ir/statements/variableDeclaration.cpp",
"ir/statements/variableDeclarator.cpp",
"ir/statements/whileStatement.cpp",
"ir/ts/tsAnyKeyword.cpp",
"ir/ts/tsArrayType.cpp",
"ir/ts/tsAsExpression.cpp",
"ir/ts/tsBigintKeyword.cpp",
"ir/ts/tsBooleanKeyword.cpp",
"ir/ts/tsClassImplements.cpp",
"ir/ts/tsConditionalType.cpp",
"ir/ts/tsConstructorType.cpp",
"ir/ts/tsEnumDeclaration.cpp",
"ir/ts/tsEnumMember.cpp",
"ir/ts/tsExternalModuleReference.cpp",
"ir/ts/tsFunctionType.cpp",
"ir/ts/tsImportEqualsDeclaration.cpp",
"ir/ts/tsImportType.cpp",
"ir/ts/tsIndexSignature.cpp",
"ir/ts/tsIndexedAccessType.cpp",
"ir/ts/tsInferType.cpp",
"ir/ts/tsInterfaceBody.cpp",
"ir/ts/tsInterfaceDeclaration.cpp",
"ir/ts/tsInterfaceHeritage.cpp",
"ir/ts/tsIntersectionType.cpp",
"ir/ts/tsLiteralType.cpp",
"ir/ts/tsMappedType.cpp",
"ir/ts/tsMethodSignature.cpp",
"ir/ts/tsModuleBlock.cpp",
"ir/ts/tsModuleDeclaration.cpp",
"ir/ts/tsNamedTupleMember.cpp",
"ir/ts/tsNamespaceExportDeclaration.cpp",
"ir/ts/tsNeverKeyword.cpp",
"ir/ts/tsNonNullExpression.cpp",
"ir/ts/tsNullKeyword.cpp",
"ir/ts/tsNumberKeyword.cpp",
"ir/ts/tsObjectKeyword.cpp",
"ir/ts/tsOptionalType.cpp",
"ir/ts/tsParameterProperty.cpp",
"ir/ts/tsParenthesizedType.cpp",
"ir/ts/tsPrivateIdentifier.cpp",
"ir/ts/tsPropertySignature.cpp",
"ir/ts/tsQualifiedName.cpp",
"ir/ts/tsRestType.cpp",
"ir/ts/tsSatisfiesExpression.cpp",
"ir/ts/tsSignatureDeclaration.cpp",
"ir/ts/tsStringKeyword.cpp",
"ir/ts/tsSymbolKeyword.cpp",
"ir/ts/tsTemplateLiteralType.cpp",
"ir/ts/tsThisType.cpp",
"ir/ts/tsTupleType.cpp",
"ir/ts/tsTypeAliasDeclaration.cpp",
"ir/ts/tsTypeAssertion.cpp",
"ir/ts/tsTypeLiteral.cpp",
"ir/ts/tsTypeOperator.cpp",
"ir/ts/tsTypeParameter.cpp",
"ir/ts/tsTypeParameterDeclaration.cpp",
"ir/ts/tsTypeParameterInstantiation.cpp",
"ir/ts/tsTypePredicate.cpp",
"ir/ts/tsTypeQuery.cpp",
"ir/ts/tsTypeReference.cpp",
"ir/ts/tsUndefinedKeyword.cpp",
"ir/ts/tsUnionType.cpp",
"ir/ts/tsUnknownKeyword.cpp",
"ir/ts/tsVoidKeyword.cpp",
"lexer/keywordsUtil.cpp",
"lexer/lexer.cpp",
"lexer/regexp/regexp.cpp",
"lexer/token/sourceLocation.cpp",
"lexer/token/token.cpp",
"parser/commonjs.cpp",
"parser/context/parserContext.cpp",
"parser/expressionParser.cpp",
"parser/module/sourceTextModuleRecord.cpp",
"parser/parserImpl.cpp",
"parser/program/program.cpp",
"parser/statementParser.cpp",
"parser/transformer/transformer.cpp",
"util/base64.cpp",
"util/bitset.cpp",
"util/concurrent.cpp",
"util/dumper.cpp",
"util/helpers.cpp",
"util/patchFix.cpp",
"util/moduleHelpers.cpp",
"util/symbolTable.cpp",
"util/ustring.cpp",
"util/workerQueue.cpp",
"util/commonUtil.cpp",
]
config("es2abc_config_src") {
include_dirs = [
"./",
"./binder",
"./util",
"./compiler/base",
"./compiler/core",
"./compiler/debugger",
"./compiler/function",
"./ir",
"./ir/base",
"./ir/expressions",
"./ir/module",
"./ir/statements",
"./ir/ts",
"./parser",
"./parser/context",
"./lexer",
"./lexer/token",
"./lexer/regexp",
]
cflags = [ "-fexceptions" ]
}
config("es2abc_config_common") {
configs = [
"$ark_root:ark_config",
"$ark_root/libpandafile:arkfile_public_config",
"$ark_root/libpandabase:arkbase_public_config",
"$ark_root/assembler:arkassembler_public_config",
"$ark_root/abc2program:abc2program_public_config",
":es2abc_config_src",
]
if (defined(is_arkui_x) && is_arkui_x) {
configs += [
"$sdk_libc_secshared_config",
"$ark_third_party_root/json:nlohmann_json_config",
]
}
if (enable_bytecode_optimizer) {
defines = [ "ENABLE_BYTECODE_OPT" ]
configs += [
"$ark_root/compiler:arkcompiler_public_config",
"$ark_root/bytecode_optimizer:bytecodeopt_public_config",
]
}
}
# generate headers for es2panda parser
generated_header_dir = "${target_out_dir}/gen"
action_foreach("gen_keywords_headers") {
template_files = [
"keywords.h.erb",
"keywordsMap.h.erb",
]
keywords_templates_dir = "./lexer/templates"
keywords_generator = "./lexer/scripts/keywords.rb"
sources = []
foreach(file, template_files) {
sources += [ rebase_path("${keywords_templates_dir}/${file}") ]
}
outputs = [ "${generated_header_dir}/{{source_name_part}}" ]
script = "scripts/gen_keywords.sh"
inputs = [ "${keywords_generator}" ]
args = [
"-g",
rebase_path("${keywords_generator}"),
"-t",
"{{source}}",
"-o",
"{{source_name_part}}",
"-d",
rebase_path("${generated_header_dir}"),
]
}
# generate headers for es2panda compiler
isa_gen = "${ark_root}/isa/gen.rb"
if ((defined(ark_standalone_build) && ark_standalone_build) ||
(defined(is_arkui_x) && is_arkui_x)) {
isa_gen_data = "$root_gen_dir/isa/isa.yaml"
} else {
isa_combine_etc_out_dir =
get_label_info("runtime_core:isa_combine_etc", "target_out_dir")
isa_gen_data = "$isa_combine_etc_out_dir/$root_gen_dir/isa/isa.yaml"
}
isa_gen_require = "${ark_root}/isa/isapi.rb"
action_foreach("gen_isa_headers") {
if ((defined(ark_standalone_build) && ark_standalone_build) ||
(defined(is_arkui_x) && is_arkui_x)) {
deps = [ "//arkcompiler/runtime_core/isa:isa_combine" ]
} else {
external_deps = [ "runtime_core:isa_combine_etc" ]
}
template_files = [
"isa.h.erb",
"formats.h.erb",
]
keywords_templates_dir = "./compiler/templates"
sources = []
foreach(file, template_files) {
sources += [ rebase_path("${keywords_templates_dir}/${file}") ]
}
outputs = [ "${generated_header_dir}/{{source_name_part}}" ]
script = "scripts/gen_isa.sh"
if (defined(ohos_indep_compiler_enable) && !ohos_indep_compiler_enable) {
inputs = [
"${isa_gen}",
"${isa_gen_data}",
"${isa_gen_require}",
]
}
args = [
"-g",
rebase_path("${isa_gen}"),
"-t",
"{{source}}",
"-a",
rebase_path("${isa_gen_data}"),
"-o",
"{{source_name_part}}",
"-d",
rebase_path("${generated_header_dir}"),
"-r",
rebase_path("${isa_gen_require}"),
]
}
ohos_static_library("es2panda_lib") {
sources = es2panda_src
use_exceptions = true
if (is_mac && current_cpu == "arm64") {
use_rtti = true
}
configs = [
":es2abc_config_common",
"../merge_abc:panda_assembly_proto_public_config",
]
include_dirs = [ "${target_out_dir}" ]
deps = [
":gen_isa_headers",
":gen_keywords_headers",
"../merge_abc:panda_assembly_proto_static",
]
external_deps = [ sdk_libc_secshared_dep ]
if (ark_standalone_build || (defined(is_arkui_x) && is_arkui_x)) {
deps += [ "$ark_third_party_root/icu/icu4c:static_icuuc" ]
include_dirs += [
"//third_party/icu/icu4c/source/common",
"//third_party/icu/icu4c/source/i18n",
"//third_party/icu/icu4c/source",
"$ark_root/abc2program",
"$ark_root/assembler",
"$ark_root/libpandafile",
"$ark_root/libpandabase/include/libpandabase",
"$ark_root/libpandabase/include/libpandabase/mem",
]
} else {
external_deps += [
"icu:static_icuuc",
"runtime_core:arkabc2program_public_headers",
"runtime_core:arkassembler_public_headers",
"runtime_core:arkbase_public_headers",
"runtime_core:arkfile_public_headers",
]
}
if (!is_arkui_x) {
external_deps += [
"json:nlohmann_json_static",
"runtime_core:abc2program_frontend_static",
"runtime_core:libarkassembler_frontend_static",
"runtime_core:libarkbase_frontend_static",
"runtime_core:libarkfile_frontend_static",
"runtime_core:libarkziparchive_frontend_static",
]
if (enable_bytecode_optimizer) {
external_deps += [
"runtime_core:libarkbytecodeopt_frontend_static",
"runtime_core:libarkcompiler_frontend_static",
]
}
} else {
deps += [
"$ark_root/abc2program:abc2program_frontend_static",
"$ark_root/assembler:libarkassembler_frontend_static",
"$ark_root/libpandabase:libarkbase_frontend_static",
"$ark_root/libpandafile:libarkfile_frontend_static",
"$ark_root/libziparchive:libarkziparchive_frontend_static",
"$ark_third_party_root/json:nlohmann_json_static",
]
if (enable_bytecode_optimizer) {
deps += [
"$ark_root/bytecode_optimizer:libarkbytecodeopt_frontend_static",
"$ark_root/compiler:libarkcompiler_frontend_static",
]
}
}
if (ark_standalone_build) {
external_deps += [
"protobuf:protobuf_lite_static",
"protobuf:protobuf_static",
]
}
cflags = [
"-Wno-c++20-designator",
"-Wno-implicit-fallthrough",
]
if (enable_hilog) {
external_deps += [ "hilog:libhilog" ]
}
if (defined(ohos_indep_compiler_enable) && ohos_indep_compiler_enable) {
external_deps += [ "runtime_core:libarkassembler_static" ]
cflags += [ "-I" + rebase_path(
"$root_build_dir/gen/arkcompiler/runtime_core/compiler/generated") ]
}
part_name = "ets_frontend"
subsystem_name = "arkcompiler"
}
ohos_executable("es2panda") {
use_exceptions = true
if (is_mac && current_cpu == "arm64") {
use_rtti = true
}
sources = [
"aot/emitFiles.cpp",
"aot/main.cpp",
"aot/options.cpp",
"aot/resolveDepsRelation.cpp",
]
include_dirs = [ "./aot" ]
configs = [
":es2abc_config_common",
"//arkcompiler/ets_frontend/merge_abc:panda_assembly_proto_public_config",
]
deps = [
":es2panda_lib",
"//arkcompiler/ets_frontend/merge_abc:panda_assembly_proto_static",
]
external_deps = [
"json:nlohmann_json_static",
"zlib:libz",
sdk_libc_secshared_dep,
]
if (ark_standalone_build || (defined(is_arkui_x) && is_arkui_x)) {
include_dirs += [
"$ark_root/abc2program",
"$ark_root/assembler",
"$ark_root/libpandafile",
"$ark_root/libpandabase/include/libpandabase",
"$ark_root/libpandabase/include/libpandabase/mem",
]
} else {
external_deps += [
"icu:static_icuuc",
"runtime_core:arkabc2program_public_headers",
"runtime_core:arkassembler_public_headers",
"runtime_core:arkbase_public_headers",
"runtime_core:arkfile_public_headers",
]
}
if (enable_hilog) {
external_deps += [ "hilog:libhilog" ]
}
if (defined(ohos_indep_compiler_enable) && ohos_indep_compiler_enable) {
external_deps += [
"abseil-cpp:absl_base_static",
"runtime_core:libarkassembler_static",
]
cflags = [
"-Wno-constant-conversion",
"-I" + rebase_path(
"$root_build_dir/gen/arkcompiler/runtime_core/bytecode_optimizer"),
"-I" + rebase_path(
"$root_build_dir/gen/arkcompiler/runtime_core/compiler/generated"),
]
}
if (is_build_sdk && is_ohos) {
defines = [ "OHOS_PLATFORM" ]
}
if (ark_standalone_build) {
external_deps += [
"protobuf:protobuf_lite_static",
"protobuf:protobuf_static",
]
}
ldflags = []
if (is_linux) {
if (build_public_version) {
ldflags += [ "-Wl,-Bstatic" ]
ldflags += [ "-lstdc++" ]
ldflags += [ "-Wl,-Bdynamic" ]
} else {
libs = [ libcpp_static_lib ]
}
}
# The default stack size of the Windows platform is 1024 kb, which might lead to stack overflow.
# Here is to set the stack size of es2abc.exe to 10M, which is the default value for Linux platform.
if (is_mingw) {
ldflags += [ "-Wl,--stack,10551296" ]
}
# Increases stack size to accommodate stack overflow protection gaps while maintaining backward
# compatibility with the original stack layout. Stack size must be multiple of segment alignment (16KB). Therefore,
# increase the stack space by 64K.
if (is_mac) {
ldflags += [ "-Wl,-stack_size,0x810000" ]
}
output_name = "es2abc"
install_enable = false
part_name = "ets_frontend"
subsystem_name = "arkcompiler"
}
if (is_linux || (is_build_sdk && is_ohos)) {
ohos_copy("es2abc_build") {
deps = [ ":es2panda" ]
sources = [ "${root_out_dir}/arkcompiler/ets_frontend/es2abc" ]
outputs = [ "${target_out_dir}/es2abc-tmp" ]
module_source_dir = "${root_out_dir}/arkcompiler/ets_frontend"
module_install_name = "es2abc"
}
ohos_copy("es2abc_build_ets") {
deps = [ ":es2panda" ]
sources = [ "${root_out_dir}/arkcompiler/ets_frontend/es2abc" ]
outputs = [ "${root_out_dir}/arkcompiler/ets_frontend/es2abc-ets" ]
module_source_dir = "${root_out_dir}/arkcompiler/ets_frontend"
module_install_name = "es2abc"
}
}
if (is_mingw) {
ohos_copy("es2abc_build_win") {
deps = [ ":es2panda" ]
sources = [ "${root_out_dir}/arkcompiler/ets_frontend/es2abc.exe" ]
outputs = [ "${target_out_dir}/es2abc-tmp" ]
module_source_dir = "${root_out_dir}/arkcompiler/ets_frontend"
module_install_name = "es2abc.exe"
}
ohos_copy("es2abc_build_win_ets") {
deps = [ ":es2panda" ]
sources = [ "${root_out_dir}/arkcompiler/ets_frontend/es2abc.exe" ]
outputs = [ "${root_out_dir}/arkcompiler/ets_frontend/es2abc-win-ets" ]
module_source_dir = "${root_out_dir}/arkcompiler/ets_frontend"
module_install_name = "es2abc.exe"
}
}
if (is_mac) {
ohos_copy("es2abc_build_mac") {
deps = [ ":es2panda" ]
sources = [ "${root_out_dir}/arkcompiler/ets_frontend/es2abc" ]
outputs = [ "${target_out_dir}/es2abc-tmp" ]
module_source_dir = "${root_out_dir}/arkcompiler/ets_frontend"
module_install_name = "es2abc"
}
ohos_copy("es2abc_build_mac_ets") {
deps = [ ":es2panda" ]
sources = [ "${root_out_dir}/arkcompiler/ets_frontend/es2abc" ]
outputs = [ "${root_out_dir}/arkcompiler/ets_frontend/es2abc-mac-ets" ]
module_source_dir = "${root_out_dir}/arkcompiler/ets_frontend"
module_install_name = "es2abc"
}
}
if (is_linux) {
ohos_copy("build_es2abc_for_hap") {
deps = [ ":es2panda(${host_toolchain})" ]
es2abc_root_out_dir =
get_label_info(":es2panda_build($host_toolchain)", "root_out_dir")
es2abc_target_out_dir =
get_label_info(":es2panda_build($host_toolchain)", "target_out_dir")
sources = [ "${es2abc_root_out_dir}/arkcompiler/ets_frontend/es2abc" ]
outputs = [ "${es2abc_target_out_dir}/build/bin/es2abc" ]
}
} else if (is_mac) {
ohos_copy("build_es2abc_for_hap") {
deps = [ ":es2panda(${host_toolchain})" ]
es2abc_root_out_dir =
get_label_info(":es2panda_build($host_toolchain)", "root_out_dir")
es2abc_target_out_dir =
get_label_info(":es2panda_build($host_toolchain)", "target_out_dir")
sources = [ "${es2abc_root_out_dir}/arkcompiler/ets_frontend/es2abc" ]
outputs = [ "${es2abc_target_out_dir}/build-mac/bin/es2abc" ]
}
}
ohos_copy("panda_es2abc") {
sources = [ "${es2abc_root}/scripts/ts2abc.js" ]
outputs = [ target_out_dir + "/$target_name/{{source_file_part}}" ]
module_source_dir = target_out_dir + "/$target_name/"
module_install_name = ""
part_name = "ets_frontend"
subsystem_name = "arkcompiler"
}
ohos_copy("panda_es2abc_ets") {
sources = [ "${es2abc_root}/scripts/ts2abc.js" ]
outputs = [ target_out_dir + "/$target_name/{{source_file_part}}" ]
module_source_dir = target_out_dir + "/$target_name/"
module_install_name = ""
part_name = "ets_frontend"
subsystem_name = "arkcompiler"
}
ohos_copy("es2abc_js_file") {
sources = [ "${es2abc_root}/scripts/ts2abc.js" ]
outputs = [ target_out_dir + "/{{source_file_part}}" ]
part_name = "ets_frontend"
subsystem_name = "arkcompiler"
}
group("es2panda_build") {
if (host_os == "linux") {
deps = [ ":es2panda(${toolchain_linux})" ]
}
if (host_os == "mac") {
deps = [ ":es2panda(${toolchain_mac})" ]
}
if (host_os == "ohos") {
deps = [ ":es2panda(${toolchain_ohos})" ]
}
}
group("es2panda_build_win") {
deps = [ ":es2panda(${toolchain_win})" ]
}
group("es2abc_tests") {
testonly = true
if (!ark_standalone_build && host_os == "linux") {
deps = [
"unittest:lexer_test_action(${toolchain_linux})",
"unittest:token_test_action(${toolchain_linux})",
"unittest:keywordsUtil_test_action(${toolchain_linux})",
"unittest:parser_test_action(${toolchain_linux})",
"unittest:program_test_action(${toolchain_linux})",
"unittest:sourceTextModuleRecord_test_action(${toolchain_linux})",
"unittest:parserContext_test_action(${toolchain_linux})",
"unittest:resolveDepsRelation_test_action(${toolchain_linux})",
"unittest:compilerImpl_test_action(${toolchain_linux})",
"../merge_abc:merge_abc_tests(${toolchain_linux})"
]
}
}