• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2021-2024 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/frameworks/text/config.gni")
16import("//foundation/graphic/graphic_2d/graphic_config.gni")
17import("//foundation/graphic/graphic_2d/rosen/modules/platform/config.gni")
18import("render_service_client.gni")
19
20config("render_service_client_config") {
21  include_dirs = [
22    "$graphic_2d_root/rosen/modules",
23    "$graphic_2d_root/rosen/modules/render_service_client/core",
24    "$graphic_2d_root/rosen/modules/render_service_base/include",
25    "$graphic_2d_root/interfaces/inner_api/common",
26    "$graphic_2d_root/interfaces/inner_api/composer",
27    "$graphic_2d_root/rosen/modules/2d_graphics",
28    "$graphic_2d_root/rosen/modules/composer/vsync/include",
29  ]
30  defines = rs_common_define
31  if (defined(is_arkui_x) && is_arkui_x) {
32    include_dirs += [
33      "$graphic_2d_root/utils/color_manager/export",
34      "//foundation/multimedia/image_framework/interfaces/innerkits/include",
35    ]
36  }
37
38  defines += gpu_defines
39
40  if (rs_enable_gpu) {
41    defines += [ "RS_ENABLE_GPU" ]
42  }
43}
44
45template("render_service_client_source_set") {
46  ohos_source_set(target_name) {
47    branch_protector_ret = "pac_ret"
48    sanitize = {
49      cfi = false
50      cfi_cross_dso = false
51      debug = false
52      blocklist = "./rs_client_blocklist.txt"
53      if (rosen_is_ohos) {
54        boundary_sanitize = true
55        integer_overflow = true
56        ubsan = true
57      }
58    }
59    defines = []
60    defines += gpu_defines
61    defines += [ "MODULE_RSC" ]
62    is_static_lib = invoker.is_static_lib
63    include_dirs = [
64      "$graphic_2d_root/rosen/modules/2d_graphics/src",
65      "$graphic_2d_root/rosen/modules/frame_report/include",
66      "$graphic_2d_root/rosen/modules/render_frame_trace/include",
67      "$graphic_2d_root/rosen/modules/render_service_base/src",
68      "$graphic_2d_root/utils/color_manager/export",
69      "$graphic_2d_root/rosen/modules/2d_engine/rosen_text/symbol/symbol_animation",
70      "$graphic_2d_root/utils/log",
71      "$graphic_2d_root/utils/sandbox",
72    ]
73
74    if (defined(is_arkui_x) && is_arkui_x) {
75      include_dirs += [
76        "$graphic_2d_root/utils/color_manager/export",
77        "//base/hiviewdfx/hitrace/interfaces/native/innerkits/include/hitrace_meter",
78        "//foundation/multimedia/image_framework/interfaces/innerkits/include",
79        "//foundation/graphic/graphic_surface/interfaces/inner_api/surface",
80      ]
81    }
82
83    sources = [
84      #animation
85      "core/animation/rs_animation.cpp",
86      "core/animation/rs_animation_callback.cpp",
87      "core/animation/rs_animation_group.cpp",
88      "core/animation/rs_animation_timing_curve.cpp",
89      "core/animation/rs_curve_animation.cpp",
90      "core/animation/rs_implicit_animation_param.cpp",
91      "core/animation/rs_implicit_animator.cpp",
92      "core/animation/rs_implicit_animator_map.cpp",
93      "core/animation/rs_interactive_implict_animator.cpp",
94      "core/animation/rs_interpolating_spring_animation.cpp",
95      "core/animation/rs_keyframe_animation.cpp",
96      "core/animation/rs_path_animation.cpp",
97      "core/animation/rs_property_animation.cpp",
98      "core/animation/rs_spring_animation.cpp",
99      "core/animation/rs_symbol_animation.cpp",
100      "core/animation/rs_transition.cpp",
101      "core/animation/rs_transition_effect.cpp",
102
103      #feature
104      "core/feature/anco_manager/rs_ext_node_operation.cpp",
105      "core/feature/composite_layer/rs_composite_layer_utils.cpp",
106      "core/feature/ui_capture/rs_divided_ui_capture.cpp",
107
108      #modifier
109      "core/modifier/rs_modifier_extractor.cpp",
110      "core/modifier/rs_modifier_manager.cpp",
111      "core/modifier/rs_modifier_manager_map.cpp",
112      "core/modifier/rs_property.cpp",
113      "core/modifier/rs_showing_properties_freezer.cpp",
114
115      #modifier_ng
116      "core/modifier_ng/appearance/rs_alpha_modifier.cpp",
117      "core/modifier_ng/appearance/rs_background_filter_modifier.cpp",
118      "core/modifier_ng/appearance/rs_behind_window_filter_modifier.cpp",
119      "core/modifier_ng/appearance/rs_blend_modifier.cpp",
120      "core/modifier_ng/appearance/rs_border_modifier.cpp",
121      "core/modifier_ng/appearance/rs_compositing_filter_modifier.cpp",
122      "core/modifier_ng/appearance/rs_dynamic_light_up_modifier.cpp",
123      "core/modifier_ng/appearance/rs_foreground_filter_modifier.cpp",
124      "core/modifier_ng/appearance/rs_hdr_brightness_modifier.cpp",
125      "core/modifier_ng/appearance/rs_mask_modifier.cpp",
126      "core/modifier_ng/appearance/rs_outline_modifier.cpp",
127      "core/modifier_ng/appearance/rs_particle_effect_modifier.cpp",
128      "core/modifier_ng/appearance/rs_pixel_stretch_modifier.cpp",
129      "core/modifier_ng/appearance/rs_point_light_modifier.cpp",
130      "core/modifier_ng/appearance/rs_shadow_modifier.cpp",
131      "core/modifier_ng/appearance/rs_use_effect_modifier.cpp",
132      "core/modifier_ng/appearance/rs_visibility_modifier.cpp",
133      "core/modifier_ng/background/rs_background_color_modifier.cpp",
134      "core/modifier_ng/background/rs_background_image_modifier.cpp",
135      "core/modifier_ng/background/rs_background_ng_shader_modifier.cpp",
136      "core/modifier_ng/background/rs_background_shader_modifier.cpp",
137      "core/modifier_ng/custom/rs_background_style_modifier.cpp",
138      "core/modifier_ng/custom/rs_content_style_modifier.cpp",
139      "core/modifier_ng/custom/rs_custom_modifier.cpp",
140      "core/modifier_ng/custom/rs_foreground_style_modifier.cpp",
141      "core/modifier_ng/custom/rs_node_modifier.cpp",
142      "core/modifier_ng/custom/rs_transition_style_modifier.cpp",
143      "core/modifier_ng/foreground/rs_env_foreground_color_modifier.cpp",
144      "core/modifier_ng/foreground/rs_foreground_color_modifier.cpp",
145      "core/modifier_ng/foreground/rs_foreground_shader_modifier.cpp",
146      "core/modifier_ng/geometry/rs_bounds_clip_modifier.cpp",
147      "core/modifier_ng/geometry/rs_bounds_modifier.cpp",
148      "core/modifier_ng/geometry/rs_frame_clip_modifier.cpp",
149      "core/modifier_ng/geometry/rs_frame_modifier.cpp",
150      "core/modifier_ng/geometry/rs_transform_modifier.cpp",
151      "core/modifier_ng/overlay/rs_overlay_style_modifier.cpp",
152      "core/modifier_ng/rs_modifier_ng.cpp",
153
154      #pipeline
155      "core/pipeline/rs_node_map.cpp",
156      "core/pipeline/rs_node_map_v2.cpp",
157      "core/pipeline/rs_render_thread.cpp",
158
159      #render_thread
160      "core/render_thread/rs_render_thread_util.cpp",
161      "core/render_thread/rs_render_thread_visitor.cpp",
162
163      #jank_detector
164      "core/render_thread/jank_detector/rs_jank_detector.cpp",
165
166      #transaction
167      "core/transaction/rs_application_agent_impl.cpp",
168      "core/transaction/rs_interfaces.cpp",
169      "core/transaction/rs_render_thread_client.cpp",
170      "core/transaction/rs_sync_transaction_controller.cpp",
171      "core/transaction/rs_sync_transaction_handler.cpp",
172      "core/transaction/rs_transaction.cpp",
173
174      #ui
175      "core/feature/hyper_graphic_manager/rs_frame_rate_linker.cpp",
176      "core/feature/hyper_graphic_manager/rs_frame_rate_policy.cpp",
177      "core/feature/hyper_graphic_manager/rs_ui_display_soloist.cpp",
178      "core/ui/rs_canvas_drawing_node.cpp",
179      "core/ui/rs_canvas_node.cpp",
180      "core/ui/rs_display_node.cpp",
181      "core/ui/rs_effect_node.cpp",
182      "core/ui/rs_node.cpp",
183      "core/ui/rs_proxy_node.cpp",
184      "core/ui/rs_root_node.cpp",
185      "core/ui/rs_surface_extractor.cpp",
186      "core/ui/rs_surface_node.cpp",
187      "core/ui/rs_texture_export.cpp",
188      "core/ui/rs_ui_context.cpp",
189      "core/ui/rs_ui_context_manager.cpp",
190      "core/ui/rs_ui_director.cpp",
191
192      #ui_effect
193      "core/ui_effect/effect/src/visual_effect_para.cpp",
194      "core/ui_effect/effect/src/visual_effect_unmarshalling_singleton.cpp",
195      "core/ui_effect/effect/src/visual_effect.cpp",
196      "core/ui_effect/filter/src/filter_content_light_para.cpp",
197      "core/ui_effect/filter/src/filter_direction_light_para.cpp",
198      "core/ui_effect/filter/src/filter_dispersion_para.cpp",
199      "core/ui_effect/filter/src/filter_displacement_distort_para.cpp",
200      "core/ui_effect/filter/src/filter_mask_transition_para.cpp",
201      "core/ui_effect/filter/src/filter_para.cpp",
202      "core/ui_effect/filter/src/filter_unmarshalling_singleton.cpp",
203      "core/ui_effect/filter/src/filter_water_ripple_para.cpp",
204      "core/ui_effect/filter/src/filter.cpp",
205      "core/ui_effect/mask/src/mask_para.cpp",
206      "core/ui_effect/mask/src/mask_unmarshalling_singleton.cpp",
207      "core/ui_effect/mask/src/pixel_map_mask_para.cpp",
208      "core/ui_effect/mask/src/radial_gradient_mask_para.cpp",
209      "core/ui_effect/property/src/rs_ui_color_gradient_filter.cpp",
210      "core/ui_effect/property/src/rs_ui_filter_base.cpp",
211      "core/ui_effect/property/src/rs_ui_mask_base.cpp",
212      "core/ui_effect/property/src/rs_ui_shader_base.cpp",
213    ]
214
215    if (is_cross_platform) {
216      #ui
217      sources -= [ "core/ui/rs_display_node.cpp" ]
218      defines += [ "CROSS_PLATFORM" ]
219    }
220
221    if (rosen_is_ohos) {
222      sources += [ "$rosen_root/modules/frame_report/src/rs_frame_report.cpp" ]
223    } else if (!is_arkui_x) {
224      sources +=
225          [ "$rosen_root/modules/frame_report/src/mingw/rs_frame_report.cpp" ]
226    }
227
228    cflags = [
229      "-Wall",
230      "-Wno-pointer-arith",
231      "-Wno-non-virtual-dtor",
232      "-Wno-missing-field-initializers",
233      "-Wno-c++11-narrowing",
234      "-fvisibility=hidden",
235    ]
236
237    if (is_ohos && is_clang && (target_cpu == "arm" || target_cpu == "arm64")) {
238      if (!use_libfuzzer) {
239        cflags += [ "-flto=thin" ]
240      }
241      if (enhanced_opt) {
242        if (!use_libfuzzer) {
243          cflags += [ "-fwhole-program-vtables" ]
244        }
245      }
246    }
247
248    cflags_cc = [
249      "-std=c++17",
250      "-fvisibility-inlines-hidden",
251    ]
252
253    deps = [
254      "$graphic_2d_root/rosen/modules/platform:ipc_core",
255      "$graphic_2d_root/rosen/modules/render_frame_trace:render_frame_trace",
256    ]
257    public_deps = []
258    if (enable_export_macro) {
259      defines += [ "ENABLE_EXPORT_MACRO" ]
260    }
261
262    if (defined(use_rosen_drawing) && use_rosen_drawing) {
263      defines += [ "USE_ROSEN_DRAWING" ]
264      deps += [
265        "$graphic_2d_root/rosen/modules/2d_graphics:2d_graphics",
266        "$rosen_text_root:rosen_text",
267      ]
268      if (rs_enable_gpu) {
269        defines += [ "RS_ENABLE_GPU" ]
270      }
271      if (current_os == "mingw") {
272        defines += [ "WINDOWS_PLATFORM" ]
273      }
274    }
275
276    if (is_arkui_x) {
277      defines += [ "ARKUI_X_ENABLE" ]
278      deps += [ "//third_party/jsoncpp:jsoncpp_static" ]
279    }
280
281    if (rosen_is_ohos) {
282      deps += [
283        "$graphic_2d_root/frameworks/opengl_wrapper:EGL",
284        "$graphic_2d_root/rosen/modules/frame_analyzer:libframe_analyzer",
285        "$graphic_2d_root/utils/color_manager:color_manager",
286      ]
287
288      external_deps = [
289        "bundle_framework:appexecfwk_base",
290        "bundle_framework:appexecfwk_core",
291        "c_utils:utils",
292        "hisysevent:libhisysevent",
293        "hitrace:hitrace_meter",
294        "image_framework:image_native",
295        "qos_manager:qos",
296        "qos_manager:concurrent_task_client",
297      ]
298
299      if (defined(use_video_processing_engine) && use_video_processing_engine) {
300        defines += [ "USE_VIDEO_PROCESSING_ENGINE" ]
301        external_deps += [
302          "video_processing_engine:videoprocessingengine",
303          "media_foundation:media_foundation",
304        ]
305      }
306      defines += [ "RES_CLINET_SCHED_ENABLE" ]
307
308      if (accessibility_enable) {
309        external_deps += [ "accessibility:accessibilityconfig" ]
310        external_deps += [ "accessibility:accessibility_common" ]
311        defines += accessibility_defines
312      }
313    } else if (rosen_preview) {
314      deps += [
315        "$graphic_2d_root/frameworks/opengl_wrapper:EGL",
316        "$graphic_2d_root/frameworks/opengl_wrapper:GLESv3",
317        "$graphic_2d_root/rosen/modules/glfw_render_context:libglfw_render_context",
318      ]
319    }
320    if (defined(external_deps)) {
321      external_deps += [ "hilog:libhilog" ]
322    } else {
323      external_deps = [ "hilog:libhilog" ]
324    }
325
326    if (defined(use_rosen_drawing) && use_rosen_drawing) {
327      external_deps += [ "jsoncpp:jsoncpp" ]
328    }
329
330    external_deps += [ "graphic_surface:surface_headers" ]
331
332    if (!build_ohos_sdk && !is_mingw) {
333      external_deps += [ "samgr:samgr_proxy" ]
334    }
335
336    if (rosen_cross_platform) {
337      deps += [ "$rosen_root/modules/platform:hilog" ]
338    }
339
340    if (rss_enabled) {
341      defines += [ "OHOS_RSS_CLIENT" ]
342      external_deps += [ "resource_schedule_service:ressched_client" ]
343    }
344
345    if (is_static_lib) {
346      public_deps += [ "$graphic_2d_root/rosen/modules/render_service_base:librender_service_base_static" ]
347    } else {
348      deps += [ "$graphic_2d_root/rosen/modules/render_service_base:librender_service_base" ]
349      deps += [ "$rosen_root/modules/platform:eventhandler" ]
350    }
351
352    if (defined(graphic_2d_broker_configs.vendor_root) && !rosen_preview) {
353      sources +=
354          graphic_2d_broker_configs.librender_service_client_ext_broker_sources
355      sources -= graphic_2d_broker_configs.librender_service_client_ext_broker_sources_del
356      external_deps += [ "ipc:ipc_core" ]
357      external_deps += [ "samgr:samgr_proxy" ]
358    }
359
360    if (tp_feature_enable) {
361      defines += tp_defines
362    }
363
364    if (graphic_2d_feature_enable_vulkan) {
365      sources += [
366        "core/modifier_render_thread/rs_modifiers_draw.cpp",
367        "core/modifier_render_thread/rs_modifiers_draw_thread.cpp",
368      ]
369      external_deps += [
370        "ffrt:libffrt",
371        "qos_manager:qos",
372      ]
373      if (defined(graphic_2d_modifiers_draw_configs.vendor_root)) {
374        sources += graphic_2d_modifiers_draw_configs.librender_service_ext_modifiers_draw_sources
375        sources -= graphic_2d_modifiers_draw_configs.librender_service_ext_modifiers_draw_sources_del
376      }
377    }
378
379    if (rosen_is_ohos && defined(enable_ipc_security) && enable_ipc_security) {
380      defines += [ "ENABLE_IPC_SECURITY" ]
381      external_deps += [
382        "access_token:libaccesstoken_sdk",
383        "ipc:ipc_core",
384      ]
385    }
386
387    public_configs = [ ":render_service_client_config" ]
388
389    part_name = "graphic_2d"
390    subsystem_name = "graphic"
391  }
392}
393
394render_service_client_source_set("render_service_client_src") {
395  is_static_lib = false
396}
397
398render_service_client_source_set("render_service_client_src_static") {
399  is_static_lib = true
400}
401
402config("render_service_client_link_config") {
403  if (is_ohos && is_clang && (target_cpu == "arm" || target_cpu == "arm64")) {
404    ldflags = [
405      "-Wl,--lto-O2",
406      "-Wl,-mllvm",
407      "-Wl,-wholeprogramdevirt-check=fallback",
408      "-Wl,-Bsymbolic",
409    ]
410  }
411}
412
413ohos_shared_library("librender_service_client") {
414  branch_protector_ret = "pac_ret"
415  sanitize = {
416    cfi = false
417    cfi_cross_dso = false
418    debug = false
419    blocklist = "./rs_client_blocklist.txt"
420  }
421
422  public_configs = [
423    ":render_service_client_config",
424    "../2d_graphics:export_config",
425  ]
426  deps = [ ":render_service_client_src" ]
427
428  if (enhanced_opt) {
429    configs = [ ":render_service_client_link_config" ]
430  }
431
432  # for platform
433  public_configs += [
434    "$rosen_root/modules/platform:eventhandler_config",
435    "$rosen_root/modules/platform:utils_config",
436    "$rosen_root/modules/platform:ipc_core_config",
437    "$rosen_root/modules/platform:image_native_config",
438  ]
439
440  public_external_deps = [
441    "egl:libEGL",
442    "opengles:libGLES",
443  ]
444  if (rosen_is_ohos) {
445    public_external_deps += [
446      "c_utils:utils",
447      "eventhandler:libeventhandler",
448      "graphic_surface:surface",
449      "image_framework:image_native",
450    ]
451  } else if (rosen_preview) {
452    public_external_deps += [ "graphic_surface:surface_headers" ]
453  }
454
455  if (rosen_is_win || current_os == "linux" || rosen_is_mac) {
456    public_external_deps += [ "skia:skia_canvaskit" ]
457  }
458  part_name = "graphic_2d"
459  subsystem_name = "graphic"
460}
461
462ohos_source_set("librender_service_client_static") {
463  branch_protector_ret = "pac_ret"
464  sanitize = {
465    cfi = false
466    cfi_cross_dso = false
467    debug = false
468    blocklist = "./rs_client_blocklist.txt"
469  }
470  public_deps = [ ":render_service_client_src_static" ]
471  deps = [ "$rosen_root/modules/platform:eventhandler" ]
472
473  public_external_deps = []
474  if (rosen_is_ohos) {
475    public_external_deps += [ "graphic_surface:surface" ]
476  } else if (rosen_preview) {
477    public_external_deps += [ "graphic_surface:surface_headers" ]
478  } else if (is_arkui_x) {
479    public_deps +=
480        [ "//foundation/graphic/graphic_surface/surface:surface_headers" ]
481  }
482
483  part_name = "graphic_2d"
484  subsystem_name = "graphic"
485}
486
487group("test") {
488  if (rosen_is_ohos) {
489    testonly = true
490
491    deps = [ "test:test" ]
492  }
493}
494