# Copyright 2020 The IREE Authors
#
# Licensed under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

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

cc_library(
    name = "runtime",
    srcs = [
        "config/config.h",
        "src/runtime/builder.c",
        "src/runtime/emitter.c",
        "src/runtime/json_parser.c",
        "src/runtime/json_printer.c",
        "src/runtime/refmap.c",
    ],
    hdrs = [
        "include/flatcc/flatcc_accessors.h",
        "include/flatcc/flatcc_alloc.h",
        "include/flatcc/flatcc_assert.h",
        "include/flatcc/flatcc_builder.h",
        "include/flatcc/flatcc_emitter.h",
        "include/flatcc/flatcc_endian.h",
        "include/flatcc/flatcc_epilogue.h",
        "include/flatcc/flatcc_flatbuffers.h",
        "include/flatcc/flatcc_identifier.h",
        "include/flatcc/flatcc_iov.h",
        "include/flatcc/flatcc_portable.h",
        "include/flatcc/flatcc_prologue.h",
        "include/flatcc/flatcc_refmap.h",
        "include/flatcc/flatcc_rtconfig.h",
        "include/flatcc/flatcc_types.h",
        "include/flatcc/flatcc_unaligned.h",
        "include/flatcc/flatcc_verifier.h",
        "include/flatcc/reflection/flatbuffers_common_builder.h",
        "include/flatcc/reflection/flatbuffers_common_reader.h",
    ] + glob(["include/flatcc/portable/**/*.h"]),
    textual_hdrs = [
        "include/flatcc/flatcc_json_parser.h",
        "include/flatcc/flatcc_json_printer.h",
    ],
    copts = [
        "-Iexternal/com_github_dvidelabs_flatcc/config/",
        "-Iexternal/com_github_dvidelabs_flatcc/include/",
    ] + select({
        "@bazel_tools//src/conditions:windows": [],
        "//conditions:default": [
            "-Wno-implicit-fallthrough",
        ],
    }),
    includes = [
        "include/",
    ],
    deps = [
        ":parsing",
    ],
    strip_include_prefix = "include",
)

# A limited version of :runtime with only enough to parse and verify.
cc_library(
    name = "parsing",
    srcs = [
        "config/config.h",
        "src/runtime/verifier.c",
    ],
    hdrs = [
        "include/flatcc/flatcc_accessors.h",
        "include/flatcc/flatcc_alloc.h",
        "include/flatcc/flatcc_assert.h",
        "include/flatcc/flatcc_endian.h",
        "include/flatcc/flatcc_epilogue.h",
        "include/flatcc/flatcc_flatbuffers.h",
        "include/flatcc/flatcc_identifier.h",
        "include/flatcc/flatcc_portable.h",
        "include/flatcc/flatcc_prologue.h",
        "include/flatcc/flatcc_rtconfig.h",
        "include/flatcc/flatcc_types.h",
        "include/flatcc/flatcc_unaligned.h",
        "include/flatcc/flatcc_verifier.h",
        "include/flatcc/reflection/flatbuffers_common_reader.h",
    ] + glob(["include/flatcc/portable/**/*.h"]),
    copts = [
        "-Iexternal/com_github_dvidelabs_flatcc/config/",
        "-Iexternal/com_github_dvidelabs_flatcc/include/",
    ] + select({
        "@bazel_tools//src/conditions:windows": [],
        "//conditions:default": [
            "-Wno-implicit-fallthrough",
        ],
    }),
    includes = [
        "include/",
    ],
    strip_include_prefix = "include",
)

cc_library(
    name = "compiler",
    srcs = glob([
        "external/**/*.c",
        "external/**/*.h",
        "src/compiler/**/*.c",
        "src/compiler/**/*.h",
    ], exclude = [
        "external/lex/luthor.c",
        "**/*_test.c",
    ]),
    hdrs = glob([
        "config/config.h",
        "include/**/*.h",
    ]),
    textual_hdrs = [
        "external/lex/luthor.c",
    ] + glob([
        "external/**/*.h",
    ]),
    copts = [
      "-Iexternal/com_github_dvidelabs_flatcc/config/",
      "-Iexternal/com_github_dvidelabs_flatcc/external/",
      "-Iexternal/com_github_dvidelabs_flatcc/include/",
    ],
)

cc_binary(
    name = "flatcc",
    srcs = [
        "src/cli/flatcc_cli.c",
    ],
    deps = [
        ":compiler",
        ":runtime",
    ],
    copts = [
      "-Iexternal/com_github_dvidelabs_flatcc/config/",
      "-Iexternal/com_github_dvidelabs_flatcc/external/",
      "-Iexternal/com_github_dvidelabs_flatcc/include/",
    ],
)
