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

CIMPLE_FILES = [
    "//c-toxcore/toxav:cimple_files",
    "//c-toxcore/toxcore:cimple_files",
    "//c-toxcore/toxencryptsave:cimple_files",
    "//c-toxcore/third_party:cimple_files",
]

sh_test(
    name = "cimple_test",
    size = "small",
    srcs = ["//hs-tokstyle/tools:check-cimple"],
    args = ["$(locations %s)" % f for f in CIMPLE_FILES] + [
        "-Wno-boolean-return",
        "-Wno-callback-names",
        "-Wno-enum-from-int",
        "+RTS",
        "-N4",
        "-RTS",
    ],
    data = CIMPLE_FILES,
    tags = [
        "haskell",
        "no-cross",
    ],
)

sh_test(
    name = "c_test",
    size = "small",
    srcs = ["//hs-tokstyle/tools:check-c"],
    args = [
        "--cc=$(CC)",
        "-Iexternal/libsodium/include",
        "-Iexternal/libvpx",
        "-Iexternal/opus/include",
        "-Ihs-tokstyle/include",
    ] + ["$(locations %s)" % f for f in CIMPLE_FILES] + [
        "+RTS",
        "-N4",
        "-RTS",
    ],
    data = CIMPLE_FILES + [
        "//hs-tokstyle:headers",
        "@libsodium//:headers",
        "@libvpx//:headers",
        "@opus//:headers",
    ],
    tags = [
        "haskell",
        "no-cross",
    ],
    toolchains = ["@rules_cc//cc:current_cc_toolchain"],
)

sh_test(
    name = "cimplefmt_test",
    size = "small",
    srcs = ["//hs-cimple/tools:cimplefmt"],
    args = ["--reparse"] + ["$(locations %s)" % f for f in CIMPLE_FILES],
    data = CIMPLE_FILES,
    tags = [
        "haskell",
        "no-cross",
    ],
)

cc_library(
    name = "misc_tools",
    testonly = 1,
    srcs = ["misc_tools.c"],
    hdrs = ["misc_tools.h"],
    visibility = ["//c-toxcore:__subpackages__"],
    deps = [
        "//c-toxcore/toxcore:ccompat",
        "//c-toxcore/toxcore:tox",
    ],
)

cc_binary(
    name = "Messenger_test",
    testonly = 1,
    srcs = ["Messenger_test.c"],
    deps = [
        ":misc_tools",
        "//c-toxcore/toxcore:Messenger",
        "//c-toxcore/toxcore:ccompat",
        "//c-toxcore/toxcore:mono_time",
        "//c-toxcore/toxcore:os_memory",
        "//c-toxcore/toxcore:os_random",
    ],
)

cc_binary(
    name = "decrypt_save",
    testonly = 1,
    srcs = ["decrypt_save.c"],
    deps = ["//c-toxcore/toxencryptsave"],
)
