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    "$graphic_2d_root/rosen/modules/composer/hdi_backend/include",
72    "$graphic_2d_root/interfaces/inner_api/common",
73    "$graphic_2d_root/rosen/include/common",
74    "$graphic_2d_root/rosen/modules/render_service_base/src/platform/ohos/backend",
75    "$graphic_2d_root/rosen/modules/render_service_base/src",
76  ]
77
78  sources += [
79    "benchmarks/benchmark_config.cpp",
80    "benchmarks/benchmark_dcl/drawing_command.cpp",
81    "benchmarks/benchmark_dcl/drawing_playback.cpp",
82    "benchmarks/benchmark_dcl/skia_recording.cpp",
83    "benchmarks/benchmark_multithread/drawing_mutilthread.cpp",
84    "benchmarks/benchmark_singlethread/drawing_singlethread.cpp",
85  ]
86
87  include_dirs += [
88    "benchmarks",
89    "benchmarks/benchmark_singlethread",
90    "benchmarks/benchmark_multithread",
91    "benchmarks/benchmark_api",
92    "benchmarks/benchmark_dcl",
93  ]
94
95  deps = [ "$graphic_2d_root/rosen/modules/composer:libcomposer" ]
96
97  external_deps = [ "skia:skia_canvaskit" ]
98
99  public_deps = [
100    "$graphic_2d_root/frameworks/opengl_wrapper:EGL",
101    "$graphic_2d_root/frameworks/opengl_wrapper:GLESv3",
102  ]
103  defines = gpu_defines
104
105  if (defined(use_rosen_drawing) && use_rosen_drawing) {
106    defines += [ "USE_ROSEN_DRAWING" ]
107
108    deps += [ "$graphic_2d_root/rosen/modules/2d_graphics:2d_graphics" ]
109  }
110  if (graphic_2d_feature_enable_flutter_vulkan) {
111    include_dirs += [ "//third_party/flutter/engine/flutter/vulkan" ]
112  }
113  public_deps += [
114    "$graphic_2d_root:libvulkan",
115    "$graphic_2d_root/rosen/modules/render_service_base:librender_service_base",
116  ]
117  external_deps += [
118    "c_utils:utils",
119    "eventhandler:libeventhandler",
120    "graphic_surface:sync_fence",
121    "hilog:libhilog",
122    "image_framework:image_native",
123    "init:libbegetutil",
124    "ipc:ipc_core",
125  ]
126  public_external_deps = [ "openssl:libcrypto_shared" ]
127
128  subsystem_name = "graphic"
129  part_name = "graphic_2d"
130}
131
132ohos_executable("drawing_sample_rs") {
133  install_enable = true
134
135  sources = [ "drawing_c_sample.cpp" ]
136
137  include_dirs = [
138    "$graphic_2d_root/rosen/modules/2d_graphics/include",
139    "$graphic_2d_root/rosen/modules/2d_graphics/src",
140    "$graphic_2d_root/rosen/modules/render_service_base/src",
141    "$graphic_2d_root/rosen/modules/render_service_base/include",
142    "$graphic_2d_root/rosen/modules/render_service_client",
143    "$graphic_2d_root/rosen/include/common",
144  ]
145
146  deps = [
147    "$graphic_2d_root/rosen/modules/2d_graphics:2d_graphics",
148    "$graphic_2d_root/rosen/modules/2d_graphics/drawing_ndk:native_drawing_ndk",
149    "$graphic_2d_root/rosen/modules/render_service_base:librender_service_base",
150    "$graphic_2d_root/rosen/modules/render_service_client:librender_service_client",
151  ]
152
153  external_deps = [
154    "c_utils:utils",
155    "hilog:libhilog",
156  ]
157
158  part_name = "graphic_2d"
159  subsystem_name = "graphic"
160}
161
162ohos_executable("drawing_sample_canvaskit0310") {
163  install_enable = true
164
165  sources = [ "drawing_sample_canvaskit0310.cpp" ]
166
167  include_dirs = [
168    "$graphic_2d_root/rosen/modules/composer/hdi_backend/include",
169    "$graphic_2d_root/rosen/include/common",
170    "$graphic_2d_root/interfaces/inner_api/common",
171    "$graphic_2d_root/rosen/modules/composer/vsync/include",
172    "$graphic_2d_root/rosen/modules/2d_graphics/include",
173    "$graphic_2d_root/rosen/modules/2d_graphics/src",
174  ]
175
176  deps = [
177    "$graphic_2d_root/rosen/modules/2d_graphics:2d_graphics_canvaskit0310",
178    "$graphic_2d_root/rosen/modules/composer:libcomposer",
179    "$graphic_2d_root/utils:libgraphic_utils",
180  ]
181
182  external_deps = [
183    "graphic_surface:surface",
184    "hilog:libhilog",
185    "ipc:ipc_core",
186  ]
187
188  part_name = "graphic_2d"
189  subsystem_name = "graphic"
190}
191
192ohos_executable("drawing_sample_replayer") {
193  install_enable = true
194  cflags = [
195    "-Wall",
196    "-Werror",
197    "-Wno-unused-parameter",
198    "-Wno-missing-field-initializers",
199    "-Wno-unused-variable",
200    "-Werror,-Wreturn-type",
201    "-Wno-error=deprecated-declarations",
202  ]
203
204  sources = [ "drawing_sample_replayer.cpp" ]
205
206  sanitize = {
207    cfi = true
208    cfi_cross_dso = true
209    debug = false
210  }
211
212  include_dirs = [
213    "include",
214    "$graphic_2d_root/rosen/include/common",
215    "$graphic_2d_root/rosen/modules/render_service_base/src/platform/ohos/backend",
216    "$graphic_2d_root/rosen/modules/render_service_base/src",
217    "foundation/communication/ipc/interfaces/innerkits/ipc_core/include",
218    "foundation/communication/ipc/interfaces/innerkits/dm",
219    "$graphic_2d_root/rosen/modules/render_service_client/core",
220  ]
221
222  deps = [ "$graphic_2d_root/rosen/modules/render_service_client:librender_service_client" ]
223
224  public_deps = [
225    "$graphic_2d_root/frameworks/opengl_wrapper:EGL",
226    "$graphic_2d_root/frameworks/opengl_wrapper:GLESv3",
227  ]
228  defines = gpu_defines
229
230  if (defined(use_rosen_drawing) && use_rosen_drawing) {
231    defines += [ "USE_ROSEN_DRAWING" ]
232
233    deps += [ "$graphic_2d_root/rosen/modules/2d_graphics:2d_graphics" ]
234  }
235
236  defines += [
237    "VK_USE_PLATFORM_OHOS",
238    "NDEBUG",
239  ]
240  include_dirs += [
241    "$graphic_2d_root/frameworks/surface/include",
242    "$graphic_2d_root/rosen/modules/2d_graphics/include",
243    "$graphic_2d_root/interfaces/inner_api/surface",
244  ]
245  public_deps += [
246    "$graphic_2d_root:libvulkan",
247    "$graphic_2d_root/rosen/modules/render_service_base:librender_service_base",
248  ]
249  external_deps = [
250    "c_utils:utils",
251    "graphic_surface:surface",
252    "ipc:ipc_core",
253    "window_manager:libdm",
254  ]
255
256  subsystem_name = "graphic"
257  part_name = "graphic_2d"
258}
259