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/graphic/graphic_2d/graphic_config.gni") 16import( 17 "//foundation/graphic/graphic_2d/rosen/modules/render_service_base/config.gni") 18 19config("export_config") { 20 cflags_cc = [ "-std=c++17" ] 21 include_dirs = [ "include" ] 22 23 defines = rs_common_define 24} 25 26if (!is_mingw && !is_mac && !is_cross_platform) { 27 defines = [ "ENABLE_RUST" ] 28 rust_cxx("particle_cxx_gen") { 29 sources = [ "rust/src/lib.rs" ] 30 } 31 32 ohos_rust_static_ffi("particle_cxx_rust") { 33 sources = [ "rust/src/lib.rs" ] 34 deps = [ "//third_party/rust/crates/cxx:lib" ] 35 part_name = "graphic_2d" 36 subsystem_name = "graphic" 37 } 38 39 ohos_static_library("particle_cxx_cppdeps") { 40 branch_protector_ret = "pac_ret" 41 sanitize = { 42 cfi = false 43 cfi_cross_dso = false 44 debug = false 45 blocklist = "./rs_base_blocklist.txt" 46 } 47 part_name = "graphic_2d" 48 subsystem_name = "graphic" 49 defines += [ "RUST_CXX_NO_EXCEPTIONS" ] 50 sources = [ 51 "//third_party/rust/crates/cxx/include/cxx.h", 52 "//third_party/rust/crates/cxx/src/cxx.cc", 53 ] 54 deps = [ "//third_party/rust/crates/cxx:lib" ] 55 } 56} 57 58ohos_source_set("render_service_base_src") { 59 branch_protector_ret = "pac_ret" 60 sanitize = { 61 cfi = false 62 cfi_cross_dso = false 63 debug = false 64 blocklist = "./rs_base_blocklist.txt" 65 } 66 defines = [] 67 defines += gpu_defines 68 defines += [ "MODULE_RSB" ] 69 70 sources = [ 71 #animation 72 "src/animation/rs_animation_fraction.cpp", 73 "src/animation/rs_animation_manager.cpp", 74 "src/animation/rs_animation_rate_decider.cpp", 75 "src/animation/rs_animation_timing_protocol.cpp", 76 "src/animation/rs_cubic_bezier_interpolator.cpp", 77 "src/animation/rs_interpolator.cpp", 78 "src/animation/rs_render_animation.cpp", 79 "src/animation/rs_render_curve_animation.cpp", 80 "src/animation/rs_render_interpolating_spring_animation.cpp", 81 "src/animation/rs_render_keyframe_animation.cpp", 82 "src/animation/rs_render_particle.cpp", 83 "src/animation/rs_render_particle_animation.cpp", 84 "src/animation/rs_render_particle_effector.cpp", 85 "src/animation/rs_render_particle_emitter.cpp", 86 "src/animation/rs_render_particle_system.cpp", 87 "src/animation/rs_render_path_animation.cpp", 88 "src/animation/rs_render_property_animation.cpp", 89 "src/animation/rs_render_spring_animation.cpp", 90 "src/animation/rs_render_transition.cpp", 91 "src/animation/rs_render_transition_effect.cpp", 92 "src/animation/rs_spring_interpolator.cpp", 93 "src/animation/rs_spring_model.cpp", 94 "src/animation/rs_steps_interpolator.cpp", 95 "src/animation/rs_value_estimator.cpp", 96 97 # message(depracated) 98 "src/command/rs_message_processor.cpp", 99 100 # modifier 101 "src/modifier/rs_render_modifier.cpp", 102 "src/modifier/rs_render_property.cpp", 103 104 #command 105 "src/command/rs_animation_command.cpp", 106 "src/command/rs_base_node_command.cpp", 107 "src/command/rs_canvas_drawing_node_command.cpp", 108 "src/command/rs_canvas_node_command.cpp", 109 "src/command/rs_command_factory.cpp", 110 "src/command/rs_display_node_command.cpp", 111 "src/command/rs_effect_node_command.cpp", 112 "src/command/rs_frame_rate_linker_command.cpp", 113 "src/command/rs_node_command.cpp", 114 "src/command/rs_node_showing_command.cpp", 115 "src/command/rs_proxy_node_command.cpp", 116 "src/command/rs_root_node_command.cpp", 117 "src/command/rs_surface_node_command.cpp", 118 119 #offscreen_render 120 "src/offscreen_render/rs_offscreen_render_thread.cpp", 121 122 #common 123 "src/common/rs_background_thread.cpp", 124 "src/common/rs_color.cpp", 125 "src/common/rs_common_def.cpp", 126 "src/common/rs_common_tools.cpp", 127 "src/common/rs_obj_abs_geometry.cpp", 128 "src/common/rs_occlusion_region.cpp", 129 "src/common/rs_occlusion_region_helper.cpp", 130 "src/common/rs_thread_handler_generic.cpp", 131 "src/common/rs_thread_looper_generic.cpp", 132 "src/common/rs_thread_looper_impl.cpp", 133 134 #delegate 135 "src/delegate/rs_functional_delegate.cpp", 136 137 #ipc_callbacks 138 "src/ipc_callbacks/buffer_available_callback_ipc_interface_code_access_verifier.cpp", 139 "src/ipc_callbacks/buffer_available_callback_proxy.cpp", 140 "src/ipc_callbacks/buffer_available_callback_stub.cpp", 141 "src/ipc_callbacks/buffer_clear_callback_ipc_interface_code_access_verifier.cpp", 142 "src/ipc_callbacks/buffer_clear_callback_proxy.cpp", 143 "src/ipc_callbacks/buffer_clear_callback_stub.cpp", 144 "src/ipc_callbacks/hgm_config_change_callback_proxy.cpp", 145 "src/ipc_callbacks/hgm_config_change_callback_stub.cpp", 146 "src/ipc_callbacks/iapplication_agent_ipc_interface_code_access_verifier.cpp", 147 "src/ipc_callbacks/rs_application_agent_proxy.cpp", 148 "src/ipc_callbacks/rs_application_agent_stub.cpp", 149 "src/ipc_callbacks/rs_ihgm_config_change_callback_ipc_interface_code_access_verifier.cpp", 150 "src/ipc_callbacks/rs_iocclusion_change_callback_ipc_interface_code_access_verifier.cpp", 151 "src/ipc_callbacks/rs_isurface_occlusion_change_callback_ipc_interface_code_access_verifier.cpp", 152 "src/ipc_callbacks/rs_occlusion_change_callback_proxy.cpp", 153 "src/ipc_callbacks/rs_occlusion_change_callback_stub.cpp", 154 "src/ipc_callbacks/rs_rt_refresh_callback.cpp", 155 "src/ipc_callbacks/rs_surface_occlusion_change_callback_proxy.cpp", 156 "src/ipc_callbacks/rs_surface_occlusion_change_callback_stub.cpp", 157 "src/ipc_callbacks/screen_change_callback_ipc_interface_code_access_verifier.cpp", 158 "src/ipc_callbacks/screen_change_callback_proxy.cpp", 159 "src/ipc_callbacks/screen_change_callback_stub.cpp", 160 "src/ipc_callbacks/surface_capture_callback_ipc_interface_code_access_verifier.cpp", 161 "src/ipc_callbacks/surface_capture_callback_proxy.cpp", 162 "src/ipc_callbacks/surface_capture_callback_stub.cpp", 163 164 #ipc_security 165 "src/ipc_security/rs_ipc_interface_code_access_verifier_base.cpp", 166 167 #memory 168 "src/memory/rs_memory_graphic.cpp", 169 "src/memory/rs_memory_track.cpp", 170 "src/memory/rs_tag_tracker.cpp", 171 172 #pipeline 173 "src/pipeline/rs_canvas_drawing_render_node.cpp", 174 "src/pipeline/rs_canvas_render_node.cpp", 175 "src/pipeline/rs_context.cpp", 176 "src/pipeline/rs_dirty_region_manager.cpp", 177 "src/pipeline/rs_display_render_node.cpp", 178 "src/pipeline/rs_draw_cmd.cpp", 179 "src/pipeline/rs_draw_cmd_list.cpp", 180 "src/pipeline/rs_effect_render_node.cpp", 181 "src/pipeline/rs_occlusion_config.cpp", 182 "src/pipeline/rs_paint_filter_canvas.cpp", 183 "src/pipeline/rs_proxy_render_node.cpp", 184 "src/pipeline/rs_recording_canvas.cpp", 185 "src/pipeline/rs_render_content.cpp", 186 "src/pipeline/rs_render_display_sync.cpp", 187 "src/pipeline/rs_render_frame_rate_linker.cpp", 188 "src/pipeline/rs_render_frame_rate_linker_map.cpp", 189 "src/pipeline/rs_render_node.cpp", 190 "src/pipeline/rs_render_node_map.cpp", 191 "src/pipeline/rs_root_render_node.cpp", 192 "src/pipeline/rs_single_frame_composer.cpp", 193 "src/pipeline/rs_surface_handler.cpp", 194 "src/pipeline/rs_surface_render_node.cpp", 195 "src/pipeline/rs_task_dispatcher.cpp", 196 "src/pipeline/rs_uni_render_judgement.cpp", 197 "src/pipeline/sk_resource_manager.cpp", 198 199 #property 200 "src/property/rs_color_picker_cache_task.cpp", 201 "src/property/rs_filter_cache_manager.cpp", 202 "src/property/rs_point_light_manager.cpp", 203 "src/property/rs_properties.cpp", 204 "src/property/rs_properties_painter.cpp", 205 "src/property/rs_property_drawable.cpp", 206 "src/property/rs_property_drawable_bounds_geometry.cpp", 207 "src/property/rs_property_drawable_frame_geometry.cpp", 208 "src/property/rs_property_drawable_utilities.cpp", 209 "src/property/rs_property_trace.cpp", 210 211 #render 212 "src/render/rs_aibar_filter.cpp", 213 "src/render/rs_blur_filter.cpp", 214 "src/render/rs_border.cpp", 215 "src/render/rs_color_extract.cpp", 216 "src/render/rs_color_picker.cpp", 217 "src/render/rs_filter.cpp", 218 "src/render/rs_image.cpp", 219 "src/render/rs_image_base.cpp", 220 "src/render/rs_image_cache.cpp", 221 "src/render/rs_kawase_blur.cpp", 222 "src/render/rs_light_up_effect_filter.cpp", 223 "src/render/rs_linear_gradient_blur_filter.cpp", 224 "src/render/rs_mask.cpp", 225 "src/render/rs_material_filter.cpp", 226 "src/render/rs_path.cpp", 227 "src/render/rs_pixel_map_util.cpp", 228 "src/render/rs_resource_manager.cpp", 229 "src/render/rs_shader.cpp", 230 "src/render/rs_shadow.cpp", 231 "src/render/rs_skia_filter.cpp", 232 233 #transaction 234 "src/transaction/rs_hgm_config_data.cpp", 235 "src/transaction/rs_occlusion_data.cpp", 236 "src/transaction/rs_transaction_data.cpp", 237 "src/transaction/rs_transaction_proxy.cpp", 238 239 #screen_manager 240 "src/screen_manager/rs_screen_capability.cpp", 241 "src/screen_manager/rs_screen_data.cpp", 242 "src/screen_manager/rs_screen_hdr_capability.cpp", 243 "src/screen_manager/rs_screen_mode_info.cpp", 244 "src/screen_manager/rs_screen_props.cpp", 245 "src/screen_manager/rs_virtual_screen_resolution.cpp", 246 ] 247 248 if (is_cross_platform) { 249 sources -= [ 250 #command 251 "src/command/rs_display_node_command.cpp", 252 253 #common 254 "src/common/rs_occlusion_region.cpp", 255 "src/common/rs_occlusion_region_helper.cpp", 256 "src/common/rs_thread_handler_generic.cpp", 257 "src/common/rs_thread_looper_generic.cpp", 258 "src/common/rs_thread_looper_impl.cpp", 259 260 #ipc_callbacks 261 "src/ipc_callbacks/buffer_available_callback_ipc_interface_code_access_verifier.cpp", 262 "src/ipc_callbacks/buffer_available_callback_proxy.cpp", 263 "src/ipc_callbacks/buffer_available_callback_stub.cpp", 264 "src/ipc_callbacks/buffer_clear_callback_ipc_interface_code_access_verifier.cpp", 265 "src/ipc_callbacks/buffer_clear_callback_proxy.cpp", 266 "src/ipc_callbacks/buffer_clear_callback_stub.cpp", 267 "src/ipc_callbacks/hgm_config_change_callback_proxy.cpp", 268 "src/ipc_callbacks/hgm_config_change_callback_stub.cpp", 269 "src/ipc_callbacks/rs_ihgm_config_change_callback_ipc_interface_code_access_verifier.cpp", 270 "src/ipc_callbacks/rs_iocclusion_change_callback_ipc_interface_code_access_verifier.cpp", 271 "src/ipc_callbacks/rs_isurface_occlusion_change_callback_ipc_interface_code_access_verifier.cpp", 272 "src/ipc_callbacks/rs_occlusion_change_callback_proxy.cpp", 273 "src/ipc_callbacks/rs_occlusion_change_callback_stub.cpp", 274 "src/ipc_callbacks/rs_surface_occlusion_change_callback_proxy.cpp", 275 "src/ipc_callbacks/rs_surface_occlusion_change_callback_stub.cpp", 276 "src/ipc_callbacks/screen_change_callback_ipc_interface_code_access_verifier.cpp", 277 "src/ipc_callbacks/screen_change_callback_proxy.cpp", 278 "src/ipc_callbacks/screen_change_callback_stub.cpp", 279 "src/ipc_callbacks/surface_capture_callback_ipc_interface_code_access_verifier.cpp", 280 "src/ipc_callbacks/surface_capture_callback_proxy.cpp", 281 "src/ipc_callbacks/surface_capture_callback_stub.cpp", 282 283 #ipc_security 284 "src/ipc_security/rs_ipc_interface_code_access_verifier_base.cpp", 285 286 #memory 287 "src/memory/rs_memory_graphic.cpp", 288 "src/memory/rs_memory_track.cpp", 289 "src/memory/rs_tag_tracker.cpp", 290 291 #pipeline 292 293 "src/pipeline/rs_display_render_node.cpp", 294 "src/pipeline/rs_occlusion_config.cpp", 295 296 #property 297 "src/property/rs_property_drawable.cpp", 298 "src/property/rs_property_drawable_bounds_geometry.cpp", 299 "src/property/rs_property_drawable_frame_geometry.cpp", 300 "src/property/rs_property_drawable_utilities.cpp", 301 302 #transaction 303 "src/transaction/rs_hgm_config_data.cpp", 304 "src/transaction/rs_occlusion_data.cpp", 305 306 #screen_manager 307 "src/screen_manager/rs_screen_capability.cpp", 308 "src/screen_manager/rs_screen_data.cpp", 309 "src/screen_manager/rs_screen_hdr_capability.cpp", 310 "src/screen_manager/rs_screen_mode_info.cpp", 311 "src/screen_manager/rs_screen_props.cpp", 312 "src/screen_manager/rs_virtual_screen_resolution.cpp", 313 ] 314 } 315 316 cflags = [ 317 "-Wall", 318 "-Wno-pointer-arith", 319 "-Wno-non-virtual-dtor", 320 "-Wno-missing-field-initializers", 321 "-Wno-c++11-narrowing", 322 "-fvisibility=hidden", 323 "-DIMAGE_COLORSPACE_FLAG", 324 ] 325 326 if (is_ohos && is_clang && (target_cpu == "arm" || target_cpu == "arm64")) { 327 cflags += [ "-flto=thin" ] 328 if (enhanced_opt) { 329 cflags += [ "-fwhole-program-vtables" ] 330 if (graphic_2d_feature_enable_pgo && 331 graphic_2d_feature_product != "default") { 332 cflags += [ 333 "-fprofile-use=" + rebase_path( 334 "${graphic_2d_feature_pgo_path}/librender_service_base.profdata", 335 root_build_dir), 336 "-Wno-error=backend-plugin", 337 "-Wno-profile-instr-out-of-date", 338 "-Wno-profile-instr-unprofiled", 339 ] 340 } 341 if (graphic_2d_feature_product == "pc" && target_cpu == "arm64") { 342 cflags += [ "-moutline-atomics" ] 343 } 344 } 345 } 346 347 cflags_cc = [ 348 "-std=c++17", 349 "-fvisibility-inlines-hidden", 350 ] 351 352 public_configs = [ ":export_config" ] 353 public_deps = [ "src/platform:platform" ] 354 355 if (defined(use_new_render_context) && use_new_render_context) { 356 public_deps += [ "src/render_backend:librender_backend" ] 357 } 358 359 if (enable_export_macro) { 360 defines += [ "ENABLE_EXPORT_MACRO" ] 361 } 362 363 if (rs_enable_gpu) { 364 defines += [ 365 "GL_GLEXT_PROTOTYPES", 366 "EGL_EGLEXT_PROTOTYPES", 367 ] 368 } 369 370 if (current_os == "ohos") { 371 defines += [ "IS_OHOS" ] 372 sources += [ 373 "src/benchmarks/file_utils.cpp", 374 "src/benchmarks/rs_recording_thread.cpp", 375 ] 376 } 377 378 include_dirs = [ 379 "$graphic_2d_root/frameworks/surface/include", 380 "$graphic_2d_root/rosen/modules/render_service_base/src", 381 "$graphic_2d_root/rosen/modules/render_service_base/include", 382 "$graphic_2d_root/utils/color_manager/export", 383 "$graphic_2d_root/utils/log", 384 "$graphic_2d_root/interfaces/inner_api/surface", 385 ] 386 include_dirs += [ "//third_party/skia/src" ] 387 deps = [ 388 "$graphic_2d_root/utils/sandbox:sandbox_utils", 389 "$rosen_root/modules/platform:hilog", 390 "$rosen_root/modules/platform:ipc_core", 391 ] 392 external_deps = [ "hilog:libhilog" ] 393 394 if (!is_mingw && !is_mac && !is_cross_platform) { 395 defines += [ "ENABLE_RUST" ] 396 sources += get_target_outputs(":particle_cxx_gen") 397 include_dirs += [ 398 "//third_party/rust/crates/cxx/include", 399 "${target_gen_dir}/rust/src", 400 ] 401 deps += [ 402 ":particle_cxx_cppdeps", 403 ":particle_cxx_gen", 404 ":particle_cxx_rust", 405 ] 406 } 407 408 if (rosen_is_ohos && defined(enable_ipc_security) && enable_ipc_security) { 409 defines += [ "ENABLE_IPC_SECURITY" ] 410 external_deps += [ 411 "access_token:libaccesstoken_sdk", 412 "access_token:libtokenid_sdk", 413 "ipc:ipc_core", 414 ] 415 } 416 417 if (rosen_is_ohos && defined(enable_ipc_security_access_counter) && 418 enable_ipc_security_access_counter) { 419 defines += [ "ENABLE_IPC_SECURITY_ACCESS_COUNTER" ] 420 } 421 422 if (defined(use_rosen_drawing) && use_rosen_drawing) { 423 defines += [ "USE_ROSEN_DRAWING" ] 424 if (ace_enable_gpu) { 425 defines += [ "ACE_ENABLE_GPU" ] 426 } 427 428 deps += [ "$rosen_root/modules/2d_graphics:2d_graphics" ] 429 } 430 431 if (rosen_cross_platform) { 432 public_configs += [ 433 "$rosen_root/modules/platform:eventhandler_config", 434 "$rosen_root/modules/platform:image_native_config", 435 ] 436 } else { 437 external_deps += [ "hitrace:hitrace_meter" ] 438 } 439 440 if (rosen_is_win) { 441 defines += [ "_USE_MATH_DEFINES" ] 442 } 443 444 if (defined(ddgr_ext_configs)) { 445 libs = ddgr_ext_configs.ddgr_libs 446 defines += ddgr_ext_configs.ddgr_defines 447 sources += ddgr_ext_configs.libddgr_ext_adaptor_base_sources 448 include_dirs += ddgr_ext_configs.libddgr_ext_adaptor_include_dirs 449 } 450 451 if (defined(graphic_2d_ext_configs.vendor_root)) { 452 sources -= graphic_2d_ext_configs.librender_service_base_ext_sources_del 453 sources += graphic_2d_ext_configs.librender_service_base_ext_sources 454 } 455 456 part_name = "graphic_2d" 457 subsystem_name = "graphic" 458} 459 460config("render_service_base_all_deps_config") { 461 include_dirs = [ "include" ] 462} 463 464config("render_service_base_link_config") { 465 if (is_ohos && is_clang && (target_cpu == "arm" || target_cpu == "arm64")) { 466 ldflags = [ 467 "-Wl,--lto-O2", 468 "-Wl,-mllvm", 469 "-Wl,-wholeprogramdevirt-check=fallback", 470 "-Wl,-Bsymbolic", 471 ] 472 } 473} 474 475ohos_shared_library("librender_service_base") { 476 branch_protector_ret = "pac_ret" 477 if (!is_mingw && !is_win && !is_linux) { 478 sanitize = { 479 cfi = false 480 cfi_cross_dso = false 481 debug = false 482 blocklist = "./rs_base_blocklist.txt" 483 } 484 } 485 486 all_dependent_configs = [ ":render_service_base_all_deps_config" ] 487 488 if (enhanced_opt) { 489 configs = [ ":render_service_base_link_config" ] 490 } 491 492 deps = [ "$rosen_root/modules/platform:eventhandler" ] 493 public_deps = [ 494 ":render_service_base_src", 495 "src/platform:platform", 496 ] 497 external_deps = [ "hilog:libhilog" ] 498 499 if (defined(use_new_render_context) && use_new_render_context) { 500 public_deps += [ "src/render_backend:librender_backend" ] 501 } 502 503 innerapi_tags = [ "platformsdk_indirect" ] 504 part_name = "graphic_2d" 505 subsystem_name = "graphic" 506} 507 508ohos_source_set("librender_service_base_static") { 509 branch_protector_ret = "pac_ret" 510 sanitize = { 511 cfi = false 512 cfi_cross_dso = false 513 debug = false 514 blocklist = "./rs_base_blocklist.txt" 515 } 516 all_dependent_configs = [ ":render_service_base_all_deps_config" ] 517 deps = [ "$rosen_root/modules/platform:eventhandler" ] 518 public_deps = [ 519 ":render_service_base_src", 520 "src/platform:platform", 521 ] 522 523 if (defined(use_new_render_context) && use_new_render_context) { 524 public_deps += [ "src/render_backend:librender_backend" ] 525 } 526 527 part_name = "graphic_2d" 528 subsystem_name = "graphic" 529} 530