Files
phs_v1.0.1.0/build/ohos/app/app_internal.gni
2024-09-27 19:16:49 +08:00

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 ]
}
}
}
}