xref: /aosp_15_r20/external/sandboxed-api/sandboxed_api/BUILD.bazel (revision ec63e07ab9515d95e79c211197c445ef84cefa6a)
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