• 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("//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