• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1"""
2This file contains defines used by all builds of Skia.
3"""
4
5load("//bazel:extra_defines.bzl", "EXTRA_DEFINES")
6load("//bazel:skia_rules.bzl", "select_multi")
7
8GENERAL_DEFINES = [
9    "SK_GAMMA_APPLY_TO_A8",
10] + select({
11    "//bazel/common_config_settings:debug_build": [
12        "SK_DEBUG",
13    ],
14    "//bazel/common_config_settings:release_build": [
15        "SK_RELEASE",
16        "NDEBUG",
17    ],
18    "//bazel/common_config_settings:fast_build": [
19        "SK_DEBUG",
20    ],
21}) + select({
22    "//bazel/common_config_settings:enable_tracing_false": ["SK_DISABLE_TRACING"],
23    "//conditions:default": [],
24}) + select({
25    "//bazel/common_config_settings:enable_effect_serialization_false": ["SK_DISABLE_EFFECT_DESERIALIZATION"],
26    "//conditions:default": [],
27}) + select({
28    "//src/gpu:enable_gpu_test_utils_true": [
29        "GR_TEST_UTILS=1",
30        "SK_ALLOW_STATIC_GLOBAL_INITIALIZERS=1",
31    ],
32    "//conditions:default": [],
33}) + select({
34    "//src/sksl:enable_skslc_true": [
35        "SKSL_STANDALONE",
36        "SK_DISABLE_TRACING",
37        "SK_ENABLE_SPIRV_CROSS",
38        "SK_ENABLE_SPIRV_VALIDATION",
39        "SK_ENABLE_WGSL_VALIDATION",
40    ],
41    "//conditions:default": [],
42}) + select({
43    "//src/pdf:enable_pdf_backend_true": ["SK_SUPPORT_PDF"],
44    "//conditions:default": [],
45}) + select({
46    "//src/shaders:legacy_shader_context_true": [],  # This is the default in SkTypes.h
47    "//src/shaders:legacy_shader_context_false": ["SK_DISABLE_LEGACY_SHADERCONTEXT"],
48}) + select({
49    "//src/lazy:enable_discardable_memory_true": ["SK_USE_DISCARDABLE_SCALEDIMAGECACHE"],
50    "//src/lazy:enable_discardable_memory_false": [],
51}) + select({
52    "//bazel/common_config_settings:build_for_debugger_true": ["SK_BUILD_FOR_DEBUGGER"],
53    "//conditions:default": [],
54})
55
56GPU_DEFINES = select_multi({
57    "//src/gpu:gl_ganesh": [
58        "SK_GL",
59        "SK_GANESH",
60    ],
61    "//src/gpu:vulkan_ganesh": [
62        "SK_VULKAN",
63        "SK_GANESH",
64    ],
65    "//src/gpu:metal_ganesh": [
66        "SK_METAL",
67        "SK_GANESH",
68    ],
69}) + select({
70    "//src/gpu:gl_standard": [
71        "SK_ASSUME_GL=1",
72    ],
73    "//src/gpu:gles_standard": [
74        "SK_ASSUME_GL_ES=1",
75    ],
76    "//src/gpu:webgl_standard": [
77        "SK_ASSUME_WEBGL=1",
78    ],
79    "//conditions:default": [],
80}) + select({
81    "//src/gpu:vulkan_with_vma": [
82        "SK_USE_VMA",
83    ],
84    "//conditions:default": [],
85})
86
87CODEC_DEFINES = select_multi({
88    "//src/codec:avif_decode_codec": ["SK_CODEC_DECODES_AVIF"],
89    "//src/codec:gif_decode_codec": ["SK_HAS_WUFFS_LIBRARY", "SK_CODEC_DECODES_GIF"],
90    "//src/codec:jpeg_decode_codec": ["SK_CODEC_DECODES_JPEG"],
91    "//src/codec:png_decode_codec": ["SK_CODEC_DECODES_PNG"],
92    "//src/codec:raw_decode_codec": [
93        "SK_CODEC_DECODES_RAW",
94        "SK_CODEC_DECODES_JPEG",
95    ],
96    "//src/codec:webp_decode_codec": ["SK_CODEC_DECODES_WEBP"],
97})
98
99TYPEFACE_DEFINES = select_multi(
100    {
101        "//src/ports:uses_freetype": ["SK_TYPEFACE_FACTORY_FREETYPE"],
102        "//src/ports:uses_fontations": ["SK_TYPEFACE_FACTORY_FONTATIONS"],
103        #TODO: others when they become available
104    },
105)
106
107PLATFORM_DEFINES = select({
108    "//bazel/common_config_settings:cpu_wasm": [
109        # working around https://github.com/emscripten-core/emscripten/issues/10072
110        "SK_FORCE_8_BYTE_ALIGNMENT",
111    ],
112    "//conditions:default": [],
113}) + select({
114    "//bazel/platform:trivial_abi": ["SK_TRIVIAL_ABI=[[clang::trivial_abi]]"],
115    "//bazel/common_config_settings:cpu_wasm": ["SK_TRIVIAL_ABI=[[clang::trivial_abi]]"],
116    "//conditions:default": [],
117})
118
119# Skia's public headers can work with any version of a Vulkan header. When compiling Skia internals,
120# we want to use the Vulkan headers in //include/third_party/vulkan, so we set this define only when
121# building the library but not exporting it for clients, so they can use whatever vulkan they want.
122GENERAL_LOCAL_DEFINES = ["SKIA_IMPLEMENTATION=1"]
123
124DEFAULT_DEFINES = GENERAL_DEFINES + GPU_DEFINES + CODEC_DEFINES + TYPEFACE_DEFINES + PLATFORM_DEFINES + EXTRA_DEFINES
125
126DEFAULT_LOCAL_DEFINES = GENERAL_LOCAL_DEFINES
127