# C++ lifetime inference and verification through static analysis

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

cc_library(
    name = "analyze",
    srcs = ["analyze.cc"],
    hdrs = ["analyze.h"],
    deps = [
        ":lifetime_analysis",
        ":lifetime_lattice",
        ":object_repository",
        ":template_placeholder_support",
        ":visit_lifetimes",
        "@absl//absl/strings",
        "@absl//absl/strings:str_format",
        "//lifetime_annotations",
        "//lifetime_annotations:lifetime",
        "//lifetime_annotations:lifetime_substitutions",
        "//lifetime_annotations:pointee_type",
        "//lifetime_annotations:type_lifetimes",
        "@llvm-project//clang:analysis",
        "@llvm-project//clang:ast",
        "@llvm-project//clang:ast_matchers",
        "@llvm-project//clang:index",
        "@llvm-project//clang:lex",
        "@llvm-project//llvm:Support",
    ],
)

cc_library(
    name = "template_placeholder_support",
    srcs = ["template_placeholder_support.cc"],
    hdrs = ["template_placeholder_support.h"],
    deps = [
        "@absl//absl/strings",
        "@absl//absl/strings:str_format",
        "@llvm-project//clang:analysis",
        "@llvm-project//clang:ast",
        "@llvm-project//clang:ast_matchers",
        "@llvm-project//clang:lex",
        "@llvm-project//clang:tooling",
        "@llvm-project//clang:transformer",
        "@llvm-project//llvm:Support",
    ],
)

cc_library(
    name = "builtin_lifetimes",
    srcs = ["builtin_lifetimes.cc"],
    hdrs = ["builtin_lifetimes.h"],
    deps = [
        "@absl//absl/strings",
        "//lifetime_annotations",
        "//lifetime_annotations:lifetime",
        "//lifetime_annotations:type_lifetimes",
        "@llvm-project//clang:ast",
        "@llvm-project//clang:basic",
        "@llvm-project//llvm:Support",
    ],
)

cc_library(
    name = "lifetime_analysis",
    srcs = ["lifetime_analysis.cc"],
    hdrs = ["lifetime_analysis.h"],
    deps = [
        ":builtin_lifetimes",
        ":lifetime_lattice",
        ":object",
        ":object_repository",
        ":object_set",
        ":pointer_compatibility",
        ":points_to_map",
        ":visit_lifetimes",
        "//lifetime_annotations:lifetime",
        "//lifetime_annotations:pointee_type",
        "//lifetime_annotations:type_lifetimes",
        "@llvm-project//clang:analysis",
        "@llvm-project//clang:ast",
        "@llvm-project//llvm:Support",
    ],
)

cc_library(
    name = "lifetime_constraints",
    srcs = ["lifetime_constraints.cc"],
    hdrs = ["lifetime_constraints.h"],
    deps = [
        "//lifetime_annotations:lifetime",
        "//lifetime_annotations:lifetime_substitutions",
        "//lifetime_annotations:type_lifetimes",
        "@llvm-project//clang:analysis",
        "@llvm-project//llvm:Support",
    ],
)

cc_library(
    name = "lifetime_lattice",
    srcs = ["lifetime_lattice.cc"],
    hdrs = ["lifetime_lattice.h"],
    deps = [
        ":lifetime_constraints",
        ":points_to_map",
        "@llvm-project//clang:analysis",
        "@llvm-project//llvm:Support",
    ],
)

cc_library(
    name = "object",
    srcs = ["object.cc"],
    hdrs = ["object.h"],
    deps = [
        "@absl//absl/strings",
        "@absl//absl/strings:str_format",
        "//lifetime_annotations:lifetime",
        "@llvm-project//clang:ast",
        "@llvm-project//llvm:Support",
    ],
)

cc_library(
    name = "object_set",
    srcs = ["object_set.cc"],
    hdrs = ["object_set.h"],
    deps = [
        ":object",
        "@absl//absl/strings",
        "@absl//absl/strings:str_format",
        "@llvm-project//llvm:Support",
    ],
)

cc_test(
    name = "object_set_test",
    srcs = ["object_set_test.cc"],
    deps = [
        ":object",
        ":object_set",
        "@com_google_googletest//:gtest_main",
        "//lifetime_annotations",
        "//lifetime_annotations:lifetime",
        "//lifetime_annotations/test:run_on_code",
        "@llvm-project//clang:analysis",
    ],
)

cc_library(
    name = "points_to_map",
    srcs = ["points_to_map.cc"],
    hdrs = ["points_to_map.h"],
    deps = [
        ":object_set",
        "@absl//absl/strings",
        "@absl//absl/strings:str_format",
        "@llvm-project//clang:ast",
        "@llvm-project//llvm:Support",
    ],
)

cc_test(
    name = "points_to_map_test",
    srcs = ["points_to_map_test.cc"],
    deps = [
        ":points_to_map",
        "@com_google_googletest//:gtest_main",
        "//lifetime_annotations:lifetime",
        "//lifetime_annotations/test:run_on_code",
        "@llvm-project//clang:ast",
        "@llvm-project//clang:ast_matchers",
    ],
)

cc_library(
    name = "object_repository",
    srcs = ["object_repository.cc"],
    hdrs = ["object_repository.h"],
    deps = [
        ":object",
        ":object_set",
        ":points_to_map",
        ":visit_lifetimes",
        "//lifetime_annotations:lifetime",
        "//lifetime_annotations:pointee_type",
        "//lifetime_annotations:type_lifetimes",
        "@llvm-project//clang:ast",
        "@llvm-project//clang:basic",
        "@llvm-project//llvm:Support",
    ],
)

cc_library(
    name = "visit_lifetimes",
    srcs = ["visit_lifetimes.cc"],
    hdrs = ["visit_lifetimes.h"],
    deps = [
        ":object",
        ":object_set",
        "//lifetime_annotations:pointee_type",
        "//lifetime_annotations:type_lifetimes",
        "@llvm-project//clang:ast",
        "@llvm-project//llvm:Support",
    ],
)

cc_library(
    name = "pointer_compatibility",
    srcs = ["pointer_compatibility.cc"],
    hdrs = ["pointer_compatibility.h"],
    deps = [
        "//lifetime_annotations:pointee_type",
        "@llvm-project//clang:ast",
    ],
)

cc_test(
    name = "pointer_compatibility_test",
    srcs = ["pointer_compatibility_test.cc"],
    deps = [
        ":pointer_compatibility",
        "@com_google_googletest//:gtest_main",
        "//lifetime_annotations",
        "//lifetime_annotations/test:run_on_code",
        "@llvm-project//clang:analysis",
        "@llvm-project//clang:ast",
        "@llvm-project//clang:ast_matchers",
    ],
)
