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