load("//bazel:macros.bzl", "exports_files_legacy", "select_multi", "skia_defines")
load("//bazel:defines.bzl", "EXTRA_DEFINES")

licenses(["notice"])

exports_files_legacy()

GENERAL_DEFINES = [
    "SK_HAS_ANDROID_CODEC",
    "SKIA_IMPLEMENTATION=1",
    "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"],
})

GPU_DEFINES = select_multi({
    "//src/gpu:gl_backend": [
        "SK_GL",
        "SK_SUPPORT_GPU=1",
    ],
    "//src/gpu:vulkan_backend": [
        "SK_VULKAN",
        "SK_SUPPORT_GPU=1",
    ],
    "//src/gpu:dawn_backend": [
        "SK_DAWN",
        "SK_SUPPORT_GPU=1",
        "VK_USE_PLATFORM_XCB_KHR",  # TODO(kjlubick) support dawn's dawn_enable_vulkan etc
    ],
}) + select({
    "//src/gpu:has_gpu_backend": [],
    "//conditions:default": [
        "SK_SUPPORT_GPU=0",
    ],
}) + 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:gif_decode_codec": ["SK_HAS_WUFFS_LIBRARY"],
        "//src/codec:jpeg_decode_codec": ["SK_CODEC_DECODES_JPEG"],
        "//src/images:jpeg_encode_codec": ["SK_ENCODE_JPEG"],
        "//src/codec:png_decode_codec": ["SK_CODEC_DECODES_PNG"],
        "//src/images: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/images:webp_encode_codec": ["SK_ENCODE_WEBP"],
    },
)

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_defines(
    name = "defines_from_flags",
    defines = GENERAL_DEFINES + GPU_DEFINES + CODEC_DEFINES + PLATFORM_DEFINES +
              EXTRA_DEFINES,
    visibility = ["//:__subpackages__"],
)
