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

load("//tools:environments.bzl", "mcu_cpus")

cc_library(
    name = "bitpacking",
    hdrs = [
        "bitpacking.h",
    ],
    compatible_with = mcu_cpus,
    visibility = ["//visibility:public"],
    deps = [
        "//third_party/GSL",
    ],
)

cc_test(
    name = "bitpacking_test",
    srcs = [
        "bitpacking_test.cc",
    ],
    deps = [
        ":bitpacking",
        "//aos/testing:googletest",
    ],
)

py_library(
    name = "py_trapezoid_profile",
    srcs = [
        "trapezoid_profile.py",
    ],
    deps = [
        ":python_init",
    ],
)

cc_library(
    name = "run_command",
    srcs = [
        "run_command.cc",
    ],
    hdrs = [
        "run_command.h",
    ],
    deps = [
        "//aos/logging",
    ],
)

cc_test(
    name = "run_command_test",
    srcs = [
        "run_command_test.cc",
    ],
    deps = [
        ":run_command",
        "//aos/logging",
        "//aos/testing:googletest",
    ],
)

cc_library(
    name = "math",
    hdrs = ["math.h"],
    deps = [
        "@org_tuxfamily_eigen//:eigen",
    ],
)

cc_test(
    name = "math_test",
    srcs = ["math_test.cc"],
    deps = [
        ":math",
        "//aos/testing:googletest",
    ],
)

cc_library(
    name = "death_test_log_implementation",
    hdrs = [
        "death_test_log_implementation.h",
    ],
    deps = [
        "//aos/logging:implementations",
    ],
)

cc_library(
    name = "inet_addr",
    srcs = [
        "inet_addr.cc",
    ],
    hdrs = [
        "inet_addr.h",
    ],
    deps = [
        "//aos:byteorder",
        "//aos:network_port",
    ],
)

cc_library(
    name = "phased_loop",
    srcs = [
        "phased_loop.cc",
    ],
    hdrs = [
        "phased_loop.h",
    ],
    deps = [
        "//aos/time",
        "@com_github_google_glog//:glog",
    ],
)

cc_library(
    name = "log_interval",
    hdrs = [
        "log_interval.h",
    ],
    deps = [
        "//aos/logging",
        "//aos/time",
    ],
)

cc_library(
    name = "string_to_num",
    hdrs = [
        "string_to_num.h",
    ],
)

cc_test(
    name = "string_to_num_test",
    srcs = [
        "string_to_num_test.cc",
    ],
    deps = [
        ":string_to_num",
        "//aos/testing:googletest",
    ],
)

cc_library(
    name = "trapezoid_profile",
    srcs = [
        "trapezoid_profile.cc",
    ],
    hdrs = [
        "trapezoid_profile.h",
    ],
    linkopts = [
        "-lm",
    ],
    deps = [
        "//aos/logging",
        "//aos/time",
        "@org_tuxfamily_eigen//:eigen",
    ],
)

cc_test(
    name = "trapezoid_profile_test",
    srcs = [
        "trapezoid_profile_test.cc",
    ],
    deps = [
        ":trapezoid_profile",
        "//aos/testing:googletest",
    ],
)

cc_library(
    name = "wrapping_counter",
    srcs = [
        "wrapping_counter.cc",
    ],
    hdrs = [
        "wrapping_counter.h",
    ],
)

cc_test(
    name = "wrapping_counter_test",
    srcs = [
        "wrapping_counter_test.cc",
    ],
    deps = [
        ":wrapping_counter",
        "//aos/testing:googletest",
    ],
)

cc_library(
    name = "options",
    hdrs = [
        "options.h",
    ],
)

cc_test(
    name = "options_test",
    srcs = [
        "options_test.cc",
    ],
    deps = [
        ":options",
        "//aos/testing:googletest",
    ],
)

cc_library(
    name = "compiler_memory_barrier",
    hdrs = [
        "compiler_memory_barrier.h",
    ],
)

cc_library(
    name = "global_factory",
    hdrs = [
        "global_factory.h",
    ],
)

cc_test(
    name = "global_factory_test",
    srcs = [
        "global_factory_test.cc",
    ],
    deps = [
        ":global_factory",
        "//aos/testing:googletest",
    ],
)

cc_library(
    name = "linked_list",
    hdrs = [
        "linked_list.h",
    ],
    deps = [
        "//aos/transaction",
    ],
)

cc_test(
    name = "linked_list_test",
    srcs = [
        "linked_list_test.cc",
    ],
    deps = [
        ":linked_list",
        "//aos/logging",
        "//aos/testing:googletest",
    ],
)

cc_test(
    name = "phased_loop_test",
    srcs = [
        "phased_loop_test.cc",
    ],
    deps = [
        ":phased_loop",
        "//aos/testing:googletest",
        "//aos/time",
    ],
)

cc_library(
    name = "file",
    srcs = [
        "file.cc",
    ],
    hdrs = [
        "file.h",
    ],
    deps = [
        "//aos/scoped:scoped_fd",
        "@com_github_google_glog//:glog",
        "@com_google_absl//absl/strings",
    ],
)

cc_test(
    name = "file_test",
    size = "small",
    srcs = [
        "file_test.cc",
    ],
    deps = [
        ":file",
        "//aos/testing:googletest",
    ],
)

py_library(
    name = "python_init",
    srcs = ["__init__.py"],
    visibility = ["//visibility:public"],
    deps = ["//aos:python_init"],
)
