summaryrefslogtreecommitdiff
path: root/chromium/sandbox/BUILD.gn
blob: 9f52abf5b75c080e3c4b7ed8c760525bde97d9b5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# Copyright 2014 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/buildflag_header.gni")
import("//sandbox/features.gni")
import("//testing/libfuzzer/fuzzer_test.gni")
import("//testing/test.gni")

# Several targets want to include this header file. We separate it out
# here so multiple targets can depend on it.
source_set("sandbox_export") {
  sources = [ "sandbox_export.h" ]
}

source_set("common") {
  sources = [
    "constants.h",
    "features.cc",
    "features.h",
  ]

  deps = [
    "//base:base",
    "//sandbox:sandbox_buildflags",
  ]
}

test("sandbox_unittests") {
  deps = [
    "//base/test:run_all_unittests",
    "//sandbox/policy:tests",
    "//testing/gtest",
  ]

  if (is_mac) {
    deps += [ "//sandbox/mac:sandbox_unittests" ]
  }
}

# Meta-target that forwards to the proper platform one.
group("sandbox") {
  if (is_win) {
    public_deps = [ "//sandbox/win:sandbox" ]
  } else if (is_mac) {
    public_deps = [
      "//sandbox/mac:seatbelt",
      "//sandbox/mac:seatbelt_extension",
      "//sandbox/mac:system_services",
      "//sandbox/mac/mojom",
    ]
  } else if (is_linux || is_chromeos || is_android) {
    public_deps = [ "//sandbox/linux:sandbox" ]
  }
}

buildflag_header("sandbox_buildflags") {
  header = "sandbox_buildflags.h"
  flags = [
    "USE_SECCOMP_BPF=$use_seccomp_bpf",
    "DISABLE_SECCOMP_SSBD=$disable_seccomp_ssbd",
  ]
}

# This target must be here and not in win/ otherwise it would require a full
# parse of win/BUILD.gn which fails on non-Windows platforms.
#
# Although the code is Windows-based, the fuzzer is designed to work on Linux,
# so do not disable this fuzzer on non-Windows platforms.
fuzzer_test("sandbox_ipc_fuzzer") {
  sources = [
    "win/fuzzer/fuzzer_types.h",
    "win/fuzzer/sandbox_ipc_fuzzer.cc",
    "win/src/crosscall_server.cc",
    "win/src/ipc_args.cc",
  ]
  if (!is_win) {
    defines = [ "SANDBOX_FUZZ_TARGET" ]
  }
  deps = [
    ":sandbox",
    "//base",
  ]
  dict = "ipc.dict"
  libfuzzer_options = [ "max_len=1024" ]
}