| # 'verible-verilog-kythe-extractor' is a program for extracting Verilog/SystemVerilog to kythe facts. |
| |
| load("//bazel:sh_test_with_runfiles_lib.bzl", "sh_test_with_runfiles_lib") |
| |
| licenses(["notice"]) |
| |
| package( |
| default_visibility = [ |
| "//visibility:private", |
| ], |
| ) |
| |
| # Generates foreach list for IndexingFactType enum. |
| # Libraries that need these generated include files should list them |
| # under srcs, even if they are included by headers. |
| genrule( |
| name = "verilog_extractor_indexing_fact_type_foreach_gen", |
| srcs = ["verilog_extractor_indexing_fact_type.h"], |
| outs = ["verilog_extractor_indexing_fact_type_foreach-gen.inc"], |
| cmd = "sed -n -e '/BEGIN GENERATE/,/END GENERATE/p' $< | " + |
| "grep -v GENERATE | " + |
| "sed -e 's|^ *|CONSIDER(|' -e 's| =.*,|,|' -e 's|,|)|' > $@", |
| ) |
| |
| cc_library( |
| name = "kythe_facts", |
| srcs = ["kythe_facts.cc"], |
| hdrs = ["kythe_facts.h"], |
| deps = [ |
| "//common/util:spacer", |
| "@com_google_absl//absl/strings", |
| ], |
| ) |
| |
| cc_test( |
| name = "kythe_facts_test", |
| srcs = ["kythe_facts_test.cc"], |
| deps = [ |
| ":kythe_facts", |
| "@com_google_googletest//:gtest_main", |
| ], |
| ) |
| |
| cc_library( |
| name = "scope_resolver", |
| srcs = ["scope_resolver.cc"], |
| hdrs = ["scope_resolver.h"], |
| deps = [ |
| ":kythe_facts", |
| "//common/util:auto_pop_stack", |
| "//common/util:iterator_range", |
| "@com_google_absl//absl/container:node_hash_map", |
| "@com_google_absl//absl/strings", |
| ], |
| ) |
| |
| cc_test( |
| name = "scope_resolver_test", |
| srcs = ["scope_resolver_test.cc"], |
| deps = [ |
| ":kythe_facts", |
| ":scope_resolver", |
| "@com_google_googletest//:gtest_main", |
| ], |
| ) |
| |
| cc_library( |
| name = "indexing_facts_tree_context", |
| hdrs = ["indexing_facts_tree_context.h"], |
| deps = [ |
| ":indexing_facts_tree", |
| "//common/util:auto_pop_stack", |
| ], |
| ) |
| |
| cc_library( |
| name = "kythe_schema_constants", |
| hdrs = ["kythe_schema_constants.h"], |
| deps = ["@com_google_absl//absl/strings"], |
| ) |
| |
| cc_library( |
| name = "kythe_facts_extractor", |
| srcs = ["kythe_facts_extractor.cc"], |
| hdrs = ["kythe_facts_extractor.h"], |
| deps = [ |
| ":indexing_facts_tree", |
| ":kythe_facts", |
| ":kythe_schema_constants", |
| ":scope_resolver", |
| ":verilog_extractor_indexing_fact_type", |
| "//common/strings:compare", |
| "//common/util:logging", |
| "//common/util:tree_operations", |
| "//verilog/analysis:verilog_project", |
| "@com_google_absl//absl/container:btree", |
| "@com_google_absl//absl/container:flat_hash_set", |
| "@com_google_absl//absl/container:node_hash_set", |
| "@com_google_absl//absl/hash", |
| "@com_google_absl//absl/strings", |
| "@com_google_absl//absl/time", |
| ], |
| ) |
| |
| cc_library( |
| name = "verilog_extractor_indexing_fact_type", |
| srcs = [ |
| "verilog_extractor_indexing_fact_type.cc", |
| "verilog_extractor_indexing_fact_type_foreach.inc", |
| "verilog_extractor_indexing_fact_type_foreach-gen.inc", |
| ], |
| hdrs = ["verilog_extractor_indexing_fact_type.h"], |
| deps = [ |
| "@com_google_absl//absl/strings", |
| ], |
| ) |
| |
| cc_library( |
| name = "indexing_facts_tree", |
| srcs = ["indexing_facts_tree.cc"], |
| hdrs = ["indexing_facts_tree.h"], |
| deps = [ |
| ":verilog_extractor_indexing_fact_type", |
| "//common/text:token_info", |
| "//common/util:range", |
| "//common/util:tree_operations", |
| "//common/util:vector_tree", |
| "@com_google_absl//absl/memory", |
| "@com_google_absl//absl/strings", |
| "@com_google_absl//absl/strings:str_format", |
| ], |
| ) |
| |
| cc_test( |
| name = "indexing_facts_tree_test", |
| srcs = ["indexing_facts_tree_test.cc"], |
| deps = [ |
| ":indexing_facts_tree", |
| ":verilog_extractor_indexing_fact_type", |
| "//common/text:token_info", |
| "//common/util:range", |
| "@com_google_absl//absl/memory", |
| "@com_google_absl//absl/strings", |
| "@com_google_googletest//:gtest_main", |
| ], |
| ) |
| |
| cc_library( |
| name = "indexing_facts_tree_extractor", |
| srcs = ["indexing_facts_tree_extractor.cc"], |
| hdrs = ["indexing_facts_tree_extractor.h"], |
| deps = [ |
| ":indexing_facts_tree", |
| ":indexing_facts_tree_context", |
| "//common/text:concrete_syntax_tree", |
| "//common/text:tree_context_visitor", |
| "//common/text:tree_utils", |
| "//common/util:file_util", |
| "//common/util:logging", |
| "//common/util:tree_operations", |
| "//verilog/CST:class", |
| "//verilog/CST:declaration", |
| "//verilog/CST:functions", |
| "//verilog/CST:identifier", |
| "//verilog/CST:macro", |
| "//verilog/CST:module", |
| "//verilog/CST:net", |
| "//verilog/CST:package", |
| "//verilog/CST:parameters", |
| "//verilog/CST:port", |
| "//verilog/CST:statement", |
| "//verilog/CST:tasks", |
| "//verilog/CST:type", |
| "//verilog/CST:verilog_matchers", |
| "//verilog/CST:verilog_nonterminals", |
| "//verilog/CST:verilog_tree_print", |
| "//verilog/analysis:verilog_analyzer", |
| "//verilog/analysis:verilog_project", |
| "@com_google_absl//absl/status", |
| "@com_google_absl//absl/strings", |
| ], |
| ) |
| |
| cc_test( |
| name = "indexing_facts_tree_extractor_test", |
| srcs = ["indexing_facts_tree_extractor_test.cc"], |
| deps = [ |
| ":indexing_facts_tree", |
| ":indexing_facts_tree_extractor", |
| ":verilog_extractor_indexing_fact_type", |
| "//common/analysis:syntax_tree_search_test_utils", |
| "//common/text:concrete_syntax_tree", |
| "//common/util:file_util", |
| "//common/util:range", |
| "//common/util:tree_operations", |
| "//verilog/analysis:verilog_analyzer", |
| "//verilog/analysis:verilog_project", |
| "@com_google_absl//absl/status", |
| "@com_google_googletest//:gtest_main", |
| ], |
| ) |
| |
| cc_library( |
| name = "kythe_proto_output", |
| srcs = ["kythe_proto_output.cc"], |
| hdrs = ["kythe_proto_output.h"], |
| deps = [ |
| ":kythe_facts", |
| ":kythe_facts_extractor", |
| "//third_party/proto/kythe:storage_cc_proto", |
| "@com_google_protobuf//:protobuf", |
| ], |
| ) |
| |
| cc_binary( |
| name = "verible-verilog-kythe-extractor", |
| srcs = [ |
| "verilog_extractor_indexing_fact_type_foreach.inc", |
| "verilog_extractor_indexing_fact_type_foreach-gen.inc", |
| "verilog_kythe_extractor.cc", |
| ], |
| visibility = ["//visibility:public"], |
| deps = [ |
| ":indexing_facts_tree_extractor", |
| ":kythe_facts_extractor", |
| ":kythe_proto_output", |
| "//common/util:bijective_map", |
| "//common/util:enum_flags", |
| "//common/util:file_util", |
| "//common/util:init_command_line", |
| "//common/util:tree_operations", |
| "//verilog/analysis:verilog_analyzer", |
| "//verilog/analysis:verilog_project", |
| "//verilog/analysis/checkers:verilog_lint_rules", |
| "//verilog/parser:verilog_parser", |
| "@com_google_absl//absl/flags:flag", |
| "@com_google_absl//absl/status", |
| "@com_google_absl//absl/strings", |
| "@com_google_absl//absl/types:span", |
| ], |
| ) |
| |
| sh_test_with_runfiles_lib( |
| name = "verilog_kythe_extractor_test", |
| size = "small", |
| srcs = ["verilog_kythe_extractor_test.sh"], |
| args = ["$(location :verible-verilog-kythe-extractor)"], |
| data = [":verible-verilog-kythe-extractor"], |
| deps = [], |
| ) |
| |
| sh_test( |
| name = "verification_test", |
| srcs = ["verification_test.sh"], |
| data = glob([ |
| "testdata/**", |
| ]) + [ |
| ":verible-verilog-kythe-extractor", |
| ], |
| tags = ["manual"], |
| deps = [ |
| "@bazel_tools//tools/bash/runfiles", |
| ], |
| ) |
| |
| cc_library( |
| name = "kzip_creator", |
| srcs = ["kzip_creator.cc"], |
| hdrs = ["kzip_creator.h"], |
| deps = [ |
| "//common/util:file_util", |
| "//common/util:simple_zip", |
| "//third_party/proto/kythe:analysis_cc_proto", |
| "@com_google_absl//absl/status", |
| "@com_google_absl//absl/strings", |
| "@com_google_boringssl//:crypto", |
| ], |
| ) |
| |
| cc_binary( |
| name = "verible-verilog-kythe-kzip-writer", |
| srcs = [ |
| "verilog_kythe_kzip_writer.cc", |
| ], |
| visibility = ["//visibility:public"], |
| deps = [ |
| ":kzip_creator", |
| "//common/util:file_util", |
| "//common/util:init_command_line", |
| "//common/util:logging", |
| "//third_party/proto/kythe:analysis_cc_proto", |
| "//verilog/analysis:verilog_filelist", |
| "@com_google_absl//absl/flags:flag", |
| "@com_google_absl//absl/strings", |
| ], |
| ) |