• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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  cflags_cc = [ "-std=c++17" ]
21  include_dirs = [ "include" ]
22
23  defines = rs_common_define
24}
25
26if (!is_mingw && !is_mac && !is_cross_platform) {
27  defines = [ "ENABLE_RUST" ]
28  rust_cxx("particle_cxx_gen") {
29    sources = [ "rust/src/lib.rs" ]
30  }
31
32  ohos_rust_static_ffi("particle_cxx_rust") {
33    sources = [ "rust/src/lib.rs" ]
34    deps = [ "//third_party/rust/crates/cxx:lib" ]
35    part_name = "graphic_2d"
36    subsystem_name = "graphic"
37  }
38
39  ohos_static_library("particle_cxx_cppdeps") {
40    branch_protector_ret = "pac_ret"
41    sanitize = {
42      cfi = false
43      cfi_cross_dso = false
44      debug = false
45      blocklist = "./rs_base_blocklist.txt"
46    }
47    part_name = "graphic_2d"
48    subsystem_name = "graphic"
49    defines += [ "RUST_CXX_NO_EXCEPTIONS" ]
50    sources = [
51      "//third_party/rust/crates/cxx/include/cxx.h",
52      "//third_party/rust/crates/cxx/src/cxx.cc",
53    ]
54    deps = [ "//third_party/rust/crates/cxx:lib" ]
55  }
56}
57
58ohos_source_set("render_service_base_src") {
59  branch_protector_ret = "pac_ret"
60  sanitize = {
61    cfi = false
62    cfi_cross_dso = false
63    debug = false
64    blocklist = "./rs_base_blocklist.txt"
65  }
66  defines = []
67  defines += gpu_defines
68  defines += [ "MODULE_RSB" ]
69
70  sources = [
71    #animation
72    "src/animation/rs_animation_fraction.cpp",
73    "src/animation/rs_animation_manager.cpp",
74    "src/animation/rs_animation_rate_decider.cpp",
75    "src/animation/rs_animation_timing_protocol.cpp",
76    "src/animation/rs_cubic_bezier_interpolator.cpp",
77    "src/animation/rs_interpolator.cpp",
78    "src/animation/rs_render_animation.cpp",
79    "src/animation/rs_render_curve_animation.cpp",
80    "src/animation/rs_render_interpolating_spring_animation.cpp",
81    "src/animation/rs_render_keyframe_animation.cpp",
82    "src/animation/rs_render_particle.cpp",
83    "src/animation/rs_render_particle_animation.cpp",
84    "src/animation/rs_render_particle_effector.cpp",
85    "src/animation/rs_render_particle_emitter.cpp",
86    "src/animation/rs_render_particle_system.cpp",
87    "src/animation/rs_render_path_animation.cpp",
88    "src/animation/rs_render_property_animation.cpp",
89    "src/animation/rs_render_spring_animation.cpp",
90    "src/animation/rs_render_transition.cpp",
91    "src/animation/rs_render_transition_effect.cpp",
92    "src/animation/rs_spring_interpolator.cpp",
93    "src/animation/rs_spring_model.cpp",
94    "src/animation/rs_steps_interpolator.cpp",
95    "src/animation/rs_value_estimator.cpp",
96
97    # message(depracated)
98    "src/command/rs_message_processor.cpp",
99
100    # modifier
101    "src/modifier/rs_render_modifier.cpp",
102    "src/modifier/rs_render_property.cpp",
103
104    #command
105    "src/command/rs_animation_command.cpp",
106    "src/command/rs_base_node_command.cpp",
107    "src/command/rs_canvas_drawing_node_command.cpp",
108    "src/command/rs_canvas_node_command.cpp",
109    "src/command/rs_command_factory.cpp",
110    "src/command/rs_display_node_command.cpp",
111    "src/command/rs_effect_node_command.cpp",
112    "src/command/rs_frame_rate_linker_command.cpp",
113    "src/command/rs_node_command.cpp",
114    "src/command/rs_node_showing_command.cpp",
115    "src/command/rs_proxy_node_command.cpp",
116    "src/command/rs_root_node_command.cpp",
117    "src/command/rs_surface_node_command.cpp",
118
119    #offscreen_render
120    "src/offscreen_render/rs_offscreen_render_thread.cpp",
121
122    #common
123    "src/common/rs_background_thread.cpp",
124    "src/common/rs_color.cpp",
125    "src/common/rs_common_def.cpp",
126    "src/common/rs_common_tools.cpp",
127    "src/common/rs_obj_abs_geometry.cpp",
128    "src/common/rs_occlusion_region.cpp",
129    "src/common/rs_occlusion_region_helper.cpp",
130    "src/common/rs_thread_handler_generic.cpp",
131    "src/common/rs_thread_looper_generic.cpp",
132    "src/common/rs_thread_looper_impl.cpp",
133
134    #delegate
135    "src/delegate/rs_functional_delegate.cpp",
136
137    #ipc_callbacks
138    "src/ipc_callbacks/buffer_available_callback_ipc_interface_code_access_verifier.cpp",
139    "src/ipc_callbacks/buffer_available_callback_proxy.cpp",
140    "src/ipc_callbacks/buffer_available_callback_stub.cpp",
141    "src/ipc_callbacks/buffer_clear_callback_ipc_interface_code_access_verifier.cpp",
142    "src/ipc_callbacks/buffer_clear_callback_proxy.cpp",
143    "src/ipc_callbacks/buffer_clear_callback_stub.cpp",
144    "src/ipc_callbacks/hgm_config_change_callback_proxy.cpp",
145    "src/ipc_callbacks/hgm_config_change_callback_stub.cpp",
146    "src/ipc_callbacks/iapplication_agent_ipc_interface_code_access_verifier.cpp",
147    "src/ipc_callbacks/rs_application_agent_proxy.cpp",
148    "src/ipc_callbacks/rs_application_agent_stub.cpp",
149    "src/ipc_callbacks/rs_ihgm_config_change_callback_ipc_interface_code_access_verifier.cpp",
150    "src/ipc_callbacks/rs_iocclusion_change_callback_ipc_interface_code_access_verifier.cpp",
151    "src/ipc_callbacks/rs_isurface_occlusion_change_callback_ipc_interface_code_access_verifier.cpp",
152    "src/ipc_callbacks/rs_occlusion_change_callback_proxy.cpp",
153    "src/ipc_callbacks/rs_occlusion_change_callback_stub.cpp",
154    "src/ipc_callbacks/rs_rt_refresh_callback.cpp",
155    "src/ipc_callbacks/rs_surface_occlusion_change_callback_proxy.cpp",
156    "src/ipc_callbacks/rs_surface_occlusion_change_callback_stub.cpp",
157    "src/ipc_callbacks/screen_change_callback_ipc_interface_code_access_verifier.cpp",
158    "src/ipc_callbacks/screen_change_callback_proxy.cpp",
159    "src/ipc_callbacks/screen_change_callback_stub.cpp",
160    "src/ipc_callbacks/surface_capture_callback_ipc_interface_code_access_verifier.cpp",
161    "src/ipc_callbacks/surface_capture_callback_proxy.cpp",
162    "src/ipc_callbacks/surface_capture_callback_stub.cpp",
163
164    #ipc_security
165    "src/ipc_security/rs_ipc_interface_code_access_verifier_base.cpp",
166
167    #memory
168    "src/memory/rs_memory_graphic.cpp",
169    "src/memory/rs_memory_track.cpp",
170    "src/memory/rs_tag_tracker.cpp",
171
172    #pipeline
173    "src/pipeline/rs_canvas_drawing_render_node.cpp",
174    "src/pipeline/rs_canvas_render_node.cpp",
175    "src/pipeline/rs_context.cpp",
176    "src/pipeline/rs_dirty_region_manager.cpp",
177    "src/pipeline/rs_display_render_node.cpp",
178    "src/pipeline/rs_draw_cmd.cpp",
179    "src/pipeline/rs_draw_cmd_list.cpp",
180    "src/pipeline/rs_effect_render_node.cpp",
181    "src/pipeline/rs_occlusion_config.cpp",
182    "src/pipeline/rs_paint_filter_canvas.cpp",
183    "src/pipeline/rs_proxy_render_node.cpp",
184    "src/pipeline/rs_recording_canvas.cpp",
185    "src/pipeline/rs_render_content.cpp",
186    "src/pipeline/rs_render_display_sync.cpp",
187    "src/pipeline/rs_render_frame_rate_linker.cpp",
188    "src/pipeline/rs_render_frame_rate_linker_map.cpp",
189    "src/pipeline/rs_render_node.cpp",
190    "src/pipeline/rs_render_node_map.cpp",
191    "src/pipeline/rs_root_render_node.cpp",
192    "src/pipeline/rs_single_frame_composer.cpp",
193    "src/pipeline/rs_surface_handler.cpp",
194    "src/pipeline/rs_surface_render_node.cpp",
195    "src/pipeline/rs_task_dispatcher.cpp",
196    "src/pipeline/rs_uni_render_judgement.cpp",
197    "src/pipeline/sk_resource_manager.cpp",
198
199    #property
200    "src/property/rs_color_picker_cache_task.cpp",
201    "src/property/rs_filter_cache_manager.cpp",
202    "src/property/rs_point_light_manager.cpp",
203    "src/property/rs_properties.cpp",
204    "src/property/rs_properties_painter.cpp",
205    "src/property/rs_property_drawable.cpp",
206    "src/property/rs_property_drawable_bounds_geometry.cpp",
207    "src/property/rs_property_drawable_frame_geometry.cpp",
208    "src/property/rs_property_drawable_utilities.cpp",
209    "src/property/rs_property_trace.cpp",
210
211    #render
212    "src/render/rs_aibar_filter.cpp",
213    "src/render/rs_blur_filter.cpp",
214    "src/render/rs_border.cpp",
215    "src/render/rs_color_extract.cpp",
216    "src/render/rs_color_picker.cpp",
217    "src/render/rs_filter.cpp",
218    "src/render/rs_image.cpp",
219    "src/render/rs_image_base.cpp",
220    "src/render/rs_image_cache.cpp",
221    "src/render/rs_kawase_blur.cpp",
222    "src/render/rs_light_up_effect_filter.cpp",
223    "src/render/rs_linear_gradient_blur_filter.cpp",
224    "src/render/rs_mask.cpp",
225    "src/render/rs_material_filter.cpp",
226    "src/render/rs_path.cpp",
227    "src/render/rs_pixel_map_util.cpp",
228    "src/render/rs_resource_manager.cpp",
229    "src/render/rs_shader.cpp",
230    "src/render/rs_shadow.cpp",
231    "src/render/rs_skia_filter.cpp",
232
233    #transaction
234    "src/transaction/rs_hgm_config_data.cpp",
235    "src/transaction/rs_occlusion_data.cpp",
236    "src/transaction/rs_transaction_data.cpp",
237    "src/transaction/rs_transaction_proxy.cpp",
238
239    #screen_manager
240    "src/screen_manager/rs_screen_capability.cpp",
241    "src/screen_manager/rs_screen_data.cpp",
242    "src/screen_manager/rs_screen_hdr_capability.cpp",
243    "src/screen_manager/rs_screen_mode_info.cpp",
244    "src/screen_manager/rs_screen_props.cpp",
245    "src/screen_manager/rs_virtual_screen_resolution.cpp",
246  ]
247
248  if (is_cross_platform) {
249    sources -= [
250      #command
251      "src/command/rs_display_node_command.cpp",
252
253      #common
254      "src/common/rs_occlusion_region.cpp",
255      "src/common/rs_occlusion_region_helper.cpp",
256      "src/common/rs_thread_handler_generic.cpp",
257      "src/common/rs_thread_looper_generic.cpp",
258      "src/common/rs_thread_looper_impl.cpp",
259
260      #ipc_callbacks
261      "src/ipc_callbacks/buffer_available_callback_ipc_interface_code_access_verifier.cpp",
262      "src/ipc_callbacks/buffer_available_callback_proxy.cpp",
263      "src/ipc_callbacks/buffer_available_callback_stub.cpp",
264      "src/ipc_callbacks/buffer_clear_callback_ipc_interface_code_access_verifier.cpp",
265      "src/ipc_callbacks/buffer_clear_callback_proxy.cpp",
266      "src/ipc_callbacks/buffer_clear_callback_stub.cpp",
267      "src/ipc_callbacks/hgm_config_change_callback_proxy.cpp",
268      "src/ipc_callbacks/hgm_config_change_callback_stub.cpp",
269      "src/ipc_callbacks/rs_ihgm_config_change_callback_ipc_interface_code_access_verifier.cpp",
270      "src/ipc_callbacks/rs_iocclusion_change_callback_ipc_interface_code_access_verifier.cpp",
271      "src/ipc_callbacks/rs_isurface_occlusion_change_callback_ipc_interface_code_access_verifier.cpp",
272      "src/ipc_callbacks/rs_occlusion_change_callback_proxy.cpp",
273      "src/ipc_callbacks/rs_occlusion_change_callback_stub.cpp",
274      "src/ipc_callbacks/rs_surface_occlusion_change_callback_proxy.cpp",
275      "src/ipc_callbacks/rs_surface_occlusion_change_callback_stub.cpp",
276      "src/ipc_callbacks/screen_change_callback_ipc_interface_code_access_verifier.cpp",
277      "src/ipc_callbacks/screen_change_callback_proxy.cpp",
278      "src/ipc_callbacks/screen_change_callback_stub.cpp",
279      "src/ipc_callbacks/surface_capture_callback_ipc_interface_code_access_verifier.cpp",
280      "src/ipc_callbacks/surface_capture_callback_proxy.cpp",
281      "src/ipc_callbacks/surface_capture_callback_stub.cpp",
282
283      #ipc_security
284      "src/ipc_security/rs_ipc_interface_code_access_verifier_base.cpp",
285
286      #memory
287      "src/memory/rs_memory_graphic.cpp",
288      "src/memory/rs_memory_track.cpp",
289      "src/memory/rs_tag_tracker.cpp",
290
291      #pipeline
292
293      "src/pipeline/rs_display_render_node.cpp",
294      "src/pipeline/rs_occlusion_config.cpp",
295
296      #property
297      "src/property/rs_property_drawable.cpp",
298      "src/property/rs_property_drawable_bounds_geometry.cpp",
299      "src/property/rs_property_drawable_frame_geometry.cpp",
300      "src/property/rs_property_drawable_utilities.cpp",
301
302      #transaction
303      "src/transaction/rs_hgm_config_data.cpp",
304      "src/transaction/rs_occlusion_data.cpp",
305
306      #screen_manager
307      "src/screen_manager/rs_screen_capability.cpp",
308      "src/screen_manager/rs_screen_data.cpp",
309      "src/screen_manager/rs_screen_hdr_capability.cpp",
310      "src/screen_manager/rs_screen_mode_info.cpp",
311      "src/screen_manager/rs_screen_props.cpp",
312      "src/screen_manager/rs_virtual_screen_resolution.cpp",
313    ]
314  }
315
316  cflags = [
317    "-Wall",
318    "-Wno-pointer-arith",
319    "-Wno-non-virtual-dtor",
320    "-Wno-missing-field-initializers",
321    "-Wno-c++11-narrowing",
322    "-fvisibility=hidden",
323    "-DIMAGE_COLORSPACE_FLAG",
324  ]
325
326  if (is_ohos && is_clang && (target_cpu == "arm" || target_cpu == "arm64")) {
327    cflags += [ "-flto=thin" ]
328    if (enhanced_opt) {
329      cflags += [ "-fwhole-program-vtables" ]
330      if (graphic_2d_feature_enable_pgo &&
331          graphic_2d_feature_product != "default") {
332        cflags += [
333          "-fprofile-use=" + rebase_path(
334                  "${graphic_2d_feature_pgo_path}/librender_service_base.profdata",
335                  root_build_dir),
336          "-Wno-error=backend-plugin",
337          "-Wno-profile-instr-out-of-date",
338          "-Wno-profile-instr-unprofiled",
339        ]
340      }
341      if (graphic_2d_feature_product == "pc" && target_cpu == "arm64") {
342        cflags += [ "-moutline-atomics" ]
343      }
344    }
345  }
346
347  cflags_cc = [
348    "-std=c++17",
349    "-fvisibility-inlines-hidden",
350  ]
351
352  public_configs = [ ":export_config" ]
353  public_deps = [ "src/platform:platform" ]
354
355  if (defined(use_new_render_context) && use_new_render_context) {
356    public_deps += [ "src/render_backend:librender_backend" ]
357  }
358
359  if (enable_export_macro) {
360    defines += [ "ENABLE_EXPORT_MACRO" ]
361  }
362
363  if (rs_enable_gpu) {
364    defines += [
365      "GL_GLEXT_PROTOTYPES",
366      "EGL_EGLEXT_PROTOTYPES",
367    ]
368  }
369
370  if (current_os == "ohos") {
371    defines += [ "IS_OHOS" ]
372    sources += [
373      "src/benchmarks/file_utils.cpp",
374      "src/benchmarks/rs_recording_thread.cpp",
375    ]
376  }
377
378  include_dirs = [
379    "$graphic_2d_root/frameworks/surface/include",
380    "$graphic_2d_root/rosen/modules/render_service_base/src",
381    "$graphic_2d_root/rosen/modules/render_service_base/include",
382    "$graphic_2d_root/utils/color_manager/export",
383    "$graphic_2d_root/utils/log",
384    "$graphic_2d_root/interfaces/inner_api/surface",
385  ]
386  include_dirs += [ "//third_party/skia/src" ]
387  deps = [
388    "$graphic_2d_root/utils/sandbox:sandbox_utils",
389    "$rosen_root/modules/platform:hilog",
390    "$rosen_root/modules/platform:ipc_core",
391  ]
392  external_deps = [ "hilog:libhilog" ]
393
394  if (!is_mingw && !is_mac && !is_cross_platform) {
395    defines += [ "ENABLE_RUST" ]
396    sources += get_target_outputs(":particle_cxx_gen")
397    include_dirs += [
398      "//third_party/rust/crates/cxx/include",
399      "${target_gen_dir}/rust/src",
400    ]
401    deps += [
402      ":particle_cxx_cppdeps",
403      ":particle_cxx_gen",
404      ":particle_cxx_rust",
405    ]
406  }
407
408  if (rosen_is_ohos && defined(enable_ipc_security) && enable_ipc_security) {
409    defines += [ "ENABLE_IPC_SECURITY" ]
410    external_deps += [
411      "access_token:libaccesstoken_sdk",
412      "access_token:libtokenid_sdk",
413      "ipc:ipc_core",
414    ]
415  }
416
417  if (rosen_is_ohos && defined(enable_ipc_security_access_counter) &&
418      enable_ipc_security_access_counter) {
419    defines += [ "ENABLE_IPC_SECURITY_ACCESS_COUNTER" ]
420  }
421
422  if (defined(use_rosen_drawing) && use_rosen_drawing) {
423    defines += [ "USE_ROSEN_DRAWING" ]
424    if (ace_enable_gpu) {
425      defines += [ "ACE_ENABLE_GPU" ]
426    }
427
428    deps += [ "$rosen_root/modules/2d_graphics:2d_graphics" ]
429  }
430
431  if (rosen_cross_platform) {
432    public_configs += [
433      "$rosen_root/modules/platform:eventhandler_config",
434      "$rosen_root/modules/platform:image_native_config",
435    ]
436  } else {
437    external_deps += [ "hitrace:hitrace_meter" ]
438  }
439
440  if (rosen_is_win) {
441    defines += [ "_USE_MATH_DEFINES" ]
442  }
443
444  if (defined(ddgr_ext_configs)) {
445    libs = ddgr_ext_configs.ddgr_libs
446    defines += ddgr_ext_configs.ddgr_defines
447    sources += ddgr_ext_configs.libddgr_ext_adaptor_base_sources
448    include_dirs += ddgr_ext_configs.libddgr_ext_adaptor_include_dirs
449  }
450
451  if (defined(graphic_2d_ext_configs.vendor_root)) {
452    sources -= graphic_2d_ext_configs.librender_service_base_ext_sources_del
453    sources += graphic_2d_ext_configs.librender_service_base_ext_sources
454  }
455
456  part_name = "graphic_2d"
457  subsystem_name = "graphic"
458}
459
460config("render_service_base_all_deps_config") {
461  include_dirs = [ "include" ]
462}
463
464config("render_service_base_link_config") {
465  if (is_ohos && is_clang && (target_cpu == "arm" || target_cpu == "arm64")) {
466    ldflags = [
467      "-Wl,--lto-O2",
468      "-Wl,-mllvm",
469      "-Wl,-wholeprogramdevirt-check=fallback",
470      "-Wl,-Bsymbolic",
471    ]
472  }
473}
474
475ohos_shared_library("librender_service_base") {
476  branch_protector_ret = "pac_ret"
477  if (!is_mingw && !is_win && !is_linux) {
478    sanitize = {
479      cfi = false
480      cfi_cross_dso = false
481      debug = false
482      blocklist = "./rs_base_blocklist.txt"
483    }
484  }
485
486  all_dependent_configs = [ ":render_service_base_all_deps_config" ]
487
488  if (enhanced_opt) {
489    configs = [ ":render_service_base_link_config" ]
490  }
491
492  deps = [ "$rosen_root/modules/platform:eventhandler" ]
493  public_deps = [
494    ":render_service_base_src",
495    "src/platform:platform",
496  ]
497  external_deps = [ "hilog:libhilog" ]
498
499  if (defined(use_new_render_context) && use_new_render_context) {
500    public_deps += [ "src/render_backend:librender_backend" ]
501  }
502
503  innerapi_tags = [ "platformsdk_indirect" ]
504  part_name = "graphic_2d"
505  subsystem_name = "graphic"
506}
507
508ohos_source_set("librender_service_base_static") {
509  branch_protector_ret = "pac_ret"
510  sanitize = {
511    cfi = false
512    cfi_cross_dso = false
513    debug = false
514    blocklist = "./rs_base_blocklist.txt"
515  }
516  all_dependent_configs = [ ":render_service_base_all_deps_config" ]
517  deps = [ "$rosen_root/modules/platform:eventhandler" ]
518  public_deps = [
519    ":render_service_base_src",
520    "src/platform:platform",
521  ]
522
523  if (defined(use_new_render_context) && use_new_render_context) {
524    public_deps += [ "src/render_backend:librender_backend" ]
525  }
526
527  part_name = "graphic_2d"
528  subsystem_name = "graphic"
529}
530