# Bazel build rules for Fuzzyc.
load("@fuzzyc_deps//:requirements.bzl", "requirement")

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

ANTLR4_VERSION = "4.11.1"

genrule(
    name = "fuzzyc_cc_module_sources",
    srcs = [
        "Common.g4",
        "Module.g4",
        "ModuleLex.g4",
        "Action.g4",
    ],
    outs = [
        "ModuleParser.cpp",
        "ModuleParser.h",
        "ModuleLexer.cpp",
        "ModuleLexer.h",
        "ModuleListener.h",
        "ModuleListener.cpp",
        "ModuleBaseListener.cpp",
        "ModuleBaseListener.h",
    ],
    cmd = " ".join([
        "$(locations @fuzzyc_deps_antlr4_tools//:rules_python_wheel_entry_point_antlr4) -v ",
        ANTLR4_VERSION,
        " -o $(RULEDIR) -Dlanguage=Cpp -package fuzzyc_cc_module $(SRCS);",
        "find $(RULEDIR) \\( -name *.cpp -o -name *.h \\) -exec cp -n {} $(RULEDIR) \\;",
    ]),
    local = True,
    tools = [
        requirement("antlr4-tools"),
        "@fuzzyc_deps_antlr4_tools//:rules_python_wheel_entry_point_antlr4",
    ],
)

genrule(
    name = "fuzzyc_cc_function_sources",
    srcs = [
        "Common.g4",
        "Function.g4",
        "ModuleLex.g4",
        "Action.g4",
    ],
    outs = [
        "FunctionParser.cpp",
        "FunctionParser.h",
        "FunctionLexer.cpp",
        "FunctionLexer.h",
        "FunctionListener.h",
        "FunctionListener.cpp",
        "FunctionBaseListener.cpp",
        "FunctionBaseListener.h",
    ],
    cmd = " ".join([
        "$(locations @fuzzyc_deps_antlr4_tools//:rules_python_wheel_entry_point_antlr4) -v ",
        ANTLR4_VERSION,
        " -o $(RULEDIR) -Dlanguage=Cpp -package fuzzyc_cc_function $(SRCS);",
        "find $(RULEDIR) \\( -name *.cpp -o -name *.h \\) -exec cp -n {} $(RULEDIR) \\;",
    ]),
    local = True,
    tools = [
        requirement("antlr4-tools"),
        "@fuzzyc_deps_antlr4_tools//:rules_python_wheel_entry_point_antlr4",
    ],
)

cc_library(
    name = "fuzzyc_cc_module",
    srcs = [
        "ModuleBaseListener.cpp",
        "ModuleLexer.cpp",
        "ModuleListener.cpp",
        "ModuleParser.cpp",
    ],
    hdrs = [
        "ModuleBaseListener.h",
        "ModuleLexer.h",
        "ModuleListener.h",
        "ModuleParser.h",
    ],
    linkstatic = 1,
    deps = [
        ":fuzzyc_cc_module_sources",
        "@antlr4_runtimes//:cpp",
    ],
)

cc_library(
    name = "fuzzyc_cc_function",
    srcs = [
        "FunctionBaseListener.cpp",
        "FunctionLexer.cpp",
        "FunctionListener.cpp",
        "FunctionParser.cpp",
    ],
    hdrs = [
        "FunctionBaseListener.h",
        "FunctionLexer.h",
        "FunctionListener.h",
        "FunctionParser.h",
    ],
    linkstatic = 1,
    deps = [
        ":fuzzyc_cc_function_sources",
        "@antlr4_runtimes//:cpp",
    ],
)

cc_test(
    name = "fuzzyc_cc_test",
    srcs = ["tests/fuzzyc_cc_test.cc"],
    data = ["tests/testdata"],
    deps = [
        ":fuzzyc_cc_function",
        ":fuzzyc_cc_module",
        "@antlr4_runtimes//:cpp",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
        "@com_google_googletest//:gtest_main",
    ],
)
