• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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(
17    "//foundation/graphic/graphic_2d/rosen/modules/render_service_base/config.gni")
18
19config("export_config") {
20  include_dirs = [
21    "include",
22    "${graphic_2d_root}/utils/log",
23  ]
24  cflags_cc = [ "-std=c++17" ]
25
26  defines = rs_common_define
27  defines += gpu_defines
28}
29
30if (!is_mingw && !is_mac && !is_cross_platform &&
31    !(host_os == "linux" && host_cpu == "arm64")) {
32  defines = [ "ENABLE_RUST" ]
33  rust_cxx("particle_cxx_gen") {
34    sources = [ "rust/src/lib.rs" ]
35  }
36
37  ohos_rust_static_ffi("particle_cxx_rust") {
38    sources = [ "rust/src/lib.rs" ]
39    deps = [ "//third_party/rust/crates/cxx:lib" ]
40    part_name = "graphic_2d"
41    subsystem_name = "graphic"
42  }
43
44  ohos_static_library("particle_cxx_cppdeps") {
45    branch_protector_ret = "pac_ret"
46    sanitize = {
47      cfi = false
48      cfi_cross_dso = false
49      debug = false
50      blocklist = "./rs_base_blocklist.txt"
51    }
52    part_name = "graphic_2d"
53    subsystem_name = "graphic"
54    defines += [ "RUST_CXX_NO_EXCEPTIONS" ]
55    sources = [
56      "//third_party/rust/crates/cxx/include/cxx.h",
57      "//third_party/rust/crates/cxx/src/cxx.cc",
58    ]
59    deps = [ "//third_party/rust/crates/cxx:lib" ]
60  }
61}
62
63ohos_source_set("render_service_base_src") {
64  branch_protector_ret = "pac_ret"
65  sanitize = {
66    cfi = false
67    cfi_cross_dso = false
68    debug = false
69    blocklist = "./rs_base_blocklist.txt"
70    if (rosen_is_ohos) {
71      boundary_sanitize = true
72      integer_overflow = false
73      ubsan = true
74    }
75  }
76  defines = []
77  defines += gpu_defines
78  defines += [ "MODULE_RSB" ]
79
80  sources = [
81    #animation
82    "src/animation/rs_animation_fraction.cpp",
83    "src/animation/rs_animation_manager.cpp",
84    "src/animation/rs_animation_marshalling.cpp",
85    "src/animation/rs_animation_rate_decider.cpp",
86    "src/animation/rs_animation_timing_protocol.cpp",
87    "src/animation/rs_animation_trace_utils.cpp",
88    "src/animation/rs_cubic_bezier_interpolator.cpp",
89    "src/animation/rs_interpolator.cpp",
90    "src/animation/rs_particle_noise_field.cpp",
91    "src/animation/rs_render_animation.cpp",
92    "src/animation/rs_render_curve_animation.cpp",
93    "src/animation/rs_render_interactive_implict_animator.cpp",
94    "src/animation/rs_render_interactive_implict_animator_map.cpp",
95    "src/animation/rs_render_interpolating_spring_animation.cpp",
96    "src/animation/rs_render_keyframe_animation.cpp",
97    "src/animation/rs_render_particle.cpp",
98    "src/animation/rs_render_particle_animation.cpp",
99    "src/animation/rs_render_particle_effector.cpp",
100    "src/animation/rs_render_particle_emitter.cpp",
101    "src/animation/rs_render_particle_system.cpp",
102    "src/animation/rs_render_path_animation.cpp",
103    "src/animation/rs_render_property_animation.cpp",
104    "src/animation/rs_render_spring_animation.cpp",
105    "src/animation/rs_render_transition.cpp",
106    "src/animation/rs_render_transition_effect.cpp",
107    "src/animation/rs_spring_interpolator.cpp",
108    "src/animation/rs_spring_model.cpp",
109    "src/animation/rs_steps_interpolator.cpp",
110    "src/animation/rs_value_estimator.cpp",
111
112    # message(depracated)
113    "src/command/rs_message_processor.cpp",
114
115    # modifier
116    "src/modifier/rs_render_modifier.cpp",
117    "src/modifier/rs_render_property.cpp",
118
119    #command
120    "src/command/rs_animation_command.cpp",
121    "src/command/rs_base_node_command.cpp",
122    "src/command/rs_canvas_drawing_node_command.cpp",
123    "src/command/rs_canvas_node_command.cpp",
124    "src/command/rs_command_factory.cpp",
125    "src/command/rs_command_verify_helper.cpp",
126    "src/command/rs_display_node_command.cpp",
127    "src/command/rs_effect_node_command.cpp",
128    "src/command/rs_frame_rate_linker_command.cpp",
129    "src/command/rs_node_command.cpp",
130    "src/command/rs_node_showing_command.cpp",
131    "src/command/rs_proxy_node_command.cpp",
132    "src/command/rs_root_node_command.cpp",
133    "src/command/rs_surface_node_command.cpp",
134
135    #offscreen_render
136    "src/offscreen_render/rs_offscreen_render_thread.cpp",
137
138    #common
139    "src/common/rs_background_thread.cpp",
140    "src/common/rs_color.cpp",
141    "src/common/rs_common_def.cpp",
142    "src/common/rs_common_tools.cpp",
143    "src/common/rs_obj_abs_geometry.cpp",
144    "src/common/rs_occlusion_region.cpp",
145    "src/common/rs_occlusion_region_helper.cpp",
146    "src/common/rs_rectangles_merger.cpp",
147    "src/common/rs_special_layer_manager.cpp",
148    "src/common/rs_thread_handler_generic.cpp",
149    "src/common/rs_thread_looper_generic.cpp",
150    "src/common/rs_thread_looper_impl.cpp",
151    "src/common/rs_xcollie.cpp",
152
153    #delegate
154    "src/delegate/rs_functional_delegate.cpp",
155
156    #ipc_callbacks
157    "src/ipc_callbacks/buffer_available_callback_proxy.cpp",
158    "src/ipc_callbacks/buffer_available_callback_stub.cpp",
159    "src/ipc_callbacks/buffer_clear_callback_proxy.cpp",
160    "src/ipc_callbacks/buffer_clear_callback_stub.cpp",
161    "src/ipc_callbacks/hgm_config_change_callback_proxy.cpp",
162    "src/ipc_callbacks/hgm_config_change_callback_stub.cpp",
163    "src/ipc_callbacks/rs_application_agent_proxy.cpp",
164    "src/ipc_callbacks/rs_application_agent_stub.cpp",
165    "src/ipc_callbacks/rs_frame_rate_linker_expected_fps_update_callback_proxy.cpp",
166    "src/ipc_callbacks/rs_frame_rate_linker_expected_fps_update_callback_stub.cpp",
167    "src/ipc_callbacks/rs_occlusion_change_callback_proxy.cpp",
168    "src/ipc_callbacks/rs_occlusion_change_callback_stub.cpp",
169    "src/ipc_callbacks/rs_rt_refresh_callback.cpp",
170    "src/ipc_callbacks/rs_self_drawing_node_rect_change_callback_proxy.cpp",
171    "src/ipc_callbacks/rs_self_drawing_node_rect_change_callback_stub.cpp",
172    "src/ipc_callbacks/rs_surface_buffer_callback.cpp",
173    "src/ipc_callbacks/rs_surface_buffer_callback_proxy.cpp",
174    "src/ipc_callbacks/rs_surface_buffer_callback_stub.cpp",
175    "src/ipc_callbacks/rs_surface_occlusion_change_callback_proxy.cpp",
176    "src/ipc_callbacks/rs_surface_occlusion_change_callback_stub.cpp",
177    "src/ipc_callbacks/rs_uiextension_callback_proxy.cpp",
178    "src/ipc_callbacks/rs_uiextension_callback_stub.cpp",
179    "src/ipc_callbacks/screen_change_callback_proxy.cpp",
180    "src/ipc_callbacks/screen_change_callback_stub.cpp",
181    "src/ipc_callbacks/surface_capture_callback_proxy.cpp",
182    "src/ipc_callbacks/surface_capture_callback_stub.cpp",
183
184    #ipc_security
185    "src/ipc_security/rs_ipc_interface_code_access_verifier_base.cpp",
186
187    #memory
188    "src/memory/rs_memory_flow_control.cpp",
189    "src/memory/rs_memory_graphic.cpp",
190    "src/memory/rs_memory_snapshot.cpp",
191    "src/memory/rs_memory_track.cpp",
192    "src/memory/rs_tag_tracker.cpp",
193
194    #pipeline
195    "src/pipeline/rs_canvas_drawing_render_node.cpp",
196    "src/pipeline/rs_canvas_render_node.cpp",
197    "src/pipeline/rs_context.cpp",
198    "src/pipeline/rs_dirty_region_manager.cpp",
199    "src/pipeline/rs_display_render_node.cpp",
200    "src/pipeline/rs_draw_cmd.cpp",
201    "src/pipeline/rs_draw_cmd_list.cpp",
202    "src/pipeline/rs_effect_render_node.cpp",
203    "src/pipeline/rs_occlusion_config.cpp",
204    "src/pipeline/rs_paint_filter_canvas.cpp",
205    "src/pipeline/rs_proxy_render_node.cpp",
206    "src/pipeline/rs_record_cmd_utils.cpp",
207    "src/pipeline/rs_recording_canvas.cpp",
208    "src/pipeline/rs_render_content.cpp",
209    "src/pipeline/rs_render_display_sync.cpp",
210    "src/pipeline/rs_render_frame_rate_linker.cpp",
211    "src/pipeline/rs_render_frame_rate_linker_map.cpp",
212    "src/pipeline/rs_render_node.cpp",
213    "src/pipeline/rs_render_node_autocache.cpp",
214    "src/pipeline/rs_render_node_gc.cpp",
215    "src/pipeline/rs_render_node_map.cpp",
216    "src/pipeline/rs_root_render_node.cpp",
217    "src/pipeline/rs_single_frame_composer.cpp",
218    "src/pipeline/rs_surface_buffer_callback_manager.cpp",
219    "src/pipeline/rs_surface_handler.cpp",
220    "src/pipeline/rs_surface_render_node.cpp",
221    "src/pipeline/rs_task_dispatcher.cpp",
222    "src/pipeline/rs_uni_render_judgement.cpp",
223    "src/pipeline/sk_resource_manager.cpp",
224
225    #property
226    "src/property/rs_point_light_manager.cpp",
227    "src/property/rs_properties.cpp",
228    "src/property/rs_properties_painter.cpp",
229    "src/property/rs_property_drawable.cpp",
230    "src/property/rs_property_drawable_bounds_geometry.cpp",
231    "src/property/rs_property_drawable_frame_geometry.cpp",
232    "src/property/rs_property_drawable_utilities.cpp",
233    "src/property/rs_property_trace.cpp",
234
235    #render
236    "src/render/rs_aibar_shader_filter.cpp",
237    "src/render/rs_attraction_effect_filter.cpp",
238    "src/render/rs_blur_filter.cpp",
239    "src/render/rs_border.cpp",
240    "src/render/rs_color_extract.cpp",
241    "src/render/rs_color_picker.cpp",
242    "src/render/rs_colorful_shadow_filter.cpp",
243    "src/render/rs_distortion_shader_filter.cpp",
244    "src/render/rs_dot_matrix_shader.cpp",
245    "src/render/rs_drawing_filter.cpp",
246    "src/render/rs_filter.cpp",
247    "src/render/rs_filter_cache_manager.cpp",
248    "src/render/rs_flow_light_sweep_shader.cpp",
249    "src/render/rs_fly_out_shader_filter.cpp",
250    "src/render/rs_foreground_effect_filter.cpp",
251    "src/render/rs_grey_shader_filter.cpp",
252    "src/render/rs_high_performance_visual_engine.cpp",
253    "src/render/rs_hps_blur.cpp",
254    "src/render/rs_image.cpp",
255    "src/render/rs_image_base.cpp",
256    "src/render/rs_image_cache.cpp",
257    "src/render/rs_kawase_blur.cpp",
258    "src/render/rs_kawase_blur_shader_filter.cpp",
259    "src/render/rs_light_up_effect_filter.cpp",
260    "src/render/rs_linear_gradient_blur_shader_filter.cpp",
261    "src/render/rs_magnifier_shader_filter.cpp",
262    "src/render/rs_mask.cpp",
263    "src/render/rs_maskcolor_shader_filter.cpp",
264    "src/render/rs_material_filter.cpp",
265    "src/render/rs_mesa_blur_shader_filter.cpp",
266    "src/render/rs_motion_blur_filter.cpp",
267    "src/render/rs_particles_drawable.cpp",
268    "src/render/rs_path.cpp",
269    "src/render/rs_pixel_map_shader.cpp",
270    "src/render/rs_pixel_map_util.cpp",
271    "src/render/rs_resource_manager.cpp",
272    "src/render/rs_shader.cpp",
273    "src/render/rs_shadow.cpp",
274    "src/render/rs_skia_filter.cpp",
275    "src/render/rs_spherize_effect_filter.cpp",
276    "src/render/rs_typeface_cache.cpp",
277    "src/render/rs_water_ripple_shader_filter.cpp",
278
279    #transaction
280    "src/transaction/rs_hgm_config_data.cpp",
281    "src/transaction/rs_occlusion_data.cpp",
282    "src/transaction/rs_self_drawing_node_rect_data.cpp",
283    "src/transaction/rs_transaction_data.cpp",
284    "src/transaction/rs_transaction_handler.cpp",
285    "src/transaction/rs_transaction_metric_collector.cpp",
286    "src/transaction/rs_transaction_proxy.cpp",
287    "src/transaction/rs_uiextension_data.cpp",
288
289    #gfx
290    "src/gfx/dump/rs_dump_manager.cpp",
291    "src/gfx/fps_info/rs_surface_fps.cpp",
292    "src/gfx/fps_info/rs_surface_fps_manager.cpp",
293    "src/gfx/performance/rs_perfmonitor_reporter.cpp",
294
295    #screen_manager
296    "src/screen_manager/rs_screen_capability.cpp",
297    "src/screen_manager/rs_screen_data.cpp",
298    "src/screen_manager/rs_screen_hdr_capability.cpp",
299    "src/screen_manager/rs_screen_mode_info.cpp",
300    "src/screen_manager/rs_screen_props.cpp",
301    "src/screen_manager/rs_virtual_screen_resolution.cpp",
302
303    #info_collection
304    "src/info_collection/rs_gpu_dirty_region_collection.cpp",
305    "src/info_collection/rs_hardware_compose_disabled_reason_collection.cpp",
306    "src/info_collection/rs_hdr_collection.cpp",
307    "src/info_collection/rs_layer_compose_collection.cpp",
308
309    #monitor
310    "src/monitor/self_drawing_node_monitor.cpp",
311  ]
312
313  if (rs_enable_gpu) {
314    sources += [
315      #drawable
316      "src/drawable/rs_drawable.cpp",
317      "src/drawable/rs_misc_drawable.cpp",
318      "src/drawable/rs_property_drawable.cpp",
319      "src/drawable/rs_property_drawable_background.cpp",
320      "src/drawable/rs_property_drawable_foreground.cpp",
321      "src/drawable/rs_property_drawable_utils.cpp",
322      "src/drawable/rs_render_node_drawable_adapter.cpp",
323      "src/drawable/rs_render_node_shadow_drawable.cpp",
324
325      #params
326      "src/params/rs_canvas_drawing_render_params.cpp",
327      "src/params/rs_display_render_params.cpp",
328      "src/params/rs_effect_render_params.cpp",
329      "src/params/rs_rcd_render_params.cpp",
330      "src/params/rs_render_params.cpp",
331      "src/params/rs_render_thread_params.cpp",
332      "src/params/rs_surface_render_params.cpp",
333    ]
334  }
335
336  if (defined(input_ext_feature_magiccursor) && input_ext_feature_magiccursor) {
337    sources += [
338      #ipc_callbacks
339      "src/ipc_callbacks/pointer_render/pointer_luminance_callback_ipc_interface_code_access_verifier.cpp",
340      "src/ipc_callbacks/pointer_render/pointer_luminance_callback_proxy.cpp",
341      "src/ipc_callbacks/pointer_render/pointer_luminance_callback_stub.cpp",
342    ]
343  }
344
345  if (rosen_is_ohos) {
346    sources += [
347      #color_temperature
348      "src/display_engine/rs_color_temperature.cpp",
349
350      #luminance
351      "src/display_engine/rs_luminance_control.cpp",
352    ]
353  } else {
354    sources += [
355      #color_temperature
356      "src/display_engine/mingw/rs_color_temperature.cpp",
357
358      #luminance
359      "src/display_engine/mingw/rs_luminance_control.cpp",
360    ]
361  }
362
363  if (is_cross_platform) {
364    sources -= [
365      #command
366      "src/command/rs_display_node_command.cpp",
367
368      #common
369      "src/common/rs_thread_handler_generic.cpp",
370      "src/common/rs_thread_looper_generic.cpp",
371      "src/common/rs_thread_looper_impl.cpp",
372
373      #ipc_callbacks
374      "src/ipc_callbacks/buffer_available_callback_proxy.cpp",
375      "src/ipc_callbacks/buffer_available_callback_stub.cpp",
376      "src/ipc_callbacks/buffer_clear_callback_proxy.cpp",
377      "src/ipc_callbacks/buffer_clear_callback_stub.cpp",
378      "src/ipc_callbacks/hgm_config_change_callback_proxy.cpp",
379      "src/ipc_callbacks/hgm_config_change_callback_stub.cpp",
380      "src/ipc_callbacks/rs_occlusion_change_callback_proxy.cpp",
381      "src/ipc_callbacks/rs_occlusion_change_callback_stub.cpp",
382      "src/ipc_callbacks/rs_surface_occlusion_change_callback_proxy.cpp",
383      "src/ipc_callbacks/rs_surface_occlusion_change_callback_stub.cpp",
384      "src/ipc_callbacks/screen_change_callback_proxy.cpp",
385      "src/ipc_callbacks/screen_change_callback_stub.cpp",
386      "src/ipc_callbacks/surface_capture_callback_proxy.cpp",
387      "src/ipc_callbacks/surface_capture_callback_stub.cpp",
388
389      #ipc_security
390      "src/ipc_security/rs_ipc_interface_code_access_verifier_base.cpp",
391
392      #memory
393      "src/memory/rs_memory_graphic.cpp",
394      "src/memory/rs_memory_track.cpp",
395      "src/memory/rs_tag_tracker.cpp",
396
397      #pipeline
398      "src/pipeline/rs_occlusion_config.cpp",
399
400      #transaction
401      "src/transaction/rs_hgm_config_data.cpp",
402      "src/transaction/rs_occlusion_data.cpp",
403
404      #screen_manager
405      "src/screen_manager/rs_screen_capability.cpp",
406      "src/screen_manager/rs_screen_data.cpp",
407      "src/screen_manager/rs_screen_hdr_capability.cpp",
408      "src/screen_manager/rs_screen_mode_info.cpp",
409      "src/screen_manager/rs_screen_props.cpp",
410      "src/screen_manager/rs_virtual_screen_resolution.cpp",
411    ]
412  }
413
414  cflags = [
415    "-Wall",
416    "-Wno-pointer-arith",
417    "-Wno-non-virtual-dtor",
418    "-Wno-missing-field-initializers",
419    "-Wno-c++11-narrowing",
420    "-fvisibility=hidden",
421    "-DIMAGE_COLORSPACE_FLAG",
422  ]
423
424  if (is_ohos && is_clang && (target_cpu == "arm" || target_cpu == "arm64")) {
425    if (!use_libfuzzer) {
426      cflags += [ "-flto=thin" ]
427    }
428    if (enhanced_opt) {
429      if (!use_libfuzzer) {
430        cflags += [ "-fwhole-program-vtables" ]
431      }
432      if (graphic_2d_feature_enable_pgo &&
433          graphic_2d_feature_product != "default") {
434        cflags += [
435          "-fprofile-use=" + rebase_path(
436                  "${graphic_2d_feature_pgo_path}/librender_service_base.profdata",
437                  root_build_dir),
438          "-Wno-error=backend-plugin",
439          "-Wno-profile-instr-out-of-date",
440          "-Wno-profile-instr-unprofiled",
441        ]
442      }
443      if (graphic_2d_feature_product == "pc" && target_cpu == "arm64") {
444        cflags += [ "-moutline-atomics" ]
445      }
446    }
447  }
448
449  if (graphic_2d_feature_product != "wearable") {
450    defines += [ "IS_ENABLE_DRM" ]
451  }
452
453  cflags_cc = [
454    "-std=c++17",
455    "-fvisibility-inlines-hidden",
456  ]
457
458  public_configs = [ ":export_config" ]
459  public_deps = [ "src/platform:platform" ]
460
461  if (enable_export_macro) {
462    defines += [ "ENABLE_EXPORT_MACRO" ]
463  }
464
465  if (rs_enable_gpu) {
466    defines += [
467      "GL_GLEXT_PROTOTYPES",
468      "EGL_EGLEXT_PROTOTYPES",
469    ]
470  }
471
472  if (current_os == "ohos") {
473    defines += [ "IS_OHOS" ]
474  }
475
476  include_dirs = [
477    "$graphic_2d_root/rosen/modules/utils",
478    "$graphic_2d_root/interfaces/inner_api/common",
479    "$graphic_2d_root/rosen/modules/graphics_effect/include",
480    "$graphic_2d_root/rosen/modules/render_service_base/src",
481    "$graphic_2d_root/rosen/modules/render_service_base/include",
482    "$graphic_2d_root/utils/color_manager/export",
483    "$graphic_2d_root/utils/log",
484  ]
485
486  if (is_arkui_x) {
487    include_dirs += [
488      "$graphic_2d_root/utils/color_manager/export",
489      "//foundation/multimedia/image_framework/interfaces/innerkits/include",
490      "//foundation/graphic/graphic_surface/interfaces/inner_api/surface",
491    ]
492  }
493
494  deps = [
495    "$graphic_2d_root/utils/sandbox:sandbox_utils",
496    "$rosen_root/modules/graphics_effect:libgraphics_effect",
497    "$rosen_root/modules/platform:hilog",
498    "$rosen_root/modules/platform:ipc_core",
499  ]
500
501  external_deps = [
502    "graphic_surface:surface_headers",
503    "hilog:libhilog",
504  ]
505
506  if (use_memmgr_plugin || use_memmgr) {
507    external_deps += [ "memmgr:memmgrclient" ]
508  }
509
510  if (rosen_is_ohos) {
511    external_deps += [
512      "hicollie:libhicollie",
513      "hisysevent:libhisysevent",
514      "image_framework:image_native",
515      "lz4:liblz4_shared",
516    ]
517  }
518
519  if (!is_mingw && !is_mac && !is_cross_platform &&
520      !(host_os == "linux" && host_cpu == "arm64")) {
521    defines += [ "ENABLE_RUST" ]
522    sources += get_target_outputs(":particle_cxx_gen")
523    include_dirs += [
524      "//third_party/rust/crates/cxx/include",
525      "${target_gen_dir}/rust/src",
526    ]
527    deps += [
528      ":particle_cxx_cppdeps",
529      ":particle_cxx_gen",
530      ":particle_cxx_rust",
531    ]
532  }
533
534  if (use_video_processing_engine) {
535    defines += [ "USE_VIDEO_PROCESSING_ENGINE" ]
536    include_dirs += [ "$video_processing_engine_root/interfaces/inner_api" ]
537    external_deps += [ "video_processing_engine:videoprocessingengine" ]
538    sources += [ "src/render/rs_colorspace_convert.cpp" ]
539  }
540
541  if (rosen_is_ohos && defined(enable_ipc_security) && enable_ipc_security) {
542    defines += [ "ENABLE_IPC_SECURITY" ]
543    external_deps += [
544      "access_token:libaccesstoken_sdk",
545      "ipc:ipc_core",
546    ]
547  }
548
549  if (rosen_is_ohos && defined(enable_ipc_security_access_counter) &&
550      enable_ipc_security_access_counter) {
551    defines += [ "ENABLE_IPC_SECURITY_ACCESS_COUNTER" ]
552  }
553
554  if (defined(graphic_2d_math_tools_configs.vendor_root)) {
555    sources +=
556        graphic_2d_math_tools_configs.librender_service_ext_math_tools_sources
557    sources -= graphic_2d_math_tools_configs.librender_service_ext_math_tools_sources_del
558  }
559
560  if (defined(use_rosen_drawing) && use_rosen_drawing) {
561    defines += [ "USE_ROSEN_DRAWING" ]
562    if (rs_enable_gpu) {
563      defines += [ "RS_ENABLE_GPU" ]
564    }
565
566    deps += [ "$rosen_root/modules/2d_graphics:2d_graphics" ]
567  }
568
569  if (rosen_cross_platform) {
570    public_configs += [
571      "$rosen_root/modules/platform:eventhandler_config",
572      "$rosen_root/modules/platform:image_native_config",
573    ]
574  } else {
575    external_deps += [
576      "drivers_interface_display:display_commontype_idl_headers",
577      "hitrace:hitrace_meter",
578    ]
579  }
580
581  if (rosen_is_win) {
582    defines += [ "_USE_MATH_DEFINES" ]
583  }
584
585  if (defined(ddgr_ext_configs)) {
586    libs = ddgr_ext_configs.ddgr_libs
587    defines += ddgr_ext_configs.ddgr_defines
588    sources += ddgr_ext_configs.libddgr_ext_adaptor_base_sources
589    include_dirs += ddgr_ext_configs.libddgr_ext_adaptor_include_dirs
590  }
591
592  #profiler
593  if (rosen_is_ohos && graphic_2d_feature_rs_enable_profiler &&
594      player_framework_enable) {
595    defines += [ "RS_PROFILER_ENABLED" ]
596    defines += [ "RS_PROFILER_BETA_ENABLED" ]
597    sources += [
598      "$graphic_2d_root/rosen/modules/render_service_profiler/rs_profiler_archive.cpp",
599      "$graphic_2d_root/rosen/modules/render_service_profiler/rs_profiler_base.cpp",
600      "$graphic_2d_root/rosen/modules/render_service_profiler/rs_profiler_cache.cpp",
601      "$graphic_2d_root/rosen/modules/render_service_profiler/rs_profiler_dump.cpp",
602      "$graphic_2d_root/rosen/modules/render_service_profiler/rs_profiler_pixelmap.cpp",
603      "$graphic_2d_root/rosen/modules/render_service_profiler/rs_profiler_settings.cpp",
604      "$graphic_2d_root/rosen/modules/render_service_profiler/rs_profiler_utils.cpp",
605    ]
606
607    if (defined(global_parts_info) &&
608        defined(global_parts_info.open_source_libyuv)) {
609      defines += [ "RS_PROFILER_SUPPORTS_PIXELMAP_YUV_EXT" ]
610    }
611  }
612  include_dirs += [ "$graphic_2d_root/rosen/modules/render_service_profiler" ]
613
614  if (defined(global_parts_info) &&
615      defined(global_parts_info.resourceschedule_resource_schedule_service)) {
616    external_deps += [ "resource_schedule_service:ressched_client" ]
617    defines += [ "RES_BASE_SCHED_ENABLE" ]
618    external_deps += [ "qos_manager:qos" ]
619  }
620
621  part_name = "graphic_2d"
622  subsystem_name = "graphic"
623}
624
625config("render_service_base_all_deps_config") {
626  include_dirs = [
627    "include",
628    "$rosen_root/modules/2d_graphics/include",
629    "$rosen_root/modules/2d_graphics/src",
630    "$rosen_root/modules/2d_graphics/src/drawing/engine_adapter",
631  ]
632}
633
634config("render_service_base_link_config") {
635  if (is_ohos && is_clang && (target_cpu == "arm" || target_cpu == "arm64")) {
636    ldflags = [
637      "-Wl,--lto-O2",
638      "-Wl,-mllvm",
639      "-Wl,-wholeprogramdevirt-check=fallback",
640      "-Wl,-Bsymbolic",
641    ]
642
643    if (graphic_2d_feature_enable_pgo && enable_enhanced_opt) {
644      ldflags += [ "-Wl,--aarch64-inline-plt" ]
645    }
646  }
647}
648
649ohos_shared_library("librender_service_base") {
650  branch_protector_ret = "pac_ret"
651  if (!is_mingw && !is_win && !is_linux) {
652    sanitize = {
653      cfi = false
654      cfi_cross_dso = false
655      debug = false
656      blocklist = "./rs_base_blocklist.txt"
657    }
658  }
659
660  sources = [ "src/common/rs_common_hook.cpp" ]
661
662  public_configs = [ ":render_service_base_all_deps_config" ]
663
664  if (enhanced_opt) {
665    configs = [ ":render_service_base_link_config" ]
666  }
667
668  deps = [
669    "$rosen_root/modules/platform:eventhandler",
670    "src/platform:platform",
671  ]
672
673  public_deps = [ ":render_service_base_src" ]
674
675  external_deps = [ "hilog:libhilog" ]
676
677  public_external_deps = []
678  if (rosen_is_ohos) {
679    external_deps += [ "hisysevent:libhisysevent" ]
680    public_external_deps += [
681      "graphic_surface:sync_fence",
682      "image_framework:image_native",
683    ]
684  }
685
686  if (rs_enable_gpu) {
687    public_external_deps += [ "openssl:libcrypto_shared" ]
688  }
689
690  part_name = "graphic_2d"
691  subsystem_name = "graphic"
692}
693
694ohos_source_set("librender_service_base_static") {
695  branch_protector_ret = "pac_ret"
696  sanitize = {
697    cfi = false
698    cfi_cross_dso = false
699    debug = false
700    blocklist = "./rs_base_blocklist.txt"
701  }
702
703  public_configs = [ ":render_service_base_all_deps_config" ]
704
705  if (is_arkui_x) {
706    sources = [ "src/common/rs_common_hook.cpp" ]
707  }
708
709  deps = [ "$rosen_root/modules/platform:eventhandler" ]
710  public_deps = [
711    ":render_service_base_src",
712    "src/platform:platform",
713  ]
714
715  public_external_deps = []
716  if (rosen_is_ohos) {
717    public_external_deps += [
718      "graphic_surface:sync_fence",
719      "image_framework:image_native",
720    ]
721  }
722
723  if (rs_enable_gpu) {
724    if (is_arkui_x) {
725      public_deps += [ "//third_party/openssl:libcrypto_static" ]
726    } else {
727      public_external_deps += [ "openssl:libcrypto_shared" ]
728    }
729  }
730
731  part_name = "graphic_2d"
732  subsystem_name = "graphic"
733}
734