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