# Copyright 2019 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. load("//sandboxed_api/bazel:build_defs.bzl", "sapi_platform_copts") load("//sandboxed_api/bazel:proto.bzl", "sapi_proto_library") package(default_visibility = ["//sandboxed_api:__subpackages__"]) licenses(["notice"]) exports_files(["LICENSE"]) cc_library( name = "config", hdrs = ["config.h"], copts = sapi_platform_copts(), deps = ["@com_google_absl//absl/base:config"], ) sapi_proto_library( name = "proto_arg", srcs = ["proto_arg.proto"], visibility = ["//visibility:public"], ) cc_library( name = "embed_file", srcs = [ "embed_file.cc", "file_toc.h", ], hdrs = ["embed_file.h"], copts = sapi_platform_copts(), visibility = ["//visibility:public"], deps = [ "//sandboxed_api/sandbox2:util", "//sandboxed_api/util:fileops", "//sandboxed_api/util:raw_logging", "@com_google_absl//absl/base:core_headers", "@com_google_absl//absl/container:flat_hash_map", "@com_google_absl//absl/strings", "@com_google_absl//absl/synchronization", ], ) # The main Sandboxed-API library cc_library( name = "sapi", srcs = [ "sandbox.cc", "transaction.cc", ], hdrs = [ # TODO(hamacher): Remove reexport workaround as soon as the buildsystem # supports this usecase. "embed_file.h", "sandbox.h", "transaction.h", ], copts = sapi_platform_copts(), visibility = ["//visibility:public"], deps = [ ":config", ":embed_file", ":vars", "//sandboxed_api/sandbox2", "//sandboxed_api/sandbox2:client", "//sandboxed_api/sandbox2:comms", "//sandboxed_api/sandbox2/util:bpf_helper", "//sandboxed_api/util:file_base", "//sandboxed_api/util:fileops", "//sandboxed_api/util:raw_logging", "//sandboxed_api/util:runfiles", "//sandboxed_api/util:status", "@com_google_absl//absl/base", "@com_google_absl//absl/base:core_headers", "@com_google_absl//absl/base:dynamic_annotations", "@com_google_absl//absl/base:log_severity", "@com_google_absl//absl/container:flat_hash_map", "@com_google_absl//absl/log", "@com_google_absl//absl/log:check", "@com_google_absl//absl/log:globals", "@com_google_absl//absl/status", "@com_google_absl//absl/status:statusor", "@com_google_absl//absl/strings", "@com_google_absl//absl/strings:str_format", "@com_google_absl//absl/synchronization", "@com_google_absl//absl/time", ], ) # Definitions shared between sandboxee and master used for higher-level IPC. cc_library( name = "call", hdrs = ["call.h"], copts = sapi_platform_copts(), deps = [":var_type"], ) cc_library( name = "lenval_core", hdrs = ["lenval_core.h"], copts = sapi_platform_copts(), visibility = ["//visibility:public"], ) cc_library( name = "var_type", hdrs = ["var_type.h"], copts = sapi_platform_copts(), ) # Variable hierarchy cc_library( name = "vars", srcs = [ "proto_helper.cc", "rpcchannel.cc", "var_abstract.cc", "var_int.cc", "var_lenval.cc", ], hdrs = [ "proto_helper.h", "rpcchannel.h", "var_abstract.h", "var_array.h", "var_int.h", "var_lenval.h", "var_proto.h", "var_ptr.h", "var_reg.h", "var_struct.h", "var_void.h", "vars.h", ], copts = sapi_platform_copts(), visibility = ["//visibility:public"], deps = [ ":call", ":lenval_core", ":proto_arg_cc_proto", ":var_type", "//sandboxed_api/sandbox2:comms", "//sandboxed_api/util:raw_logging", "//sandboxed_api/util:status", "@com_google_absl//absl/base:core_headers", "@com_google_absl//absl/log", "@com_google_absl//absl/log:check", "@com_google_absl//absl/status", "@com_google_absl//absl/status:statusor", "@com_google_absl//absl/strings", "@com_google_absl//absl/strings:str_format", "@com_google_absl//absl/synchronization", "@com_google_absl//absl/utility", ], ) # A stub to be linked in with SAPI libraries cc_library( name = "client", srcs = ["client.cc"], copts = sapi_platform_copts(), visibility = ["//visibility:public"], deps = [ ":call", ":lenval_core", ":proto_arg_cc_proto", ":var_type", ":vars", "//sandboxed_api/sandbox2:comms", "//sandboxed_api/sandbox2:forkingclient", "//sandboxed_api/sandbox2:logsink", "//sandboxed_api/util:raw_logging", "@com_google_absl//absl/base:core_headers", "@com_google_absl//absl/base:dynamic_annotations", "@com_google_absl//absl/flags:parse", "@com_google_absl//absl/log", "@com_google_absl//absl/log:check", "@com_google_absl//absl/log:flags", "@com_google_absl//absl/log:initialize", "@com_google_absl//absl/status:statusor", "@com_google_absl//absl/strings", "@com_google_protobuf//:protobuf", "@org_sourceware_libffi//:libffi", ], ) cc_test( name = "sapi_test", srcs = ["sapi_test.cc"], copts = sapi_platform_copts(), tags = ["local"], deps = [ ":sapi", ":testing", "//sandboxed_api/examples/stringop:stringop-sapi", "//sandboxed_api/examples/stringop:stringop_params_cc_proto", "//sandboxed_api/examples/sum:sum-sapi", "//sandboxed_api/util:status_matchers", "@com_google_absl//absl/status", "@com_google_absl//absl/status:statusor", "@com_google_absl//absl/time", "@com_google_benchmark//:benchmark", "@com_google_googletest//:gtest_main", ], ) # Utility library for writing tests cc_library( name = "testing", testonly = 1, srcs = ["testing.cc"], hdrs = ["testing.h"], copts = sapi_platform_copts(), visibility = ["//visibility:public"], deps = [ ":config", "//sandboxed_api/sandbox2:policybuilder", "//sandboxed_api/sandbox2:testonly_allow_all_syscalls", "//sandboxed_api/util:file_base", "@com_google_absl//absl/strings", ], )