1load("@rules_license//rules:license.bzl", "license") 2load("@skia_user_config//:copts.bzl", "DEFAULT_OBJC_COPTS") 3load("//:defines.bzl", "DEFAULT_DEFINES", "DEFAULT_LOCAL_DEFINES") 4load("//bazel:gen_compile_flags_txt_linux_amd64.bzl", "gen_compile_flags_txt_linux_amd64") 5load("//bazel:skia_rules.bzl", "skia_cc_library", "skia_objc_library") 6 7package( 8 default_applicable_licenses = ["//:license"], 9) 10 11# https://opensource.google/documentation/reference/thirdparty/new_license_rules 12# https://github.com/bazelbuild/rules_license/blob/bcffeb0c481d178cbee69bdc7e23ef22d3a087b1/rules/license.bzl 13license( 14 name = "license", 15 license_kinds = ["@rules_license//licenses/generic:notice"], 16 license_text = "LICENSE", 17) 18 19licenses(["notice"]) 20 21# Note, we do not need exports_files_legacy() because this file is not synced into G3. 22exports_files(["LICENSE"]) 23 24# All the mm files from the Skia library are rolled up to this objc library since cc_library 25# ignores mm files. This private library is then deps'ed into the public and internal versions 26# of the SKia library below. The Skia library Objective-C code requires ARC, while non-library code 27# does not. 28skia_objc_library( 29 name = "skia_objc", 30 srcs = [ 31 "//src:objc_srcs", 32 ], 33 copts = DEFAULT_OBJC_COPTS + ["-fobjc-arc"], 34 defines = DEFAULT_DEFINES, 35 deps = [ 36 "//src:deps", 37 "@skia_user_config//:user_config", 38 ], 39) 40 41# This target exposes the Skia public API. It is what external clients should use. 42skia_cc_library( 43 name = "skia_public", 44 srcs = [ 45 "//include:private_hdrs", 46 "//src:private_hdrs", 47 "//src:srcs", 48 ], 49 hdrs = ["//include:public_hdrs"], 50 defines = DEFAULT_DEFINES, 51 local_defines = DEFAULT_LOCAL_DEFINES, 52 visibility = ["//visibility:public"], 53 deps = [ 54 "//src:deps", 55 "@skia_user_config//:user_config", 56 ] + select({ 57 "//src/gpu:metal_ganesh": ["//:skia_objc"], 58 "//conditions:default": [], 59 }), 60) 61 62# This target exposes headers beyond the public, supported API. It is intended to be 63# used by Skia's tests and tooling. 64skia_cc_library( 65 name = "skia_internal", 66 srcs = [ 67 "//src:srcs", 68 ], 69 hdrs = [ 70 "//include:private_hdrs", 71 "//include:public_hdrs", 72 "//src:private_hdrs", 73 ], 74 defines = DEFAULT_DEFINES, 75 local_defines = DEFAULT_LOCAL_DEFINES, 76 visibility = [ 77 "//bench:__subpackages__", 78 "//dm:__subpackages__", 79 "//gm:__subpackages__", 80 "//modules:__subpackages__", 81 "//tests:__subpackages__", 82 "//tools:__subpackages__", 83 ], 84 deps = [ 85 "//src:deps", 86 "@skia_user_config//:user_config", 87 ] + select({ 88 "//src/gpu:metal_ganesh": ["//:skia_objc"], 89 "//conditions:default": [], 90 }), 91) 92 93#################################################################### 94# Experimental public buffet targets below 95 96alias( 97 name = "core", 98 actual = "//src/core:core", 99 visibility = ["//visibility:public"], 100) 101 102alias( 103 name = "pathops", 104 actual = "//src/pathops:pathops", 105 visibility = ["//visibility:public"], 106) 107 108### 109 110alias( 111 name = "ganesh_gl", 112 actual = "//src/gpu/ganesh/gl:ganesh_gl", 113 visibility = ["//visibility:public"], 114) 115 116alias( 117 name = "ganesh_egl_factory", 118 actual = "//src/gpu/ganesh/gl/egl:egl_factory", 119 visibility = ["//visibility:public"], 120) 121 122alias( 123 name = "ganesh_gl_epoxy_factory", 124 actual = "//src/gpu/ganesh/gl/epoxy:epoxy_factory", 125 visibility = ["//visibility:public"], 126) 127 128alias( 129 name = "ganesh_glx_factory", 130 actual = "//src/gpu/ganesh/gl/glx:glx_factory", 131 visibility = ["//visibility:public"], 132) 133 134alias( 135 name = "ganesh_gl_ios_factory", 136 actual = "//src/gpu/ganesh/gl/ios:ios_factory", 137 visibility = ["//visibility:public"], 138) 139 140alias( 141 name = "ganesh_gl_mac_factory", 142 actual = "//src/gpu/ganesh/gl/mac:mac_factory", 143 visibility = ["//visibility:public"], 144) 145 146alias( 147 name = "ganesh_webgl_factory", 148 actual = "//src/gpu/ganesh/gl/webgl:webgl_factory", 149 visibility = ["//visibility:public"], 150) 151 152alias( 153 name = "ganesh_metal", 154 actual = "//src/gpu/ganesh/mtl:ganesh_metal", 155 visibility = ["//visibility:public"], 156) 157 158alias( 159 name = "ganesh_vulkan", 160 actual = "//src/gpu/ganesh/vk:ganesh_vulkan", 161 visibility = ["//visibility:public"], 162) 163 164### 165 166alias( 167 name = "bmp_decode_codec", 168 actual = "//src/codec:bmp_decode", 169 visibility = ["//visibility:public"], 170) 171 172alias( 173 name = "gif_decode_codec", 174 actual = "//src/codec:gif_decode", 175 visibility = ["//visibility:public"], 176) 177 178alias( 179 name = "ico_decode_codec", 180 actual = "//src/codec:ico_decode", 181 visibility = ["//visibility:public"], 182) 183 184alias( 185 name = "jpeg_encode_codec", 186 actual = "//src/encode:jpeg_encode", 187 visibility = ["//visibility:public"], 188) 189 190alias( 191 name = "jpeg_decode_codec", 192 actual = "//src/codec:jpeg_decode", 193 visibility = ["//visibility:public"], 194) 195 196alias( 197 name = "jpegxl_decode_codec", 198 actual = "//src/codec:jpegxl_decode", 199 visibility = ["//visibility:public"], 200) 201 202alias( 203 name = "png_decode_codec", 204 actual = "//src/codec:png_decode", 205 visibility = ["//visibility:public"], 206) 207 208alias( 209 name = "png_encode_codec", 210 actual = "//src/encode:png_encode", 211 visibility = ["//visibility:public"], 212) 213 214alias( 215 name = "wbmp_decode_codec", 216 actual = "//src/codec:wbmp_decode", 217 visibility = ["//visibility:public"], 218) 219 220alias( 221 name = "webp_decode_codec", 222 actual = "//src/codec:webp_decode", 223 visibility = ["//visibility:public"], 224) 225 226alias( 227 name = "webp_encode_codec", 228 actual = "//src/encode:webp_encode", 229 visibility = ["//visibility:public"], 230) 231 232### 233 234alias( 235 name = "fontmgr_empty_freetype", 236 actual = "//src/ports:fontmgr_empty_freetype", 237 visibility = ["//visibility:public"], 238) 239 240alias( 241 name = "fontmgr_coretext", 242 actual = "//src/ports:fontmgr_coretext", 243 visibility = ["//visibility:public"], 244) 245 246alias( 247 name = "fontmgr_data_freetype", 248 actual = "//src/ports:fontmgr_data_freetype", 249 visibility = ["//visibility:public"], 250) 251 252alias( 253 name = "fontmgr_directory_freetype", 254 actual = "//src/ports:fontmgr_directory_freetype", 255 visibility = ["//visibility:public"], 256) 257 258alias( 259 name = "fontmgr_fontconfig_freetype", 260 actual = "//src/ports:fontmgr_fontconfig_freetype", 261 visibility = ["//visibility:public"], 262) 263 264alias( 265 name = "fontmgr_android_freetype", 266 actual = "//src/ports:fontmgr_android_freetype", 267 visibility = ["//visibility:public"], 268) 269 270### 271 272alias( 273 name = "pdf_writer", 274 actual = "//src/pdf:pdf", 275 visibility = ["//visibility:public"], 276) 277 278### 279 280alias( 281 name = "skparagraph_harfbuzz_skunicode", 282 actual = "//modules/skparagraph:skparagraph_harfbuzz_skunicode", 283 visibility = ["//visibility:public"], 284) 285 286### 287 288alias( 289 name = "skshaper_core", 290 actual = "//modules/skshaper:skshaper_core_and_utils", 291 visibility = ["//visibility:public"], 292) 293 294alias( 295 name = "skshaper_coretext", 296 actual = "//modules/skshaper:skshaper_coretext", 297 visibility = ["//visibility:public"], 298) 299 300alias( 301 name = "skshaper_harfbuzz", 302 actual = "//modules/skshaper:skshaper_harfbuzz", 303 visibility = ["//visibility:public"], 304) 305 306alias( 307 name = "skshaper_unicode", 308 actual = "//modules/skshaper:skshaper_unicode", 309 visibility = ["//visibility:public"], 310) 311 312### 313 314alias( 315 name = "skresources", 316 actual = "//modules/skresources:skresources", 317 visibility = ["//visibility:public"], 318) 319 320### 321 322# Allows Skia to take an SVG in as an input 323alias( 324 name = "svg_renderer", 325 actual = "//modules/svg:svg_renderer", 326 visibility = ["//visibility:public"], 327) 328 329# Allows Skia to draw to an SVG 330alias( 331 name = "svg_writer", 332 actual = "//src/svg:svg", 333 visibility = ["//visibility:public"], 334) 335 336### 337 338alias( 339 name = "skunicode_core", 340 actual = "//modules/skunicode:skunicode_core", 341 visibility = ["//visibility:public"], 342) 343 344alias( 345 name = "skunicode_icu", 346 actual = "//modules/skunicode:skunicode_icu", 347 visibility = ["//visibility:public"], 348) 349 350# Load bearing comment below - gazelle looks here (and not in any other BUILD.bazel files) 351# for a special comment indicating the prefix. 352# gazelle:prefix go.skia.org/skia 353 354# This is an alias to avoid having to load the golang toolchain code just to 355# create the rules in our primary BUILD.bazel file 356alias( 357 name = "gazelle", 358 actual = "//infra:gazelle", 359 visibility = ["//visibility:public"], 360) 361 362test_suite( 363 name = "all_go_tests", 364 tests = [ 365 # Go tests in this list will be tested in CI. Please add any new Go tests to this suite. 366 "//bazel/device_specific_configs:device_specific_configs_test", 367 "//bazel/exporter:exporter_test", 368 "//infra/bots/task_drivers/bazel_test_benchmark:bazel_test_benchmark_test", 369 "//infra/bots/task_drivers/bazel_test_gm:bazel_test_gm_test", 370 "//infra/bots/task_drivers/bazel_test_precompiled:bazel_test_precompiled_test", 371 "//infra/bots/task_drivers/codesize:codesize_test", 372 "//infra/bots/task_drivers/common:common_test", 373 "//infra/bots/task_drivers/perf_puppeteer_canvas:perf_puppeteer_canvas_test", 374 "//infra/bots/task_drivers/perf_puppeteer_render_skps:perf_puppeteer_render_skps_test", 375 "//infra/bots/task_drivers/perf_puppeteer_skottie_frames:perf_puppeteer_skottie_frames_test", 376 "//tools/testrunners/common/android/adb_test_runner:adb_test_runner_test", 377 ], 378) 379 380# Generates a compile_flags.txt file for use with clangd against the Bazel-downloaded Linux AMD64 381# clang hermetic toolchain. 382# 383# This command prints to standard output a compile_flags.txt file that can be used with clangd to 384# enable autocompletion on editors that support it. See: 385# https://clangd.llvm.org/design/compile-commands. 386# 387# Note that this is implemented on a best effort basis. The produced compile_flags.txt file will 388# contain the subset of flags used by most targets, but some targets might require additional 389# flags. If that's the case, please manually add them to your compile_flags.txt file. 390# 391# Sample usage: 392# 393# $ bazel run //:gen_compile_flags_txt_linux_amd64 > compile_flags.txt 394# 395# Invoke with --config=<some config> to generate flags with the defines and includes required for 396# your build. For example, if you build your binary as follows: 397# 398# $ bazel build //path/to:binary --config=gl_ganesh 399# 400# Then your compile_flags.txt file should be generated with: 401# 402# $ bazel run //:gen_compile_flags_txt_linux_amd64 --config=gl_ganesh > compile_flags.txt 403# 404# This was tested with Visual Studio Code and the clangd extension: 405# https://marketplace.visualstudio.com/items?itemName=llvm-vs-code-extensions.vscode-clangd. 406gen_compile_flags_txt_linux_amd64( 407 name = "gen_compile_flags_txt_linux_amd64", 408) 409 410###### 411# go # 412###### 413 414# Sample usage: "bazel run //:go -- generate ./...". 415alias( 416 name = "go", 417 actual = "@go_sdk//:bin/go", 418 visibility = ["//visibility:public"], 419) 420 421######### 422# gofmt # 423######### 424 425# Sample usage: "bazel run //:gofmt -- -s -w .". 426alias( 427 name = "gofmt", 428 actual = "@go_sdk//:bin/gofmt", 429 visibility = ["//visibility:public"], 430) 431 432############ 433# Errcheck # 434############ 435 436# Sample usage: "bazel run //:errcheck -- go.skia.org/skia/...". 437alias( 438 name = "errcheck", 439 actual = "//infra:errcheck", 440 visibility = ["//visibility:public"], 441) 442 443############## 444# buildifier # 445############## 446 447# Sample usage: "bazel run //:buildifier". 448alias( 449 name = "buildifier", 450 actual = "//bazel:buildifier", 451) 452