• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2019 Google LLC.
2
3import("//build/ohos.gni")
4import("//build/ohos_var.gni")
5import("../../gn/skia.gni")
6import("../skshaper/skshaper.gni")
7import("../skunicode/skunicode.gni")
8import("skparagraph.gni")
9
10skia_modules_root = "//third_party/skia/m133/modules"
11
12declare_args() {
13  skia_enable_skparagraph = true
14  paragraph_gms_enabled = true
15  paragraph_tests_enabled = true
16  paragraph_bench_enabled = false
17}
18
19config("skia_paragraph_config") {
20  include_dirs = [
21    "$skia_modules_root/skunicode",
22    "$skia_modules_root/skshaper",
23    "$skia_modules_root/skparagraph",
24  ]
25}
26
27ohos_static_library("skia_paragraph_ohos_new") {
28  part_name = "skia"
29  subsystem_name = "thirdparty"
30
31  deps = []
32  sources = []
33  external_deps = []
34  public_configs = [ ":skia_paragraph_config" ]
35  include_dirs = []
36  if (ohos_indep_compiler_enable) {
37    include_dirs += [ "//binarys/third_party/icu/innerapis/shared_icuuc/includes/common" ]
38  }
39
40  if (skia_feature_upgrade) {
41    defines = [
42      "ENABLE_TEXT_ENHANCE",
43      "ENABLE_DRAWING_ADAPTER",
44    ]
45  } else {
46    defines = [
47      "OHOS_SUPPORT",
48      "USE_SKIA_TXT",
49    ]
50  }
51
52  cflags_cc = [
53    "-std=c++17",
54    "-fvisibility=hidden",
55  ]
56
57  # skunicode
58  defines += [
59    "SKUNICODE_IMPLEMENTATION=1",
60    "SK_UNICODE_AVAILABLE",
61    "SK_UNICODE_ICU_IMPLEMENTATION",
62  ]
63
64  if (!is_arkui_x) {
65    sources += [
66      "$skia_modules_root/skunicode/src/SkUnicode.cpp",
67    ]
68  }
69  sources += [
70    "$skia_modules_root/skunicode/src/SkUnicode_icu.cpp",
71    "$skia_modules_root/skunicode/src/SkUnicode_icu_bidi.cpp",
72    "$skia_modules_root/skunicode/src/SkUnicode_icu_builtin.cpp",
73  ]
74
75  # skshaper
76  defines += [ "SKSHAPER_IMPLEMENTATION=1" ]
77  sources += [
78    "$skia_modules_root/skshaper/src/SkShaper.cpp",
79    "$skia_modules_root/skshaper/src/SkShaper_harfbuzz.cpp",
80    "$skia_modules_root/skshaper/src/SkShaper_primitive.cpp",
81  ]
82
83  # skparagraph
84  sources += [
85    "$skia_modules_root/skparagraph/src/Decorations.cpp",
86    "$skia_modules_root/skparagraph/src/FontArguments.cpp",
87    "$skia_modules_root/skparagraph/src/FontCollection.cpp",
88    "$skia_modules_root/skparagraph/src/HyphenTrie.cpp",
89    "$skia_modules_root/skparagraph/src/Hyphenator.cpp",
90    "$skia_modules_root/skparagraph/src/OneLineShaper.cpp",
91    "$skia_modules_root/skparagraph/src/ParagraphBuilderImpl.cpp",
92    "$skia_modules_root/skparagraph/src/ParagraphCache.cpp",
93    "$skia_modules_root/skparagraph/src/ParagraphImpl.cpp",
94    "$skia_modules_root/skparagraph/src/ParagraphLineFetcherImpl.cpp",
95    "$skia_modules_root/skparagraph/src/ParagraphPainterImpl.cpp",
96    "$skia_modules_root/skparagraph/src/ParagraphStyle.cpp",
97    "$skia_modules_root/skparagraph/src/Run.cpp",
98    "$skia_modules_root/skparagraph/src/RunBaseImpl.cpp",
99    "$skia_modules_root/skparagraph/src/TextGlobalConfig.cpp",
100    "$skia_modules_root/skparagraph/src/TextLine.cpp",
101    "$skia_modules_root/skparagraph/src/TextLineBaseImpl.cpp",
102    "$skia_modules_root/skparagraph/src/TextLineJustify.cpp",
103    "$skia_modules_root/skparagraph/src/TextShadow.cpp",
104    "$skia_modules_root/skparagraph/src/TextStyle.cpp",
105    "$skia_modules_root/skparagraph/src/TextTabAlign.cpp",
106    "$skia_modules_root/skparagraph/src/TextWrapper.cpp",
107    "$skia_modules_root/skparagraph/src/TypefaceFontProvider.cpp",
108  ]
109
110  platform = current_os
111  if (platform == "mingw") {
112    platform = "windows"
113  }
114
115  if (is_arkui_x) {
116    include_dirs += [ "//base/hiviewdfx/hitrace/interfaces/native/innerkits/include/hitrace_meter" ]
117    defines += [ "CROSS_PLATFORM" ]
118    deps += [
119      "//base/hiviewdfx/hilog/interfaces/native/innerkits:libhilog_${target_os}",
120      "//foundation/graphic/graphic_2d/rosen/modules/2d_graphics:2d_graphics",
121      "//third_party/bounds_checking_function:libsec_static",
122      "//third_party/icu/icu4c:static_icuuc",
123      "//third_party/skia:skia_$platform",
124    ]
125  } else {
126    external_deps += [
127      "bounds_checking_function:libsec_shared",
128      "graphic_2d:2d_graphics",
129      "hilog:libhilog",
130      "icu:shared_icuuc",
131    ]
132  }
133
134  if (current_os == "ohos") {
135    defines += [ "ENABLE_OHOS_ENHANCE" ]
136    external_deps += [
137      "hitrace:hitrace_meter",
138      "init:libbegetutil",
139    ]
140  }
141}
142
143if (skia_enable_skparagraph && skia_enable_skshaper && skia_enable_skunicode &&
144    skia_use_harfbuzz) {
145  config("public_config") {
146    defines = [ "SK_ENABLE_PARAGRAPH" ]
147    include_dirs = [
148      "include",
149      "utils",
150    ]
151  }
152
153  skia_component("skparagraph") {
154    import("skparagraph.gni")
155    public_configs = [ ":public_config" ]
156    public = skparagraph_public
157    sources = skparagraph_sources
158    configs = []
159    if (use_oh_skia) {
160      deps = [
161        "../../..:skia_canvaskit",
162        "../skshaper",
163        "../skunicode",
164      ]
165    } else {
166      public_deps = [
167        "../..:skia",
168        "../skunicode",
169      ]
170      deps = [ "../skshaper" ]
171    }
172  }
173
174  config("utils_config") {
175    include_dirs = [ "utils" ]
176  }
177
178  if (defined(is_skia_standalone) && skia_enable_tools) {
179    import("skparagraph.gni")
180    skia_source_set("utils") {
181      public_configs = [ ":utils_config" ]
182      configs = [ "../../:skia_private" ]
183      sources = skparagraph_utils
184      deps = [
185        "../..:skia",
186        "../skshaper",
187      ]
188    }
189
190    skia_source_set("gm") {
191      if (paragraph_gms_enabled &&
192          (skia_use_icu || skia_use_libgrapheme || skia_use_icu4x)) {
193        testonly = true
194        sources = [ "gm/simple_gm.cpp" ]
195        include_dirs = [ "${skia_root_dir}" ]
196        if (use_oh_skia) {
197          deps = [
198            ":skparagraph",
199            "../..:gpu_tool_utils",
200          ]
201        } else {
202          deps = [
203            ":skparagraph",
204            "../..:gpu_tool_utils",
205            "../..:skia",
206            "../skshaper",
207            "../skunicode",
208          ]
209        }
210      } else {
211        sources = []
212      }
213    }
214
215    skia_source_set("tests") {
216      if (paragraph_tests_enabled &&
217          (skia_use_icu || skia_use_libgrapheme || skia_use_icu4x)) {
218        testonly = true
219
220        include_dirs = [ "${skia_root_dir}" ]
221        sources = skparagraph_tests
222        if (is_ohos) {
223          external_deps = [ "hitrace:hitrace_meter" ]
224          if (!build_ohos_sdk && !is_arkui_x) {
225            external_deps += [ "init:libbegetutil" ]
226            if (defined(defines)) {
227              defines += [ "NOT_BUILD_FOR_OHOS_SDK" ]
228            } else {
229              defines = [ "NOT_BUILD_FOR_OHOS_SDK" ]
230            }
231          }
232        }
233        if (use_oh_skia) {
234          deps = [
235            ":skparagraph",
236            "../..:test",
237          ]
238        } else {
239          deps = [
240            ":skparagraph",
241            "../..:skia",
242            "../..:test",
243            "../skshaper",
244            "../skunicode",
245          ]
246        }
247        if (is_ohos) {
248          external_deps += [ "hitrace:hitrace_meter" ]
249          if (!build_ohos_sdk && !is_arkui_x) {
250            external_deps += [ "init:libbegetutil" ]
251          }
252        }
253        if (is_arkui_x) {
254          deps += [ "//third_party/bounds_checking_function:libsec_static" ]
255        } else if (is_ohos) {
256          if (is_component_build) {
257            external_deps += [ "bounds_checking_function:libsec_shared" ]
258          } else {
259            external_deps += [ "bounds_checking_function:libsec_static" ]
260          }
261        }
262      } else {
263        sources = []
264      }
265    }
266
267    skia_source_set("bench") {
268      if (paragraph_bench_enabled &&
269          (skia_use_icu || skia_use_libgrapheme || skia_use_icu4x)) {
270        testonly = true
271        sources = [ "bench/ParagraphBench.cpp" ]
272        deps = [
273          ":skparagraph",
274          "../..:skia",
275          "../skshaper",
276          "../skunicode",
277        ]
278      } else {
279        sources = []
280      }
281    }
282
283    skia_source_set("slides") {
284      if (skia_use_icu || skia_use_libgrapheme) {
285        testonly = true
286        sources = [ "slides/ParagraphSlide.cpp" ]
287        deps = [
288          ":skparagraph",
289          ":utils",
290          "../..:skia",
291          "../skshaper",
292          "../skunicode",
293        ]
294      }
295    }
296
297    skia_source_set("samples") {
298      testonly = true
299      sources = [ "samples/SampleParagraph.cpp" ]
300      deps = [
301        ":skparagraph",
302        ":utils",
303        "../..:skia",
304        "../skshaper",
305      ]
306    }
307  }
308} else {
309  group("skparagraph") {
310  }
311  group("utils") {
312  }
313  group("gm") {
314  }
315  group("tests") {
316  }
317  group("bench") {
318  }
319  group("slides") {
320  }
321}
322