# Copyright 2020 Google LLC
#
# 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
#
#      https://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.

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",
        "src/runtime/verifier.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/",
    ],
    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/",
    ],
)
