load("//bazel:macros.bzl", "cc_library", "exports_files_legacy", "select_multi")

licenses(["notice"])

exports_files_legacy()

GENERAL_DEFINES = [
    # The following comment is load-bearing. It will be replace via regex when we build for Google3
    # Do not remove it or we won't be able to properly define SK_BUILD_FOR_GOOGLE3
    # REPLACE_WHEN_BUILDING_IN_GOOGLE3
    "SK_HAS_ANDROID_CODEC",
    "SKIA_IMPLEMENTATION=1",
] + select({
    "//bazel/common_config_settings:debug_build": [
        "SK_DEBUG",
    ],
    "//bazel/common_config_settings:release_build": [
        "SK_RELEASE",
    ],
    "//conditions:default": [
        "SK_RELEASE",
    ],
}) + 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:is_skia_dev_build_true": [
        "GR_TEST_UTILS=1",
        "SK_ALLOW_STATIC_GLOBAL_INITIALIZERS=1",
    ],
    "//conditions:default": [],
}) + select({
    "//bazel/common_config_settings:enable_skslc_true": [
        "SKSL_STANDALONE",
        "SK_DISABLE_TRACING",
        "SK_ENABLE_SPIRV_CROSS",
        "SK_ENABLE_SPIRV_VALIDATION",
        "SK_ENABLE_WGSL_VALIDATION",
    ],
    "//conditions:default": [],
}) + select({
    "//bazel/common_config_settings:enable_sksl_tracing_true": ["SKSL_ENABLE_TRACING"],
    "//conditions:default": [],
}) + select({
    "//bazel/common_config_settings:needs_sksl": ["SK_ENABLE_SKSL"],
    "//conditions:default": [],
})

GPU_DEFINES = select({
    "//bazel/common_config_settings:gl_backend": [
        "SK_GL",
        "SK_SUPPORT_GPU=1",
    ],
    "//bazel/common_config_settings:vulkan_backend": [
        "SK_VULKAN",
        "SK_SUPPORT_GPU=1",
    ],
    "//bazel/common_config_settings:dawn_backend": [
        "SK_DAWN",
        "SK_SUPPORT_GPU=1",
        "VK_USE_PLATFORM_XCB_KHR",  # TODO(kjlubick) support dawn's dawn_enable_vulkan etc
    ],
    "//conditions:default": [
        "SK_SUPPORT_GPU=0",
    ],
}) + select({
    "//bazel/common_config_settings:gl_standard": [
        "SK_ASSUME_GL=1",
    ],
    "//bazel/common_config_settings:gles_standard": [
        "SK_ASSUME_GL_ES=1",
    ],
    "//bazel/common_config_settings:webgl_standard": [
        "SK_ASSUME_WEBGL=1",
        "SK_USE_WEBGL",
    ],
    "//conditions:default": [],
}) + select({
    "//bazel/common_config_settings:vulkan_with_vma": [
        "SK_USE_VMA",
    ],
    "//conditions:default": [],
})

CODEC_DEFINES = select_multi(
    {
        "//bazel/common_config_settings:gif_decode_codec": ["SK_HAS_WUFFS_LIBRARY"],
        "//bazel/common_config_settings:jpeg_decode_codec": ["SK_CODEC_DECODES_JPEG"],
        "//bazel/common_config_settings:jpeg_encode_codec": ["SK_ENCODE_JPEG"],
        "//bazel/common_config_settings:png_decode_codec": ["SK_CODEC_DECODES_PNG"],
        "//bazel/common_config_settings:png_encode_codec": ["SK_ENCODE_PNG"],
        "//bazel/common_config_settings:raw_decode_codec": [
            "SK_CODEC_DECODES_RAW",
            "SK_CODEC_DECODES_JPEG",
        ],
        "//bazel/common_config_settings:webp_decode_codec": ["SK_CODEC_DECODES_WEBP"],
        "//bazel/common_config_settings:webp_encode_codec": ["SK_ENCODE_WEBP"],
    },
    default = [],
)

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_LEGACY_SHADERCONTEXT",
        "SK_DISABLE_AAA",  # This saves about 57KB of code size, uncompressed
    ],
    "//conditions:default": [],
})

SHAPER_DEFINES = select_multi(
    {
        "//bazel/common_config_settings:coretext_shaper": ["SK_SHAPER_CORETEXT_AVAILABLE"],
        "//bazel/common_config_settings:harfbuzz_shaper": ["SK_SHAPER_HARFBUZZ_AVAILABLE"],
    },
    default = [],
)

UNICODE_DEFINES = select({
    "//bazel/common_config_settings:use_icu_true": ["SK_UNICODE_AVAILABLE"],
    "//conditions:default": [],
})

cc_library(
    name = "defines_from_flags",
    defines = GENERAL_DEFINES + GPU_DEFINES + CODEC_DEFINES + PLATFORM_DEFINES +
              SHAPER_DEFINES + UNICODE_DEFINES,
    visibility = ["//:__subpackages__"],
)
