# Copyright (c) 2024 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.
lite_target_list = []
# Step 1: Read product configuration profile.
product_cfg = read_file("${product_config_path}/config.json", "json")
parts_targets_info =
read_file(
"${root_build_dir}/build_configs/parts_info/parts_modules_info.json",
"json")
# Step 2: Loop subsystems configured by product.
foreach(product_configed_subsystem, product_cfg.subsystems) {
subsystem_name = product_configed_subsystem.subsystem
if (build_xts || (!build_xts && subsystem_name != "xts")) {
# Step 3: Read OS subsystems profile.
subsystem_parts_info = {
}
subsystem_parts_info = read_file(
"${root_build_dir}/build_configs/mini_adapter/${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(part_name, subsystem_parts_info.parts) {
if (product_configed_component.component == part_name) {
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(part_name, subsystem_parts_info.parts) {
kernel_valid = true
# Step 6.1: Skip component which not configured by product.
if (part_name == product_configed_component.component) {
# Step 6.1.1: Loop OS components adapted kernel type.
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(_p_info, parts_targets_info.parts) {
if (_p_info.part_name == product_configed_component.component) {
lite_target_list += _p_info.module_list
}
}
}
}
}
}
}
}
# Skip device target for userspace only scenario.
if (!ohos_build_userspace_only) {
# Step 7: Add device and product target by default.
# liteos_m kernel organise device build targets, but not by default.
if (product_cfg.kernel_type != "liteos_m") {
lite_target_list += [ "${device_path}/../" ]
}
}