1e509ee18Sopenharmony_ci# Copyright (c) 2021-2024 Huawei Device Co., Ltd. 2e509ee18Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 3e509ee18Sopenharmony_ci# you may not use this file except in compliance with the License. 4e509ee18Sopenharmony_ci# You may obtain a copy of the License at 5e509ee18Sopenharmony_ci# 6e509ee18Sopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 7e509ee18Sopenharmony_ci# 8e509ee18Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software 9e509ee18Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 10e509ee18Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11e509ee18Sopenharmony_ci# See the License for the specific language governing permissions and 12e509ee18Sopenharmony_ci# limitations under the License. 13e509ee18Sopenharmony_ci 14e509ee18Sopenharmony_ciimport("$build_root/config/components/ets_frontend/ets_frontend_config.gni") 15e509ee18Sopenharmony_ci 16e509ee18Sopenharmony_cies2abc_root = "//arkcompiler/ets_frontend/es2panda" 17e509ee18Sopenharmony_cies2abc_build_path = "" 18e509ee18Sopenharmony_cies2abc_build_deps = "" 19e509ee18Sopenharmony_cies2abc_out_root = "" 20e509ee18Sopenharmony_ci 21e509ee18Sopenharmony_ciif (host_toolchain == toolchain_mac) { 22e509ee18Sopenharmony_ci es2abc_out_root = 23e509ee18Sopenharmony_ci get_label_info("$es2abc_root:es2panda($toolchain_mac)", "root_out_dir") 24e509ee18Sopenharmony_ci es2abc_build_deps = [ "$es2abc_root:es2panda($toolchain_mac)" ] 25e509ee18Sopenharmony_ci} else if (host_toolchain == toolchain_win) { 26e509ee18Sopenharmony_ci es2abc_out_root = 27e509ee18Sopenharmony_ci get_label_info("$es2abc_root:es2panda($toolchain_win)", "root_out_dir") 28e509ee18Sopenharmony_ci es2abc_build_deps = [ "$es2abc_root:es2panda($toolchain_win)" ] 29e509ee18Sopenharmony_ci} else { 30e509ee18Sopenharmony_ci es2abc_out_root = 31e509ee18Sopenharmony_ci get_label_info("$es2abc_root:es2panda($toolchain_linux)", "root_out_dir") 32e509ee18Sopenharmony_ci es2abc_build_deps = [ "$es2abc_root:es2panda($toolchain_linux)" ] 33e509ee18Sopenharmony_ci} 34e509ee18Sopenharmony_cies2abc_build_path = es2abc_out_root + "/arkcompiler/ets_frontend" 35e509ee18Sopenharmony_ci 36e509ee18Sopenharmony_ci# Generate abc. 37e509ee18Sopenharmony_ci# 38e509ee18Sopenharmony_ci# Mandatory arguments: 39e509ee18Sopenharmony_ci# plugin_path -- plugin js file path 40e509ee18Sopenharmony_ci# plugin_name -- name of js file, ex: BatteryPlugin.js 41e509ee18Sopenharmony_ci# generat_file -- name of generated file 42e509ee18Sopenharmony_ci# package_name -- name of generated file's package 43e509ee18Sopenharmony_ci# extra_dependencies -- a list of files that should be considered as dependencies, must be label 44e509ee18Sopenharmony_ci# out_puts 45e509ee18Sopenharmony_citemplate("es2abc_gen_abc") { 46e509ee18Sopenharmony_ci assert(defined(invoker.src_js), "src_js is required!") 47e509ee18Sopenharmony_ci assert(defined(invoker.dst_file), "dst_file is required!") 48e509ee18Sopenharmony_ci assert(defined(invoker.out_puts), "out_puts is required!") 49e509ee18Sopenharmony_ci 50e509ee18Sopenharmony_ci extra_dependencies = [] 51e509ee18Sopenharmony_ci if (defined(invoker.extra_dependencies)) { 52e509ee18Sopenharmony_ci extra_dependencies += invoker.extra_dependencies 53e509ee18Sopenharmony_ci } 54e509ee18Sopenharmony_ci 55e509ee18Sopenharmony_ci action("$target_name") { 56e509ee18Sopenharmony_ci if (defined(invoker.extra_visibility)) { 57e509ee18Sopenharmony_ci visibility = invoker.extra_visibility 58e509ee18Sopenharmony_ci } 59e509ee18Sopenharmony_ci 60e509ee18Sopenharmony_ci script = "$build_root/scripts/generate_js_bytecode.py" 61e509ee18Sopenharmony_ci 62e509ee18Sopenharmony_ci deps = extra_dependencies 63e509ee18Sopenharmony_ci deps += es2abc_build_deps 64e509ee18Sopenharmony_ci 65e509ee18Sopenharmony_ci args = [ 66e509ee18Sopenharmony_ci "--src-js", 67e509ee18Sopenharmony_ci invoker.src_js, 68e509ee18Sopenharmony_ci "--dst-file", 69e509ee18Sopenharmony_ci invoker.dst_file, 70e509ee18Sopenharmony_ci "--frontend-tool-path", 71e509ee18Sopenharmony_ci rebase_path("${es2abc_build_path}"), 72e509ee18Sopenharmony_ci ] 73e509ee18Sopenharmony_ci 74e509ee18Sopenharmony_ci if (defined(invoker.extension)) { 75e509ee18Sopenharmony_ci args += [ 76e509ee18Sopenharmony_ci "--extension", 77e509ee18Sopenharmony_ci invoker.extension, 78e509ee18Sopenharmony_ci ] 79e509ee18Sopenharmony_ci } 80e509ee18Sopenharmony_ci 81e509ee18Sopenharmony_ci if (defined(invoker.dump_symbol_table)) { 82e509ee18Sopenharmony_ci args += [ 83e509ee18Sopenharmony_ci "--dump-symbol-table", 84e509ee18Sopenharmony_ci invoker.dump_symbol_table, 85e509ee18Sopenharmony_ci ] 86e509ee18Sopenharmony_ci } 87e509ee18Sopenharmony_ci if (defined(invoker.input_symbol_table)) { 88e509ee18Sopenharmony_ci args += [ 89e509ee18Sopenharmony_ci "--input-symbol-table", 90e509ee18Sopenharmony_ci invoker.input_symbol_table, 91e509ee18Sopenharmony_ci ] 92e509ee18Sopenharmony_ci } 93e509ee18Sopenharmony_ci 94e509ee18Sopenharmony_ci if (defined(invoker.extra_args)) { 95e509ee18Sopenharmony_ci args += invoker.extra_args 96e509ee18Sopenharmony_ci } 97e509ee18Sopenharmony_ci 98e509ee18Sopenharmony_ci if (defined(invoker.in_puts)) { 99e509ee18Sopenharmony_ci inputs = invoker.in_puts 100e509ee18Sopenharmony_ci } 101e509ee18Sopenharmony_ci 102e509ee18Sopenharmony_ci outputs = invoker.out_puts 103e509ee18Sopenharmony_ci } 104e509ee18Sopenharmony_ci} 105