611 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			611 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|  | # Copyright (c) 2021 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("//build/config/python.gni") | ||
|  | import("//build/ohos_var.gni") | ||
|  | import("//build/templates/metadata/module_info.gni") | ||
|  | 
 | ||
|  | if (is_ohos) { | ||
|  |   import("//build/config/ohos/abi.gni") | ||
|  | } | ||
|  | 
 | ||
|  | template("merge_profile") { | ||
|  |   forward_variables_from(invoker, [ "testonly" ]) | ||
|  |   assert(defined(invoker.hap_profile), | ||
|  |          "hap_profile must be defined for compile_resources") | ||
|  |   action(target_name) { | ||
|  |     forward_variables_from(invoker, | ||
|  |                            [ | ||
|  |                              "meta_data", | ||
|  |                              "hap_profile", | ||
|  |                              "generated_profile", | ||
|  |                              "deps", | ||
|  |                            ]) | ||
|  |     script = "//build/scripts/merge_profile.py" | ||
|  |     depfile = "$target_gen_dir/$target_name.d" | ||
|  | 
 | ||
|  |     _rebased_metadata = rebase_path(meta_data, root_build_dir) | ||
|  |     inputs = [ | ||
|  |       meta_data, | ||
|  |       hap_profile, | ||
|  |     ] | ||
|  |     args = [ | ||
|  |       "--resources-dir=@FileArg($_rebased_metadata:root:resources)", | ||
|  |       "--depfile", | ||
|  |       rebase_path(depfile, root_build_dir), | ||
|  |       "--app-profile=@FileArg($_rebased_metadata:root:app_profile)", | ||
|  |       "--hap-profile", | ||
|  |       rebase_path(hap_profile, root_build_dir), | ||
|  |       "--generated-profile", | ||
|  |       rebase_path(generated_profile, root_build_dir), | ||
|  |       "--release-type", | ||
|  |       release_type, | ||
|  |     ] | ||
|  |     outputs = [ generated_profile ] | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | template("compile_resources") { | ||
|  |   forward_variables_from(invoker, [ "testonly" ]) | ||
|  |   assert(defined(invoker.hap_profile), | ||
|  |          "hap_profile must be defined for compile_resources") | ||
|  |   assert( | ||
|  |       defined(invoker.packaged_resources) || | ||
|  |           defined(invoker.generated_header_dir), | ||
|  |       "hap_profile or generated_header_dir must be defined for compile_resources") | ||
|  |   _generate_resource = defined(invoker.packaged_resources) | ||
|  |   if (_generate_resource) { | ||
|  |     _packaged_resources = invoker.packaged_resources | ||
|  |   } | ||
|  |   _generate_header = defined(invoker.generated_header_dir) | ||
|  |   if (_generate_header) { | ||
|  |     _generated_header_file = invoker.generated_header_dir + "/ResourceTable.h" | ||
|  |   } | ||
|  |   action_with_pydeps(target_name) { | ||
|  |     forward_variables_from(invoker, | ||
|  |                            [ | ||
|  |                              "meta_data", | ||
|  |                              "hap_profile", | ||
|  |                              "deps", | ||
|  |                            ]) | ||
|  |     script = "//build/scripts/compile_resources.py" | ||
|  |     depfile = "$target_gen_dir/$target_name.d" | ||
|  |     if (defined(deps)) { | ||
|  |       deps += [ | ||
|  |         "//developtools/global_resource_tool:restool($host_toolchain)", | ||
|  |         "//developtools/global_resource_tool:restool_id_defined($host_toolchain)", | ||
|  |       ] | ||
|  |     } else { | ||
|  |       deps = [ | ||
|  |         "//developtools/global_resource_tool:restool($host_toolchain)", | ||
|  |         "//developtools/global_resource_tool:restool_id_defined($host_toolchain)", | ||
|  |       ] | ||
|  |     } | ||
|  |     restool_path = | ||
|  |         get_label_info( | ||
|  |             "//developtools/global_resource_tool:restool($host_toolchain)", | ||
|  |             "root_out_dir") + "/developtools/global_resource_tool/restool" | ||
|  |     _rebased_metadata = rebase_path(meta_data, root_build_dir) | ||
|  |     inputs = [ | ||
|  |       meta_data, | ||
|  |       restool_path, | ||
|  |       hap_profile, | ||
|  |     ] | ||
|  |     args = [ | ||
|  |       "--resources-dir=@FileArg($_rebased_metadata:root:resources)", | ||
|  |       "--depfile", | ||
|  |       rebase_path(depfile, root_build_dir), | ||
|  |       "--restool-path", | ||
|  |       rebase_path(restool_path, root_build_dir), | ||
|  |       "--hap-profile=@FileArg($_rebased_metadata:root:hap_profile)", | ||
|  |       "--app-profile=@FileArg($_rebased_metadata:root:app_profile)", | ||
|  |     ] | ||
|  |     outputs = [] | ||
|  |     if (_generate_resource) { | ||
|  |       outputs += [ _packaged_resources ] | ||
|  |       args += [ | ||
|  |         "--output-resources-zipfile", | ||
|  |         rebase_path(_packaged_resources, root_build_dir), | ||
|  |       ] | ||
|  |     } | ||
|  |     if (_generate_header) { | ||
|  |       outputs += [ _generated_header_file ] | ||
|  |       args += [ | ||
|  |         "--output-header-file", | ||
|  |         rebase_path(_generated_header_file, root_build_dir), | ||
|  |       ] | ||
|  |     } | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | template("package_app") { | ||
|  |   forward_variables_from(invoker, [ "testonly" ]) | ||
|  |   assert(defined(invoker.hap_profile), | ||
|  |          "hap_profile must be defined for $target_name") | ||
|  |   assert(defined(invoker.hap_path), "hap_path must be defined for $target_name") | ||
|  |   action_with_pydeps(target_name) { | ||
|  |     forward_variables_from(invoker, | ||
|  |                            [ | ||
|  |                              "deps", | ||
|  |                              "shared_libraries", | ||
|  |                              "hap_profile", | ||
|  |                              "hap_path", | ||
|  |                              "packaged_resources", | ||
|  |                              "packaged_js_assets", | ||
|  |                              "meta_data", | ||
|  |                              "private_key_path", | ||
|  |                              "signature_algorithm", | ||
|  |                              "certificate_profile", | ||
|  |                              "keystore_path", | ||
|  |                              "keystore_password", | ||
|  |                              "key_alias", | ||
|  |                              "certificate_file", | ||
|  |                              "install_module_info", | ||
|  |                              "enable_ark", | ||
|  |                              "build_mode", | ||
|  |                              "compatible_version", | ||
|  |                            ]) | ||
|  |     script = "//build/scripts/hapbuilder.py" | ||
|  |     depfile = "$target_gen_dir/$target_name.d" | ||
|  |     _rebased_metadata = rebase_path(meta_data, root_build_dir) | ||
|  |     outputs = [ hap_path ] | ||
|  |     args = [ | ||
|  |       "--depfile", | ||
|  |       rebase_path(depfile, root_build_dir), | ||
|  |       "--hap-profile=@FileArg($_rebased_metadata:root:hap_profile)", | ||
|  |       "--hapsigner", | ||
|  |       rebase_path(hapsigner, root_build_dir), | ||
|  |       "--hap-packing-tool", | ||
|  |       rebase_path(hap_packing_tool, root_build_dir), | ||
|  |       "--hap-path", | ||
|  |       rebase_path(hap_path, root_build_dir), | ||
|  |       "--packaged-resources", | ||
|  |       rebase_path(packaged_resources, root_build_dir), | ||
|  |       "--packaged-js-assets", | ||
|  |       rebase_path(packaged_js_assets, root_build_dir), | ||
|  |       "--assets=@FileArg($_rebased_metadata:root:assets)", | ||
|  |       "--app-profile=@FileArg($_rebased_metadata:root:app_profile)", | ||
|  |       "--build-mode", | ||
|  |       build_mode, | ||
|  |     ] | ||
|  | 
 | ||
|  |     inputs = [ | ||
|  |       hap_profile, | ||
|  |       hapsigner, | ||
|  |       hap_packing_tool, | ||
|  |       packaged_js_assets, | ||
|  |       packaged_resources, | ||
|  |       meta_data, | ||
|  |     ] | ||
|  | 
 | ||
|  |     _private_key_path = default_hap_private_key_path | ||
|  |     if (defined(private_key_path)) { | ||
|  |       _private_key_path = private_key_path | ||
|  |     } | ||
|  |     _signature_algorithm = default_signature_algorithm | ||
|  |     if (defined(signature_algorithm)) { | ||
|  |       _signature_algorithm = signature_algorithm | ||
|  |     } | ||
|  |     _key_alias = default_key_alias | ||
|  |     if (defined(key_alias)) { | ||
|  |       _key_alias = key_alias | ||
|  |     } | ||
|  |     _keystore_path = default_keystore_path | ||
|  |     if (defined(keystore_path)) { | ||
|  |       _keystore_path = keystore_path | ||
|  |     } | ||
|  |     _keystore_password = default_keystore_password | ||
|  |     if (defined(keystore_password)) { | ||
|  |       _keystore_password = keystore_password | ||
|  |     } | ||
|  |     _certificate_file = default_hap_certificate_file | ||
|  |     if (defined(certificate_file)) { | ||
|  |       _certificate_file = certificate_file | ||
|  |     } | ||
|  | 
 | ||
|  |     inputs += [ | ||
|  |       certificate_profile, | ||
|  |       _keystore_path, | ||
|  |       _certificate_file, | ||
|  |     ] | ||
|  |     _sign_hap_py_path = "//build/scripts/app_sign.py" | ||
|  |     if (defined(sign_hap_py_path)) { | ||
|  |       _sign_hap_py_path = sign_hap_py_path | ||
|  |     } | ||
|  |     args += [ | ||
|  |       "--sign_hap_py_path", | ||
|  |       rebase_path(_sign_hap_py_path), | ||
|  |     ] | ||
|  |     if (defined(compatible_version)) { | ||
|  |       _sign_compatible_version = compatible_version | ||
|  |       print("INFO: Set para compatible_version for remote sign app, ", | ||
|  |             target_name, | ||
|  |             " value is ", | ||
|  |             _sign_compatible_version) | ||
|  |       args += [ | ||
|  |         "--sign_compatible_version", | ||
|  |         _sign_compatible_version, | ||
|  |       ] | ||
|  |     } else if (defined(sign_hap_py_path)) { | ||
|  |       print( | ||
|  |           "warning: Please set compatible_version for remote sign app!!! target_name: ", | ||
|  |           target_name) | ||
|  |     } | ||
|  |     args += [ | ||
|  |       "--private-key-path", | ||
|  |       _private_key_path, | ||
|  |       "--sign-algo", | ||
|  |       _signature_algorithm, | ||
|  |       "--certificate-profile", | ||
|  |       rebase_path(certificate_profile, root_build_dir), | ||
|  |       "--keyalias", | ||
|  |       _key_alias, | ||
|  |       "--keystore-path", | ||
|  |       rebase_path(_keystore_path, root_build_dir), | ||
|  |       "--keystorepasswd", | ||
|  |       _keystore_password, | ||
|  |       "--certificate-file", | ||
|  |       rebase_path(_certificate_file, root_build_dir), | ||
|  |     ] | ||
|  | 
 | ||
|  |     if (defined(shared_libraries)) { | ||
|  |       foreach(lib, shared_libraries) { | ||
|  |         _module_info = get_label_info(lib, "target_out_dir") + "/" + | ||
|  |                        get_label_info(lib, "name") + "_module_info.json" | ||
|  |         _rebased_module_info = rebase_path(_module_info, root_build_dir) | ||
|  |         args += [ "--dso=@FileArg($_rebased_module_info:source)" ] | ||
|  |       } | ||
|  |       if (is_ohos) { | ||
|  |         args += [ | ||
|  |           "--ohos-app-abi", | ||
|  |           ohos_app_abi, | ||
|  |         ] | ||
|  |       } | ||
|  |     } | ||
|  | 
 | ||
|  |     if (defined(install_module_info)) { | ||
|  |       metadata = { | ||
|  |         install_modules = [ install_module_info ] | ||
|  |       } | ||
|  |     } | ||
|  |     if (defined(enable_ark) && enable_ark) { | ||
|  |       _ark_deps = [ | ||
|  |         "//arkcompiler/ets_frontend/es2panda:es2abc_js_file($host_toolchain)", | ||
|  |         "//arkcompiler/ets_frontend/es2panda:es2panda_build($host_toolchain)", | ||
|  |       ] | ||
|  |       if (defined(deps)) { | ||
|  |         deps += _ark_deps | ||
|  |       } else { | ||
|  |         deps = _ark_deps | ||
|  |       } | ||
|  |       _js2abc_js = get_label_info( | ||
|  |                        "//arkcompiler/ets_frontend/es2panda:es2abc_js_file($host_toolchain)", | ||
|  |                        "target_out_dir") + "/ts2abc.js" | ||
|  |       args += [ | ||
|  |         "--nodejs-path", | ||
|  |         rebase_path(nodejs, root_build_dir), | ||
|  |         "--js2abc-js", | ||
|  |         rebase_path(_js2abc_js, root_build_dir), | ||
|  |         "--enable-ark", | ||
|  |       ] | ||
|  |       inputs += [ | ||
|  |         nodejs, | ||
|  |         _js2abc_js, | ||
|  |       ] | ||
|  |     } | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | template("compile_js_assets") { | ||
|  |   forward_variables_from(invoker, [ "testonly" ]) | ||
|  |   assert(defined(invoker.meta_data) && defined(invoker.packaged_js_assets), | ||
|  |          "meta_data and packaged_js_assets must be for compile_js_assets") | ||
|  | 
 | ||
|  |   _packaged_js_assets = invoker.packaged_js_assets | ||
|  |   action_with_pydeps(target_name) { | ||
|  |     forward_variables_from(invoker, | ||
|  |                            [ | ||
|  |                              "deps", | ||
|  |                              "meta_data", | ||
|  |                              "hap_profile", | ||
|  |                              "build_mode", | ||
|  |                              "js2abc", | ||
|  |                              "ets2abc", | ||
|  |                              "main_target_name", | ||
|  |                            ]) | ||
|  |     script = "//build/scripts/build_js_assets.py" | ||
|  |     depfile = "$target_gen_dir/$target_name.d" | ||
|  |     outputs = [ _packaged_js_assets ] | ||
|  | 
 | ||
|  |     _rebased_metadata = rebase_path(meta_data, root_build_dir) | ||
|  | 
 | ||
|  |     if (!defined(deps)) { | ||
|  |       deps = [] | ||
|  |     } | ||
|  |     deps += [ | ||
|  |       "//arkcompiler/ets_frontend/es2panda:build_es2abc_for_hap($host_toolchain)", | ||
|  |       "//developtools/ace_ets2bundle:ets_loader_ark_hap", | ||
|  |       "//developtools/ace_js2bundle:ace_loader_ark_hap", | ||
|  |       "//third_party/weex-loader:weex_loader_ark_hap", | ||
|  |     ] | ||
|  |     _ace_loader_home = | ||
|  |         get_label_info("//developtools/ace_js2bundle:ace_loader_node_modules", | ||
|  |                        "target_out_dir") + "/ace_loader_ark" | ||
|  |     _webpack_config_js = "${_ace_loader_home}/webpack.rich.config.js" | ||
|  |     _ets_loader_home = | ||
|  |         get_label_info("//developtools/ace_ets2bundle:ets_loader_node_modules", | ||
|  |                        "target_out_dir") + "/ets_loader_ark" | ||
|  |     _webpack_config_ets = "${_ets_loader_home}/webpack.config.js" | ||
|  |     _webpack_js = "${_ace_loader_home}/node_modules/webpack/bin/webpack.js" | ||
|  |     _manifest_file_path = "${target_gen_dir}/manifest_file" | ||
|  | 
 | ||
|  |     inputs = [ | ||
|  |       meta_data, | ||
|  |       nodejs, | ||
|  |     ] | ||
|  | 
 | ||
|  |     args = [ | ||
|  |       "--js-assets-dir=@FileArg($_rebased_metadata:root:js_assets)", | ||
|  |       "--ets-assets-dir=@FileArg($_rebased_metadata:root:ets_assets)", | ||
|  |       "--js-forms-dir=@FileArg($_rebased_metadata:root:js_forms)", | ||
|  |       "--testrunner-dir=@FileArg($_rebased_metadata:root:testrunner)", | ||
|  |       "--output", | ||
|  |       rebase_path(_packaged_js_assets, root_build_dir), | ||
|  |       "--depfile", | ||
|  |       rebase_path(depfile, root_build_dir), | ||
|  |       "--nodejs-path", | ||
|  |       rebase_path(nodejs, root_build_dir), | ||
|  |       "--webpack-js", | ||
|  |       rebase_path(_webpack_js, root_build_dir), | ||
|  |       "--webpack-config-js", | ||
|  |       rebase_path(_webpack_config_js, root_build_dir), | ||
|  |       "--webpack-config-ets", | ||
|  |       rebase_path(_webpack_config_ets, root_build_dir), | ||
|  |       "--build-mode", | ||
|  |       build_mode, | ||
|  |       "--ace-loader-home", | ||
|  |       rebase_path(_ace_loader_home, root_build_dir), | ||
|  |       "--ets-loader-home", | ||
|  |       rebase_path(_ets_loader_home, root_build_dir), | ||
|  |       "--hap-profile=@FileArg($_rebased_metadata:root:hap_profile)", | ||
|  |       "--app-profile=@FileArg($_rebased_metadata:root:app_profile)", | ||
|  |       "--manifest-file-path", | ||
|  |       rebase_path(_manifest_file_path, root_build_dir), | ||
|  |     ] | ||
|  |     if (defined(testonly) && testonly == true) { | ||
|  |       _js_sources_file = target_gen_dir + "/$main_target_name.sources" | ||
|  |       args += [ | ||
|  |         "--js-sources-file", | ||
|  |         rebase_path(_js_sources_file, root_build_dir), | ||
|  |       ] | ||
|  |       outputs += [ _js_sources_file ] | ||
|  |     } | ||
|  | 
 | ||
|  |     if (js2abc || ets2abc) { | ||
|  |       _es2abc_dir = get_label_info( | ||
|  |               "//arkcompiler/ets_frontend/es2panda:es2panda_build($host_toolchain)", | ||
|  |               "target_out_dir") | ||
|  |       if (ets2abc) { | ||
|  |         args += [ "--ets2abc" ] | ||
|  |       } else if (js2abc) { | ||
|  |         args += [ "--js2abc" ] | ||
|  |       } | ||
|  |       args += [ | ||
|  |         "--ark-es2abc-dir", | ||
|  |         rebase_path(_es2abc_dir, root_build_dir), | ||
|  |       ] | ||
|  |     } | ||
|  | 
 | ||
|  |     if (defined(hap_profile)) { | ||
|  |       inputs += [ hap_profile ] | ||
|  |     } | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | template("app_sign") { | ||
|  |   forward_variables_from(invoker, [ "testonly" ]) | ||
|  |   action(target_name) { | ||
|  |     forward_variables_from(invoker, | ||
|  |                            [ | ||
|  |                              "deps", | ||
|  |                              "private_key_path", | ||
|  |                              "signature_algorithm", | ||
|  |                              "certificate_profile", | ||
|  |                              "keystore_password", | ||
|  |                              "key_alias", | ||
|  |                              "certificate_file", | ||
|  |                              "keystore_path", | ||
|  |                              "unsigned_hap_path_list", | ||
|  |                              "hap_out_dir", | ||
|  |                              "hap_name", | ||
|  |                              "install_module_info", | ||
|  |                            ]) | ||
|  |     script = "//build/scripts/app_sign.py" | ||
|  |     _private_key_path = default_hap_private_key_path | ||
|  |     if (defined(private_key_path)) { | ||
|  |       _private_key_path = private_key_path | ||
|  |     } | ||
|  |     _key_alias = default_key_alias | ||
|  |     if (defined(key_alias)) { | ||
|  |       _key_alias = key_alias | ||
|  |     } | ||
|  |     _signature_algorithm = default_signature_algorithm | ||
|  |     if (defined(signature_algorithm)) { | ||
|  |       _signature_algorithm = signature_algorithm | ||
|  |     } | ||
|  |     _keystore_path = default_keystore_path | ||
|  |     if (defined(keystore_path)) { | ||
|  |       _keystore_path = keystore_path | ||
|  |     } | ||
|  |     _certificate_file = default_hap_certificate_file | ||
|  |     if (defined(certificate_file)) { | ||
|  |       _certificate_file = certificate_file | ||
|  |     } | ||
|  |     _keystore_password = default_keystore_password | ||
|  |     if (defined(keystore_password)) { | ||
|  |       _keystore_password = keystore_password | ||
|  |     } | ||
|  |     if (defined(certificate_profile)) { | ||
|  |       _certificate_profile = certificate_profile | ||
|  |     } | ||
|  | 
 | ||
|  |     inputs = [ | ||
|  |       hapsigner, | ||
|  |       certificate_profile, | ||
|  |       _keystore_path, | ||
|  |       _certificate_file, | ||
|  |     ] | ||
|  | 
 | ||
|  |     outputs = [ "${target_out_dir}/${target_name}.stamp" ] | ||
|  | 
 | ||
|  |     args = [ | ||
|  |       "--keyPwd", | ||
|  |       _private_key_path, | ||
|  |       "--sign-algo", | ||
|  |       _signature_algorithm, | ||
|  |       "--profileFile", | ||
|  |       rebase_path(_certificate_profile, root_build_dir), | ||
|  |       "--keyalias", | ||
|  |       _key_alias, | ||
|  |       "--keystoreFile", | ||
|  |       rebase_path(_keystore_path, root_build_dir), | ||
|  |       "--keystorePwd", | ||
|  |       _keystore_password, | ||
|  |       "--certificate-file", | ||
|  |       rebase_path(_certificate_file, root_build_dir), | ||
|  |       "--hapsigner", | ||
|  |       rebase_path(hapsigner, root_build_dir), | ||
|  |       "--unsigned-hap-path-list", | ||
|  |       rebase_path(unsigned_hap_path_list, root_build_dir), | ||
|  |       "--hap-out-dir", | ||
|  |       rebase_path(hap_out_dir, root_build_dir), | ||
|  |       "--hap-name", | ||
|  |       hap_name, | ||
|  |     ] | ||
|  |     if (defined(install_module_info)) { | ||
|  |       metadata = { | ||
|  |         install_modules = [ install_module_info ] | ||
|  |       } | ||
|  |     } | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | template("compile_app") { | ||
|  |   forward_variables_from(invoker, [ "testonly" ]) | ||
|  |   nodejs_version = "v14.21.1" | ||
|  |   if (host_os == "mac") { | ||
|  |     _nodejs = "//prebuilts/build-tools/common/nodejs/node-${nodejs_version}-darwin-x64/bin/node" | ||
|  |   } else { | ||
|  |     _nodejs = "//prebuilts/build-tools/common/nodejs/node-${nodejs_version}-${host_os}-x64/bin/node" | ||
|  |   } | ||
|  |   action(target_name) { | ||
|  |     forward_variables_from(invoker, | ||
|  |                            [ | ||
|  |                              "deps", | ||
|  |                              "cwd", | ||
|  |                              "build_mode", | ||
|  |                              "build_profile", | ||
|  |                              "app_profile", | ||
|  |                              "hap_profile", | ||
|  |                              "build_level", | ||
|  |                              "assemble_type", | ||
|  |                              "sdk_home", | ||
|  |                              "unsigned_hap_path_list", | ||
|  |                              "system_lib_deps", | ||
|  |                              "hap_out_dir", | ||
|  |                              "hap_name", | ||
|  |                              "install_module_info", | ||
|  |                              "test_hap", | ||
|  |                              "test_module", | ||
|  |                              "module_libs_dir", | ||
|  |                              "sdk_type_name", | ||
|  |                            ]) | ||
|  |     script = "//build/scripts/compile_app.py" | ||
|  |     outputs = [ unsigned_hap_path_list ] | ||
|  | 
 | ||
|  |     args = [ | ||
|  |       "--nodejs", | ||
|  |       rebase_path(_nodejs, root_build_dir), | ||
|  |       "--cwd", | ||
|  |       rebase_path(cwd, root_build_dir), | ||
|  |       "--build-profile", | ||
|  |       rebase_path(build_profile, root_build_dir), | ||
|  |       "--sdk-home", | ||
|  |       rebase_path(sdk_home), | ||
|  |       "--output-file", | ||
|  |       rebase_path(unsigned_hap_path_list, root_build_dir), | ||
|  |       "--ohpm-registry", | ||
|  |       ohpm_registry, | ||
|  |     ] | ||
|  | 
 | ||
|  |     if (defined(build_mode) && build_mode == "debug") { | ||
|  |       args += [ "--enable-debug" ] | ||
|  |     } | ||
|  | 
 | ||
|  |     if (defined(test_hap) && test_hap) { | ||
|  |       args += [ "--test-hap" ] | ||
|  |     } | ||
|  | 
 | ||
|  |     if (defined(test_module) && test_module != "") { | ||
|  |       args += [ | ||
|  |         "--test-module", | ||
|  |         test_module, | ||
|  |       ] | ||
|  |     } | ||
|  |     if (defined(module_libs_dir) && module_libs_dir != "") { | ||
|  |       args += [ | ||
|  |         "--module-libs-dir", | ||
|  |         module_libs_dir, | ||
|  |       ] | ||
|  |     } | ||
|  |     if (defined(build_level) && build_level != "") { | ||
|  |       args += [ | ||
|  |         "--build-level", | ||
|  |         build_level, | ||
|  |       ] | ||
|  |     } | ||
|  |     if (defined(assemble_type) && assemble_type != "") { | ||
|  |       args += [ | ||
|  |         "--assemble-type", | ||
|  |         assemble_type, | ||
|  |       ] | ||
|  |     } | ||
|  |     if (defined(system_lib_deps)) { | ||
|  |       args += [ "--system-lib-module-info-list" ] | ||
|  |       foreach(_lib_deps, system_lib_deps) { | ||
|  |         _lib_out_name = get_label_info(_lib_deps, "name") | ||
|  |         _lib_out_dir = get_label_info(_lib_deps, "target_out_dir") | ||
|  |         args += | ||
|  |             [ rebase_path("${_lib_out_dir}/${_lib_out_name}_module_info.json", | ||
|  |                           root_build_dir) ] | ||
|  |       } | ||
|  | 
 | ||
|  |       if (is_ohos) { | ||
|  |         args += [ | ||
|  |           "--ohos-app-abi", | ||
|  |           ohos_app_abi, | ||
|  |         ] | ||
|  |       } | ||
|  |     } | ||
|  |     if (defined(sdk_type_name) && sdk_type_name != []) { | ||
|  |       args += [ "--sdk-type-name" ] | ||
|  |       args += sdk_type_name | ||
|  |     } | ||
|  |     if (defined(install_module_info)) { | ||
|  |       metadata = { | ||
|  |         install_modules = [ install_module_info ] | ||
|  |       } | ||
|  |     } | ||
|  |   } | ||
|  | } |