1# Copyright (C) 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")
16
17config("libhyper_graphic_manager_config") {
18  visibility = [ ":*" ]
19
20  include_dirs = [
21    "core/config",
22    "core/frame_rate_manager",
23    "core/hgm_screen_manager",
24    "core/utils",
25    "$graphic_2d_root/rosen/modules/composer/hdi_backend/include",
26    "$graphic_2d_root/rosen/modules/platform/ipc_core",
27    "$graphic_2d_root/rosen/modules/render_service/core",
28    "$graphic_2d_root/rosen/modules/render_service_base/include",
29    "$graphic_2d_root/rosen/modules/composer/vsync/include",
30    "$graphic_2d_root/utils/log",
31    "$graphic_2d_root/interfaces/inner_api/composer",
32    "$graphic_2d_root/interfaces/inner_api/common",
33    "$graphic_2d_root/rosen/modules/render_frame_trace/include",
34    "$graphic_2d_root/utils/log",
35    "$graphic_2d_root/utils/sandbox",
36  ]
37
38  cflags = [ "-g3" ]
39  if (is_ohos && is_clang && (target_cpu == "arm" || target_cpu == "arm64")) {
40    if (!use_libfuzzer) {
41      cflags += [ "-flto=thin" ]
42    }
43  }
44}
45
46ohos_shared_library("libhyper_graphic_manager") {
47  branch_protector_ret = "pac_ret"
48  sanitize = {
49    cfi = true
50    cfi_cross_dso = true
51    cfi_vcall_icall_only = true
52    debug = false
53  }
54  public_configs = [ ":libhyper_graphic_manager_config" ]
55
56  sources = [
57    "core/config/hgm_config_callback_manager.cpp",
58    "core/config/xml_parser.cpp",
59    "core/frame_rate_manager/hgm_energy_consumption_policy.cpp",
60    "core/frame_rate_manager/hgm_frame_rate_manager.cpp",
61    "core/frame_rate_manager/hgm_idle_detector.cpp",
62    "core/frame_rate_manager/hgm_multi_app_strategy.cpp",
63    "core/frame_rate_manager/hgm_task_handle_thread.cpp",
64    "core/frame_rate_manager/hgm_touch_manager.cpp",
65    "core/frame_rate_manager/hgm_vsync_generator_controller.cpp",
66    "core/hgm_screen_manager/hgm_core.cpp",
67    "core/hgm_screen_manager/hgm_screen.cpp",
68    "core/hgm_screen_manager/hgm_screen_info.cpp",
69    "core/utils/hgm_one_shot_timer.cpp",
70    "frame_rate_vote/rs_frame_rate_vote.cpp",
71    "frame_rate_vote/rs_video_frame_rate_vote.cpp",
72  ]
73  if (is_ohos && is_clang && (target_cpu == "arm" || target_cpu == "arm64")) {
74    cflags = []
75    if (!use_libfuzzer) {
76      cflags += [ "-flto=thin" ]
77    }
78    if (enhanced_opt) {
79      if (!use_libfuzzer) {
80        cflags += [ "-fwhole-program-vtables" ]
81      }
82    }
83  }
84
85  deps = [
86    "$graphic_2d_root/rosen/modules/render_frame_trace:render_frame_trace",
87    "$graphic_2d_root/rosen/modules/render_service_base:librender_service_base",
88  ]
89
90  external_deps = [
91    "c_utils:utils",
92    "config_policy:configpolicy_util",
93    "eventhandler:libeventhandler",
94    "ffrt:libffrt",
95    "hicollie:libhicollie",
96    "hisysevent:libhisysevent",
97    "hitrace:hitrace_meter",
98    "init:libbeget_proxy",
99    "init:libbegetutil",
100    "ipc:ipc_core",
101    "libxml2:libxml2",
102  ]
103
104  if (defined(graphic_2d_hgm_configs.vendor_root)) {
105    sources += graphic_2d_hgm_configs.libhyper_graphic_manager_ext_sources
106    sources -= graphic_2d_hgm_configs.libhyper_graphic_manager_ext_sources_del
107  }
108
109  part_name = "graphic_2d"
110  subsystem_name = "graphic"
111
112  if (is_standard_system) {
113    external_deps += [ "hilog:libhilog" ]
114  } else {
115    external_deps += [ "hilog:libhilog" ]
116  }
117}
118