1# Copyright (c) 2025 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/graphic_config.gni") 16import("//foundation/graphic/graphic_2d/rosen/modules/platform/config.gni") 17import( 18 "//foundation/graphic/graphic_2d/rosen/modules/render_service_base/config.gni") 19 20enable_compiler_rust = !ohos_indep_compiler_enable && 21 ((!is_mingw && !is_mac && !is_cross_platform && 22 !(host_os == "linux" && host_cpu == "arm64"))) 23 24config("export_config") { 25 include_dirs = [ 26 "include", 27 "${graphic_2d_root}/utils/log", 28 ] 29 cflags_cc = [ "-std=c++17" ] 30 31 defines = rs_common_define 32 defines += gpu_defines 33 if (rs_enable_gpu) { 34 defines += [ "RS_ENABLE_GPU" ] 35 } 36} 37 38if (enable_compiler_rust) { 39 defines = [ "ENABLE_RUST" ] 40 rust_cxx("particle_cxx_gen") { 41 sources = [ "rust/src/lib.rs" ] 42 } 43 44 ohos_rust_static_ffi("particle_cxx_rust") { 45 sources = [ "rust/src/lib.rs" ] 46 external_deps = [ "rust_cxx:lib" ] 47 part_name = "graphic_2d" 48 subsystem_name = "graphic" 49 } 50 51 ohos_static_library("particle_cxx_cppdeps") { 52 branch_protector_ret = "pac_ret" 53 sanitize = { 54 cfi = false 55 cfi_cross_dso = false 56 debug = false 57 blocklist = "./rs_base_blocklist.txt" 58 } 59 part_name = "graphic_2d" 60 subsystem_name = "graphic" 61 defines += [ "RUST_CXX_NO_EXCEPTIONS" ] 62 } 63} 64 65ohos_source_set("render_service_base_src") { 66 branch_protector_ret = "pac_ret" 67 sanitize = { 68 cfi = false 69 cfi_cross_dso = false 70 debug = false 71 blocklist = "./rs_base_blocklist.txt" 72 if (rosen_is_ohos) { 73 boundary_sanitize = true 74 integer_overflow = false 75 ubsan = true 76 } 77 } 78 defines = [] 79 defines += gpu_defines 80 defines += [ "MODULE_RSB" ] 81 82 sources = [ 83 #animation 84 "src/animation/rs_animation_fraction.cpp", 85 "src/animation/rs_animation_manager.cpp", 86 "src/animation/rs_animation_marshalling.cpp", 87 "src/animation/rs_animation_rate_decider.cpp", 88 "src/animation/rs_animation_timing_protocol.cpp", 89 "src/animation/rs_animation_trace_utils.cpp", 90 "src/animation/rs_cubic_bezier_interpolator.cpp", 91 "src/animation/rs_interpolator.cpp", 92 "src/animation/rs_particle_noise_field.cpp", 93 "src/animation/rs_render_animation.cpp", 94 "src/animation/rs_render_curve_animation.cpp", 95 "src/animation/rs_render_interactive_implict_animator.cpp", 96 "src/animation/rs_render_interactive_implict_animator_map.cpp", 97 "src/animation/rs_render_interpolating_spring_animation.cpp", 98 "src/animation/rs_render_keyframe_animation.cpp", 99 "src/animation/rs_render_particle.cpp", 100 "src/animation/rs_render_particle_animation.cpp", 101 "src/animation/rs_render_particle_effector.cpp", 102 "src/animation/rs_render_particle_emitter.cpp", 103 "src/animation/rs_render_particle_system.cpp", 104 "src/animation/rs_render_path_animation.cpp", 105 "src/animation/rs_render_property_animation.cpp", 106 "src/animation/rs_render_spring_animation.cpp", 107 "src/animation/rs_render_transition.cpp", 108 "src/animation/rs_render_transition_effect.cpp", 109 "src/animation/rs_spring_interpolator.cpp", 110 "src/animation/rs_spring_model.cpp", 111 "src/animation/rs_steps_interpolator.cpp", 112 "src/animation/rs_value_estimator.cpp", 113 114 # message(depracated) 115 "src/command/rs_message_processor.cpp", 116 117 # modifier 118 "src/modifier/rs_render_property.cpp", 119 120 # modifier_ng 121 "src/modifier_ng/appearance/rs_alpha_render_modifier.cpp", 122 "src/modifier_ng/appearance/rs_background_filter_render_modifier.cpp", 123 "src/modifier_ng/appearance/rs_behind_window_filter_render_modifier.cpp", 124 "src/modifier_ng/appearance/rs_blend_render_modifier.cpp", 125 "src/modifier_ng/appearance/rs_border_render_modifier.cpp", 126 "src/modifier_ng/appearance/rs_compositing_filter_render_modifier.cpp", 127 "src/modifier_ng/appearance/rs_dynamic_light_up_render_modifier.cpp", 128 "src/modifier_ng/appearance/rs_foreground_filter_render_modifier.cpp", 129 "src/modifier_ng/appearance/rs_hdr_brightness_render_modifier.cpp", 130 "src/modifier_ng/appearance/rs_mask_render_modifier.cpp", 131 "src/modifier_ng/appearance/rs_outline_render_modifier.cpp", 132 "src/modifier_ng/appearance/rs_particle_effect_render_modifier.cpp", 133 "src/modifier_ng/appearance/rs_pixel_stretch_render_modifier.cpp", 134 "src/modifier_ng/appearance/rs_point_light_render_modifier.cpp", 135 "src/modifier_ng/appearance/rs_shadow_render_modifier.cpp", 136 "src/modifier_ng/appearance/rs_use_effect_render_modifier.cpp", 137 "src/modifier_ng/appearance/rs_visibility_render_modifier.cpp", 138 "src/modifier_ng/background/rs_background_color_render_modifier.cpp", 139 "src/modifier_ng/background/rs_background_image_render_modifier.cpp", 140 "src/modifier_ng/background/rs_background_ng_shader_render_modifier.cpp", 141 "src/modifier_ng/background/rs_background_shader_render_modifier.cpp", 142 "src/modifier_ng/foreground/rs_env_foreground_color_render_modifier.cpp", 143 "src/modifier_ng/foreground/rs_foreground_color_render_modifier.cpp", 144 "src/modifier_ng/foreground/rs_foreground_shader_render_modifier.cpp", 145 "src/modifier_ng/geometry/rs_bounds_clip_render_modifier.cpp", 146 "src/modifier_ng/geometry/rs_bounds_render_modifier.cpp", 147 "src/modifier_ng/geometry/rs_frame_clip_render_modifier.cpp", 148 "src/modifier_ng/geometry/rs_frame_render_modifier.cpp", 149 "src/modifier_ng/geometry/rs_transform_render_modifier.cpp", 150 "src/modifier_ng/rs_render_modifier_ng.cpp", 151 152 #command 153 "src/command/rs_animation_command.cpp", 154 "src/command/rs_base_node_command.cpp", 155 "src/command/rs_canvas_drawing_node_command.cpp", 156 "src/command/rs_canvas_node_command.cpp", 157 "src/command/rs_command_factory.cpp", 158 "src/command/rs_command_verify_helper.cpp", 159 "src/command/rs_display_node_command.cpp", 160 "src/command/rs_effect_node_command.cpp", 161 "src/command/rs_frame_rate_linker_command.cpp", 162 "src/command/rs_node_command.cpp", 163 "src/command/rs_node_showing_command.cpp", 164 "src/command/rs_proxy_node_command.cpp", 165 "src/command/rs_root_node_command.cpp", 166 "src/command/rs_surface_node_command.cpp", 167 168 #offscreen_render 169 "src/offscreen_render/rs_offscreen_render_thread.cpp", 170 171 #common 172 "src/common/rs_background_thread.cpp", 173 "src/common/rs_color.cpp", 174 "src/common/rs_common_def.cpp", 175 "src/common/rs_common_tools.cpp", 176 "src/common/rs_exception_check.cpp", 177 "src/common/rs_obj_abs_geometry.cpp", 178 "src/common/rs_occlusion_region.cpp", 179 "src/common/rs_occlusion_region_helper.cpp", 180 "src/common/rs_rectangles_merger.cpp", 181 "src/common/rs_special_layer_manager.cpp", 182 "src/common/rs_switching_thread.cpp", 183 "src/common/rs_thread_handler_generic.cpp", 184 "src/common/rs_thread_looper_generic.cpp", 185 "src/common/rs_thread_looper_impl.cpp", 186 "src/common/rs_xcollie.cpp", 187 188 #delegate 189 "src/delegate/rs_functional_delegate.cpp", 190 191 #ipc_callbacks 192 "src/ipc_callbacks/buffer_available_callback_proxy.cpp", 193 "src/ipc_callbacks/buffer_available_callback_stub.cpp", 194 "src/ipc_callbacks/buffer_clear_callback_proxy.cpp", 195 "src/ipc_callbacks/buffer_clear_callback_stub.cpp", 196 "src/ipc_callbacks/hgm_config_change_callback_proxy.cpp", 197 "src/ipc_callbacks/hgm_config_change_callback_stub.cpp", 198 "src/ipc_callbacks/rs_application_agent_proxy.cpp", 199 "src/ipc_callbacks/rs_application_agent_stub.cpp", 200 "src/ipc_callbacks/rs_first_frame_commit_callback_proxy.cpp", 201 "src/ipc_callbacks/rs_first_frame_commit_callback_stub.cpp", 202 "src/ipc_callbacks/rs_frame_rate_linker_expected_fps_update_callback_proxy.cpp", 203 "src/ipc_callbacks/rs_frame_rate_linker_expected_fps_update_callback_stub.cpp", 204 "src/ipc_callbacks/rs_occlusion_change_callback_proxy.cpp", 205 "src/ipc_callbacks/rs_occlusion_change_callback_stub.cpp", 206 "src/ipc_callbacks/rs_rt_refresh_callback.cpp", 207 "src/ipc_callbacks/rs_self_drawing_node_rect_change_callback_proxy.cpp", 208 "src/ipc_callbacks/rs_self_drawing_node_rect_change_callback_stub.cpp", 209 "src/ipc_callbacks/rs_surface_buffer_callback.cpp", 210 "src/ipc_callbacks/rs_surface_buffer_callback_proxy.cpp", 211 "src/ipc_callbacks/rs_surface_buffer_callback_stub.cpp", 212 "src/ipc_callbacks/rs_surface_occlusion_change_callback_proxy.cpp", 213 "src/ipc_callbacks/rs_surface_occlusion_change_callback_stub.cpp", 214 "src/ipc_callbacks/rs_transaction_data_callback_proxy.cpp", 215 "src/ipc_callbacks/rs_transaction_data_callback_stub.cpp", 216 "src/ipc_callbacks/rs_uiextension_callback_proxy.cpp", 217 "src/ipc_callbacks/rs_uiextension_callback_stub.cpp", 218 "src/ipc_callbacks/screen_change_callback_proxy.cpp", 219 "src/ipc_callbacks/screen_change_callback_stub.cpp", 220 "src/ipc_callbacks/screen_switching_notify_callback_proxy.cpp", 221 "src/ipc_callbacks/screen_switching_notify_callback_stub.cpp", 222 "src/ipc_callbacks/surface_capture_callback_proxy.cpp", 223 "src/ipc_callbacks/surface_capture_callback_stub.cpp", 224 225 #ipc_security 226 "src/ipc_security/rs_ipc_interface_code_access_verifier_base.cpp", 227 228 #memory 229 "src/memory/rs_memory_flow_control.cpp", 230 "src/memory/rs_memory_graphic.cpp", 231 "src/memory/rs_memory_snapshot.cpp", 232 "src/memory/rs_memory_track.cpp", 233 "src/memory/rs_tag_tracker.cpp", 234 235 #pipeline 236 "src/pipeline/rs_canvas_drawing_render_node.cpp", 237 "src/pipeline/rs_canvas_render_node.cpp", 238 "src/pipeline/rs_context.cpp", 239 "src/pipeline/rs_dirty_region_manager.cpp", 240 "src/pipeline/rs_draw_cmd.cpp", 241 "src/pipeline/rs_draw_cmd_list.cpp", 242 "src/pipeline/rs_effect_render_node.cpp", 243 "src/pipeline/rs_logical_display_render_node.cpp", 244 "src/pipeline/rs_occlusion_config.cpp", 245 "src/pipeline/rs_paint_filter_canvas.cpp", 246 "src/pipeline/rs_proxy_render_node.cpp", 247 "src/pipeline/rs_record_cmd_utils.cpp", 248 "src/pipeline/rs_recording_canvas.cpp", 249 "src/pipeline/rs_render_display_sync.cpp", 250 "src/pipeline/rs_render_frame_rate_linker.cpp", 251 "src/pipeline/rs_render_frame_rate_linker_map.cpp", 252 "src/pipeline/rs_render_node.cpp", 253 "src/pipeline/rs_render_node_allocator.cpp", 254 "src/pipeline/rs_render_node_gc.cpp", 255 "src/pipeline/rs_render_node_map.cpp", 256 "src/pipeline/rs_root_render_node.cpp", 257 "src/pipeline/rs_screen_render_node.cpp", 258 "src/pipeline/rs_surface_buffer_callback_manager.cpp", 259 "src/pipeline/rs_surface_handler.cpp", 260 "src/pipeline/rs_surface_render_node.cpp", 261 "src/pipeline/rs_task_dispatcher.cpp", 262 "src/pipeline/rs_uni_render_judgement.cpp", 263 "src/pipeline/sk_resource_manager.cpp", 264 265 #property 266 "src/property/rs_point_light_manager.cpp", 267 "src/property/rs_properties.cpp", 268 "src/property/rs_properties_painter.cpp", 269 "src/property/rs_property_trace.cpp", 270 271 #effect 272 "src/effect/rs_render_effect_template.cpp", 273 "src/effect/rs_render_filter_base.cpp", 274 "src/effect/rs_render_mask_base.cpp", 275 "src/effect/rs_render_shader_base.cpp", 276 277 #hetero_hdr 278 "src/hetero_hdr/rs_hdr_pattern_manager.cpp", 279 280 #hpae 281 "src/hpae_base/rs_hpae_base_data.cpp", 282 "src/hpae_base/rs_hpae_hianimation.cpp", 283 "src/hpae_base/rs_hpae_ffrt_pattern_manager.cpp", 284 "src/hpae_base/rs_hpae_filter_cache_manager.cpp", 285 "src/hpae_base/rs_hpae_scheduler.cpp", 286 "src/hpae_base/rs_hpae_perf_thread.cpp", 287 "src/hpae_base/rs_hpae_fusion_operator.cpp", 288 289 #render 290 "src/render/rs_attraction_effect_filter.cpp", 291 "src/render/rs_blur_filter.cpp", 292 "src/render/rs_border.cpp", 293 "src/render/rs_border_light_shader.cpp", 294 "src/render/rs_color_extract.cpp", 295 "src/render/rs_color_picker.cpp", 296 "src/render/rs_colorful_shadow_filter.cpp", 297 "src/render/rs_complex_shader.cpp", 298 "src/render/rs_distortion_shader_filter.cpp", 299 "src/render/rs_dot_matrix_shader.cpp", 300 "src/render/rs_drawing_filter.cpp", 301 "src/render/rs_effect_luminance_manager.cpp", 302 "src/render/rs_filter.cpp", 303 "src/render/rs_filter_cache_manager.cpp", 304 "src/render/rs_flow_light_sweep_shader.cpp", 305 "src/render/rs_fly_out_shader_filter.cpp", 306 "src/render/rs_foreground_effect_filter.cpp", 307 "src/render/rs_hdr_ui_brightness_filter.cpp", 308 "src/render/rs_high_performance_visual_engine.cpp", 309 "src/render/rs_hps_blur.cpp", 310 "src/render/rs_image.cpp", 311 "src/render/rs_image_base.cpp", 312 "src/render/rs_image_cache.cpp", 313 "src/render/rs_kawase_blur.cpp", 314 "src/render/rs_light_up_effect_filter.cpp", 315 "src/render/rs_mask.cpp", 316 "src/render/rs_material_filter.cpp", 317 "src/render/rs_motion_blur_filter.cpp", 318 "src/render/rs_particles_drawable.cpp", 319 "src/render/rs_path.cpp", 320 "src/render/rs_pixel_map_shader.cpp", 321 "src/render/rs_pixel_map_shader_obj.cpp", 322 "src/render/rs_pixel_map_util.cpp", 323 "src/render/rs_render_aibar_filter.cpp", 324 "src/render/rs_render_always_snapshot_filter.cpp", 325 "src/render/rs_render_filter_base.cpp", 326 "src/render/rs_render_grey_filter.cpp", 327 "src/render/rs_render_kawase_blur_filter.cpp", 328 "src/render/rs_render_light_blur_filter.cpp", 329 "src/render/rs_render_linear_gradient_blur_filter.cpp", 330 "src/render/rs_render_magnifier_filter.cpp", 331 "src/render/rs_render_maskcolor_filter.cpp", 332 "src/render/rs_render_mesa_blur_filter.cpp", 333 "src/render/rs_render_water_ripple_filter.cpp", 334 "src/render/rs_shader.cpp", 335 "src/render/rs_shadow.cpp", 336 "src/render/rs_skia_filter.cpp", 337 "src/render/rs_sound_wave_filter.cpp", 338 "src/render/rs_spherize_effect_filter.cpp", 339 "src/render/rs_typeface_cache.cpp", 340 341 #transaction 342 "src/transaction/rs_hgm_config_data.cpp", 343 "src/transaction/rs_occlusion_data.cpp", 344 "src/transaction/rs_self_drawing_node_rect_data.cpp", 345 "src/transaction/rs_transaction_data.cpp", 346 "src/transaction/rs_transaction_data_callback_manager.cpp", 347 "src/transaction/rs_transaction_handler.cpp", 348 "src/transaction/rs_transaction_metric_collector.cpp", 349 "src/transaction/rs_transaction_proxy.cpp", 350 "src/transaction/rs_uiextension_data.cpp", 351 352 #gfx 353 "src/gfx/dump/rs_dump_manager.cpp", 354 "src/gfx/first_frame_notifier/rs_first_frame_notifier.cpp", 355 "src/gfx/fps_info/rs_surface_fps.cpp", 356 "src/gfx/fps_info/rs_surface_fps_manager.cpp", 357 "src/gfx/performance/rs_perfmonitor_reporter.cpp", 358 359 #screen_manager 360 "src/screen_manager/rs_screen_capability.cpp", 361 "src/screen_manager/rs_screen_data.cpp", 362 "src/screen_manager/rs_screen_hdr_capability.cpp", 363 "src/screen_manager/rs_screen_mode_info.cpp", 364 "src/screen_manager/rs_screen_props.cpp", 365 "src/screen_manager/rs_virtual_screen_resolution.cpp", 366 367 #info_collection 368 "src/info_collection/rs_gpu_dirty_region_collection.cpp", 369 "src/info_collection/rs_hardware_compose_disabled_reason_collection.cpp", 370 "src/info_collection/rs_hdr_collection.cpp", 371 "src/info_collection/rs_layer_compose_collection.cpp", 372 373 #monitor 374 "src/monitor/aps_monitor_impl.cpp", 375 "src/monitor/self_drawing_node_monitor.cpp", 376 377 #feature 378 "src/feature/capture/rs_ui_capture_helper.cpp", 379 "src/feature/opinc/rs_opinc_cache.cpp", 380 "src/feature/opinc/rs_opinc_manager.cpp", 381 "src/feature/single_frame_composer/rs_single_frame_composer.cpp", 382 "src/feature/capture/rs_capture_pixelmap_manager.cpp", 383 384 #dirty_region 385 "src/dirty_region/rs_filter_dirty_collector.cpp", 386 "src/dirty_region/rs_gpu_dirty_collector.cpp", 387 "src/dirty_region/rs_optimize_canvas_dirty_collector.cpp", 388 ] 389 390 if (rs_enable_gpu) { 391 sources += [ 392 #drawable 393 "src/drawable/rs_drawable.cpp", 394 "src/drawable/rs_misc_drawable.cpp", 395 "src/drawable/rs_property_drawable.cpp", 396 "src/drawable/rs_property_drawable_background.cpp", 397 "src/drawable/rs_property_drawable_foreground.cpp", 398 "src/drawable/rs_property_drawable_utils.cpp", 399 "src/drawable/rs_render_node_drawable_adapter.cpp", 400 "src/drawable/rs_render_node_shadow_drawable.cpp", 401 402 #params 403 "src/params/rs_canvas_drawing_render_params.cpp", 404 "src/params/rs_effect_render_params.cpp", 405 "src/params/rs_logical_display_render_params.cpp", 406 "src/params/rs_rcd_render_params.cpp", 407 "src/params/rs_render_params.cpp", 408 "src/params/rs_render_thread_params.cpp", 409 "src/params/rs_screen_render_params.cpp", 410 "src/params/rs_surface_render_params.cpp", 411 ] 412 } 413 414 if (defined(input_ext_feature_magiccursor) && input_ext_feature_magiccursor) { 415 sources += [ 416 #ipc_callbacks 417 "src/ipc_callbacks/pointer_render/pointer_luminance_callback_ipc_interface_code_access_verifier.cpp", 418 "src/ipc_callbacks/pointer_render/pointer_luminance_callback_proxy.cpp", 419 "src/ipc_callbacks/pointer_render/pointer_luminance_callback_stub.cpp", 420 ] 421 } 422 423 if (rosen_is_ohos) { 424 sources += [ 425 #color_temperature 426 "src/display_engine/rs_color_temperature.cpp", 427 428 #luminance 429 "src/display_engine/rs_luminance_control.cpp", 430 ] 431 } else { 432 sources += [ 433 #color_temperature 434 "src/display_engine/mingw/rs_color_temperature.cpp", 435 436 #luminance 437 "src/display_engine/mingw/rs_luminance_control.cpp", 438 ] 439 } 440 441 if (is_cross_platform) { 442 sources -= [ 443 #command 444 "src/command/rs_display_node_command.cpp", 445 446 #common 447 "src/common/rs_thread_handler_generic.cpp", 448 "src/common/rs_thread_looper_generic.cpp", 449 "src/common/rs_thread_looper_impl.cpp", 450 451 #ipc_callbacks 452 "src/ipc_callbacks/buffer_available_callback_proxy.cpp", 453 "src/ipc_callbacks/buffer_available_callback_stub.cpp", 454 "src/ipc_callbacks/buffer_clear_callback_proxy.cpp", 455 "src/ipc_callbacks/buffer_clear_callback_stub.cpp", 456 "src/ipc_callbacks/hgm_config_change_callback_proxy.cpp", 457 "src/ipc_callbacks/hgm_config_change_callback_stub.cpp", 458 "src/ipc_callbacks/rs_occlusion_change_callback_proxy.cpp", 459 "src/ipc_callbacks/rs_occlusion_change_callback_stub.cpp", 460 "src/ipc_callbacks/rs_surface_occlusion_change_callback_proxy.cpp", 461 "src/ipc_callbacks/rs_surface_occlusion_change_callback_stub.cpp", 462 "src/ipc_callbacks/screen_change_callback_proxy.cpp", 463 "src/ipc_callbacks/screen_change_callback_stub.cpp", 464 "src/ipc_callbacks/surface_capture_callback_proxy.cpp", 465 "src/ipc_callbacks/surface_capture_callback_stub.cpp", 466 467 #ipc_security 468 "src/ipc_security/rs_ipc_interface_code_access_verifier_base.cpp", 469 470 #memory 471 "src/memory/rs_memory_graphic.cpp", 472 "src/memory/rs_memory_track.cpp", 473 474 #pipeline 475 "src/pipeline/rs_occlusion_config.cpp", 476 "src/pipeline/rs_screen_render_node.cpp", 477 478 #transaction 479 "src/transaction/rs_hgm_config_data.cpp", 480 "src/transaction/rs_occlusion_data.cpp", 481 482 #screen_manager 483 "src/screen_manager/rs_screen_capability.cpp", 484 "src/screen_manager/rs_screen_data.cpp", 485 "src/screen_manager/rs_screen_hdr_capability.cpp", 486 "src/screen_manager/rs_screen_mode_info.cpp", 487 "src/screen_manager/rs_screen_props.cpp", 488 "src/screen_manager/rs_virtual_screen_resolution.cpp", 489 ] 490 } 491 492 cflags = [ 493 "-Wall", 494 "-Wno-pointer-arith", 495 "-Wno-non-virtual-dtor", 496 "-Wno-missing-field-initializers", 497 "-Wno-c++11-narrowing", 498 "-fvisibility=hidden", 499 "-DIMAGE_COLORSPACE_FLAG", 500 ] 501 502 if (is_ohos && is_clang && (target_cpu == "arm" || target_cpu == "arm64")) { 503 if (!use_libfuzzer) { 504 cflags += [ "-flto=thin" ] 505 } 506 if (enhanced_opt) { 507 if (!use_libfuzzer) { 508 cflags += [ "-fwhole-program-vtables" ] 509 } 510 if (graphic_2d_feature_enable_pgo && 511 graphic_2d_feature_product != "default") { 512 if (graphic_2d_feature_enable_codemerge) { 513 defines += [ "CM_FEATURE_ENABLE" ] 514 } 515 cflags += [ 516 "-fprofile-use=" + rebase_path( 517 "${graphic_2d_feature_pgo_path}/librender_service_base.profdata", 518 root_build_dir), 519 "-Wno-error=backend-plugin", 520 "-Wno-profile-instr-out-of-date", 521 "-Wno-profile-instr-unprofiled", 522 "-mllvm", 523 "-enable-partial-inlining", 524 ] 525 } 526 if (graphic_2d_feature_product == "pc" && target_cpu == "arm64") { 527 cflags += [ "-moutline-atomics" ] 528 } 529 } 530 } 531 532 if (graphic_2d_feature_product != "wearable") { 533 defines += [ "IS_ENABLE_DRM" ] 534 } 535 536 cflags_cc = [ 537 "-std=c++17", 538 "-fvisibility-inlines-hidden", 539 ] 540 541 public_configs = [ ":export_config" ] 542 543 if (enable_export_macro) { 544 defines += [ "ENABLE_EXPORT_MACRO" ] 545 } 546 547 if (rs_enable_gpu) { 548 defines += [ 549 "GL_GLEXT_PROTOTYPES", 550 "EGL_EGLEXT_PROTOTYPES", 551 ] 552 } 553 554 if (current_os == "ohos") { 555 defines += [ "IS_OHOS" ] 556 } 557 558 include_dirs = [ 559 "$graphic_2d_root/rosen/modules/utils", 560 "$graphic_2d_root/interfaces/inner_api/common", 561 "$graphic_2d_root/rosen/modules/render_service_base/src", 562 "$graphic_2d_root/rosen/modules/render_service_base/include", 563 "$graphic_2d_root/utils/color_manager/export", 564 "$graphic_2d_root/utils/log", 565 "$graphic_2d_root/rosen/modules/render_service", 566 ] 567 568 if (is_arkui_x) { 569 include_dirs += [ 570 "$graphic_2d_root/utils/color_manager/export", 571 "//foundation/multimedia/image_framework/interfaces/innerkits/include", 572 "//foundation/graphic/graphics_effect/include", 573 "//foundation/graphic/graphic_surface/interfaces/inner_api/surface", 574 ] 575 } 576 577 deps = [ 578 "$graphic_2d_root/utils/sandbox:sandbox_utils", 579 "$rosen_root/modules/platform:hilog", 580 "$rosen_root/modules/platform:ipc_core", 581 ] 582 583 if (is_arkui_x) { 584 deps += [ "//foundation/graphic/graphics_effect:libgraphics_effect" ] 585 } 586 587 external_deps = [ 588 "graphic_surface:surface_headers", 589 "graphics_effect:graphics_effect_core", 590 "hilog:libhilog", 591 ] 592 593 if (use_memmgr_plugin || use_memmgr) { 594 external_deps += [ "memmgr:memmgrclient" ] 595 } 596 597 if (rosen_is_ohos) { 598 external_deps += [ 599 "hicollie:libhicollie", 600 "hisysevent:libhisysevent", 601 "image_framework:image_native", 602 "lz4:liblz4_shared", 603 "init:libbegetutil", 604 "ffrt:libffrt", 605 ] 606 } 607 608 if (enable_compiler_rust) { 609 defines += [ "ENABLE_RUST" ] 610 sources += get_target_outputs(":particle_cxx_gen") 611 include_dirs += [ "${target_gen_dir}/rust/src" ] 612 deps += [ 613 ":particle_cxx_cppdeps", 614 ":particle_cxx_gen", 615 ":particle_cxx_rust", 616 ] 617 external_deps += [ 618 "rust_cxx:cxx_cppdeps", 619 "rust_cxx:lib", 620 ] 621 } 622 623 if (graphic_2d_feature_subtree_parallel_enable) { 624 include_dirs += [ "$graphic_2d_ext_root/subtree" ] 625 } 626 627 if (use_video_processing_engine) { 628 defines += [ "USE_VIDEO_PROCESSING_ENGINE" ] 629 external_deps += [ 630 "media_foundation:media_foundation", 631 "video_processing_engine:videoprocessingengine", 632 ] 633 sources += [ 634 "src/display_engine/rs_vpe_manager.cpp", 635 "src/render/rs_colorspace_convert.cpp", 636 ] 637 } 638 639 if (rosen_is_ohos && defined(enable_ipc_security) && enable_ipc_security) { 640 defines += [ "ENABLE_IPC_SECURITY" ] 641 external_deps += [ 642 "access_token:libaccesstoken_sdk", 643 "ipc:ipc_core", 644 ] 645 } 646 647 if (rosen_is_ohos && defined(enable_ipc_security_access_counter) && 648 enable_ipc_security_access_counter) { 649 defines += [ "ENABLE_IPC_SECURITY_ACCESS_COUNTER" ] 650 } 651 652 if (defined(graphic_2d_math_tools_configs.vendor_root)) { 653 sources += 654 graphic_2d_math_tools_configs.librender_service_ext_math_tools_sources 655 sources -= graphic_2d_math_tools_configs.librender_service_ext_math_tools_sources_del 656 } 657 658 if (defined(use_rosen_drawing) && use_rosen_drawing) { 659 defines += [ "USE_ROSEN_DRAWING" ] 660 if (rs_enable_gpu) { 661 defines += [ "RS_ENABLE_GPU" ] 662 } 663 664 deps += [ "$rosen_root/modules/2d_graphics:2d_graphics" ] 665 } 666 667 if (defined(enable_full_screen_recongnize) && enable_full_screen_recongnize) { 668 defines += [ "ENABLE_FULL_SCREEN_RECONGNIZE" ] 669 } 670 671 # for modules/platform 672 public_configs += [ 673 "$rosen_root/modules/platform:eventhandler_config", 674 "$rosen_root/modules/platform:image_native_config", 675 ] 676 public_deps = [ 677 "$rosen_root/modules/platform:eventhandler", 678 "$rosen_root/modules/platform:hilog", 679 "$rosen_root/modules/platform:image_native", 680 "$rosen_root/modules/platform:ipc_core", 681 "src/platform:platform", 682 ] 683 684 if (rosen_cross_platform) { 685 } else { 686 external_deps += [ 687 "drivers_interface_display:display_commontype_idl_headers", 688 "hitrace:hitrace_meter", 689 ] 690 } 691 692 if (rosen_is_win) { 693 defines += [ "_USE_MATH_DEFINES" ] 694 } 695 696 if (rosen_is_ohos && graphic_2d_feature_enable_memory_info_manager) { 697 defines += [ "RS_MEMORY_INFO_MANAGER" ] 698 sources += [ "src/feature/memory_info_manager/rs_memory_info_manager.cpp" ] 699 } 700 701 if (defined(ddgr_ext_configs)) { 702 libs = ddgr_ext_configs.ddgr_libs 703 defines += ddgr_ext_configs.ddgr_defines 704 sources += ddgr_ext_configs.libddgr_ext_adaptor_base_sources 705 include_dirs += ddgr_ext_configs.libddgr_ext_adaptor_include_dirs 706 } 707 708 #profiler 709 if (rosen_is_ohos && graphic_2d_feature_rs_enable_profiler && 710 player_framework_enable) { 711 defines += [ "RS_PROFILER_ENABLED" ] 712 defines += [ "RS_PROFILER_BETA_ENABLED" ] 713 sources += [ 714 "$graphic_2d_root/rosen/modules/render_service_profiler/rs_profiler_archive.cpp", 715 "$graphic_2d_root/rosen/modules/render_service_profiler/rs_profiler_base.cpp", 716 "$graphic_2d_root/rosen/modules/render_service_profiler/rs_profiler_cache.cpp", 717 "$graphic_2d_root/rosen/modules/render_service_profiler/rs_profiler_dump.cpp", 718 "$graphic_2d_root/rosen/modules/render_service_profiler/rs_profiler_pixelmap.cpp", 719 "$graphic_2d_root/rosen/modules/render_service_profiler/rs_profiler_settings.cpp", 720 "$graphic_2d_root/rosen/modules/render_service_profiler/rs_profiler_utils.cpp", 721 ] 722 723 if (defined(global_parts_info) && 724 defined(global_parts_info.open_source_libyuv)) { 725 defines += [ "RS_PROFILER_SUPPORTS_PIXELMAP_YUV_EXT" ] 726 } 727 } 728 include_dirs += [ "$graphic_2d_root/rosen/modules/render_service_profiler" ] 729 730 if (defined(global_parts_info) && 731 defined(global_parts_info.resourceschedule_resource_schedule_service)) { 732 external_deps += [ "resource_schedule_service:ressched_client" ] 733 defines += [ "RES_BASE_SCHED_ENABLE" ] 734 external_deps += [ "qos_manager:qos" ] 735 } 736 737 part_name = "graphic_2d" 738 subsystem_name = "graphic" 739} 740 741config("render_service_base_all_deps_config") { 742 include_dirs = [ 743 "include", 744 "$rosen_root/modules/2d_graphics/include", 745 "$rosen_root/modules/2d_graphics/src", 746 "$rosen_root/modules/2d_graphics/src/drawing/engine_adapter", 747 ] 748} 749 750config("render_service_base_link_config") { 751 if (is_ohos && is_clang && (target_cpu == "arm" || target_cpu == "arm64")) { 752 ldflags = [ 753 "-Wl,--lto-O2", 754 "-Wl,-mllvm", 755 "-Wl,-wholeprogramdevirt-check=fallback", 756 "-Wl,-Bsymbolic", 757 ] 758 759 if (graphic_2d_feature_enable_pgo && enable_enhanced_opt) { 760 ldflags += [ 761 "-Wl,--aarch64-inline-plt", 762 "-Wl,-mllvm,-enable-partial-inlining", 763 ] 764 if (graphic_2d_feature_enable_codemerge) { 765 ldflags += [ 766 "-Wl,-plugin-opt=-split-machine-functions", 767 "-Wl,-mllvm", 768 "-Wl,-fixup-unconditional-branch-unsafely", 769 "-Wl,--no-create-thunks-introduced-by-mfs", 770 "-Wl,-mllvm", 771 "-Wl,-mfs-psi-cutoff=999500", 772 "-Wl,-z", 773 "-Wl,keep-text-section-prefix", 774 "-Wl,--symbol-ordering-file=" + rebase_path( 775 "${graphic_2d_feature_pgo_path}/librender_service_base.txt", 776 root_build_dir), 777 "-Wl,--no-warn-symbol-ordering", 778 ] 779 } 780 } 781 } 782} 783 784ohos_shared_library("librender_service_base") { 785 branch_protector_ret = "pac_ret" 786 if (!is_mingw && !is_win && !is_linux) { 787 sanitize = { 788 cfi = false 789 cfi_cross_dso = false 790 debug = false 791 blocklist = "./rs_base_blocklist.txt" 792 } 793 } 794 795 sources = [ "src/common/rs_common_hook.cpp" ] 796 797 public_configs = [ 798 ":render_service_base_all_deps_config", 799 ":export_config", 800 "$graphic_2d_root/utils/socketpair:socketpair_public_config", 801 "$graphic_2d_root/rosen/modules/composer/vsync:vsync_public_config", 802 ] 803 if (enhanced_opt) { 804 configs = [ ":render_service_base_link_config" ] 805 } 806 807 deps = [ ":render_service_base_src" ] 808 809 # for platform 810 public_configs += [ 811 "$rosen_root/modules/platform:eventhandler_config", 812 "$rosen_root/modules/platform:utils_config", 813 "$rosen_root/modules/platform:ipc_core_config", 814 "$rosen_root/modules/platform:image_native_config", 815 ] 816 deps += [ 817 "$rosen_root/modules/platform:platform", 818 "$rosen_root/modules/render_service_base/src/platform:platform", 819 "$graphic_2d_root/utils/color_manager:color_manager_source", 820 ] 821 822 # for header file 823 external_deps = [] 824 public_external_deps = [ 825 "egl:libEGL", 826 "opengles:libGLES", 827 ] 828 829 if (rosen_is_ohos) { 830 external_deps += [ "hisysevent:libhisysevent" ] 831 public_external_deps += [ 832 "c_utils:utils", 833 "graphic_surface:sync_fence", 834 "image_framework:image_native", 835 "skia:skia_canvaskit", 836 ] 837 } 838 839 external_deps += [ "hilog:libhilog" ] 840 841 if (rs_enable_gpu) { 842 public_external_deps += [ "openssl:libcrypto_shared" ] 843 } 844 845 part_name = "graphic_2d" 846 subsystem_name = "graphic" 847} 848 849ohos_source_set("librender_service_base_static") { 850 branch_protector_ret = "pac_ret" 851 sanitize = { 852 cfi = false 853 cfi_cross_dso = false 854 debug = false 855 blocklist = "./rs_base_blocklist.txt" 856 } 857 858 public_configs = [ ":render_service_base_all_deps_config" ] 859 860 if (is_arkui_x) { 861 sources = [ "src/common/rs_common_hook.cpp" ] 862 } 863 864 deps = [ "$rosen_root/modules/platform:eventhandler" ] 865 public_deps = [ 866 ":render_service_base_src", 867 "src/platform:platform", 868 ] 869 870 external_deps = [ "hilog:libhilog" ] 871 872 public_external_deps = [] 873 if (rosen_is_ohos) { 874 public_external_deps += [ 875 "graphic_surface:sync_fence", 876 "image_framework:image_native", 877 ] 878 } 879 880 if (rs_enable_gpu) { 881 if (is_arkui_x) { 882 public_deps += [ "//third_party/openssl:libcrypto_static" ] 883 } else { 884 public_external_deps += [ "openssl:libcrypto_shared" ] 885 } 886 } 887 888 part_name = "graphic_2d" 889 subsystem_name = "graphic" 890} 891