• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2022 Google LLC
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7#     https://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15load("@com_google_sandboxed_api//sandboxed_api/bazel:build_defs.bzl", "sapi_platform_copts")
16
17licenses(["notice"])
18
19cc_library(
20    name = "generator",
21    srcs = [
22        "diagnostics.cc",
23        "emitter.cc",
24        "emitter_base.cc",
25        "generator.cc",
26        "types.cc",
27    ],
28    hdrs = [
29        "diagnostics.h",
30        "emitter.h",
31        "emitter_base.h",
32        "generator.h",
33        "types.h",
34    ],
35    copts = sapi_platform_copts(),
36    deps = [
37        "@com_google_absl//absl/container:flat_hash_set",
38        "@com_google_absl//absl/container:node_hash_set",
39        "@com_google_absl//absl/log",
40        "@com_google_absl//absl/random",
41        "@com_google_absl//absl/status",
42        "@com_google_absl//absl/status:statusor",
43        "@com_google_absl//absl/strings",
44        "@com_google_absl//absl/strings:cord",
45        "@com_google_absl//absl/strings:str_format",
46        "@com_google_absl//absl/types:optional",
47        "@com_google_sandboxed_api//sandboxed_api/util:file_base",
48        "@com_google_sandboxed_api//sandboxed_api/util:status",
49        "@llvm-project//clang:ast",
50        "@llvm-project//clang:basic",
51        "@llvm-project//clang:format",
52        "@llvm-project//clang:frontend",
53        "@llvm-project//clang:lex",
54        "@llvm-project//clang:serialization",
55        "@llvm-project//clang:tooling",
56        "@llvm-project//clang:tooling_core",
57        "@llvm-project//llvm:Support",
58        "@llvm-project//llvm:config",
59    ],
60)
61
62cc_test(
63    name = "generator_test",
64    srcs = [
65        "emitter_test.cc",
66        "frontend_action_test_util.cc",
67        "frontend_action_test_util.h",
68    ],
69    copts = sapi_platform_copts(),
70    deps = [
71        ":generator",
72        "@com_google_absl//absl/container:flat_hash_map",
73        "@com_google_absl//absl/memory",
74        "@com_google_absl//absl/status",
75        "@com_google_absl//absl/status:statusor",
76        "@com_google_absl//absl/strings",
77        "@com_google_googletest//:gtest_main",
78        "@com_google_sandboxed_api//sandboxed_api/util:status_matchers",
79        "@llvm-project//clang:basic",
80        "@llvm-project//clang:frontend",
81        "@llvm-project//clang:tooling",
82        "@llvm-project//llvm:Support",
83        "@llvm-project//llvm:config",
84    ],
85)
86
87# Clang tool that generates Sandboxed API headers
88cc_binary(
89    name = "generator_tool",
90    srcs = [
91        "compilation_database.cc",
92        "compilation_database.h",
93        "generator_tool.cc",
94    ],
95    copts = sapi_platform_copts(),
96    visibility = ["//visibility:public"],
97    deps = [
98        ":generator",
99        "@com_google_absl//absl/base:core_headers",
100        "@com_google_absl//absl/base:no_destructor",
101        "@com_google_absl//absl/status",
102        "@com_google_absl//absl/strings",
103        "@com_google_absl//absl/strings:str_format",
104        "@com_google_sandboxed_api//sandboxed_api/util:file_base",
105        "@com_google_sandboxed_api//sandboxed_api/util:file_helpers",
106        "@com_google_sandboxed_api//sandboxed_api/util:fileops",
107        "@com_google_sandboxed_api//sandboxed_api/util:status",
108        "@llvm-project//clang:driver",
109        "@llvm-project//clang:tooling",
110        "@llvm-project//llvm:Support",
111        "@llvm-project//llvm:config",
112    ],
113)
114