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