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")
16
17ohos_executable("drawing_engine_sample") {
18  install_enable = true
19  cflags = [
20    "-Wall",
21    "-Werror",
22    "-Wno-unused-parameter",
23    "-Wno-missing-field-initializers",
24    "-Wno-unused-variable",
25    "-Werror,-Wreturn-type",
26    "-Wno-error=deprecated-declarations",
27  ]
28
29  sanitize = {
30    cfi = true
31    cfi_cross_dso = true
32    debug = false
33  }
34
35  sources = [
36    "drawing_engine_sample.cpp",
37    "main.cpp",
38  ]
39
40  sources += [
41    "drawing_engine/canvas_context.cpp",
42    "drawing_engine/drawing_proxy.cpp",
43    "drawing_engine/drawing_surface/surface_frame_ohos_raster.cpp",
44    "drawing_engine/drawing_surface/surface_ohos.cpp",
45    "drawing_engine/drawing_surface/surface_ohos_raster.cpp",
46    "drawing_engine/software_render_backend.cpp",
47  ]
48
49  if (rs_enable_gpu) {
50    if (graphic_2d_feature_enable_vulkan) {
51      sources += [
52        "drawing_engine/drawing_surface/surface_frame_ohos_vulkan.cpp",
53        "drawing_engine/drawing_surface/surface_ohos_vulkan.cpp",
54        "drawing_engine/vulkan_render_backend.cpp",
55      ]
56    }
57    if (graphic_2d_feature_enable_opengl) {
58      sources += [
59        "drawing_engine/drawing_surface/surface_frame_ohos_gl.cpp",
60        "drawing_engine/drawing_surface/surface_ohos_gl.cpp",
61        "drawing_engine/egl_manager.cpp",
62        "drawing_engine/gles_render_backend.cpp",
63      ]
64    }
65  }
66
67  include_dirs = [
68    "include",
69    "drawing_engine",
70    "drawing_engine/drawing_surface",
71    "foundation/communication/ipc/interfaces/innerkits/ipc_core/include",
72    "$graphic_2d_root/rosen/modules/composer/hdi_backend/include",
73    "$graphic_2d_root/interfaces/inner_api/common",
74    "$graphic_2d_root/rosen/include/common",
75    "$graphic_2d_root/rosen/modules/render_service_base/src/platform/ohos/backend",
76    "$graphic_2d_root/rosen/modules/render_service_base/src",
77    "$graphic_2d_root/rosen/modules/render_service_client/core",
78  ]
79
80  sources += [
81    "benchmarks/benchmark_config.cpp",
82    "benchmarks/benchmark_dcl/drawing_command.cpp",
83    "benchmarks/benchmark_dcl/drawing_playback.cpp",
84    "benchmarks/benchmark_dcl/skia_recording.cpp",
85    "benchmarks/benchmark_multithread/drawing_mutilthread.cpp",
86    "benchmarks/benchmark_singlethread/drawing_singlethread.cpp",
87  ]
88
89  include_dirs += [
90    "benchmarks",
91    "benchmarks/benchmark_singlethread",
92    "benchmarks/benchmark_multithread",
93    "benchmarks/benchmark_api",
94    "benchmarks/benchmark_dcl",
95  ]
96
97  deps = [ "$graphic_2d_root/rosen/modules/composer:libcomposer" ]
98
99  external_deps = [ "skia:skia_canvaskit" ]
100
101  public_deps = [
102    "$graphic_2d_root/frameworks/opengl_wrapper:EGL",
103    "$graphic_2d_root/frameworks/opengl_wrapper:GLESv3",
104  ]
105  defines = gpu_defines
106
107  if (defined(use_rosen_drawing) && use_rosen_drawing) {
108    defines += [ "USE_ROSEN_DRAWING" ]
109
110    deps += [ "$graphic_2d_root/rosen/modules/2d_graphics:2d_graphics" ]
111  }
112  if (graphic_2d_feature_enable_flutter_vulkan) {
113    include_dirs += [ "//third_party/flutter/engine/flutter/vulkan" ]
114  }
115  public_deps += [
116    "$graphic_2d_root:libvulkan",
117    "$graphic_2d_root/rosen/modules/render_service_base:librender_service_base",
118  ]
119  public_external_deps = [ "openssl:libcrypto_shared" ]
120  external_deps += [
121    "c_utils:utils",
122    "eventhandler:libeventhandler",
123    "graphic_surface:sync_fence",
124    "hilog:libhilog",
125    "image_framework:image_native",
126    "init:libbegetutil",
127    "ipc:ipc_core",
128  ]
129
130  subsystem_name = "graphic"
131  part_name = "graphic_2d"
132}
133
134ohos_executable("drawing_sample_rs") {
135  install_enable = true
136
137  sources = [ "drawing_c_sample.cpp" ]
138
139  include_dirs = [
140    "$graphic_2d_root/rosen/modules/2d_graphics/include",
141    "$graphic_2d_root/rosen/modules/2d_graphics/src",
142    "$graphic_2d_root/rosen/modules/render_service_base/src",
143    "$graphic_2d_root/rosen/modules/render_service_base/include",
144    "$graphic_2d_root/rosen/modules/render_service_client",
145    "$graphic_2d_root/rosen/include/common",
146    "$window_base_path/interfaces/innerkits/wm",
147  ]
148
149  deps = [
150    "$graphic_2d_root/rosen/modules/2d_graphics:2d_graphics",
151    "$graphic_2d_root/rosen/modules/2d_graphics/drawing_ndk:native_drawing_ndk",
152    "$graphic_2d_root/rosen/modules/render_service_base:librender_service_base",
153    "$graphic_2d_root/rosen/modules/render_service_client:librender_service_client",
154  ]
155
156  external_deps = [
157    "c_utils:utils",
158    "hilog:libhilog",
159    "zlib:libz",
160  ]
161
162  part_name = "graphic_2d"
163  subsystem_name = "graphic"
164}
165
166ohos_executable("drawing_sample_canvaskit0310") {
167  install_enable = true
168
169  sources = [ "drawing_sample_canvaskit0310.cpp" ]
170
171  include_dirs = [
172    "$graphic_2d_root/rosen/modules/composer/hdi_backend/include",
173    "$graphic_2d_root/rosen/include/common",
174    "$graphic_2d_root/interfaces/inner_api/common",
175    "$graphic_2d_root/rosen/modules/composer/vsync/include",
176    "$graphic_2d_root/rosen/modules/2d_graphics/include",
177    "$graphic_2d_root/rosen/modules/2d_graphics/src",
178  ]
179
180  deps = [
181    "$graphic_2d_root/rosen/modules/2d_graphics:2d_graphics_canvaskit0310",
182    "$graphic_2d_root/rosen/modules/composer:libcomposer",
183    "$graphic_2d_root/utils:libgraphic_utils",
184  ]
185
186  external_deps = [
187    "graphic_surface:surface",
188    "hilog:libhilog",
189    "ipc:ipc_core",
190  ]
191
192  part_name = "graphic_2d"
193  subsystem_name = "graphic"
194}
195
196ohos_executable("drawing_sample_replayer") {
197  install_enable = true
198  cflags = [
199    "-Wall",
200    "-Werror",
201    "-Wno-unused-parameter",
202    "-Wno-missing-field-initializers",
203    "-Wno-unused-variable",
204    "-Werror,-Wreturn-type",
205    "-Wno-error=deprecated-declarations",
206  ]
207
208  sources = [ "drawing_sample_replayer.cpp" ]
209
210  sanitize = {
211    cfi = true
212    cfi_cross_dso = true
213    debug = false
214  }
215
216  include_dirs = [
217    "include",
218    "$graphic_2d_root/rosen/include/common",
219    "$graphic_2d_root/rosen/modules/render_service_base/src/platform/ohos/backend",
220    "$graphic_2d_root/rosen/modules/render_service_base/src",
221    "foundation/communication/ipc/interfaces/innerkits/ipc_core/include",
222    "foundation/communication/ipc/interfaces/innerkits/dm",
223    "$graphic_2d_root/rosen/modules/render_service_client/core",
224  ]
225
226  deps = [ "$graphic_2d_root/rosen/modules/render_service_client:librender_service_client" ]
227
228  public_deps = [
229    "$graphic_2d_root/frameworks/opengl_wrapper:EGL",
230    "$graphic_2d_root/frameworks/opengl_wrapper:GLESv3",
231  ]
232  defines = gpu_defines
233
234  if (defined(use_rosen_drawing) && use_rosen_drawing) {
235    defines += [ "USE_ROSEN_DRAWING" ]
236
237    deps += [ "$graphic_2d_root/rosen/modules/2d_graphics:2d_graphics" ]
238  }
239
240  defines += [
241    "VK_USE_PLATFORM_OHOS",
242    "NDEBUG",
243  ]
244  include_dirs += [
245    "$graphic_2d_root/frameworks/surface/include",
246    "$graphic_2d_root/rosen/modules/2d_graphics/include",
247    "$graphic_2d_root/interfaces/inner_api/surface",
248  ]
249  public_deps += [
250    "$graphic_2d_root:libvulkan",
251    "$graphic_2d_root/rosen/modules/render_service_base:librender_service_base",
252  ]
253  external_deps = [
254    "c_utils:utils",
255    "graphic_surface:surface",
256    "ipc:ipc_core",
257    "window_manager:libdm",
258  ]
259
260  subsystem_name = "graphic"
261  part_name = "graphic_2d"
262}
263