# 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",
  ]
}
