Home | History | Annotate | Download | only in mac
      1 # Copyright 2014 The Chromium Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 import("//build/config/mac/mac_sdk.gni")
      6 import("//testing/test.gni")
      7 
      8 generate_stubs_script = "//tools/generate_stubs/generate_stubs.py"
      9 generate_stubs_header = "xpc_stubs_header.fragment"
     10 generate_stubs_sig_public = "xpc_stubs.sig"
     11 generate_stubs_sig_private = "xpc_private_stubs.sig"
     12 generate_stubs_project = "sandbox/mac"
     13 generate_stubs_output_stem = "xpc_stubs"
     14 
     15 action("generate_stubs") {
     16   script = generate_stubs_script
     17   sources = [
     18     generate_stubs_sig_private,
     19     generate_stubs_sig_public,
     20   ]
     21   inputs = [
     22     generate_stubs_header,
     23   ]
     24   outputs = [
     25     "$target_gen_dir/$generate_stubs_output_stem.cc",
     26     "$target_gen_dir/$generate_stubs_output_stem.h",
     27   ]
     28   args = [
     29     "-i",
     30     rebase_path(target_gen_dir, root_build_dir),
     31     "-o",
     32     rebase_path(target_gen_dir, root_build_dir),
     33     "-t",
     34     "posix_stubs",
     35     "-e",
     36     rebase_path(generate_stubs_header, root_build_dir),
     37     "-s",
     38     generate_stubs_output_stem,
     39     "-p",
     40     generate_stubs_project,
     41     "-x",
     42     "SANDBOX_EXPORT",
     43   ]
     44   args += rebase_path(sources, root_build_dir)
     45 }
     46 
     47 component("sandbox") {
     48   sources = [
     49     "bootstrap_sandbox.cc",
     50     "bootstrap_sandbox.h",
     51     "launchd_interception_server.cc",
     52     "launchd_interception_server.h",
     53     "mach_message_server.cc",
     54     "mach_message_server.h",
     55     "message_server.h",
     56     "os_compatibility.cc",
     57     "os_compatibility.h",
     58     "policy.cc",
     59     "policy.h",
     60     "pre_exec_delegate.cc",
     61     "pre_exec_delegate.h",
     62     "xpc.cc",
     63     "xpc.h",
     64     "xpc_message_server.cc",
     65     "xpc_message_server.h",
     66   ]
     67 
     68   defines = [ "SANDBOX_IMPLEMENTATION" ]
     69   libs = [ "bsm" ]
     70 
     71   deps = [
     72     "//base",
     73   ]
     74 
     75   # When the build SDK is 10.6, generate a dynamic stub loader. When the
     76   # SDK is higher, then libxpc.dylib will be loaded automatically as part
     77   # of libSystem, and only forward declarations of private symbols are
     78   # necessary.
     79   if (mac_sdk_version == "10.6") {
     80     deps += [ ":generate_stubs" ]
     81     sources += get_target_outputs(":generate_stubs")
     82   }
     83 }
     84 
     85 test("sandbox_mac_unittests") {
     86   sources = [
     87     "bootstrap_sandbox_unittest.mm",
     88     "policy_unittest.cc",
     89     "xpc_message_server_unittest.cc",
     90   ]
     91 
     92   libs = [
     93     "CoreFoundation.framework",
     94     "Foundation.framework",
     95   ]
     96 
     97   deps = [
     98     ":sandbox",
     99     "//base",
    100     "//base/test:run_all_unittests",
    101     "//testing/gtest",
    102   ]
    103 }
    104