load("//bazel:macros.bzl", "enforce_iwyu_on_package", "exports_files_legacy", "generated_cc_atom")
load("//bazel:cc_binary_with_flags.bzl", "cc_binary_with_flags")

licenses(["notice"])

exports_files_legacy()

enforce_iwyu_on_package()

cc_binary_with_flags(
    name = "hello_world_gl",
    srcs = [
        "//example:HelloWorld_src",
    ],
    # These flags are defined in //bazel/common_config_settings/BUILD.bazel
    set_flags = {
        # Use the GL backend with the normal GL standard (as opposed to WebGL or GLES)
        "gpu_backend": [
            "gl_backend",
        ],
        "with_gl_standard": [
            "gl_standard",
        ],
        # Load fonts from the standard system directory (e.g. "/usr/share/fonts/")
        # as defined in //src/ports/SkFontMgr_custom_directory_factory.cpp
        "fontmgr_factory": [
            "custom_directory_fontmgr_factory",
        ],
    },
    deps = [
        "//:skia_core",
        "//tools/sk_app",
    ],
)

cc_binary_with_flags(
    name = "hello_world_vulkan",
    srcs = [
        "//example:HelloWorld_src",
    ],
    # These flags are defined in //bazel/common_config_settings/BUILD.bazel
    set_flags = {
        "gpu_backend": [
            "vulkan_backend",
        ],
        # Load fonts from the standard system directory (e.g. "/usr/share/fonts/")
        # as defined in //src/ports/SkFontMgr_custom_directory_factory.cpp
        "fontmgr_factory": [
            "custom_directory_fontmgr_factory",
        ],
    },
    deps = [
        "//:skia_core",
        "//tools/sk_app",
    ],
)

cc_binary_with_flags(
    name = "hello_world_dawn",
    srcs = [
        "//example:HelloWorld_src",
    ],
    # These flags are defined in //bazel/common_config_settings/BUILD.bazel
    set_flags = {
        "gpu_backend": [
            "dawn_backend",
        ],
        # Load fonts from the standard system directory (e.g. "/usr/share/fonts/")
        # as defined in //src/ports/SkFontMgr_custom_directory_factory.cpp
        "fontmgr_factory": [
            "custom_directory_fontmgr_factory",
        ],
    },
    deps = [
        "//:skia_core",
        "//tools/sk_app",
    ],
)

cc_binary_with_flags(
    name = "vulkan_basic",
    srcs = [
        "//example:VulkanBasic_src",
    ],
    # These flags are defined in //bazel/common_config_settings/BUILD.bazel
    set_flags = {
        "gpu_backend": [
            "vulkan_backend",
        ],
    },
    deps = [
        "//:skia_core",
        # This DEPS is for the utility in the demo for creating a vulkan context.
        # Outside clients would not need it.
        "//tools/gpu/vk:VkTestUtils_src",
    ],
)

# Everything below this line is autogenerated by gazelle using the C++ plugin built here:
# https://github.com/google/skia-buildbot/tree/main/bazel/gazelle/cpp
# These can be regenerated (if needed) by navigating to //bazel and running `make generate`
# =========================================================================================

generated_cc_atom(
    name = "HelloWorld_hdr",
    hdrs = ["HelloWorld.h"],
    visibility = ["//:__subpackages__"],
    deps = [
        "//include/core:SkScalar_hdr",
        "//include/core:SkTypes_hdr",
        "//tools/sk_app:Application_hdr",
        "//tools/sk_app:Window_hdr",
        "//tools/skui:ModifierKey_hdr",
    ],
)

generated_cc_atom(
    name = "HelloWorld_src",
    srcs = ["HelloWorld.cpp"],
    visibility = ["//:__subpackages__"],
    deps = [
        ":HelloWorld_hdr",
        "//include/core:SkCanvas_hdr",
        "//include/core:SkColor_hdr",
        "//include/core:SkFontTypes_hdr",
        "//include/core:SkFont_hdr",
        "//include/core:SkGraphics_hdr",
        "//include/core:SkPaint_hdr",
        "//include/core:SkPoint_hdr",
        "//include/core:SkRect_hdr",
        "//include/core:SkShader_hdr",
        "//include/core:SkString_hdr",
        "//include/core:SkSurface_hdr",
        "//include/core:SkTileMode_hdr",
        "//include/effects:SkGradientShader_hdr",
        "//tools/sk_app:DisplayParams_hdr",
    ],
)

generated_cc_atom(
    name = "VulkanBasic_src",
    srcs = ["VulkanBasic.cpp"],
    visibility = ["//:__subpackages__"],
    deps = [
        "//include/core:SkAlphaType_hdr",
        "//include/core:SkCanvas_hdr",
        "//include/core:SkColorType_hdr",
        "//include/core:SkColor_hdr",
        "//include/core:SkImageInfo_hdr",
        "//include/core:SkRefCnt_hdr",
        "//include/core:SkSurface_hdr",
        "//include/core:SkTypes_hdr",
        "//include/gpu:GrDirectContext_hdr",
        "//include/gpu/vk:GrVkBackendContext_hdr",
        "//include/gpu/vk:GrVkExtensions_hdr",
        "//tools/gpu/vk:VkTestUtils_hdr",
    ],
)
