| # 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_constraints", |
| ":lifetime_lattice", |
| ":object", |
| ":object_repository", |
| ":object_set", |
| ":points_to_map", |
| ":template_placeholder_support", |
| "//lifetime_annotations", |
| "//lifetime_annotations:lifetime", |
| "//lifetime_annotations:lifetime_substitutions", |
| "//lifetime_annotations:type_lifetimes", |
| "@abseil-cpp//absl/strings", |
| "@abseil-cpp//absl/strings:str_format", |
| "@llvm-project//clang:analysis", |
| "@llvm-project//clang:ast", |
| "@llvm-project//clang:ast_matchers", |
| "@llvm-project//clang:basic", |
| "@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 = [ |
| "@abseil-cpp//absl/strings", |
| "@llvm-project//clang:analysis", |
| "@llvm-project//clang:ast", |
| "@llvm-project//clang:ast_matchers", |
| "@llvm-project//clang:basic", |
| "@llvm-project//clang:lex", |
| "@llvm-project//clang:tooling", |
| "@llvm-project//clang:tooling_refactoring", |
| "@llvm-project//clang:transformer", |
| "@llvm-project//llvm:Support", |
| ], |
| ) |
| |
| cc_library( |
| name = "builtin_lifetimes", |
| srcs = ["builtin_lifetimes.cc"], |
| hdrs = ["builtin_lifetimes.h"], |
| deps = [ |
| "//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 = [ |
| ":lifetime_constraints", |
| ":lifetime_lattice", |
| ":object", |
| ":object_repository", |
| ":object_set", |
| ":points_to_map", |
| "//lifetime_annotations:pointee_type", |
| "//lifetime_annotations:type_lifetimes", |
| "@llvm-project//clang:analysis", |
| "@llvm-project//clang:ast", |
| "@llvm-project//clang:basic", |
| "@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:pointee_type", |
| "//lifetime_annotations:type_lifetimes", |
| "@llvm-project//clang:analysis", |
| "@llvm-project//clang:ast", |
| "@llvm-project//clang:basic", |
| "@llvm-project//llvm:Support", |
| ], |
| ) |
| |
| cc_library( |
| name = "lifetime_lattice", |
| srcs = ["lifetime_lattice.cc"], |
| hdrs = ["lifetime_lattice.h"], |
| deps = [ |
| ":lifetime_constraints", |
| ":object_set", |
| ":points_to_map", |
| "@llvm-project//clang:analysis", |
| "@llvm-project//llvm:Support", |
| ], |
| ) |
| |
| cc_library( |
| name = "object", |
| srcs = ["object.cc"], |
| hdrs = ["object.h"], |
| deps = [ |
| "//lifetime_annotations:lifetime", |
| "//lifetime_annotations:type_lifetimes", |
| "@abseil-cpp//absl/strings", |
| "@abseil-cpp//absl/strings:str_format", |
| "@llvm-project//clang:ast", |
| ], |
| ) |
| |
| cc_library( |
| name = "object_set", |
| srcs = ["object_set.cc"], |
| hdrs = ["object_set.h"], |
| deps = [ |
| ":object", |
| "@abseil-cpp//absl/strings", |
| "@llvm-project//llvm:Support", |
| ], |
| ) |
| |
| cc_test( |
| name = "object_set_test", |
| srcs = ["object_set_test.cc"], |
| deps = [ |
| ":object", |
| ":object_set", |
| "//lifetime_annotations", |
| "//lifetime_annotations:lifetime", |
| "//lifetime_annotations/test:run_on_code", |
| "@com_google_googletest//:gtest_main", |
| "@llvm-project//clang:ast", |
| ], |
| ) |
| |
| cc_library( |
| name = "points_to_map", |
| srcs = ["points_to_map.cc"], |
| hdrs = ["points_to_map.h"], |
| deps = [ |
| ":object", |
| ":object_set", |
| "//lifetime_annotations:lifetime", |
| "@abseil-cpp//absl/strings", |
| "@abseil-cpp//absl/strings:str_format", |
| "@llvm-project//clang:ast", |
| "@llvm-project//clang:basic", |
| "@llvm-project//llvm:Support", |
| ], |
| ) |
| |
| cc_test( |
| name = "points_to_map_test", |
| srcs = ["points_to_map_test.cc"], |
| deps = [ |
| ":object", |
| ":object_set", |
| ":points_to_map", |
| "//lifetime_annotations", |
| "//lifetime_annotations:lifetime", |
| "//lifetime_annotations/test:run_on_code", |
| "@com_google_googletest//:gtest_main", |
| "@llvm-project//clang:ast", |
| "@llvm-project//clang:ast_matchers", |
| ], |
| ) |
| |
| cc_library( |
| name = "object_repository", |
| srcs = ["object_repository.cc"], |
| hdrs = ["object_repository.h"], |
| deps = [ |
| ":builtin_lifetimes", |
| ":object", |
| ":object_set", |
| ":points_to_map", |
| "//lifetime_annotations:lifetime", |
| "//lifetime_annotations:pointee_type", |
| "//lifetime_annotations:type_lifetimes", |
| "@abseil-cpp//absl/strings", |
| "@llvm-project//clang:ast", |
| "@llvm-project//clang:basic", |
| "@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", |
| "@llvm-project//llvm:Support", |
| ], |
| ) |
| |
| cc_test( |
| name = "pointer_compatibility_test", |
| srcs = ["pointer_compatibility_test.cc"], |
| deps = [ |
| ":pointer_compatibility", |
| "//lifetime_annotations", |
| "//lifetime_annotations/test:run_on_code", |
| "@com_google_googletest//:gtest_main", |
| "@llvm-project//clang:ast", |
| "@llvm-project//clang:ast_matchers", |
| "@llvm-project//llvm:Support", |
| ], |
| ) |