load("@rules_cc//cc:defs.bzl", "cc_import", "cc_library", "cc_test") load("@rules_rust//rust:defs.bzl", "rust_binary", "rust_static_library") rust_static_library( name = "rust_lib", srcs = ["lib.rs"], edition = "2021", ) cc_library( name = "c_lib", srcs = ["lib.c"], hdrs = ["lib.h"], deps = [":rust_lib"], ) # Tests that cc_shared_library correctly traverses into # `rust_static_library` when linking. cc_shared_library( name = "shared", deps = [":c_lib"], ) cc_test( name = "test", srcs = ["main.c"], dynamic_deps = [":shared"], linkstatic = True, deps = [":c_lib"], ) NOT_WINDOWS = select({ "@platforms//os:linux": [], "@platforms//os:macos": [], "//conditions:default": ["@platforms//:incompatible"], }) cc_import( name = "shared_import", shared_library = ":shared", target_compatible_with = NOT_WINDOWS, ) rust_binary( name = "linked_against_shared", srcs = ["linked_against_shared.rs"], edition = "2018", target_compatible_with = NOT_WINDOWS, deps = [":shared_import"], ) sh_test( name = "runfiles_contains_shared", srcs = ["runfiles_contains_shared.sh"], data = [":linked_against_shared"], target_compatible_with = NOT_WINDOWS, )