# 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}/../" ] } }