load("//bazel:macros.bzl", "exports_files_legacy", "select_multi", "selects", "skia_cc_deps", "skia_cc_library", "skia_objc_library")
load("//bazel:copts.bzl", "DEFAULT_OBJC_COPTS")

licenses(["notice"])

exports_files_legacy()

selects.config_setting_group(
    name = "dawn_unix",
    match_all = [
        "//src/gpu:dawn_backend",
        "@platforms//os:linux",
    ],
)

selects.config_setting_group(
    name = "gl_unix",
    match_all = [
        "//src/gpu:gl_backend",
        "@platforms//os:linux",
    ],
)

selects.config_setting_group(
    name = "gl_mac",
    match_all = [
        "//src/gpu:gl_backend",
        "@platforms//os:macos",
    ],
)

selects.config_setting_group(
    name = "vulkan_unix",
    match_all = [
        "//src/gpu:vulkan_backend",
        "@platforms//os:linux",
    ],
)

skia_cc_library(
    name = "sk_app",
    testonly = True,
    srcs = [
        "Window.cpp",
        "WindowContext.cpp",
        "RasterWindowContext.h",
    ] + select_multi(
        {
            "//src/gpu:dawn_backend": [
                "DawnWindowContext.h",
                "DawnWindowContext.cpp",
            ],
            "//src/gpu:gl_backend": [
                "GLWindowContext.cpp",
                "GLWindowContext.h",
            ],
            "//src/gpu:vulkan_backend": [
                "VulkanWindowContext.h",
                "VulkanWindowContext.cpp",
            ],
        },
    ) + select({
        "@platforms//os:linux": ["//tools/sk_app/unix:srcs"],
        "//conditions:default": [],
        # TODO(kjlubick) add Windows/Mac support
    }),
    hdrs = [
        "Application.h",
        "DisplayParams.h",
        "Window.h",
        "WindowContext.h",
    ],
    visibility = ["//:__subpackages__"],
    deps = [
        "//:skia_internal",
        "//tools/skui",
        "//tools/timer",
    ] + select({
        "@platforms//os:linux": ["//tools/sk_app/unix:deps"],
        "//conditions:default": [],
    }),
)

skia_objc_library(
    name = "sk_app_objc",
    testonly = True,
    srcs = [
        "Window.cpp",
        "WindowContext.cpp",
        "RasterWindowContext.h",
    ] + select_multi(
        {
            # TODO(kjlubick, jmbetancourt) Graphite and Metal backend
            "//src/gpu:dawn_backend": [
                "DawnWindowContext.h",
                "DawnWindowContext.cpp",
            ],
            "//src/gpu:gl_backend": [
                "GLWindowContext.cpp",
                "GLWindowContext.h",
            ],
        },
    ) + select({
        "@platforms//os:macos": ["//tools/sk_app/mac:srcs"],
        "//conditions:default": [],
        # TODO ios support
    }),
    hdrs = [
        "Application.h",
        "DisplayParams.h",
        "Window.h",
        "WindowContext.h",
    ],
    copts = DEFAULT_OBJC_COPTS + [
        "-Wno-deprecated-declarations",
        "-DGL_SILENCE_DEPRECATION",
    ],
    visibility = ["//:__subpackages__"],
    deps = [
        ":platform_deps",
        "//:skia_internal",
        "//tools/skui",
        "//tools/timer",
    ],
)

skia_cc_deps(
    name = "platform_deps",
    testonly = True,
    visibility = ["//visibility:private"],
    deps = select({
        "@platforms//os:macos": ["//tools/sk_app/mac:deps"],
        "//conditions:default": [],
    }),
)
