# Copyright 2019 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.

# Emboss C++ code generator.

load(":build_defs.bzl", "emboss_cc_test")

package(
    default_visibility = [
        "//visibility:private",
    ],
    features = ["-layering_check"],
)

py_binary(
    name = "emboss_codegen_cpp",
    srcs = ["emboss_codegen_cpp.py"],
    python_version = "PY3",
    visibility = ["//visibility:public"],
    deps = [
        ":header_generator",
        "//public:ir_pb2",
    ],
)

py_library(
    name = "header_generator",
    srcs = ["header_generator.py"],
    data = [
        "generated_code_templates",
    ],
    deps = [
        "//back_end/util:code_template",
        "//public:ir_pb2",
        "//util:ir_util",
        "//util:name_conversion",
    ],
)

emboss_cc_test(
    name = "span_se_log_file_status_emb_generated_code_test",
    srcs = [
        "testcode/read_log_file_status_test.cc",
    ],
    deps = [
        "//testdata:span_se_log_file_status_emboss",
        "@com_google_googletest//:gtest_main",
    ],
)

emboss_cc_test(
    name = "nested_structure_test",
    srcs = [
        "testcode/nested_structure_test.cc",
    ],
    deps = [
        "//testdata:nested_structure_emboss",
        "@com_google_googletest//:gtest_main",
    ],
)

emboss_cc_test(
    name = "alignments_test",
    srcs = [
        "testcode/alignments_test.cc",
    ],
    deps = [
        "//testdata:alignments_emboss",
        "@com_google_googletest//:gtest_main",
    ],
)

emboss_cc_test(
    name = "condition_test",
    srcs = [
        "testcode/condition_test.cc",
    ],
    deps = [
        "//testdata:condition_emboss",
        "@com_google_googletest//:gtest_main",
    ],
)

emboss_cc_test(
    name = "enum_test",
    srcs = [
        "testcode/enum_test.cc",
    ],
    deps = [
        "//testdata:enum_emboss",
        "@com_google_googletest//:gtest_main",
    ],
)

emboss_cc_test(
    name = "explicit_sizes_test",
    srcs = [
        "testcode/explicit_sizes_test.cc",
    ],
    deps = [
        "//testdata:explicit_sizes_emboss",
        "@com_google_googletest//:gtest_main",
    ],
)

emboss_cc_test(
    name = "importer_test",
    srcs = [
        "testcode/importer_test.cc",
    ],
    deps = [
        "//testdata:importer_emboss",
        "@com_google_googletest//:gtest_main",
    ],
)

emboss_cc_test(
    name = "uint_sizes_test",
    srcs = [
        "testcode/uint_sizes_test.cc",
    ],
    deps = [
        "//testdata:uint_sizes_emboss",
        "@com_google_googletest//:gtest_main",
    ],
)

emboss_cc_test(
    name = "int_sizes_test",
    srcs = [
        "testcode/int_sizes_test.cc",
    ],
    deps = [
        "//testdata:int_sizes_emboss",
        "@com_google_googletest//:gtest_main",
    ],
)

emboss_cc_test(
    name = "float_test",
    srcs = [
        "testcode/float_test.cc",
    ],
    deps = [
        "//testdata:float_emboss",
        "@com_google_googletest//:gtest_main",
    ],
)

emboss_cc_test(
    name = "dynamic_size_test",
    srcs = [
        "testcode/dynamic_size_test.cc",
    ],
    deps = [
        "//testdata:dynamic_size_emboss",
        "@com_google_googletest//:gtest_main",
    ],
)

emboss_cc_test(
    name = "auto_array_size_test",
    srcs = [
        "testcode/auto_array_size_test.cc",
    ],
    deps = [
        "//testdata:auto_array_size_emboss",
        "@com_google_googletest//:gtest_main",
    ],
)

emboss_cc_test(
    name = "start_size_range_test",
    srcs = [
        "testcode/start_size_range_test.cc",
    ],
    deps = [
        "//testdata:start_size_range_emboss",
        "@com_google_googletest//:gtest_main",
    ],
)

emboss_cc_test(
    name = "bcd_test",
    srcs = [
        "testcode/bcd_test.cc",
    ],
    deps = [
        "//testdata:bcd_emboss",
        "@com_google_googletest//:gtest_main",
    ],
)

emboss_cc_test(
    name = "namespace_test",
    srcs = [
        "testcode/namespace_test.cc",
    ],
    deps = [
        "//testdata:absolute_cpp_namespace_emboss",
        "//testdata:cpp_namespace_emboss",
        "//testdata:no_cpp_namespace_emboss",
        "@com_google_googletest//:gtest_main",
    ],
)

emboss_cc_test(
    name = "requires_test",
    srcs = [
        "testcode/requires_test.cc",
    ],
    deps = [
        "//testdata:requires_emboss",
        "@com_google_googletest//:gtest_main",
    ],
)

emboss_cc_test(
    name = "subtypes_test",
    srcs = [
        "testcode/subtypes_test.cc",
    ],
    deps = [
        "//testdata:subtypes_emboss",
        "@com_google_googletest//:gtest_main",
    ],
)

emboss_cc_test(
    name = "inline_type_test",
    srcs = [
        "testcode/inline_type_test.cc",
    ],
    deps = [
        "//testdata:inline_type_emboss",
        "@com_google_googletest//:gtest_main",
    ],
)

emboss_cc_test(
    name = "bits_test",
    srcs = [
        "testcode/bits_test.cc",
    ],
    deps = [
        "//public:cpp_utils",
        "//testdata:bits_emboss",
        "@com_google_googletest//:gtest_main",
    ],
)

emboss_cc_test(
    name = "anonymous_bits_test",
    srcs = [
        "testcode/anonymous_bits_test.cc",
    ],
    deps = [
        "//public:cpp_utils",
        "//testdata:anonymous_bits_emboss",
        "@com_google_googletest//:gtest_main",
    ],
)

emboss_cc_test(
    name = "virtual_field_test",
    srcs = [
        "testcode/virtual_field_test.cc",
    ],
    deps = [
        "//testdata:virtual_field_emboss",
        "@com_google_googletest//:gtest_main",
    ],
)

emboss_cc_test(
    name = "text_format_test",
    srcs = [
        "testcode/text_format_test.cc",
    ],
    deps = [
        "//testdata:text_format_emboss",
        "@com_google_googletest//:gtest_main",
    ],
)

emboss_cc_test(
    name = "parameters_test",
    srcs = [
        "testcode/parameters_test.cc",
    ],
    deps = [
        "//testdata:parameters_emboss",
        "@com_google_googletest//:gtest_main",
    ],
)

emboss_cc_test(
    name = "complex_structure_test",
    srcs = ["testcode/complex_structure_test.cc"],
    deps = [
        "//testdata:complex_structure_emboss",
        "@com_google_googletest//:gtest_main",
    ],
)
