1# Copyright (c) 2021-2023 Huawei Device Co., Ltd. 2# Licensed under the Apache License, Version 2.0 (the "License"); 3# you may not use this file except in compliance with the License. 4# You may obtain a copy of the License at 5# 6# http://www.apache.org/licenses/LICENSE-2.0 7# 8# Unless required by applicable law or agreed to in writing, software 9# distributed under the License is distributed on an "AS IS" BASIS, 10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11# See the License for the specific language governing permissions and 12# limitations under the License. 13 14import("//build/ohos.gni") 15import("//foundation/arkui/ace_engine/ace_config.gni") 16 17template("build_component") { 18 forward_variables_from(invoker, "*") 19 20 component_name = target_name 21 22 template("build_component_impl") { 23 forward_variables_from(invoker, "*") 24 25 platform = target_name 26 27 component_deps = [] 28 extra_deps = [] 29 foreach(item, component_deps) { 30 extra_deps += [ "$ace_root/frameworks/core/components/${item}:ace_core_components_${item}_${platform}" ] 31 } 32 33 if (defined(platform_deps)) { 34 foreach(item, platform_deps) { 35 extra_deps += [ "${item}_${platform}" ] 36 } 37 } 38 39 if (defined(deps)) { 40 extra_deps += deps 41 } 42 43 ohos_source_set("ace_core_components_${component_name}_${platform}") { 44 defines += invoker.defines 45 46 sources = [] 47 sources += invoker.sources 48 49 configs = [] 50 configs += [ "$ace_root:ace_config" ] 51 52 if (defined(invoker.configs)) { 53 configs += invoker.configs 54 } 55 56 deps = [] 57 deps += extra_deps 58 deps += [ "$ace_root/frameworks/core/components/theme:build_theme_code" ] 59 60 if (enable_ng_build) { 61 deps += [ 62 "$ace_flutter_engine_root_new:third_party_flutter_engine_dev_$platform", 63 "$ace_flutter_engine_root_new/third_party/skia:ace_skia_dev_$platform", 64 ] 65 } else { 66 deps += [ 67 "$ace_flutter_engine_root:third_party_flutter_engine_$platform", 68 "$ace_flutter_engine_root/skia:ace_skia_$platform", 69 ] 70 } 71 72 if (defined(invoker.public_configs)) { 73 public_configs = [] 74 public_configs += invoker.public_configs 75 } 76 77 if (defined(invoker.aosp_deps)) { 78 aosp_deps = [] 79 aosp_deps += invoker.aosp_deps 80 } 81 82 if (defined(invoker.external_deps)) { 83 external_deps = [] 84 external_deps += invoker.external_deps 85 } 86 87 if (defined(invoker.external_deps_info)) { 88 external_deps_info = [] 89 external_deps_info += invoker.external_deps_info 90 } 91 92 if (defined(invoker.cflags_cc)) { 93 cflags_cc = [] 94 cflags_cc += invoker.cflags_cc 95 } 96 97 if (defined(invoker.public_deps)) { 98 public_deps = [] 99 public_deps += invoker.public_deps 100 } 101 102 if (defined(invoker.component_defines)) { 103 defines += invoker.component_defines 104 } 105 106 if (defined(config.enable_standard_input) && 107 config.enable_standard_input) { 108 if (defined(invoker.standard_input_sources)) { 109 sources += invoker.standard_input_sources 110 } 111 if (defined(invoker.standard_input_deps)) { 112 if (defined(external_deps)) { 113 external_deps += invoker.standard_input_deps 114 } else { 115 external_deps = invoker.standard_input_deps 116 } 117 } 118 } 119 120 if (defined(config.web_components_support) && 121 config.web_components_support && is_standard_system) { 122 if (defined(invoker.standard_web_configs)) { 123 configs += invoker.standard_web_configs 124 } 125 if (defined(invoker.standard_web_deps)) { 126 if (defined(external_deps)) { 127 external_deps += invoker.standard_web_deps 128 } else { 129 external_deps = invoker.standard_web_deps 130 } 131 } 132 } 133 134 if (defined(config.enable_rosen_backend) && config.enable_rosen_backend && 135 defined(invoker.rosen_sources)) { 136 sources += invoker.rosen_sources 137 deps += [ "//foundation/graphic/graphic_2d/rosen/modules/render_service_client:librender_service_client" ] 138 } 139 part_name = ace_engine_part 140 subsystem_name = ace_engine_subsystem 141 } 142 } 143 144 foreach(item, ace_platforms) { 145 build_component_impl(item.name) { 146 platform = item.name 147 defines = [] 148 149 if (defined(item.config)) { 150 config = item.config 151 } else { 152 config = { 153 } 154 } 155 156 if (defined(config.defines)) { 157 defines += config.defines 158 } 159 160 if (defined(config.cflags_cc)) { 161 cflags_cc = config.cflags_cc 162 } else { 163 cflags_cc = [] 164 } 165 } 166 } 167} 168