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