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 include_dirs = [] 57 if (defined(invoker.include_dirs)) { 58 include_dirs += invoker.include_dirs 59 } 60 deps = [] 61 deps += extra_deps 62 deps += [ 63 "$ace_root/frameworks/core/components/theme:build_theme_code", 64 "$skia_root_new:skia_$platform", 65 ] 66 67 if (defined(invoker.public_configs)) { 68 public_configs = [] 69 public_configs += invoker.public_configs 70 } 71 72 external_deps = [] 73 74 if (defined(invoker.external_deps)) { 75 external_deps += invoker.external_deps 76 } 77 78 if (defined(invoker.external_deps_info)) { 79 external_deps_info = [] 80 external_deps_info += invoker.external_deps_info 81 } 82 83 if (defined(invoker.cflags_cc)) { 84 cflags_cc = [] 85 cflags_cc += invoker.cflags_cc 86 } 87 88 if (defined(invoker.public_deps)) { 89 public_deps = [] 90 public_deps += invoker.public_deps 91 } 92 93 if (defined(invoker.component_defines)) { 94 defines += invoker.component_defines 95 } 96 97 if (defined(config.enable_standard_input) && 98 config.enable_standard_input) { 99 if (defined(invoker.standard_input_sources)) { 100 sources += invoker.standard_input_sources 101 } 102 if (defined(invoker.standard_input_deps)) { 103 if (defined(external_deps)) { 104 external_deps += invoker.standard_input_deps 105 } else { 106 external_deps = invoker.standard_input_deps 107 } 108 } 109 } 110 111 if (defined(config.web_components_support) && 112 config.web_components_support && is_ohos_standard_system) { 113 if (defined(invoker.standard_web_configs)) { 114 configs += invoker.standard_web_configs 115 } 116 if (defined(invoker.standard_web_deps)) { 117 if (defined(external_deps)) { 118 external_deps += invoker.standard_web_deps 119 } else { 120 external_deps = invoker.standard_web_deps 121 } 122 } 123 } 124 125 if (defined(config.enable_rosen_backend) && config.enable_rosen_backend && 126 defined(invoker.rosen_sources)) { 127 sources += invoker.rosen_sources 128 if (enable_graphic_text_gine) { 129 external_deps += [ "graphic_2d:rosen_text" ] 130 } 131 if (is_arkui_x) { 132 deps += [ "//foundation/graphic/graphic_2d/rosen/modules/render_service_client:librender_service_client_static" ] 133 } else { 134 external_deps += [ "graphic_2d:librender_service_client" ] 135 if (ace_use_rosen_drawing) { 136 include_dirs += [ 137 "//foundation/graphic/graphic_2d/rosen/modules/2d_engine", 138 "//foundation/graphic/graphic_2d/rosen/modules/2d_engine/rosen_text", 139 ] 140 141 external_deps += [ "graphic_2d:2d_graphics" ] 142 } 143 } 144 } 145 part_name = ace_engine_part 146 subsystem_name = ace_engine_subsystem 147 } 148 } 149 150 foreach(item, ace_platforms) { 151 build_component_impl(item.name) { 152 platform = item.name 153 defines = [] 154 155 if (defined(item.config)) { 156 config = item.config 157 } else { 158 config = { 159 } 160 } 161 162 if (defined(config.defines)) { 163 defines += config.defines 164 } 165 166 if (defined(config.cflags_cc)) { 167 cflags_cc = config.cflags_cc 168 } else { 169 cflags_cc = [] 170 } 171 } 172 } 173} 174