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