bazel/external/README.md
This folder is where we put BUILD.bazel files for external (e.g. third party) dependencies.
If a dependency supports Bazel, we should use those rules, but if the dependency does not, we need to create our own rules in a subdirectory.
We generally compile third_party deps from source. If we do, we clone the repository and use
the given BUILD.bazel file to build it. This is specified in the WORKSPACE.bazel (e.g.
new_local_repository or new_git_repository) and we refer to those targets using labels like
@freetype, or @libpng.
Some third_party deps we only link against prebuilt versions. For those, we do not involve
WORKSPACE.bazel and link to them directly, e.g. //bazel/external/fontconfig.
strip_include_prefix
causes the header path for the library to be added to the compiler include search path with -I,
which means Clang will treat it like a file in Skia proper. This means if those headers have
issues that Clang's diagnostic warnings catch (e.g. missing override), we will see those warnings
and the build will fail.
Generally, we do not want to have to fix third_party code's warnings, so instead of
using strip_include_prefix, use includes instead. This is more ergonomic, as it can let us
expose header files from multiple locations (e.g. freetype has its API in includes and the
customization headers in builds) and adds these to the search path with -isystem. Clang ignores
warnings in these "system" headers, which means our warnings will be focused to the Skia code base.