1# Copyright (c) 2021-2024 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/graphic/graphic_2d/frameworks/text/config.gni") 16import("//foundation/graphic/graphic_2d/graphic_config.gni") 17import("//foundation/graphic/graphic_2d/rosen/modules/platform/config.gni") 18import("render_service_client.gni") 19 20config("render_service_client_config") { 21 include_dirs = [ 22 "$graphic_2d_root/rosen/modules", 23 "$graphic_2d_root/rosen/modules/render_service_client/core", 24 "$graphic_2d_root/rosen/modules/render_service_base/include", 25 "$graphic_2d_root/interfaces/inner_api/common", 26 "$graphic_2d_root/interfaces/inner_api/composer", 27 "$graphic_2d_root/rosen/modules/2d_graphics", 28 "$graphic_2d_root/rosen/modules/composer/vsync/include", 29 ] 30 defines = rs_common_define 31 if (defined(is_arkui_x) && is_arkui_x) { 32 include_dirs += [ 33 "$graphic_2d_root/utils/color_manager/export", 34 "//foundation/multimedia/image_framework/interfaces/innerkits/include", 35 ] 36 } 37 38 defines += gpu_defines 39 40 if (rs_enable_gpu) { 41 defines += [ "RS_ENABLE_GPU" ] 42 } 43} 44 45template("render_service_client_source_set") { 46 ohos_source_set(target_name) { 47 branch_protector_ret = "pac_ret" 48 sanitize = { 49 cfi = false 50 cfi_cross_dso = false 51 debug = false 52 blocklist = "./rs_client_blocklist.txt" 53 if (rosen_is_ohos) { 54 boundary_sanitize = true 55 integer_overflow = true 56 ubsan = true 57 } 58 } 59 defines = [] 60 defines += gpu_defines 61 defines += [ "MODULE_RSC" ] 62 is_static_lib = invoker.is_static_lib 63 include_dirs = [ 64 "$graphic_2d_root/rosen/modules/2d_graphics/src", 65 "$graphic_2d_root/rosen/modules/frame_report/include", 66 "$graphic_2d_root/rosen/modules/render_frame_trace/include", 67 "$graphic_2d_root/rosen/modules/render_service_base/src", 68 "$graphic_2d_root/utils/color_manager/export", 69 "$graphic_2d_root/rosen/modules/2d_engine/rosen_text/symbol/symbol_animation", 70 "$graphic_2d_root/utils/log", 71 "$graphic_2d_root/utils/sandbox", 72 ] 73 74 if (defined(is_arkui_x) && is_arkui_x) { 75 include_dirs += [ 76 "$graphic_2d_root/utils/color_manager/export", 77 "//base/hiviewdfx/hitrace/interfaces/native/innerkits/include/hitrace_meter", 78 "//foundation/multimedia/image_framework/interfaces/innerkits/include", 79 "//foundation/graphic/graphic_surface/interfaces/inner_api/surface", 80 ] 81 } 82 83 sources = [ 84 #animation 85 "core/animation/rs_animation.cpp", 86 "core/animation/rs_animation_callback.cpp", 87 "core/animation/rs_animation_group.cpp", 88 "core/animation/rs_animation_timing_curve.cpp", 89 "core/animation/rs_curve_animation.cpp", 90 "core/animation/rs_implicit_animation_param.cpp", 91 "core/animation/rs_implicit_animator.cpp", 92 "core/animation/rs_implicit_animator_map.cpp", 93 "core/animation/rs_interactive_implict_animator.cpp", 94 "core/animation/rs_interpolating_spring_animation.cpp", 95 "core/animation/rs_keyframe_animation.cpp", 96 "core/animation/rs_path_animation.cpp", 97 "core/animation/rs_property_animation.cpp", 98 "core/animation/rs_spring_animation.cpp", 99 "core/animation/rs_symbol_animation.cpp", 100 "core/animation/rs_transition.cpp", 101 "core/animation/rs_transition_effect.cpp", 102 103 #feature 104 "core/feature/anco_manager/rs_ext_node_operation.cpp", 105 "core/feature/composite_layer/rs_composite_layer_utils.cpp", 106 "core/feature/ui_capture/rs_divided_ui_capture.cpp", 107 108 #modifier 109 "core/modifier/rs_modifier_extractor.cpp", 110 "core/modifier/rs_modifier_manager.cpp", 111 "core/modifier/rs_modifier_manager_map.cpp", 112 "core/modifier/rs_property.cpp", 113 "core/modifier/rs_showing_properties_freezer.cpp", 114 115 #modifier_ng 116 "core/modifier_ng/appearance/rs_alpha_modifier.cpp", 117 "core/modifier_ng/appearance/rs_background_filter_modifier.cpp", 118 "core/modifier_ng/appearance/rs_behind_window_filter_modifier.cpp", 119 "core/modifier_ng/appearance/rs_blend_modifier.cpp", 120 "core/modifier_ng/appearance/rs_border_modifier.cpp", 121 "core/modifier_ng/appearance/rs_compositing_filter_modifier.cpp", 122 "core/modifier_ng/appearance/rs_dynamic_light_up_modifier.cpp", 123 "core/modifier_ng/appearance/rs_foreground_filter_modifier.cpp", 124 "core/modifier_ng/appearance/rs_hdr_brightness_modifier.cpp", 125 "core/modifier_ng/appearance/rs_mask_modifier.cpp", 126 "core/modifier_ng/appearance/rs_outline_modifier.cpp", 127 "core/modifier_ng/appearance/rs_particle_effect_modifier.cpp", 128 "core/modifier_ng/appearance/rs_pixel_stretch_modifier.cpp", 129 "core/modifier_ng/appearance/rs_point_light_modifier.cpp", 130 "core/modifier_ng/appearance/rs_shadow_modifier.cpp", 131 "core/modifier_ng/appearance/rs_use_effect_modifier.cpp", 132 "core/modifier_ng/appearance/rs_visibility_modifier.cpp", 133 "core/modifier_ng/background/rs_background_color_modifier.cpp", 134 "core/modifier_ng/background/rs_background_image_modifier.cpp", 135 "core/modifier_ng/background/rs_background_ng_shader_modifier.cpp", 136 "core/modifier_ng/background/rs_background_shader_modifier.cpp", 137 "core/modifier_ng/custom/rs_background_style_modifier.cpp", 138 "core/modifier_ng/custom/rs_content_style_modifier.cpp", 139 "core/modifier_ng/custom/rs_custom_modifier.cpp", 140 "core/modifier_ng/custom/rs_foreground_style_modifier.cpp", 141 "core/modifier_ng/custom/rs_node_modifier.cpp", 142 "core/modifier_ng/custom/rs_transition_style_modifier.cpp", 143 "core/modifier_ng/foreground/rs_env_foreground_color_modifier.cpp", 144 "core/modifier_ng/foreground/rs_foreground_color_modifier.cpp", 145 "core/modifier_ng/foreground/rs_foreground_shader_modifier.cpp", 146 "core/modifier_ng/geometry/rs_bounds_clip_modifier.cpp", 147 "core/modifier_ng/geometry/rs_bounds_modifier.cpp", 148 "core/modifier_ng/geometry/rs_frame_clip_modifier.cpp", 149 "core/modifier_ng/geometry/rs_frame_modifier.cpp", 150 "core/modifier_ng/geometry/rs_transform_modifier.cpp", 151 "core/modifier_ng/overlay/rs_overlay_style_modifier.cpp", 152 "core/modifier_ng/rs_modifier_ng.cpp", 153 154 #pipeline 155 "core/pipeline/rs_node_map.cpp", 156 "core/pipeline/rs_node_map_v2.cpp", 157 "core/pipeline/rs_render_thread.cpp", 158 159 #render_thread 160 "core/render_thread/rs_render_thread_util.cpp", 161 "core/render_thread/rs_render_thread_visitor.cpp", 162 163 #jank_detector 164 "core/render_thread/jank_detector/rs_jank_detector.cpp", 165 166 #transaction 167 "core/transaction/rs_application_agent_impl.cpp", 168 "core/transaction/rs_interfaces.cpp", 169 "core/transaction/rs_render_thread_client.cpp", 170 "core/transaction/rs_sync_transaction_controller.cpp", 171 "core/transaction/rs_sync_transaction_handler.cpp", 172 "core/transaction/rs_transaction.cpp", 173 174 #ui 175 "core/feature/hyper_graphic_manager/rs_frame_rate_linker.cpp", 176 "core/feature/hyper_graphic_manager/rs_frame_rate_policy.cpp", 177 "core/feature/hyper_graphic_manager/rs_ui_display_soloist.cpp", 178 "core/ui/rs_canvas_drawing_node.cpp", 179 "core/ui/rs_canvas_node.cpp", 180 "core/ui/rs_display_node.cpp", 181 "core/ui/rs_effect_node.cpp", 182 "core/ui/rs_node.cpp", 183 "core/ui/rs_proxy_node.cpp", 184 "core/ui/rs_root_node.cpp", 185 "core/ui/rs_surface_extractor.cpp", 186 "core/ui/rs_surface_node.cpp", 187 "core/ui/rs_texture_export.cpp", 188 "core/ui/rs_ui_context.cpp", 189 "core/ui/rs_ui_context_manager.cpp", 190 "core/ui/rs_ui_director.cpp", 191 192 #ui_effect 193 "core/ui_effect/effect/src/visual_effect_para.cpp", 194 "core/ui_effect/effect/src/visual_effect_unmarshalling_singleton.cpp", 195 "core/ui_effect/effect/src/visual_effect.cpp", 196 "core/ui_effect/filter/src/filter_content_light_para.cpp", 197 "core/ui_effect/filter/src/filter_direction_light_para.cpp", 198 "core/ui_effect/filter/src/filter_dispersion_para.cpp", 199 "core/ui_effect/filter/src/filter_displacement_distort_para.cpp", 200 "core/ui_effect/filter/src/filter_mask_transition_para.cpp", 201 "core/ui_effect/filter/src/filter_para.cpp", 202 "core/ui_effect/filter/src/filter_unmarshalling_singleton.cpp", 203 "core/ui_effect/filter/src/filter_water_ripple_para.cpp", 204 "core/ui_effect/filter/src/filter.cpp", 205 "core/ui_effect/mask/src/mask_para.cpp", 206 "core/ui_effect/mask/src/mask_unmarshalling_singleton.cpp", 207 "core/ui_effect/mask/src/pixel_map_mask_para.cpp", 208 "core/ui_effect/mask/src/radial_gradient_mask_para.cpp", 209 "core/ui_effect/property/src/rs_ui_color_gradient_filter.cpp", 210 "core/ui_effect/property/src/rs_ui_filter_base.cpp", 211 "core/ui_effect/property/src/rs_ui_mask_base.cpp", 212 "core/ui_effect/property/src/rs_ui_shader_base.cpp", 213 ] 214 215 if (is_cross_platform) { 216 #ui 217 sources -= [ "core/ui/rs_display_node.cpp" ] 218 defines += [ "CROSS_PLATFORM" ] 219 } 220 221 if (rosen_is_ohos) { 222 sources += [ "$rosen_root/modules/frame_report/src/rs_frame_report.cpp" ] 223 } else if (!is_arkui_x) { 224 sources += 225 [ "$rosen_root/modules/frame_report/src/mingw/rs_frame_report.cpp" ] 226 } 227 228 cflags = [ 229 "-Wall", 230 "-Wno-pointer-arith", 231 "-Wno-non-virtual-dtor", 232 "-Wno-missing-field-initializers", 233 "-Wno-c++11-narrowing", 234 "-fvisibility=hidden", 235 ] 236 237 if (is_ohos && is_clang && (target_cpu == "arm" || target_cpu == "arm64")) { 238 if (!use_libfuzzer) { 239 cflags += [ "-flto=thin" ] 240 } 241 if (enhanced_opt) { 242 if (!use_libfuzzer) { 243 cflags += [ "-fwhole-program-vtables" ] 244 } 245 } 246 } 247 248 cflags_cc = [ 249 "-std=c++17", 250 "-fvisibility-inlines-hidden", 251 ] 252 253 deps = [ 254 "$graphic_2d_root/rosen/modules/platform:ipc_core", 255 "$graphic_2d_root/rosen/modules/render_frame_trace:render_frame_trace", 256 ] 257 public_deps = [] 258 if (enable_export_macro) { 259 defines += [ "ENABLE_EXPORT_MACRO" ] 260 } 261 262 if (defined(use_rosen_drawing) && use_rosen_drawing) { 263 defines += [ "USE_ROSEN_DRAWING" ] 264 deps += [ 265 "$graphic_2d_root/rosen/modules/2d_graphics:2d_graphics", 266 "$rosen_text_root:rosen_text", 267 ] 268 if (rs_enable_gpu) { 269 defines += [ "RS_ENABLE_GPU" ] 270 } 271 if (current_os == "mingw") { 272 defines += [ "WINDOWS_PLATFORM" ] 273 } 274 } 275 276 if (is_arkui_x) { 277 defines += [ "ARKUI_X_ENABLE" ] 278 deps += [ "//third_party/jsoncpp:jsoncpp_static" ] 279 } 280 281 if (rosen_is_ohos) { 282 deps += [ 283 "$graphic_2d_root/frameworks/opengl_wrapper:EGL", 284 "$graphic_2d_root/rosen/modules/frame_analyzer:libframe_analyzer", 285 "$graphic_2d_root/utils/color_manager:color_manager", 286 ] 287 288 external_deps = [ 289 "bundle_framework:appexecfwk_base", 290 "bundle_framework:appexecfwk_core", 291 "c_utils:utils", 292 "hisysevent:libhisysevent", 293 "hitrace:hitrace_meter", 294 "image_framework:image_native", 295 "qos_manager:qos", 296 "qos_manager:concurrent_task_client", 297 ] 298 299 if (defined(use_video_processing_engine) && use_video_processing_engine) { 300 defines += [ "USE_VIDEO_PROCESSING_ENGINE" ] 301 external_deps += [ 302 "video_processing_engine:videoprocessingengine", 303 "media_foundation:media_foundation", 304 ] 305 } 306 defines += [ "RES_CLINET_SCHED_ENABLE" ] 307 308 if (accessibility_enable) { 309 external_deps += [ "accessibility:accessibilityconfig" ] 310 external_deps += [ "accessibility:accessibility_common" ] 311 defines += accessibility_defines 312 } 313 } else if (rosen_preview) { 314 deps += [ 315 "$graphic_2d_root/frameworks/opengl_wrapper:EGL", 316 "$graphic_2d_root/frameworks/opengl_wrapper:GLESv3", 317 "$graphic_2d_root/rosen/modules/glfw_render_context:libglfw_render_context", 318 ] 319 } 320 if (defined(external_deps)) { 321 external_deps += [ "hilog:libhilog" ] 322 } else { 323 external_deps = [ "hilog:libhilog" ] 324 } 325 326 if (defined(use_rosen_drawing) && use_rosen_drawing) { 327 external_deps += [ "jsoncpp:jsoncpp" ] 328 } 329 330 external_deps += [ "graphic_surface:surface_headers" ] 331 332 if (!build_ohos_sdk && !is_mingw) { 333 external_deps += [ "samgr:samgr_proxy" ] 334 } 335 336 if (rosen_cross_platform) { 337 deps += [ "$rosen_root/modules/platform:hilog" ] 338 } 339 340 if (rss_enabled) { 341 defines += [ "OHOS_RSS_CLIENT" ] 342 external_deps += [ "resource_schedule_service:ressched_client" ] 343 } 344 345 if (is_static_lib) { 346 public_deps += [ "$graphic_2d_root/rosen/modules/render_service_base:librender_service_base_static" ] 347 } else { 348 deps += [ "$graphic_2d_root/rosen/modules/render_service_base:librender_service_base" ] 349 deps += [ "$rosen_root/modules/platform:eventhandler" ] 350 } 351 352 if (defined(graphic_2d_broker_configs.vendor_root) && !rosen_preview) { 353 sources += 354 graphic_2d_broker_configs.librender_service_client_ext_broker_sources 355 sources -= graphic_2d_broker_configs.librender_service_client_ext_broker_sources_del 356 external_deps += [ "ipc:ipc_core" ] 357 external_deps += [ "samgr:samgr_proxy" ] 358 } 359 360 if (tp_feature_enable) { 361 defines += tp_defines 362 } 363 364 if (graphic_2d_feature_enable_vulkan) { 365 sources += [ 366 "core/modifier_render_thread/rs_modifiers_draw.cpp", 367 "core/modifier_render_thread/rs_modifiers_draw_thread.cpp", 368 ] 369 external_deps += [ 370 "ffrt:libffrt", 371 "qos_manager:qos", 372 ] 373 if (defined(graphic_2d_modifiers_draw_configs.vendor_root)) { 374 sources += graphic_2d_modifiers_draw_configs.librender_service_ext_modifiers_draw_sources 375 sources -= graphic_2d_modifiers_draw_configs.librender_service_ext_modifiers_draw_sources_del 376 } 377 } 378 379 if (rosen_is_ohos && defined(enable_ipc_security) && enable_ipc_security) { 380 defines += [ "ENABLE_IPC_SECURITY" ] 381 external_deps += [ 382 "access_token:libaccesstoken_sdk", 383 "ipc:ipc_core", 384 ] 385 } 386 387 public_configs = [ ":render_service_client_config" ] 388 389 part_name = "graphic_2d" 390 subsystem_name = "graphic" 391 } 392} 393 394render_service_client_source_set("render_service_client_src") { 395 is_static_lib = false 396} 397 398render_service_client_source_set("render_service_client_src_static") { 399 is_static_lib = true 400} 401 402config("render_service_client_link_config") { 403 if (is_ohos && is_clang && (target_cpu == "arm" || target_cpu == "arm64")) { 404 ldflags = [ 405 "-Wl,--lto-O2", 406 "-Wl,-mllvm", 407 "-Wl,-wholeprogramdevirt-check=fallback", 408 "-Wl,-Bsymbolic", 409 ] 410 } 411} 412 413ohos_shared_library("librender_service_client") { 414 branch_protector_ret = "pac_ret" 415 sanitize = { 416 cfi = false 417 cfi_cross_dso = false 418 debug = false 419 blocklist = "./rs_client_blocklist.txt" 420 } 421 422 public_configs = [ 423 ":render_service_client_config", 424 "../2d_graphics:export_config", 425 ] 426 deps = [ ":render_service_client_src" ] 427 428 if (enhanced_opt) { 429 configs = [ ":render_service_client_link_config" ] 430 } 431 432 # for platform 433 public_configs += [ 434 "$rosen_root/modules/platform:eventhandler_config", 435 "$rosen_root/modules/platform:utils_config", 436 "$rosen_root/modules/platform:ipc_core_config", 437 "$rosen_root/modules/platform:image_native_config", 438 ] 439 440 public_external_deps = [ 441 "egl:libEGL", 442 "opengles:libGLES", 443 ] 444 if (rosen_is_ohos) { 445 public_external_deps += [ 446 "c_utils:utils", 447 "eventhandler:libeventhandler", 448 "graphic_surface:surface", 449 "image_framework:image_native", 450 ] 451 } else if (rosen_preview) { 452 public_external_deps += [ "graphic_surface:surface_headers" ] 453 } 454 455 if (rosen_is_win || current_os == "linux" || rosen_is_mac) { 456 public_external_deps += [ "skia:skia_canvaskit" ] 457 } 458 part_name = "graphic_2d" 459 subsystem_name = "graphic" 460} 461 462ohos_source_set("librender_service_client_static") { 463 branch_protector_ret = "pac_ret" 464 sanitize = { 465 cfi = false 466 cfi_cross_dso = false 467 debug = false 468 blocklist = "./rs_client_blocklist.txt" 469 } 470 public_deps = [ ":render_service_client_src_static" ] 471 deps = [ "$rosen_root/modules/platform:eventhandler" ] 472 473 public_external_deps = [] 474 if (rosen_is_ohos) { 475 public_external_deps += [ "graphic_surface:surface" ] 476 } else if (rosen_preview) { 477 public_external_deps += [ "graphic_surface:surface_headers" ] 478 } else if (is_arkui_x) { 479 public_deps += 480 [ "//foundation/graphic/graphic_surface/surface:surface_headers" ] 481 } 482 483 part_name = "graphic_2d" 484 subsystem_name = "graphic" 485} 486 487group("test") { 488 if (rosen_is_ohos) { 489 testonly = true 490 491 deps = [ "test:test" ] 492 } 493} 494