# Copyright 2024 The Pigweed Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

load("@bazel_skylib//rules:common_settings.bzl", "bool_flag", "string_flag")
load("@rules_cc//cc:cc_library.bzl", "cc_library")

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

cc_library(
    name = "libusb_linux_config",
    hdrs = ["linux/config.h"],
    defines = select({
        ":use_udev": ["_RULES_LIBUSB_USE_UDEV=1"],
        "//conditions:default": [],
    }),
)

cc_library(
    name = "default_libusb_config",
    hdrs = ["include/config.h"],
    includes = ["include"],
    deps = select({
        "@platforms//os:windows": ["@libusb//:libusb_msvc_config"],
        "@platforms//os:macos": ["@libusb//:libusb_macos_config"],
        "@platforms//os:linux": ["//:libusb_linux_config"],
        "//conditions:default": [],
    }),
)

# Forces libusb to always be dynamically linked. This defaults to True since
# libusb is LGPL and that is usually the right thing. Be cautious when
# statically linking and distributing binaries, as libusb is LGPL.
bool_flag(
    name = "force_dynamic_linkage",
    build_setting_default = True,
)

config_setting(
    name = "force_dynamic_linkage_enabled",
    flag_values = {":force_dynamic_linkage": "True"},
)

string_flag(
    name = "linux_backend",
    build_setting_default = "netlink",
    values = [
        "udev",
        "netlink",
    ],
)

config_setting(
    name = "use_udev",
    flag_values = {":linux_backend": "udev"},
)

config_setting(
    name = "use_netlink",
    flag_values = {":linux_backend": "netlink"},
)
