load("//examples/windows/dll:windows_dll_library.bzl", "windows_dll_library")
load("@rules_cc//cc:defs.bzl", "cc_binary")

filegroup(
    name = "srcs",
    srcs = glob(["**"]),
    visibility = ["//examples:__pkg__"],
)

# Define the shared library
windows_dll_library(
    name = "hellolib",
    srcs = ["hello-library.cpp"],
    hdrs = ["hello-library.h"],
    # Define COMPILING_DLL to export symbols during compiling the DLL.
    # See hello-library.h
    copts = ["/DCOMPILING_DLL"],
)

# **Explicitly link to hellolib.dll**

## Declare hellolib.dll as data dependency and load it explicitly in code.
cc_binary(
    name = "hello_world-load-dll-at-runtime",
    srcs = ["hello_world-load-dll-at-runtime.cpp"],
    data = [":hellolib.dll"],
)

# **Implicitly link to hellolib.dll**

## Link to hellolib.dll through its import library.
cc_binary(
    name = "hello_world-link-to-dll-via-lib",
    srcs = ["hello_world-link-to-dll-via-lib.cpp"],
    deps = [":hellolib"],
)
