load("@pybind11_bazel//:build_defs.bzl", "pybind_extension", "pybind_library")

package(default_visibility = ["//visibility:public"])

exports_files(
    [
        "exported_symbols.lds",
        "version_script.lds",
    ],
    visibility = ["//visibility:private"],
)

pybind_extension(
    name = "libkcal",
    srcs = ["kcal_wrapper.cc"],
    linkopts = select({
        "@bazel_tools//src/conditions:darwin": [
            "-Wl,-exported_symbols_list,$(location //kcal:exported_symbols.lds)",
        ],
        "//conditions:default": [
            "-Wl,--version-script,$(location //kcal:version_script.lds)",
        ],
    }),
    deps = [
        ":context_ext",
        ":exported_symbols.lds",
        ":version_script.lds",
        "@yacl//yacl/link",
    ],
)

cc_library(
    name = "context_ext",
    srcs = ["context_ext.cc"],
    hdrs = ["context_ext.h"],
    includes = ["kcal"],
    visibility = ["//visibility:private"],
    deps = [
        ":yacl_linker",
        "@kcal_middleware",
    ],
)

cc_library(
    name = "yacl_linker",
    srcs = ["yacl_linker.cc"],
    hdrs = ["yacl_linker.h"],
    includes = ["kcal"],
    visibility = ["//visibility:private"],
    deps = [
        "@kcal_middleware",
        "@yacl//yacl/link",
    ],
)