• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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