# Copyright 2019 Google LLC. All Rights Reserved. # # 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 # # http://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. licenses(["notice"]) # Apache 2.0 exports_files(["LICENSE"]) load("//sandboxed_api/bazel:build_defs.bzl", "sapi_platform_copts") load("//sandboxed_api/bazel:proto.bzl", "sapi_proto_library") 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/sandbox2/util:fileops", "//sandboxed_api/sandbox2/util:strerror", "//sandboxed_api/util:raw_logging", "//sandboxed_api/util:status", "@com_google_absl//absl/container:flat_hash_map", "@com_google_absl//absl/strings", "@com_google_absl//absl/synchronization", "@com_google_glog//:glog", ], ) # 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 = [ ":embed_file", ":vars", "//sandboxed_api/sandbox2", "//sandboxed_api/sandbox2:client", "//sandboxed_api/sandbox2:comms", "//sandboxed_api/sandbox2:util", "//sandboxed_api/sandbox2/util:bpf_helper", "//sandboxed_api/sandbox2/util:file_base", "//sandboxed_api/sandbox2/util:fileops", "//sandboxed_api/sandbox2/util:runfiles", "//sandboxed_api/sandbox2/util:strerror", "//sandboxed_api/util:status", "@com_google_absl//absl/base", "@com_google_absl//absl/base:core_headers", "@com_google_absl//absl/container:flat_hash_map", "@com_google_absl//absl/memory", "@com_google_absl//absl/strings", "@com_google_absl//absl/strings:str_format", "@com_google_absl//absl/synchronization", "@com_google_absl//absl/time", "@com_google_glog//:glog", ], ) # 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", "@com_google_absl//absl/base:core_headers", ], ) 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 = [ "rpcchannel.cc", "var_abstract.cc", "var_int.cc", "var_lenval.cc", "var_pointable.cc", ], hdrs = [ "proto_helper.h", "rpcchannel.h", "var_abstract.h", "var_array.h", "var_int.h", "var_lenval.h", "var_pointable.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_cc_proto", ":var_type", "//sandboxed_api/sandbox2:comms", "//sandboxed_api/util:status", "//sandboxed_api/util:statusor", "@com_google_absl//absl/base:core_headers", "@com_google_absl//absl/memory", "@com_google_absl//absl/strings", "@com_google_absl//absl/strings:str_format", "@com_google_absl//absl/synchronization", "@com_google_glog//:glog", ], ) # A stub to be linked in with SAPI libraries cc_library( name = "client", srcs = ["client.cc"], copts = sapi_platform_copts(), # TODO(124852776): investigate whether this is necessary linkopts = [ "-Wl,-ldl", ], visibility = ["//visibility:public"], deps = [ ":call", ":lenval_core", ":proto_arg_cc_cc_proto", ":vars", "//sandboxed_api/sandbox2:client", "//sandboxed_api/sandbox2:comms", "//sandboxed_api/sandbox2:forkingclient", "//sandboxed_api/util:flags", "@com_google_absl//absl/strings", "@com_google_glog//:glog", "@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", "//sandboxed_api/examples/stringop/lib:stringop-sapi", "//sandboxed_api/examples/stringop/lib:stringop_params_cc_proto", "//sandboxed_api/examples/sum/lib:sum-sapi", "//sandboxed_api/examples/sum/lib:sum-sapi_embed", "//sandboxed_api/util:status", "//sandboxed_api/util:status_matchers", "@com_google_absl//absl/memory", "@com_google_benchmark//:benchmark", "@com_google_googletest//:gtest_main", ], )