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",
    ],
    "//conditions:default": [],
}) + select({
    "//bazel/common_config_settings:enable_sksl_tracing_true": [
        "SKSL_ENABLE_TRACING",
    ],
    "//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__"],
)
