# Copyright (c) 2021-2024 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import("//build/ohos.gni") import("//foundation/graphic/graphic_2d/graphic_config.gni") import("render_service_client.gni") config("render_service_client_config") { include_dirs = [ "$graphic_2d_root/rosen/modules", "$graphic_2d_root/rosen/modules/render_service_client/core", "$graphic_2d_root/rosen/modules/render_service_base/include", "$graphic_2d_root/interfaces/inner_api/common", "$graphic_2d_root/interfaces/inner_api/composer", "$graphic_2d_root/rosen/modules/2d_engine/rosen_text/export/rosen_text/", "$graphic_2d_root/rosen/modules/2d_graphics", ] defines = rs_common_define if (defined(is_arkui_x) && is_arkui_x) { include_dirs += [ "$graphic_2d_root/utils/color_manager/export", "//foundation/multimedia/image_framework/interfaces/innerkits/include", ] } } template("render_service_client_source_set") { ohos_source_set(target_name) { branch_protector_ret = "pac_ret" sanitize = { cfi = false cfi_cross_dso = false debug = false blocklist = "./rs_client_blocklist.txt" if (rosen_is_ohos) { boundary_sanitize = true integer_overflow = true ubsan = true } } defines = [] defines += gpu_defines defines += [ "MODULE_RSC" ] is_static_lib = invoker.is_static_lib include_dirs = [ "$graphic_2d_root/rosen/modules/2d_graphics/src", "$graphic_2d_root/rosen/modules/frame_report/include", "$graphic_2d_root/rosen/modules/render_frame_trace/include", "$graphic_2d_root/rosen/modules/render_service_base/src", "$graphic_2d_root/utils/color_manager/export", "$graphic_2d_root/rosen/modules/2d_engine/rosen_text/symbol/symbol_animation", "$graphic_2d_root/utils/log", "$graphic_2d_root/utils/sandbox", ] if (defined(is_arkui_x) && is_arkui_x) { include_dirs += [ "$graphic_2d_root/utils/color_manager/export", "//foundation/multimedia/image_framework/interfaces/innerkits/include", "//foundation/graphic/graphic_surface/interfaces/inner_api/surface", ] } sources = [ #animation "core/animation/rs_animation.cpp", "core/animation/rs_animation_callback.cpp", "core/animation/rs_animation_group.cpp", "core/animation/rs_animation_timing_curve.cpp", "core/animation/rs_curve_animation.cpp", "core/animation/rs_implicit_animation_param.cpp", "core/animation/rs_implicit_animator.cpp", "core/animation/rs_implicit_animator_map.cpp", "core/animation/rs_interactive_implict_animator.cpp", "core/animation/rs_interpolating_spring_animation.cpp", "core/animation/rs_keyframe_animation.cpp", "core/animation/rs_path_animation.cpp", "core/animation/rs_property_animation.cpp", "core/animation/rs_spring_animation.cpp", "core/animation/rs_symbol_animation.cpp", "core/animation/rs_transition.cpp", "core/animation/rs_transition_effect.cpp", #modifier "core/modifier/rs_extended_modifier.cpp", "core/modifier/rs_modifier.cpp", "core/modifier/rs_modifier_extractor.cpp", "core/modifier/rs_modifier_manager.cpp", "core/modifier/rs_modifier_manager_map.cpp", "core/modifier/rs_property.cpp", "core/modifier/rs_property_modifier.cpp", "core/modifier/rs_showing_properties_freezer.cpp", #jank_detector "core/jank_detector/rs_jank_detector.cpp", #pipeline "core/pipeline/rs_divided_ui_capture.cpp", "core/pipeline/rs_node_map.cpp", "core/pipeline/rs_render_thread.cpp", "core/pipeline/rs_render_thread_util.cpp", "core/pipeline/rs_render_thread_visitor.cpp", #transaction "core/transaction/rs_application_agent_impl.cpp", "core/transaction/rs_interfaces.cpp", "core/transaction/rs_render_thread_client.cpp", "core/transaction/rs_sync_transaction_controller.cpp", "core/transaction/rs_transaction.cpp", #ui "core/ui/rs_canvas_drawing_node.cpp", "core/ui/rs_canvas_node.cpp", "core/ui/rs_display_node.cpp", "core/ui/rs_effect_node.cpp", "core/ui/rs_ext_node_operation.cpp", "core/ui/rs_frame_rate_linker.cpp", "core/ui/rs_frame_rate_policy.cpp", "core/ui/rs_node.cpp", "core/ui/rs_proxy_node.cpp", "core/ui/rs_root_node.cpp", "core/ui/rs_surface_extractor.cpp", "core/ui/rs_surface_node.cpp", "core/ui/rs_texture_export.cpp", "core/ui/rs_ui_director.cpp", "core/ui/rs_ui_display_soloist.cpp", "core/ui/rs_ui_share_context.cpp", ] if (is_cross_platform) { #ui sources -= [ "core/ui/rs_display_node.cpp" ] defines += [ "CROSS_PLATFORM" ] } if (defined(graphic_2d_ext_configs.vendor_root)) { sources += graphic_2d_ext_configs.librender_service_client_ext_sources sources -= graphic_2d_ext_configs.librender_service_client_ext_sources_del } if (rosen_is_ohos) { sources += [ "$rosen_root/modules/frame_report/src/rs_frame_report.cpp" ] } else if (!is_arkui_x) { sources += [ "$rosen_root/modules/frame_report/src/mingw/rs_frame_report.cpp" ] } cflags = [ "-Wall", "-Wno-pointer-arith", "-Wno-non-virtual-dtor", "-Wno-missing-field-initializers", "-Wno-c++11-narrowing", "-fvisibility=hidden", ] if (is_ohos && is_clang && (target_cpu == "arm" || target_cpu == "arm64")) { if (!use_libfuzzer) { cflags += [ "-flto=thin" ] } if (enhanced_opt) { if (!use_libfuzzer) { cflags += [ "-fwhole-program-vtables" ] } } } cflags_cc = [ "-std=c++17", "-fvisibility-inlines-hidden", ] deps = [ "$graphic_2d_root/rosen/modules/platform:ipc_core", "$graphic_2d_root/rosen/modules/render_frame_trace:render_frame_trace", ] public_deps = [] if (enable_export_macro) { defines += [ "ENABLE_EXPORT_MACRO" ] } if (defined(use_rosen_drawing) && use_rosen_drawing) { defines += [ "USE_ROSEN_DRAWING" ] deps += [ "$graphic_2d_root/rosen/modules/2d_graphics:2d_graphics" ] if (rs_enable_gpu && !is_arkui_x) { defines += [ "RS_ENABLE_GPU" ] } if (current_os == "mingw") { defines += [ "WINDOWS_PLATFORM" ] } } if (is_arkui_x) { defines += [ "ARKUI_X_ENABLE" ] } if (rosen_is_ohos) { deps += [ "$graphic_2d_root/rosen/modules/frame_analyzer:libframe_analyzer", "$graphic_2d_root/utils/color_manager:color_manager", ] external_deps = [ "bundle_framework:appexecfwk_base", "bundle_framework:appexecfwk_core", "c_utils:utils", "hisysevent:libhisysevent", "hitrace:hitrace_meter", "image_framework:image_native", "qos_manager:qos", "samgr:samgr_proxy", ] defines += [ "RES_CLINET_SCHED_ENABLE" ] if (accessibility_enable) { external_deps += [ "accessibility:accessibilityconfig" ] external_deps += [ "accessibility:accessibility_common" ] defines += accessibility_defines } } else if (rosen_preview) { deps += [ "$graphic_2d_root/frameworks/opengl_wrapper:EGL", "$graphic_2d_root/frameworks/opengl_wrapper:GLESv3", "$graphic_2d_root/rosen/modules/glfw_render_context:libglfw_render_context", ] if (rss_enabled) { external_deps = [] } } if (defined(external_deps)) { external_deps += [ "hilog:libhilog" ] } else { external_deps = [ "hilog:libhilog" ] } external_deps += [ "graphic_surface:surface_headers" ] if (rosen_cross_platform) { deps += [ "$rosen_root/modules/platform:hilog" ] } if (rss_enabled) { defines += [ "OHOS_RSS_CLIENT" ] external_deps += [ "resource_schedule_service:ressched_client" ] } if (is_static_lib) { public_deps += [ "$graphic_2d_root/rosen/modules/render_service_base:librender_service_base_static" ] } else { public_deps += [ "$graphic_2d_root/rosen/modules/render_service_base:librender_service_base" ] deps += [ "$rosen_root/modules/platform:eventhandler" ] } if (defined(graphic_2d_broker_configs.vendor_root) && !rosen_preview) { sources += graphic_2d_broker_configs.librender_service_client_ext_broker_sources sources -= graphic_2d_broker_configs.librender_service_client_ext_broker_sources_del external_deps += [ "ipc:ipc_core" ] external_deps += [ "samgr:samgr_proxy" ] } if (tp_feature_enable) { defines += tp_defines } if (defined(use_new_render_context) && use_new_render_context) { public_deps += [ "$graphic_2d_root/rosen/modules/render_service_base/src/render_backend:librender_backend" ] } public_configs = [ ":render_service_client_config" ] part_name = "graphic_2d" subsystem_name = "graphic" } } render_service_client_source_set("render_service_client_src") { is_static_lib = false } render_service_client_source_set("render_service_client_src_static") { is_static_lib = true } config("render_service_client_link_config") { if (is_ohos && is_clang && (target_cpu == "arm" || target_cpu == "arm64")) { ldflags = [ "-Wl,--lto-O2", "-Wl,-mllvm", "-Wl,-wholeprogramdevirt-check=fallback", "-Wl,-Bsymbolic", ] } } ohos_shared_library("librender_service_client") { branch_protector_ret = "pac_ret" sanitize = { cfi = false cfi_cross_dso = false debug = false blocklist = "./rs_client_blocklist.txt" } public_configs = [ ":render_service_client_config" ] public_deps = [ ":render_service_client_src" ] external_deps = [ "hilog:libhilog" ] if (enhanced_opt) { configs = [ ":render_service_client_link_config" ] } public_external_deps = [] if (rosen_is_ohos) { public_external_deps += [ "graphic_surface:surface" ] } else if (rosen_preview) { public_external_deps += [ "graphic_surface:surface_headers" ] } part_name = "graphic_2d" subsystem_name = "graphic" } ohos_source_set("librender_service_client_static") { branch_protector_ret = "pac_ret" sanitize = { cfi = false cfi_cross_dso = false debug = false blocklist = "./rs_client_blocklist.txt" } public_deps = [ ":render_service_client_src_static" ] deps = [ "$rosen_root/modules/platform:eventhandler" ] public_external_deps = [] if (rosen_is_ohos) { public_external_deps += [ "graphic_surface:surface" ] } else if (rosen_preview) { public_external_deps += [ "graphic_surface:surface_headers" ] } part_name = "graphic_2d" subsystem_name = "graphic" } group("test") { if (rosen_is_ohos) { testonly = true deps = [ "test:test" ] } }