1# Copyright (c) 2022 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("//ark/runtime_core/ark_config.gni") 15import("//ark/ts2abc/ts2panda/ts2abc_config.gni") 16import("//build/config/clang/clang.gni") 17import("//build/ohos.gni") 18 19src_dir = target_out_dir + "/src" 20 21ohos_copy("ts2abc_src") { 22 sources = [ "${ts2abc_root}/src" ] 23 24 outputs = [ src_dir ] 25 module_install_name = "" 26} 27 28ohos_copy("node_modules") { 29 sources = [ rebase_path("${node_modules}") ] 30 outputs = [ target_out_dir + "/node_modules" ] 31 module_install_name = "" 32} 33 34ohos_copy("config_files") { 35 sources = [ 36 "${ts2abc_root}/package-lock.json", 37 "${ts2abc_root}/package.json", 38 "${ts2abc_root}/tsconfig.json", 39 "${ts2abc_root}/webpack.config.js", 40 ] 41 42 outputs = [ target_out_dir + "/{{source_file_part}}" ] 43 module_install_name = "" 44} 45 46action("ts2abc_diagnostic_ts") { 47 visibility = [ ":*" ] 48 script = "scripts/gen_diagnostic.rb" 49 args = [ 50 "--template", 51 rebase_path("templates/diagnostic.ts.erb", root_build_dir), 52 "--data", 53 rebase_path("scripts/diagnosticMessages.json", root_build_dir), 54 "--output", 55 rebase_path("${src_dir}/diagnostic.ts"), 56 ] 57 58 outputs = [ "${src_dir}/diagnostic.ts" ] 59 deps = [ "$ts2abc_root:ts2abc_src" ] 60} 61 62ark_gen_file("ts2abc_irnodes_ts") { 63 template_file = "templates/irnodes.ts.erb" 64 data_file = "$root_gen_dir/isa/isa.yaml" 65 requires = [ 66 "$ark_root/isa/isapi.rb", 67 "$ark_root/libpandafile/pandafile_isapi.rb", 68 ] 69 output_file = "$src_dir/irnodes.ts" 70 extra_dependencies = [ 71 "$ts2abc_root:ts2abc_src", 72 "$ark_root/isa:isa_combine", 73 ] 74} 75 76action("npm_run_build") { 77 visibility = [ ":*" ] 78 deps = [ 79 "$ts2abc_root:config_files", 80 "$ts2abc_root:node_modules", 81 "$ts2abc_root:ts2abc_diagnostic_ts", 82 "$ts2abc_root:ts2abc_irnodes_ts", 83 "$ts2abc_root:ts2abc_src", 84 ] 85 86 if (is_linux || is_mingw || is_mac) { 87 deps += [ "$ts2abc_root/ts2abc:ts2abc" ] 88 } 89 90 script = "${ts2abc_root}/scripts/run.py" 91 args = [ 92 "--src-dir", 93 rebase_path(ts2abc_root), 94 "--dist-dir", 95 rebase_path(target_out_dir), 96 "--node", 97 rebase_path(node_path), 98 "--node-modules", 99 rebase_path(node_modules), 100 ] 101 102 if (is_linux) { 103 args += [ 104 "--platform", 105 "linux", 106 "--js2abc", 107 rebase_path("${root_out_dir}/ark/ark/js2abc"), 108 ] 109 } else if (is_mingw) { 110 args += [ 111 "--platform", 112 "win", 113 "--js2abc", 114 rebase_path("${root_out_dir}/ark/ark/js2abc.exe"), 115 ] 116 } else if (is_mac) { 117 args += [ 118 "--platform", 119 "mac", 120 "--js2abc", 121 rebase_path("${root_out_dir}/ark/ark/js2abc"), 122 ] 123 } 124 125 if (is_debug) { 126 args += [ 127 "--buildMode", 128 "debug", 129 ] 130 } else { 131 args += [ 132 "--buildMode", 133 "release", 134 ] 135 } 136 137 outputs = [] 138 if (is_mingw) { 139 outputs += [ "${root_out_dir}/ark/ark/build-win" ] 140 } else if (is_mac) { 141 outputs += [ "${root_out_dir}/ark/ark/build-mac" ] 142 } else { 143 outputs += [ "${root_out_dir}/ark/ark/build" ] 144 } 145} 146 147if (is_linux) { 148 ohos_copy("ts2abc_build") { 149 deps = [ "$ts2abc_root:npm_run_build" ] 150 sources = [ "${root_out_dir}/ark/ark/build" ] 151 outputs = [ "${target_out_dir}/build-tmp" ] 152 module_source_dir = "${root_out_dir}/ark/ark/build" 153 module_install_name = "" 154 } 155 156 ohos_copy("ts2abc_build_ets") { 157 deps = [ "$ts2abc_root:npm_run_build" ] 158 159 sources = [ "${root_out_dir}/ark/ark/build" ] 160 outputs = [ "${root_out_dir}/ark/ark/build-ets" ] 161 module_source_dir = "${root_out_dir}/ark/ark/build-ets" 162 module_install_name = "" 163 } 164} 165 166if (is_mingw) { 167 ohos_copy("ts2abc_build_win") { 168 deps = [ "$ts2abc_root:npm_run_build" ] 169 sources = [ "${root_out_dir}/ark/ark/build-win" ] 170 outputs = [ "${target_out_dir}/build-tmp" ] 171 module_source_dir = "${root_out_dir}/ark/ark/build-win" 172 module_install_name = "" 173 } 174 175 ohos_copy("ts2abc_build_win_ets") { 176 deps = [ "$ts2abc_root:npm_run_build" ] 177 sources = [ "${root_out_dir}/ark/ark/build-win" ] 178 outputs = [ "${root_out_dir}/ark/ark/build-win-ets" ] 179 module_source_dir = "${root_out_dir}/ark/ark/build-win-ets" 180 module_install_name = "" 181 } 182} 183 184if (is_mac) { 185 ohos_copy("ts2abc_build_mac") { 186 deps = [ "$ts2abc_root:npm_run_build" ] 187 sources = [ "${root_out_dir}/ark/ark/build-mac" ] 188 outputs = [ "${target_out_dir}/build-tmp" ] 189 module_source_dir = "${root_out_dir}/ark/ark/build-mac" 190 module_install_name = "" 191 } 192 193 ohos_copy("ts2abc_build_mac_ets") { 194 deps = [ "$ts2abc_root:npm_run_build" ] 195 sources = [ "${root_out_dir}/ark/ark/build-mac" ] 196 outputs = [ "${root_out_dir}/ark/ark/build-mac-ets" ] 197 module_source_dir = "${root_out_dir}/ark/ark/build-mac-ets" 198 module_install_name = "" 199 } 200} 201 202ohos_copy("panda_ts2abc") { 203 sources = [ "${ts2abc_root}/scripts/ts2abc.js" ] 204 205 outputs = [ target_out_dir + "/$target_name/{{source_file_part}}" ] 206 module_source_dir = target_out_dir + "/$target_name/" 207 module_install_name = "" 208} 209 210ohos_copy("panda_ts2abc_ets") { 211 sources = [ "${ts2abc_root}/scripts/ts2abc.js" ] 212 outputs = [ target_out_dir + "/$target_name/{{source_file_part}}" ] 213 module_source_dir = target_out_dir + "/$target_name/" 214 module_install_name = "" 215} 216 217ohos_copy("ts2abc_js_file") { 218 sources = [ "${ts2abc_root}/scripts/ts2abc.js" ] 219 outputs = [ target_out_dir + "/{{source_file_part}}" ] 220} 221 222group("ark_ts2abc_build") { 223 deps = [] 224 if (host_os != "mac") { 225 deps += [ 226 "${ts2abc_root}:ts2abc_build(${buildtool_linux})", 227 "${ts2abc_root}:ts2abc_build_ets(${buildtool_linux})", 228 ] 229 } else { 230 deps += [ 231 "${ts2abc_root}:ts2abc_build_mac(${buildtool_mac})", 232 "${ts2abc_root}:ts2abc_build_mac_ets(${buildtool_mac})", 233 ] 234 } 235} 236 237ohos_copy("copy_ts2abc_tests") { 238 sources = [ "${ts2abc_root}/tests" ] 239 deps = [ ":npm_run_build" ] 240 241 outputs = [ target_out_dir + "/tests" ] 242 module_install_name = "" 243} 244 245group("ts2abc_unittests") { 246 if (host_os == "linux") { 247 testonly = true 248 deps = [ "tests:ts2abc_tests(${buildtool_linux})" ] 249 } 250} 251