1# Copyright (c) 2021 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("//build/ohos.gni") 15import("//build/ohos/ace/ace.gni") 16import("//build/ohos_var.gni") 17import("//foundation/arkui/ace_engine/ace_config.gni") 18if (sdk_build_public) { 19 import("//out/sdk-public/public_interface/sdk-js/interface_config.gni") 20} else { 21 import("//interface/sdk-js/interface_config.gni") 22} 23 24ets_loader_lib_dir = 25 get_label_info(":build_ets_loader_library", "target_out_dir") + "/lib" 26ets_loader_declarations_dir = get_label_info(":build_ets_loader_library", 27 "target_out_dir") + "/declarations" 28ets_loader_component_config_file = 29 get_label_info(":build_ets_loader_library", "target_out_dir") + 30 "/component_config.json" 31ets_loader_form_config_file = 32 get_label_info(":build_ets_loader_library", "target_out_dir") + 33 "/form_config.json" 34ets_sysResource = get_label_info(":build_ets_sysResource", "target_out_dir") + 35 "/sysResource.js" 36 37action("build_ets_loader_library") { 38 deps = [ 39 ":components", 40 ":form_components", 41 ":server", 42 ] 43 script = "build_ets_loader_library.py" 44 depfile = "$target_gen_dir/$target_name.d" 45 outputs = [ 46 ets_loader_lib_dir, 47 ets_loader_declarations_dir, 48 ets_loader_component_config_file, 49 ets_loader_form_config_file, 50 ] 51 52 _ets_loader_dir = "compiler" 53 if (is_standard_system) { 54 _ace_config_dir = "compiler" 55 } else { 56 _ace_config_dir = "//prebuilts/ace-toolkit/ets-loader/compiler" 57 } 58 _declarations_file_dir = "//interface/sdk-js/api/@internal/component/ets" 59 if (sdk_build_public) { 60 _declarations_file_dir = 61 "//out/sdk-public/public_interface/sdk-js/api/@internal/component/ets" 62 } 63 64 _babel_js = _ace_config_dir + "/node_modules/@babel/cli/bin/babel.js" 65 _babel_config_js = _ace_config_dir + "/babel.config.js" 66 _uglify_source_js = _ace_config_dir + "/uglify-source.js" 67 _build_declarations_file_js = _ace_config_dir + "/build_declarations_file.js" 68 69 inputs = [ 70 _babel_config_js, 71 _babel_js, 72 _uglify_source_js, 73 _build_declarations_file_js, 74 ] 75 76 # different host platform nodejs tool directory 77 if (host_os == "linux") { 78 if (is_standard_system) { 79 nodejs_path = "//prebuilts/build-tools/common/nodejs/node-v12.18.4-linux-x64/bin/node" 80 } else { 81 nodejs_path = 82 "//prebuilts/ace-toolkit/nodejs/node-v12.18.4-linux-x64/bin/node" 83 } 84 } else if (host_os == "mac") { 85 if (is_standard_system) { 86 nodejs_path = "//prebuilts/build-tools/common/nodejs/node-v12.18.4-darwin-x64/bin/node" 87 } else { 88 nodejs_path = 89 "//prebuilts/ace-toolkit/nodejs/node-v12.18.4-darwin-x64/bin/node" 90 } 91 } else { 92 assert(false, "Unsupported host_os: $host_os") 93 } 94 95 args = [ 96 "--depfile", 97 rebase_path(depfile, root_build_dir), 98 "--node", 99 rebase_path(nodejs_path, root_build_dir), 100 "--babel-js", 101 rebase_path(_babel_js, root_build_dir), 102 "--ets-loader-src-dir", 103 rebase_path(_ets_loader_dir + "/src", root_build_dir), 104 "--babel-config-js", 105 rebase_path(_babel_config_js, root_build_dir), 106 "--uglify-source-js", 107 rebase_path(_uglify_source_js, root_build_dir), 108 "--output-dir", 109 rebase_path(ets_loader_lib_dir, root_build_dir), 110 "--declarations-file-dir", 111 rebase_path(_declarations_file_dir, root_build_dir), 112 "--build-declarations-file-js", 113 rebase_path(_build_declarations_file_js, root_build_dir), 114 "--output-declarations-dir", 115 rebase_path(ets_loader_declarations_dir, root_build_dir), 116 "--output-component-config-file", 117 rebase_path(ets_loader_component_config_file, root_build_dir), 118 "--output-form-config-file", 119 rebase_path(ets_loader_form_config_file, root_build_dir), 120 ] 121} 122 123action("build_ets_sysResource") { 124 if (is_standard_system) { 125 script = "//developtools/ace_ets2bundle/generateSysResource.py" 126 } else { 127 script = "//foundation/ace/huawei_proprietary/tools/ets-loader/generateSysResource.py" 128 } 129 outputs = [ ets_sysResource ] 130 131 _id_defined_json = "//base/global/system_resources/systemres/main/resources/base/element/id_defined.json" 132 inputs = [ _id_defined_json ] 133 134 args = [ 135 "--input-json", 136 rebase_path(_id_defined_json, root_build_dir), 137 "--output-js", 138 rebase_path(ets_sysResource, root_build_dir), 139 ] 140} 141 142ets_loader_sources = [ 143 "compiler/compile_plugin.js", 144 "compiler/main.js", 145 "compiler/npm-install.js", 146 "compiler/package-lock.json", 147 "compiler/package.json", 148 "compiler/rollup.config.js", 149 "compiler/tsconfig.esm.json", 150 "compiler/tsconfig.json", 151 "compiler/webpack.config.js", 152] 153 154ohos_copy("ets_loader_deps") { 155 sources = 156 [ "//third_party/typescript/build_package/ohos-typescript-4.2.3-r2.tgz" ] 157 outputs = [ target_out_dir + "/$target_name/{{source_file_part}}" ] 158 module_source_dir = target_out_dir + "/$target_name" 159 module_install_name = "" 160 license_file = "//third_party/typescript/LICENSE" 161} 162 163ohos_copy("ets_loader") { 164 deps = [ 165 ":build_ets_loader_library", 166 ":ets_loader_deps", 167 ] 168 sources = ets_loader_sources 169 deps += [ ":build_ets_sysResource" ] 170 sources += [ ets_sysResource ] 171 172 outputs = [ target_out_dir + "/$target_name/{{source_file_part}}" ] 173 module_source_dir = target_out_dir + "/$target_name" 174 module_install_name = "" 175} 176 177ohos_copy("ets_loader_component_config") { 178 deps = [ ":build_ets_loader_library" ] 179 sources = [ ets_loader_component_config_file ] 180 181 outputs = [ target_out_dir + "/$target_name/{{source_file_part}}" ] 182 module_source_dir = target_out_dir + "/$target_name" 183 module_install_name = "" 184} 185 186ohos_copy("ets_loader_form_config") { 187 deps = [ ":build_ets_loader_library" ] 188 sources = [ ets_loader_form_config_file ] 189 190 outputs = [ target_out_dir + "/$target_name/{{source_file_part}}" ] 191 module_source_dir = target_out_dir + "/$target_name" 192 module_install_name = "" 193} 194 195ohos_copy("ets_loader_library") { 196 deps = [ ":build_ets_loader_library" ] 197 sources = [ ets_loader_lib_dir ] 198 outputs = [ target_out_dir + "/$target_name" ] 199 module_source_dir = target_out_dir + "/$target_name" 200 module_install_name = "" 201} 202 203ohos_copy("components") { 204 sources = [ "compiler/components" ] 205 outputs = [ target_out_dir + "/$target_name" ] 206 module_source_dir = target_out_dir + "/$target_name" 207 module_install_name = "" 208} 209 210ohos_copy("form_components") { 211 sources = [ "compiler/form_components" ] 212 outputs = [ target_out_dir + "/$target_name" ] 213 module_source_dir = target_out_dir + "/$target_name" 214 module_install_name = "" 215} 216 217ohos_copy("server") { 218 sources = [ "compiler/server" ] 219 outputs = [ target_out_dir + "/$target_name" ] 220 module_source_dir = target_out_dir + "/$target_name" 221 module_install_name = "" 222} 223 224ohos_copy("codegen") { 225 sources = [ "compiler/codegen" ] 226 outputs = [ target_out_dir + "/$target_name" ] 227 module_source_dir = target_out_dir + "/$target_name" 228 module_install_name = "" 229} 230 231ohos_copy("ets_loader_declaration") { 232 deps = [ ":build_ets_loader_library" ] 233 sources = [ ets_loader_declarations_dir ] 234 outputs = [ target_out_dir + "/$target_name" ] 235 module_source_dir = target_out_dir + "/$target_name" 236 module_install_name = "" 237} 238 239ohos_copy("ets_loader_ark") { 240 deps = [ ":build_ets_loader_library" ] 241 sources = ets_loader_sources 242 deps += [ ":build_ets_sysResource" ] 243 sources += [ ets_sysResource ] 244 outputs = [ target_out_dir + "/$target_name/{{source_file_part}}" ] 245} 246 247ohos_copy("ets_loader_ark_lib") { 248 deps = [ 249 ":build_ets_loader_library", 250 ":ets_loader_ark", 251 ] 252 sources = [ ets_loader_lib_dir ] 253 outputs = [ target_out_dir + "/ets_loader_ark/lib" ] 254} 255 256ohos_copy("ets_loader_ark_declaration") { 257 deps = [ 258 ":build_ets_loader_library", 259 ":ets_loader_ark", 260 ] 261 sources = [ ets_loader_declarations_dir ] 262 outputs = [ target_out_dir + "/ets_loader_ark/declarations" ] 263} 264 265ohos_copy("ets_loader_ark_components") { 266 deps = [ 267 ":build_ets_loader_library", 268 ":ets_loader_ark", 269 ] 270 sources = [ "compiler/components" ] 271 outputs = [ target_out_dir + "/ets_loader_ark/components" ] 272} 273 274ohos_copy("ets_loader_ark_form_components") { 275 deps = [ 276 ":build_ets_loader_library", 277 ":ets_loader_ark", 278 ] 279 sources = [ "compiler/form_components" ] 280 outputs = [ target_out_dir + "/ets_loader_ark/form_components" ] 281} 282 283ohos_copy("ets_loader_ark_server") { 284 deps = [ 285 ":build_ets_loader_library", 286 ":ets_loader_ark", 287 ] 288 sources = [ "compiler/server" ] 289 outputs = [ target_out_dir + "/ets_loader_ark/server" ] 290} 291 292ohos_copy("ets_loader_ark_codegen") { 293 deps = [ 294 ":build_ets_loader_library", 295 ":ets_loader_ark", 296 ] 297 sources = [ "compiler/codegen" ] 298 outputs = [ target_out_dir + "/ets_loader_ark/codegen" ] 299} 300 301ohos_copy("ohos_declaration_ets_ark") { 302 deps = [] 303 if (sdk_build_public) { 304 deps += [ "//out/sdk-public/public_interface/sdk-js:ohos_declaration_ets" ] 305 } else { 306 deps += [ "//interface/sdk-js:ohos_declaration_ets" ] 307 } 308 309 sources = [ root_out_dir + "/ohos_declaration/ohos_declaration_ets" ] 310 311 outputs = [ target_out_dir + "/../api" ] 312} 313 314ohos_copy("common_api_ark") { 315 sources = common_api_src 316 deps = [ ":ohos_declaration_ets_ark" ] 317 outputs = [ target_out_dir + "/../../developtools/api/{{source_file_part}}" ] 318 module_install_name = "" 319} 320 321ohos_copy("ets_loader_node_modules") { 322 deps = [ 323 ":common_api_ark", 324 ":ets_loader_ark", 325 ":ets_loader_ark_codegen", 326 ":ets_loader_ark_components", 327 ":ets_loader_ark_declaration", 328 ":ets_loader_ark_form_components", 329 ":ets_loader_ark_lib", 330 ":ets_loader_ark_server", 331 ] 332 sources = [ "//developtools/ace_ets2bundle/compiler/node_modules" ] 333 outputs = [ target_out_dir + "/ets_loader_ark/node_modules" ] 334} 335