# # Tetrodotoxin
# Copyright (c) 2023-present Matt Kaes and contributors

load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("@rules_cc//cc:cc_shared_library.bzl", "cc_shared_library")

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

cc_library(
    name = "implementation",
    srcs = ["provider.cpp"],
    hdrs = ["provider.hpp"],
    copts = ["-fvisibility=hidden"],
    deps = [
        "//imaging/contracts",
        "//imaging/cpu",
        "//plugins/render",
        "//sampling:publication",
        "//sampling/cpu",
    ],
)

cc_shared_library(
    name = "cpu_provider",
    dynamic_deps = [
        "//:support",
        "@tetrodotoxin//ttx:runtime",
    ],
    shared_lib_name = select({
        "//:web": "libcpu_provider.wasm",
        "//conditions:default": "libcpu_provider.so",
    }),
    user_link_flags = select({
        "//:web": [
            "--oformat=wasm",
            "-sSIDE_MODULE=1",
            "-fwasm-exceptions",
        ],
        "//conditions:default": [
            "-Wl,-z,defs",
            "-Wl,-rpath,$ORIGIN",
        ],
    }),
    deps = [":implementation"],
)
