"""
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({
    "//bazel/common_config_settings:enable_skvm_true": ["SK_ENABLE_SKVM"],
    "//conditions:default": [],
}) + select({
    "//bazel/common_config_settings:enable_sksl_in_raster_pipeline_true": ["SK_ENABLE_SKSL_IN_RASTER_PIPELINE"],
    "//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_SKSL_IN_RASTER_PIPELINE",
        "SK_ENABLE_SKVM",
        "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
    ],
    "//src/gpu:metal_backend": [
        "SK_METAL",
        "SK_GANESH",
    ],
}) + 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 = 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/codec:png_decode_codec": ["SK_CODEC_DECODES_PNG"],
    "//src/codec:raw_decode_codec": [
        "SK_CODEC_DECODES_RAW",
        "SK_CODEC_DECODES_JPEG",
    ],
    "//src/codec:webp_decode_codec": ["SK_CODEC_DECODES_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_FORCE_AAA",
    ],
    "//conditions:default": [],
}) + select({
    "//bazel/platform:trivial_abi": ["SK_TRIVIAL_ABI=[[clang::trivial_abi]]"],
    "//bazel/common_config_settings:cpu_wasm": ["SK_TRIVIAL_ABI=[[clang::trivial_abi]]"],
    "//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
