# This file is 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

# Empty stub library. This doesn't include any terminfo library and doesn't set
# the LLVM `#define`s to enable usage of terminfo.
cc_library(
    name = "terminfo",
    visibility = ["//visibility:public"],
)
