1cb93a386Sopenharmony_ciload(":defs.bzl", "string_flag_with_values")
2cb93a386Sopenharmony_ci
3cb93a386Sopenharmony_ci# @platforms is found at https://github.com/bazelbuild/platforms
4cb93a386Sopenharmony_cipackage(default_visibility = ["//:__subpackages__"])
5cb93a386Sopenharmony_ci
6cb93a386Sopenharmony_ciconfig_setting(
7cb93a386Sopenharmony_ci    name = "linux_x64",
8cb93a386Sopenharmony_ci    constraint_values = [
9cb93a386Sopenharmony_ci        "@platforms//cpu:x86_64",
10cb93a386Sopenharmony_ci        "@platforms//os:linux",
11cb93a386Sopenharmony_ci    ],
12cb93a386Sopenharmony_ci)
13cb93a386Sopenharmony_ci
14cb93a386Sopenharmony_ciconfig_setting(
15cb93a386Sopenharmony_ci    name = "windows_x64",
16cb93a386Sopenharmony_ci    constraint_values = [
17cb93a386Sopenharmony_ci        "@platforms//cpu:x86_64",
18cb93a386Sopenharmony_ci        "@platforms//os:windows",
19cb93a386Sopenharmony_ci    ],
20cb93a386Sopenharmony_ci)
21cb93a386Sopenharmony_ci
22cb93a386Sopenharmony_ciconfig_setting(
23cb93a386Sopenharmony_ci    name = "linux_arm64",
24cb93a386Sopenharmony_ci    constraint_values = [
25cb93a386Sopenharmony_ci        "@platforms//cpu:arm64",
26cb93a386Sopenharmony_ci        "@platforms//os:linux",
27cb93a386Sopenharmony_ci    ],
28cb93a386Sopenharmony_ci)
29cb93a386Sopenharmony_ci
30cb93a386Sopenharmony_ciconfig_setting(
31cb93a386Sopenharmony_ci    name = "debug_build",
32cb93a386Sopenharmony_ci    values = {"compilation_mode": "dbg"},
33cb93a386Sopenharmony_ci)
34cb93a386Sopenharmony_ci
35cb93a386Sopenharmony_ciconfig_setting(
36cb93a386Sopenharmony_ci    name = "release_build",
37cb93a386Sopenharmony_ci    values = {"compilation_mode": "opt"},
38cb93a386Sopenharmony_ci)
39cb93a386Sopenharmony_ci
40cb93a386Sopenharmony_ciconstraint_value(
41cb93a386Sopenharmony_ci    name = "fuchsia",
42cb93a386Sopenharmony_ci    constraint_setting = "@platforms//os:os",
43cb93a386Sopenharmony_ci)
44cb93a386Sopenharmony_ci
45cb93a386Sopenharmony_ciconfig_setting(
46cb93a386Sopenharmony_ci    name = "fuchsia_arm64",
47cb93a386Sopenharmony_ci    constraint_values = [
48cb93a386Sopenharmony_ci        "@platforms//cpu:arm64",
49cb93a386Sopenharmony_ci        ":fuchsia",
50cb93a386Sopenharmony_ci    ],
51cb93a386Sopenharmony_ci)
52cb93a386Sopenharmony_ci
53cb93a386Sopenharmony_ci# We define this here because the emscripten toolchain calls the cpu wasm, whereas the
54cb93a386Sopenharmony_ci# bazelbuild/platforms call it wasm32. https://github.com/emscripten-core/emsdk/issues/919
55cb93a386Sopenharmony_ciconfig_setting(
56cb93a386Sopenharmony_ci    name = "cpu_wasm",
57cb93a386Sopenharmony_ci    values = {
58cb93a386Sopenharmony_ci        "cpu": "wasm",
59cb93a386Sopenharmony_ci    },
60cb93a386Sopenharmony_ci)
61cb93a386Sopenharmony_ci
62cb93a386Sopenharmony_ci# =============================================================================
63cb93a386Sopenharmony_ci#                     Configurable Skia Features
64cb93a386Sopenharmony_ci# =============================================================================
65cb93a386Sopenharmony_ci# These are flags that we can specify when invoking bazel build to turn on and
66cb93a386Sopenharmony_ci# off certain features, such as GPU backend, or codec support.
67cb93a386Sopenharmony_ci# https://docs.bazel.build/versions/4.2.1/skylark/config.html#using-build-settings-on-the-command-line
68cb93a386Sopenharmony_ci# For example, to use the GL backend with the WebGL flavor, one would run
69cb93a386Sopenharmony_ci# bazel build //:skia-core --//bazel/common_config_settings:gpu_backend=gl_backend \
70cb93a386Sopenharmony_ci#             --//bazel/common_config_settings:with_gl_standard=webgl_standard
71cb93a386Sopenharmony_ci# This is a bit wordy, so we define aliases in the //.bazelrc file that condense this to
72cb93a386Sopenharmony_ci# bazel build //:skia-core --gpu_backend=gl_backend --with_gl_standard=webgl_standard
73cb93a386Sopenharmony_ci#
74cb93a386Sopenharmony_ci# Developers can specify their own short-hands by making a .bazelrc file in their home
75cb93a386Sopenharmony_ci# directory. https://docs.bazel.build/versions/main/guide.html#where-are-the-bazelrc-files
76cb93a386Sopenharmony_ci#
77cb93a386Sopenharmony_ci
78cb93a386Sopenharmony_cistring_flag_with_values(
79cb93a386Sopenharmony_ci    flag_name = "gpu_backend",
80cb93a386Sopenharmony_ci    multiple = True,
81cb93a386Sopenharmony_ci    values = [
82cb93a386Sopenharmony_ci        "gl_backend",
83cb93a386Sopenharmony_ci        "vulkan_backend",
84cb93a386Sopenharmony_ci    ],
85cb93a386Sopenharmony_ci)
86cb93a386Sopenharmony_ci
87cb93a386Sopenharmony_cistring_flag_with_values(
88cb93a386Sopenharmony_ci    flag_name = "with_gl_standard",
89cb93a386Sopenharmony_ci    values = [
90cb93a386Sopenharmony_ci        "gles_standard",
91cb93a386Sopenharmony_ci        "gl_standard",
92cb93a386Sopenharmony_ci        "webgl_standard",
93cb93a386Sopenharmony_ci    ],
94cb93a386Sopenharmony_ci)
95cb93a386Sopenharmony_ci
96cb93a386Sopenharmony_cistring_flag_with_values(
97cb93a386Sopenharmony_ci    default = "empty_fontmgr_factory",
98cb93a386Sopenharmony_ci    flag_name = "fontmgr_factory",
99cb93a386Sopenharmony_ci    values = [
100cb93a386Sopenharmony_ci        "empty_fontmgr_factory",
101cb93a386Sopenharmony_ci        "custom_directory_fontmgr_factory",
102cb93a386Sopenharmony_ci    ],
103cb93a386Sopenharmony_ci)
104cb93a386Sopenharmony_ci
105cb93a386Sopenharmony_cistring_flag_with_values(
106cb93a386Sopenharmony_ci    flag_name = "include_codec",
107cb93a386Sopenharmony_ci    multiple = True,
108cb93a386Sopenharmony_ci    values = [
109cb93a386Sopenharmony_ci        "gif_codec",
110cb93a386Sopenharmony_ci        "jpeg_codec",
111cb93a386Sopenharmony_ci        "png_codec",
112cb93a386Sopenharmony_ci        "raw_codec",
113cb93a386Sopenharmony_ci        "webp_codec",
114cb93a386Sopenharmony_ci    ],
115cb93a386Sopenharmony_ci)
116