• Home
Name Date Size #Lines LOC

..--

cxx/22-Oct-2025-453401

cxxbridge_cmd/22-Oct-2025-160140

dawn/22-Oct-2025-727704

delaunator/22-Oct-2025-108

dng_sdk/22-Oct-2025-183181

egl/22-Oct-2025-87

expat/22-Oct-2025-6660

fontations/22-Oct-2025-173151

fontconfig/22-Oct-2025-1110

freetype/22-Oct-2025-464457

glesv2/22-Oct-2025-87

gn/22-Oct-2025-5750

harfbuzz/22-Oct-2025-367362

icu/22-Oct-2025-1,1091,093

icu4x/22-Oct-2025-993867

imgui/22-Oct-2025-2523

libavif/22-Oct-2025-3836

libgav1/22-Oct-2025-283281

libjpeg_turbo/22-Oct-2025-176169

libjxl/22-Oct-2025-290283

libpng/22-Oct-2025-8882

libwebp/22-Oct-2025-219213

libyuv/22-Oct-2025-9795

perfetto/22-Oct-2025-1412

piex/22-Oct-2025-2624

skimage/22-Oct-2025-210206

spirv_cross/22-Oct-2025-4038

vello/22-Oct-2025-511451

vulkan_headers/22-Oct-2025-3028

vulkan_tools/22-Oct-2025-119

vulkan_utility_libraries/22-Oct-2025-119

vulkanmemoryallocator/22-Oct-2025-1311

wuffs/22-Oct-2025-5047

zlib_skia/22-Oct-2025-192179

README.mdD22-Oct-20251.6 KiB2923

README.md

1This folder is where we put `BUILD.bazel` files for external (e.g. third party) dependencies.
2
3If a dependency supports Bazel, we should use those rules, but if the dependency does not, we
4need to create our own rules in a subdirectory.
5
6We generally compile third_party deps from source. If we do, we clone the repository and use
7the given BUILD.bazel file to build it. This is specified in the `WORKSPACE.bazel` (e.g.
8`new_local_repository` or `new_git_repository`) and we refer to those targets using labels like
9`@freetype`, or `@libpng`.
10
11Some third_party deps we only link against prebuilt versions. For those, we do not involve
12WORKSPACE.bazel and link to them directly, e.g. `//bazel/external/fontconfig`.
13
14Notes
15-----
16
17Avoid strip_include_prefix
18==========================
19[strip_include_prefix](https://docs.bazel.build/versions/main/be/c-cpp.html#cc_library.strip_include_prefix)
20causes the header path for the library to be added to the compiler include search path with `-I`,
21which means Clang will treat it like a file in Skia proper. This means if those headers have
22issues that Clang's diagnostic warnings catch (e.g. missing `override`), we will see those warnings
23and the build will fail.
24
25Generally, we do not want to have to fix third_party code's warnings, so instead of
26using `strip_include_prefix`, use `includes` instead. This is more ergonomic, as it can let us
27expose header files from multiple locations (e.g. `freetype` has its API in `includes` and the
28customization headers in `builds`) and adds these to the search path with `-isystem`. Clang ignores
29warnings in these "system" headers, which means our warnings will be focused to the Skia code base.