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