1*ec63e07aSXin Li# Copyright 2019 Google LLC 2*ec63e07aSXin Li# 3*ec63e07aSXin Li# Licensed under the Apache License, Version 2.0 (the "License"); 4*ec63e07aSXin Li# you may not use this file except in compliance with the License. 5*ec63e07aSXin Li# You may obtain a copy of the License at 6*ec63e07aSXin Li# 7*ec63e07aSXin Li# https://www.apache.org/licenses/LICENSE-2.0 8*ec63e07aSXin Li# 9*ec63e07aSXin Li# Unless required by applicable law or agreed to in writing, software 10*ec63e07aSXin Li# distributed under the License is distributed on an "AS IS" BASIS, 11*ec63e07aSXin Li# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*ec63e07aSXin Li# See the License for the specific language governing permissions and 13*ec63e07aSXin Li# limitations under the License. 14*ec63e07aSXin Li 15*ec63e07aSXin Liload("//sandboxed_api/bazel:build_defs.bzl", "sapi_platform_copts") 16*ec63e07aSXin Liload("//sandboxed_api/bazel:proto.bzl", "sapi_proto_library") 17*ec63e07aSXin Li 18*ec63e07aSXin Lipackage(default_visibility = ["//sandboxed_api:__subpackages__"]) 19*ec63e07aSXin Li 20*ec63e07aSXin Lilicenses(["notice"]) 21*ec63e07aSXin Li 22*ec63e07aSXin Liexports_files(["LICENSE"]) 23*ec63e07aSXin Li 24*ec63e07aSXin Licc_library( 25*ec63e07aSXin Li name = "config", 26*ec63e07aSXin Li srcs = ["config.cc"], 27*ec63e07aSXin Li hdrs = ["config.h"], 28*ec63e07aSXin Li copts = sapi_platform_copts(), 29*ec63e07aSXin Li deps = [ 30*ec63e07aSXin Li "@com_google_absl//absl/base:config", 31*ec63e07aSXin Li ], 32*ec63e07aSXin Li) 33*ec63e07aSXin Li 34*ec63e07aSXin Lisapi_proto_library( 35*ec63e07aSXin Li name = "proto_arg", 36*ec63e07aSXin Li srcs = ["proto_arg.proto"], 37*ec63e07aSXin Li visibility = ["//visibility:public"], 38*ec63e07aSXin Li) 39*ec63e07aSXin Li 40*ec63e07aSXin Licc_library( 41*ec63e07aSXin Li name = "embed_file", 42*ec63e07aSXin Li srcs = [ 43*ec63e07aSXin Li "embed_file.cc", 44*ec63e07aSXin Li "file_toc.h", 45*ec63e07aSXin Li ], 46*ec63e07aSXin Li hdrs = ["embed_file.h"], 47*ec63e07aSXin Li copts = sapi_platform_copts(), 48*ec63e07aSXin Li visibility = ["//visibility:public"], 49*ec63e07aSXin Li deps = [ 50*ec63e07aSXin Li "//sandboxed_api/sandbox2:util", 51*ec63e07aSXin Li "//sandboxed_api/util:fileops", 52*ec63e07aSXin Li "//sandboxed_api/util:raw_logging", 53*ec63e07aSXin Li "@com_google_absl//absl/base:core_headers", 54*ec63e07aSXin Li "@com_google_absl//absl/container:flat_hash_map", 55*ec63e07aSXin Li "@com_google_absl//absl/strings", 56*ec63e07aSXin Li "@com_google_absl//absl/synchronization", 57*ec63e07aSXin Li ], 58*ec63e07aSXin Li) 59*ec63e07aSXin Li 60*ec63e07aSXin Li# The main Sandboxed-API library 61*ec63e07aSXin Licc_library( 62*ec63e07aSXin Li name = "sapi", 63*ec63e07aSXin Li srcs = [ 64*ec63e07aSXin Li "sandbox.cc", 65*ec63e07aSXin Li "transaction.cc", 66*ec63e07aSXin Li ], 67*ec63e07aSXin Li hdrs = [ 68*ec63e07aSXin Li # TODO(hamacher): Remove reexport workaround as soon as the buildsystem 69*ec63e07aSXin Li # supports this usecase. 70*ec63e07aSXin Li "embed_file.h", 71*ec63e07aSXin Li "sandbox.h", 72*ec63e07aSXin Li "transaction.h", 73*ec63e07aSXin Li ], 74*ec63e07aSXin Li copts = sapi_platform_copts(), 75*ec63e07aSXin Li visibility = ["//visibility:public"], 76*ec63e07aSXin Li deps = [ 77*ec63e07aSXin Li ":config", 78*ec63e07aSXin Li ":embed_file", 79*ec63e07aSXin Li ":vars", 80*ec63e07aSXin Li "//sandboxed_api/sandbox2", 81*ec63e07aSXin Li "//sandboxed_api/sandbox2:client", 82*ec63e07aSXin Li "//sandboxed_api/sandbox2:comms", 83*ec63e07aSXin Li "//sandboxed_api/sandbox2/util:bpf_helper", 84*ec63e07aSXin Li "//sandboxed_api/util:file_base", 85*ec63e07aSXin Li "//sandboxed_api/util:fileops", 86*ec63e07aSXin Li "//sandboxed_api/util:raw_logging", 87*ec63e07aSXin Li "//sandboxed_api/util:runfiles", 88*ec63e07aSXin Li "//sandboxed_api/util:status", 89*ec63e07aSXin Li "@com_google_absl//absl/base", 90*ec63e07aSXin Li "@com_google_absl//absl/base:core_headers", 91*ec63e07aSXin Li "@com_google_absl//absl/base:dynamic_annotations", 92*ec63e07aSXin Li "@com_google_absl//absl/base:log_severity", 93*ec63e07aSXin Li "@com_google_absl//absl/container:flat_hash_map", 94*ec63e07aSXin Li "@com_google_absl//absl/log", 95*ec63e07aSXin Li "@com_google_absl//absl/log:check", 96*ec63e07aSXin Li "@com_google_absl//absl/log:globals", 97*ec63e07aSXin Li "@com_google_absl//absl/status", 98*ec63e07aSXin Li "@com_google_absl//absl/status:statusor", 99*ec63e07aSXin Li "@com_google_absl//absl/strings", 100*ec63e07aSXin Li "@com_google_absl//absl/strings:str_format", 101*ec63e07aSXin Li "@com_google_absl//absl/synchronization", 102*ec63e07aSXin Li "@com_google_absl//absl/time", 103*ec63e07aSXin Li ], 104*ec63e07aSXin Li) 105*ec63e07aSXin Li 106*ec63e07aSXin Li# Definitions shared between sandboxee and master used for higher-level IPC. 107*ec63e07aSXin Licc_library( 108*ec63e07aSXin Li name = "call", 109*ec63e07aSXin Li hdrs = ["call.h"], 110*ec63e07aSXin Li copts = sapi_platform_copts(), 111*ec63e07aSXin Li deps = [":var_type"], 112*ec63e07aSXin Li) 113*ec63e07aSXin Li 114*ec63e07aSXin Licc_library( 115*ec63e07aSXin Li name = "lenval_core", 116*ec63e07aSXin Li hdrs = ["lenval_core.h"], 117*ec63e07aSXin Li copts = sapi_platform_copts(), 118*ec63e07aSXin Li visibility = ["//visibility:public"], 119*ec63e07aSXin Li) 120*ec63e07aSXin Li 121*ec63e07aSXin Licc_library( 122*ec63e07aSXin Li name = "var_type", 123*ec63e07aSXin Li hdrs = ["var_type.h"], 124*ec63e07aSXin Li copts = sapi_platform_copts(), 125*ec63e07aSXin Li) 126*ec63e07aSXin Li 127*ec63e07aSXin Li# Variable hierarchy 128*ec63e07aSXin Licc_library( 129*ec63e07aSXin Li name = "vars", 130*ec63e07aSXin Li srcs = [ 131*ec63e07aSXin Li "proto_helper.cc", 132*ec63e07aSXin Li "rpcchannel.cc", 133*ec63e07aSXin Li "var_abstract.cc", 134*ec63e07aSXin Li "var_int.cc", 135*ec63e07aSXin Li "var_lenval.cc", 136*ec63e07aSXin Li ], 137*ec63e07aSXin Li hdrs = [ 138*ec63e07aSXin Li "proto_helper.h", 139*ec63e07aSXin Li "rpcchannel.h", 140*ec63e07aSXin Li "var_abstract.h", 141*ec63e07aSXin Li "var_array.h", 142*ec63e07aSXin Li "var_int.h", 143*ec63e07aSXin Li "var_lenval.h", 144*ec63e07aSXin Li "var_proto.h", 145*ec63e07aSXin Li "var_ptr.h", 146*ec63e07aSXin Li "var_reg.h", 147*ec63e07aSXin Li "var_struct.h", 148*ec63e07aSXin Li "var_void.h", 149*ec63e07aSXin Li "vars.h", 150*ec63e07aSXin Li ], 151*ec63e07aSXin Li copts = sapi_platform_copts(), 152*ec63e07aSXin Li visibility = ["//visibility:public"], 153*ec63e07aSXin Li deps = [ 154*ec63e07aSXin Li ":call", 155*ec63e07aSXin Li ":lenval_core", 156*ec63e07aSXin Li ":proto_arg_cc_proto", 157*ec63e07aSXin Li ":var_type", 158*ec63e07aSXin Li "//sandboxed_api/sandbox2:comms", 159*ec63e07aSXin Li "//sandboxed_api/util:raw_logging", 160*ec63e07aSXin Li "//sandboxed_api/util:status", 161*ec63e07aSXin Li "@com_google_absl//absl/base:core_headers", 162*ec63e07aSXin Li "@com_google_absl//absl/log", 163*ec63e07aSXin Li "@com_google_absl//absl/log:check", 164*ec63e07aSXin Li "@com_google_absl//absl/status", 165*ec63e07aSXin Li "@com_google_absl//absl/status:statusor", 166*ec63e07aSXin Li "@com_google_absl//absl/strings", 167*ec63e07aSXin Li "@com_google_absl//absl/strings:str_format", 168*ec63e07aSXin Li "@com_google_absl//absl/synchronization", 169*ec63e07aSXin Li "@com_google_absl//absl/utility", 170*ec63e07aSXin Li ], 171*ec63e07aSXin Li) 172*ec63e07aSXin Li 173*ec63e07aSXin Li# A stub to be linked in with SAPI libraries 174*ec63e07aSXin Licc_library( 175*ec63e07aSXin Li name = "client", 176*ec63e07aSXin Li srcs = ["client.cc"], 177*ec63e07aSXin Li copts = sapi_platform_copts(), 178*ec63e07aSXin Li visibility = ["//visibility:public"], 179*ec63e07aSXin Li deps = [ 180*ec63e07aSXin Li ":call", 181*ec63e07aSXin Li ":lenval_core", 182*ec63e07aSXin Li ":proto_arg_cc_proto", 183*ec63e07aSXin Li ":var_type", 184*ec63e07aSXin Li ":vars", 185*ec63e07aSXin Li "//sandboxed_api/sandbox2:comms", 186*ec63e07aSXin Li "//sandboxed_api/sandbox2:forkingclient", 187*ec63e07aSXin Li "//sandboxed_api/sandbox2:logsink", 188*ec63e07aSXin Li "//sandboxed_api/util:raw_logging", 189*ec63e07aSXin Li "@com_google_absl//absl/base:core_headers", 190*ec63e07aSXin Li "@com_google_absl//absl/base:dynamic_annotations", 191*ec63e07aSXin Li "@com_google_absl//absl/flags:parse", 192*ec63e07aSXin Li "@com_google_absl//absl/log", 193*ec63e07aSXin Li "@com_google_absl//absl/log:check", 194*ec63e07aSXin Li "@com_google_absl//absl/log:flags", 195*ec63e07aSXin Li "@com_google_absl//absl/log:initialize", 196*ec63e07aSXin Li "@com_google_absl//absl/status:statusor", 197*ec63e07aSXin Li "@com_google_absl//absl/strings", 198*ec63e07aSXin Li "@com_google_protobuf//:protobuf", 199*ec63e07aSXin Li "@org_sourceware_libffi//:libffi", 200*ec63e07aSXin Li ], 201*ec63e07aSXin Li) 202*ec63e07aSXin Li 203*ec63e07aSXin Licc_test( 204*ec63e07aSXin Li name = "sapi_test", 205*ec63e07aSXin Li srcs = ["sapi_test.cc"], 206*ec63e07aSXin Li copts = sapi_platform_copts(), 207*ec63e07aSXin Li tags = ["local"], 208*ec63e07aSXin Li deps = [ 209*ec63e07aSXin Li ":sapi", 210*ec63e07aSXin Li ":testing", 211*ec63e07aSXin Li "//sandboxed_api/examples/stringop:stringop-sapi", 212*ec63e07aSXin Li "//sandboxed_api/examples/stringop:stringop_params_cc_proto", 213*ec63e07aSXin Li "//sandboxed_api/examples/sum:sum-sapi", 214*ec63e07aSXin Li "//sandboxed_api/util:status_matchers", 215*ec63e07aSXin Li "@com_google_absl//absl/status", 216*ec63e07aSXin Li "@com_google_absl//absl/status:statusor", 217*ec63e07aSXin Li "@com_google_absl//absl/time", 218*ec63e07aSXin Li "@com_google_benchmark//:benchmark", 219*ec63e07aSXin Li "@com_google_googletest//:gtest_main", 220*ec63e07aSXin Li ], 221*ec63e07aSXin Li) 222*ec63e07aSXin Li 223*ec63e07aSXin Li# Utility library for writing tests 224*ec63e07aSXin Licc_library( 225*ec63e07aSXin Li name = "testing", 226*ec63e07aSXin Li testonly = 1, 227*ec63e07aSXin Li srcs = ["testing.cc"], 228*ec63e07aSXin Li hdrs = ["testing.h"], 229*ec63e07aSXin Li copts = sapi_platform_copts(), 230*ec63e07aSXin Li visibility = ["//visibility:public"], 231*ec63e07aSXin Li deps = [ 232*ec63e07aSXin Li ":config", 233*ec63e07aSXin Li "//sandboxed_api/sandbox2:policybuilder", 234*ec63e07aSXin Li "//sandboxed_api/sandbox2:testonly_allow_all_syscalls", 235*ec63e07aSXin Li "//sandboxed_api/util:file_base", 236*ec63e07aSXin Li "@com_google_absl//absl/strings", 237*ec63e07aSXin Li ], 238*ec63e07aSXin Li) 239