blob: 18450f01cb662cb7cb5b020980869b0c5d24e2b3 [file] [log] [blame]
# This file contains the build configurations of Skia that we use for testing on the CI.
# These allow a short-form reference for our supported combinations of build features.
# For most build configurations, we will want to set the --cc_output_directory_tag [1]
# with a unique identifier per configuration name.
# By default, Bazel's "unique target BuildConfiguration" [2] incorporates the compilation_mode,
# the target platform, and some suffixes to avoid Bazel-caused and user-caused conflicts. [3] [4]
# For example, a default output directory might look like "k8-fastbuild-ST-6a54c1377847".
# Inside this output directory is a subfolder for the target (e.g. executable) name.
# Notably, the flags that we turn on and off via //bazel/common_config_settings do not affect
# the output directory. The output directory is used to store compiled object files (.o files)
# and generated dependency files (e.g. the output of clang --write-dependencies [5]), so having
# these be overwritten unnecessarily will slow down incremental rebuilds when switching between
# building different configurations of the same targets.
# [1]
# [2]
# [3]
# [4]
# [5]
# =============================================================================
# Targets (what to build for)
# =============================================================================
# --platforms refers to the target for which we are compiling. By setting the target to be a
# platform which has our own custom constraint_setting and constraint_value
# (skia_hermetic_toolchain=use_hermetic_toolchain), this causes Bazel to resolve the toolchain
# to be our hermetic one because our hermetic toolchains have that same constraint set in their
# target_compatible_with list.
build:for_linux_x64 --platforms=//bazel/platform:linux_x64_hermetic --cc_output_directory_tag=linux_x64
build:for_linux_x64_with_rbe --config=for_linux_x64 --config=linux_rbe
build:for_mac_arm64 --platforms=//bazel/platform:mac_arm64_hermetic --cc_output_directory_tag=mac_arm64
build:for_mac_x64 --platforms=//bazel/platform:mac_x64_hermetic --cc_output_directory_tag=mac_x64
# some aliases using more common lingo
build:for_mac_m1 --config=for_mac_arm64
build:for_mac_intel --config=for_mac_x64
# =============================================================================
# Configurations (what features we want on)
# =============================================================================
# These are examples of the syntax to create build configurations. As of May 2022, our
# Bazel configurations are still being made.
build:release --compilation_mode=opt
build:debug --compilation_mode=dbg
# See also for disabling cc_toolchain_resolution
build:canvaskit_full --noincompatible_enable_cc_toolchain_resolution \
--include_decoder=gif_decode_codec --include_decoder=jpeg_decode_codec \
--include_decoder=png_decode_codec --include_decoder=webp_decode_codec \
--include_encoder=jpeg_encode_codec --include_encoder=png_encode_codec \
--include_encoder=webp_encode_codec \
--with_harfbuzz --with_icu --fontmgr_factory=custom_embedded_fontmgr_factory \
--ck_enable_fonts --ck_enable_embedded_font \
--disable_tracing --enable_sksl_tracing \
--ck_enable_canvas_polyfill --ck_enable_skp_serialization --ck_enable_skottie \
--ck_enable_particles --ck_enable_runtime_effect --ck_enable_matrix_js
build:ck_webgl2 --with_gl_standard=webgl_standard --gpu_backend=gl_backend
build:ck_full_webgl2_release --config=canvaskit_full --config=ck_webgl2 --config=release
build:ck_full_webgl2_debug --config=canvaskit_full --config=ck_webgl2 --config=debug
# TODO(kjlubick) We should be able to configure testing on Chrome or Firefox with this.
build:ck_full_webgl2_release_chrome --config=ck_full_webgl2_release
# We only want to enforce IWYU on debug builds because we have some things that are only
# necessary to include in debug mode (e.g. SkDEBUGCODE), but very rarely something that is
# only needed in release mode. Thus our C++ debug includes should be a superset of the
# release includes.
build:enforce_iwyu --features=skia_enforce_iwyu --cc_output_directory_tag=iwyu \
--compilation_mode=dbg --keep_going \
--with_gl_standard=gl_standard --gpu_backend=gl_backend \
--gpu_backend=vulkan_backend --gpu_backend=dawn_backend \
--include_fontmgr=custom_directory_fontmgr --include_fontmgr=custom_embedded_fontmgr \
--include_fontmgr=custom_empty_fontmgr --fontmgr_factory=custom_directory_fontmgr_factory \
--include_decoder=gif_decode_codec --include_decoder=jpeg_decode_codec \
--include_decoder=png_decode_codec --include_decoder=raw_decode_codec \
--include_decoder=webp_decode_codec --include_encoder=jpeg_encode_codec \
--include_encoder=png_encode_codec --include_encoder=webp_encode_codec \
--with_harfbuzz --with_icu \
--enable_sksl_tracing \
--enable_svg_canvas --enable_pdf_backend