15f9996aaSopenharmony_ci# Copyright (c) 2021 Huawei Device Co., Ltd. 25f9996aaSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 35f9996aaSopenharmony_ci# you may not use this file except in compliance with the License. 45f9996aaSopenharmony_ci# You may obtain a copy of the License at 55f9996aaSopenharmony_ci# 65f9996aaSopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 75f9996aaSopenharmony_ci# 85f9996aaSopenharmony_ci# Unless required by applicable law or agreed to in writing, software 95f9996aaSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 105f9996aaSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 115f9996aaSopenharmony_ci# See the License for the specific language governing permissions and 125f9996aaSopenharmony_ci# limitations under the License. 135f9996aaSopenharmony_ci 145f9996aaSopenharmony_ciimport("//build/config/components/ets_frontend/ets_frontend_config.gni") 155f9996aaSopenharmony_ci 165f9996aaSopenharmony_cies2abc_root = "//arkcompiler/ets_frontend/es2panda" 175f9996aaSopenharmony_cies2abc_build_path = "" 185f9996aaSopenharmony_cies2abc_build_deps = [] 195f9996aaSopenharmony_cies2abc_out_root = "" 205f9996aaSopenharmony_cies2abc_indep_path = 215f9996aaSopenharmony_ci "//binarys/arkcompiler/ets_frontend/innerapis/es2panda/clang_x64/libs" 225f9996aaSopenharmony_ci 235f9996aaSopenharmony_ciif (ohos_indep_compiler_enable) { 245f9996aaSopenharmony_ci es2abc_build_path = es2abc_indep_path 255f9996aaSopenharmony_ci} else { 265f9996aaSopenharmony_ci if (host_toolchain == toolchain_mac) { 275f9996aaSopenharmony_ci es2abc_out_root = 285f9996aaSopenharmony_ci get_label_info("$es2abc_root:es2panda($toolchain_mac)", "root_out_dir") 295f9996aaSopenharmony_ci es2abc_build_deps += [ "$es2abc_root:es2panda($toolchain_mac)" ] 305f9996aaSopenharmony_ci } else if (host_toolchain == toolchain_win) { 315f9996aaSopenharmony_ci es2abc_out_root = 325f9996aaSopenharmony_ci get_label_info("$es2abc_root:es2panda($toolchain_win)", "root_out_dir") 335f9996aaSopenharmony_ci es2abc_build_deps += [ "$es2abc_root:es2panda($toolchain_win)" ] 345f9996aaSopenharmony_ci } else { 355f9996aaSopenharmony_ci es2abc_out_root = get_label_info("$es2abc_root:es2panda($toolchain_linux)", 365f9996aaSopenharmony_ci "root_out_dir") 375f9996aaSopenharmony_ci es2abc_build_deps += [ "$es2abc_root:es2panda($toolchain_linux)" ] 385f9996aaSopenharmony_ci } 395f9996aaSopenharmony_ci es2abc_build_path = es2abc_out_root + "/arkcompiler/ets_frontend" 405f9996aaSopenharmony_ci} 415f9996aaSopenharmony_ci 425f9996aaSopenharmony_ci# Generate abc. 435f9996aaSopenharmony_ci# 445f9996aaSopenharmony_ci# Mandatory arguments: 455f9996aaSopenharmony_ci# plugin_path -- plugin js file path 465f9996aaSopenharmony_ci# plugin_name -- name of js file, ex: BatteryPlugin.js 475f9996aaSopenharmony_ci# generat_file -- name of generated file 485f9996aaSopenharmony_ci# package_name -- name of generated file's package 495f9996aaSopenharmony_ci# extra_dependencies -- a list of files that should be considered as dependencies, must be label 505f9996aaSopenharmony_ci# out_puts 515f9996aaSopenharmony_citemplate("es2abc_gen_abc") { 525f9996aaSopenharmony_ci assert(defined(invoker.src_js), "src_js is required!") 535f9996aaSopenharmony_ci assert(defined(invoker.dst_file), "dst_file is required!") 545f9996aaSopenharmony_ci assert(defined(invoker.out_puts), "out_puts is required!") 555f9996aaSopenharmony_ci 565f9996aaSopenharmony_ci extra_dependencies = [] 575f9996aaSopenharmony_ci if (defined(invoker.extra_dependencies)) { 585f9996aaSopenharmony_ci extra_dependencies += invoker.extra_dependencies 595f9996aaSopenharmony_ci } 605f9996aaSopenharmony_ci 615f9996aaSopenharmony_ci action("$target_name") { 625f9996aaSopenharmony_ci if (defined(invoker.extra_visibility)) { 635f9996aaSopenharmony_ci visibility = invoker.extra_visibility 645f9996aaSopenharmony_ci } 655f9996aaSopenharmony_ci 665f9996aaSopenharmony_ci script = "//build/scripts/generate_js_bytecode.py" 675f9996aaSopenharmony_ci 685f9996aaSopenharmony_ci deps = extra_dependencies 695f9996aaSopenharmony_ci deps += es2abc_build_deps 705f9996aaSopenharmony_ci 715f9996aaSopenharmony_ci args = [ 725f9996aaSopenharmony_ci "--src-js", 735f9996aaSopenharmony_ci invoker.src_js, 745f9996aaSopenharmony_ci "--dst-file", 755f9996aaSopenharmony_ci invoker.dst_file, 765f9996aaSopenharmony_ci "--frontend-tool-path", 775f9996aaSopenharmony_ci rebase_path("${es2abc_build_path}"), 785f9996aaSopenharmony_ci ] 795f9996aaSopenharmony_ci 805f9996aaSopenharmony_ci if (defined(invoker.extension)) { 815f9996aaSopenharmony_ci args += [ 825f9996aaSopenharmony_ci "--extension", 835f9996aaSopenharmony_ci invoker.extension, 845f9996aaSopenharmony_ci ] 855f9996aaSopenharmony_ci } 865f9996aaSopenharmony_ci 875f9996aaSopenharmony_ci if (defined(invoker.dump_symbol_table)) { 885f9996aaSopenharmony_ci args += [ 895f9996aaSopenharmony_ci "--dump-symbol-table", 905f9996aaSopenharmony_ci invoker.dump_symbol_table, 915f9996aaSopenharmony_ci ] 925f9996aaSopenharmony_ci } 935f9996aaSopenharmony_ci if (defined(invoker.input_symbol_table)) { 945f9996aaSopenharmony_ci args += [ 955f9996aaSopenharmony_ci "--input-symbol-table", 965f9996aaSopenharmony_ci invoker.input_symbol_table, 975f9996aaSopenharmony_ci ] 985f9996aaSopenharmony_ci } 995f9996aaSopenharmony_ci 1005f9996aaSopenharmony_ci if (defined(invoker.extra_args)) { 1015f9996aaSopenharmony_ci args += invoker.extra_args 1025f9996aaSopenharmony_ci } 1035f9996aaSopenharmony_ci 1045f9996aaSopenharmony_ci if (defined(invoker.in_puts)) { 1055f9996aaSopenharmony_ci inputs = invoker.in_puts 1065f9996aaSopenharmony_ci } 1075f9996aaSopenharmony_ci 1085f9996aaSopenharmony_ci outputs = invoker.out_puts 1095f9996aaSopenharmony_ci } 1105f9996aaSopenharmony_ci} 1115f9996aaSopenharmony_ci 1125f9996aaSopenharmony_citemplate("es2abc_gen_newest_abc") { 1135f9996aaSopenharmony_ci assert(defined(invoker.src_js), "src_js is required!") 1145f9996aaSopenharmony_ci assert(defined(invoker.dst_file), "dst_file is required!") 1155f9996aaSopenharmony_ci assert(defined(invoker.out_puts), "out_puts is required!") 1165f9996aaSopenharmony_ci 1175f9996aaSopenharmony_ci extra_dependencies = [] 1185f9996aaSopenharmony_ci if (defined(invoker.extra_dependencies)) { 1195f9996aaSopenharmony_ci extra_dependencies += invoker.extra_dependencies 1205f9996aaSopenharmony_ci } 1215f9996aaSopenharmony_ci 1225f9996aaSopenharmony_ci action("$target_name") { 1235f9996aaSopenharmony_ci if (defined(invoker.extra_visibility)) { 1245f9996aaSopenharmony_ci visibility = invoker.extra_visibility 1255f9996aaSopenharmony_ci } 1265f9996aaSopenharmony_ci 1275f9996aaSopenharmony_ci script = "//build/scripts/generate_js_bytecode.py" 1285f9996aaSopenharmony_ci 1295f9996aaSopenharmony_ci deps = extra_dependencies 1305f9996aaSopenharmony_ci deps += es2abc_build_deps 1315f9996aaSopenharmony_ci 1325f9996aaSopenharmony_ci args = [ 1335f9996aaSopenharmony_ci "--src-js", 1345f9996aaSopenharmony_ci invoker.src_js, 1355f9996aaSopenharmony_ci "--dst-file", 1365f9996aaSopenharmony_ci invoker.dst_file, 1375f9996aaSopenharmony_ci "--frontend-tool-path", 1385f9996aaSopenharmony_ci rebase_path("${es2abc_build_path}"), 1395f9996aaSopenharmony_ci ] 1405f9996aaSopenharmony_ci 1415f9996aaSopenharmony_ci if (defined(invoker.extension)) { 1425f9996aaSopenharmony_ci args += [ 1435f9996aaSopenharmony_ci "--extension", 1445f9996aaSopenharmony_ci invoker.extension, 1455f9996aaSopenharmony_ci ] 1465f9996aaSopenharmony_ci } 1475f9996aaSopenharmony_ci 1485f9996aaSopenharmony_ci if (defined(invoker.dump_symbol_table)) { 1495f9996aaSopenharmony_ci args += [ 1505f9996aaSopenharmony_ci "--dump-symbol-table", 1515f9996aaSopenharmony_ci invoker.dump_symbol_table, 1525f9996aaSopenharmony_ci ] 1535f9996aaSopenharmony_ci } 1545f9996aaSopenharmony_ci if (defined(invoker.input_symbol_table)) { 1555f9996aaSopenharmony_ci args += [ 1565f9996aaSopenharmony_ci "--input-symbol-table", 1575f9996aaSopenharmony_ci invoker.input_symbol_table, 1585f9996aaSopenharmony_ci ] 1595f9996aaSopenharmony_ci } 1605f9996aaSopenharmony_ci 1615f9996aaSopenharmony_ci if (defined(invoker.extra_args)) { 1625f9996aaSopenharmony_ci args += invoker.extra_args 1635f9996aaSopenharmony_ci } 1645f9996aaSopenharmony_ci 1655f9996aaSopenharmony_ci if (defined(invoker.in_puts)) { 1665f9996aaSopenharmony_ci inputs = invoker.in_puts 1675f9996aaSopenharmony_ci } 1685f9996aaSopenharmony_ci 1695f9996aaSopenharmony_ci args += [ "--target-api-sub-version=beta3" ] 1705f9996aaSopenharmony_ci 1715f9996aaSopenharmony_ci outputs = invoker.out_puts 1725f9996aaSopenharmony_ci } 1735f9996aaSopenharmony_ci} 174