""" This file contains defines used by all builds of Skia. """ load("//bazel:extra_defines.bzl", "EXTRA_DEFINES") load("//bazel:skia_rules.bzl", "select_multi") GENERAL_DEFINES = [ "SK_GAMMA_APPLY_TO_A8", ] + select({ "//bazel/common_config_settings:debug_build": [ "SK_DEBUG", ], "//bazel/common_config_settings:release_build": [ "SK_RELEASE", "NDEBUG", ], "//bazel/common_config_settings:fast_build": [ "SK_DEBUG", ], }) + select({ "//bazel/common_config_settings:enable_tracing_false": ["SK_DISABLE_TRACING"], "//conditions:default": [], }) + select({ "//bazel/common_config_settings:enable_effect_serialization_false": ["SK_DISABLE_EFFECT_DESERIALIZATION"], "//conditions:default": [], }) + select({ "//src/gpu:enable_gpu_test_utils_true": [ "GR_TEST_UTILS=1", "SK_ALLOW_STATIC_GLOBAL_INITIALIZERS=1", ], "//conditions:default": [], }) + select({ "//src/sksl:enable_skslc_true": [ "SKSL_STANDALONE", "SK_DISABLE_TRACING", "SK_ENABLE_SPIRV_CROSS", "SK_ENABLE_SPIRV_VALIDATION", "SK_ENABLE_WGSL_VALIDATION", ], "//conditions:default": [], }) + select({ "//src/sksl:enable_sksl_tracing_true": ["SKSL_ENABLE_TRACING"], "//conditions:default": [], }) + select({ "//src/sksl:needs_sksl": ["SK_ENABLE_SKSL"], "//conditions:default": [], }) + select({ "//src/pdf:enable_pdf_backend_true": ["SK_SUPPORT_PDF"], "//conditions:default": [], }) + select({ "//src/shaders:legacy_shader_context_true": [], # This is the default in SkTypes.h "//src/shaders:legacy_shader_context_false": ["SK_DISABLE_LEGACY_SHADERCONTEXT"], }) + select({ "//src/lazy:enable_discardable_memory_true": ["SK_USE_DISCARDABLE_SCALEDIMAGECACHE"], "//src/lazy:enable_discardable_memory_false": [], }) GPU_DEFINES = select_multi({ "//src/gpu:gl_backend": [ "SK_GL", "SK_GANESH", ], "//src/gpu:vulkan_backend": [ "SK_VULKAN", "SK_GANESH", ], "//src/gpu:dawn_backend": [ "SK_DAWN", "SK_GANESH", "VK_USE_PLATFORM_XCB_KHR", # TODO(kjlubick) support dawn's dawn_enable_vulkan etc ], }) + select({ "//src/gpu:gl_standard": [ "SK_ASSUME_GL=1", ], "//src/gpu:gles_standard": [ "SK_ASSUME_GL_ES=1", ], "//src/gpu:webgl_standard": [ "SK_ASSUME_WEBGL=1", "SK_USE_WEBGL", ], "//conditions:default": [], }) + select({ "//src/gpu:vulkan_with_vma": [ "SK_USE_VMA", ], "//conditions:default": [], }) CODEC_DEFINES = [ "SK_HAS_ANDROID_CODEC", ] + select_multi( { "//src/codec:avif_decode_codec": ["SK_CODEC_DECODES_AVIF"], "//src/codec:gif_decode_codec": ["SK_HAS_WUFFS_LIBRARY"], "//src/codec:jpeg_decode_codec": ["SK_CODEC_DECODES_JPEG"], "//src/encode:jpeg_encode_codec": ["SK_ENCODE_JPEG"], "//src/codec:png_decode_codec": ["SK_CODEC_DECODES_PNG"], "//src/encode:png_encode_codec": ["SK_ENCODE_PNG"], "//src/codec:raw_decode_codec": [ "SK_CODEC_DECODES_RAW", "SK_CODEC_DECODES_JPEG", ], "//src/codec:webp_decode_codec": ["SK_CODEC_DECODES_WEBP"], "//src/encode:webp_encode_codec": ["SK_ENCODE_WEBP"], }, ) TYPEFACE_DEFINES = select_multi( { "//src/ports:uses_freetype": ["SK_TYPEFACE_FACTORY_FREETYPE"], #TODO: others when they become available }, ) PLATFORM_DEFINES = select({ "//bazel/common_config_settings:cpu_wasm": [ # working around https://github.com/emscripten-core/emscripten/issues/10072 "SK_FORCE_8_BYTE_ALIGNMENT", "SK_DISABLE_AAA", # This saves about 57KB of code size, uncompressed ], "//conditions:default": [], }) # Skia's public headers can work with any version of a Vulkan header. When compiling Skia internals, # we want to use the Vulkan headers in //include/third_party/vulkan, so we set this define only when # building the library but not exporting it for clients, so they can use whatever vulkan they want. GENERAL_LOCAL_DEFINES = ["SKIA_IMPLEMENTATION=1"] DEFAULT_DEFINES = GENERAL_DEFINES + GPU_DEFINES + CODEC_DEFINES + TYPEFACE_DEFINES + PLATFORM_DEFINES + EXTRA_DEFINES DEFAULT_LOCAL_DEFINES = GENERAL_LOCAL_DEFINES