138 lines
4.6 KiB
Plaintext
138 lines
4.6 KiB
Plaintext
# Copyright (c) 2020 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/lite/ndk/ndk.gni")
|
|
|
|
# gn version >= 1714 required.
|
|
assert(gn_version >= 1714, "GN version 1714 required, please upgrade!")
|
|
|
|
# write version info.
|
|
version_info = [
|
|
"VERSION=\"$ohos_version\"",
|
|
"BUILD_TIME=\"$ohos_build_datetime\"",
|
|
]
|
|
write_file("$root_build_dir/etc/version-info", version_info)
|
|
|
|
group("prebuilts") {
|
|
public_deps = [ "//prebuilts/lite/sysroot" ]
|
|
}
|
|
|
|
group("ohos") {
|
|
deps = []
|
|
if (ohos_build_target == "") {
|
|
# Step 1: Read product configuration profile.
|
|
product_cfg = read_file("${product_path}/config.json", "json")
|
|
|
|
# Step 2: Loop subsystems configured by product.
|
|
foreach(product_configed_subsystem, product_cfg.subsystems) {
|
|
subsystem_name = product_configed_subsystem.subsystem
|
|
subsystem_info = {
|
|
}
|
|
|
|
# Step 3: Read OS subsystems profile.
|
|
subsystem_info =
|
|
read_file("//build/lite/components/${subsystem_name}.json", "json")
|
|
|
|
# Step 4: Loop components configured by product.
|
|
foreach(product_configed_component,
|
|
product_configed_subsystem.components) {
|
|
# Step 5: Check whether the component configured by product is exist.
|
|
component_found = false
|
|
foreach(system_component, subsystem_info.components) {
|
|
if (product_configed_component.component ==
|
|
system_component.component) {
|
|
component_found = true
|
|
}
|
|
}
|
|
assert(
|
|
component_found,
|
|
"Component \"${product_configed_component.component}\" not found" +
|
|
", please check your product configuration.")
|
|
|
|
# Step 6: Loop OS components and check validity of product configuration.
|
|
foreach(component, subsystem_info.components) {
|
|
kernel_valid = false
|
|
board_valid = false
|
|
|
|
# Step 6.1: Skip component which not configured by product.
|
|
if (component.component == product_configed_component.component) {
|
|
# Step 6.1.1: Loop OS components adapted kernel type.
|
|
foreach(component_adapted_kernel, component.adapted_kernel) {
|
|
if (component_adapted_kernel == product_cfg.kernel_type &&
|
|
kernel_valid == false) {
|
|
kernel_valid = true
|
|
}
|
|
}
|
|
|
|
assert(
|
|
kernel_valid,
|
|
"Invalid component configed, ${subsystem_name}:${product_configed_component.component} " + "not available for kernel: ${product_cfg.kernel_type}!")
|
|
|
|
# Step 6.1.2: Add valid component for compiling.
|
|
# Skip kernel target for userspace only scenario.
|
|
if (!ohos_build_userspace_only ||
|
|
(ohos_build_userspace_only && subsystem_name != "kernel" &&
|
|
subsystem_name != "vendor")) {
|
|
foreach(component_target, component.targets) {
|
|
deps += [ component_target ]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
# Skip device target for userspace only scenario.
|
|
if (!ohos_build_userspace_only) {
|
|
# Step 7: Add device and product target by default.
|
|
deps += [ "${device_path}/../" ]
|
|
}
|
|
} else {
|
|
deps += string_split(ohos_build_target, "&&")
|
|
}
|
|
}
|
|
|
|
group("product") {
|
|
deps = []
|
|
|
|
# build product, skip build single component scenario.
|
|
if (ohos_build_target == "") {
|
|
deps += [ "${product_path}" ]
|
|
}
|
|
}
|
|
|
|
group("ndk") {
|
|
# Add native API targets.
|
|
deps = []
|
|
if (ohos_build_ndk) {
|
|
deps += [ "//build/lite/ndk:ndk" ]
|
|
}
|
|
}
|
|
|
|
if (ohos_build_type == "debug" && product != "") {
|
|
action("gen_testfwk_info") {
|
|
outputs = [ "$root_out_dir/gen_testfwk_info.log" ]
|
|
script = "//build/lite/testfwk/gen_testfwk_info.py"
|
|
archive_dir_name = "test_info"
|
|
args = [
|
|
"--component-info-file",
|
|
rebase_path("${product_path}/config.json"),
|
|
"--output-json-fold",
|
|
rebase_path("${root_out_dir}/${archive_dir_name}/build_configs/"),
|
|
"--output-json-file-name",
|
|
"infos_for_testfwk.json",
|
|
"--output-module-list-files-fold",
|
|
rebase_path("${root_out_dir}/${archive_dir_name}/module_list_files/"),
|
|
]
|
|
}
|
|
}
|