# Copyright 2024 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
#
#     http://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"])

filegroup(
    name = "all_srcs",
    srcs = glob(["**"]),
)

cc_library(
    name = "VerilatorIntegrationLibrary",
    hdrs = [
        "@renode//:src/Plugins/VerilatorPlugin/VerilatorIntegrationLibrary/libs/socket-cpp/Socket/Socket.h",
        "@renode//:src/Plugins/VerilatorPlugin/VerilatorIntegrationLibrary/libs/socket-cpp/Socket/TCPClient.h",
        "@renode//:src/Plugins/VerilatorPlugin/VerilatorIntegrationLibrary/src/buses/apb3.h",
        "@renode//:src/Plugins/VerilatorPlugin/VerilatorIntegrationLibrary/src/buses/axi-slave.h",
        "@renode//:src/Plugins/VerilatorPlugin/VerilatorIntegrationLibrary/src/buses/axi.h",
        "@renode//:src/Plugins/VerilatorPlugin/VerilatorIntegrationLibrary/src/buses/axilite.h",
        "@renode//:src/Plugins/VerilatorPlugin/VerilatorIntegrationLibrary/src/buses/bus.h",
        "@renode//:src/Plugins/VerilatorPlugin/VerilatorIntegrationLibrary/src/buses/wishbone.h",
        "@renode//:src/Plugins/VerilatorPlugin/VerilatorIntegrationLibrary/src/communication/communication_channel.h",
        "@renode//:src/Plugins/VerilatorPlugin/VerilatorIntegrationLibrary/src/communication/socket_channel.h",
        "@renode//:src/Plugins/VerilatorPlugin/VerilatorIntegrationLibrary/src/peripherals/uart.h",
        "@renode//:src/Plugins/VerilatorPlugin/VerilatorIntegrationLibrary/src/renode.h",
        "@renode//:src/Plugins/VerilatorPlugin/VerilatorIntegrationLibrary/src/renode_bus.h",
        "@renode//:src/Plugins/VerilatorPlugin/VerilatorIntegrationLibrary/src/renode_dpi.h",
        "@renode//:src/Plugins/VerilatorPlugin/VerilatorIntegrationLibrary/src/renode_action_enumerators.txt",
        "@renode//:src/Infrastructure/src/Emulator/Cores/renode/include/renode_imports.h",
        "@renode//:src/Infrastructure/src/Emulator/Cores/renode/include/renode_imports_generated.h",
    ],
    includes = [
        "src/Plugins/VerilatorPlugin/VerilatorIntegrationLibrary",
        "external/renode/src/Plugins/VerilatorPlugin/VerilatorIntegrationLibrary",
    ],
    deps = [
        "@verilator//:libverilator",
    ],
)
