blob: 890bf34339452bf8d0e7217acdb7a9133c69dca4 [file] [log] [blame]
# '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",
],
)