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