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{
6  'targets': [
7    {
8      'target_name': 'sandbox',
9      'type': '<(component)',
10      'sources': [
11        'bootstrap_sandbox.cc',
12        'bootstrap_sandbox.h',
13        'launchd_interception_server.cc',
14        'launchd_interception_server.h',
15        'mach_message_server.cc',
16        'mach_message_server.h',
17        'message_server.h',
18        'os_compatibility.cc',
19        'os_compatibility.h',
20        'policy.cc',
21        'policy.h',
22        'pre_exec_delegate.cc',
23        'pre_exec_delegate.h',
24        'xpc.cc',
25        'xpc.h',
26        'xpc_message_server.cc',
27        'xpc_message_server.h',
28      ],
29      'dependencies': [
30        '../base/base.gyp:base',
31      ],
32      'include_dirs': [
33        '..',
34        '<(SHARED_INTERMEDIATE_DIR)',
35      ],
36      'defines': [
37        'SANDBOX_IMPLEMENTATION',
38      ],
39      'link_settings': {
40        'libraries': [
41          '$(SDKROOT)/usr/lib/libbsm.dylib',
42        ],
43      },
44      'conditions': [
45        # When the build SDK is 10.6, generate a dynamic stub loader. When the
46        # SDK is higher, then libxpc.dylib will be loaded automatically as part
47        # of libSystem, and only forward declarations of private symbols are
48        # necessary.
49        ['mac_sdk == "10.6"', {
50          'actions': [
51            {
52              'variables': {
53                'generate_stubs_script': '../tools/generate_stubs/generate_stubs.py',
54                'generate_stubs_header_path': 'xpc_stubs_header.fragment',
55                'generate_stubs_sig_public_path': 'xpc_stubs.sig',
56                'generate_stubs_sig_private_path': 'xpc_private_stubs.sig',
57                'generate_stubs_project': 'sandbox/mac',
58                'generate_stubs_output_stem': 'xpc_stubs',
59              },
60              'action_name': 'generate_stubs',
61              'inputs': [
62                '<(generate_stubs_script)',
63                '<(generate_stubs_header_path)',
64                '<(generate_stubs_sig_public_path)',
65                '<(generate_stubs_sig_private_path)',
66              ],
67              'outputs': [
68                '<(INTERMEDIATE_DIR)/<(generate_stubs_output_stem).cc',
69                '<(SHARED_INTERMEDIATE_DIR)/<(generate_stubs_project)/<(generate_stubs_output_stem).h',
70              ],
71              'action': [
72                'python',
73                '<(generate_stubs_script)',
74                '-i', '<(INTERMEDIATE_DIR)',
75                '-o', '<(SHARED_INTERMEDIATE_DIR)/<(generate_stubs_project)',
76                '-t', 'posix_stubs',
77                '-e', '<(generate_stubs_header_path)',
78                '-s', '<(generate_stubs_output_stem)',
79                '-p', '<(generate_stubs_project)',
80                '-x', 'SANDBOX_EXPORT',
81                '<(generate_stubs_sig_public_path)',
82                '<(generate_stubs_sig_private_path)',
83              ],
84              'process_outputs_as_sources': 1,
85              'message': 'Generating XPC stubs for 10.6 compatability.',
86            },
87          ],
88        }],
89      ],
90    },
91    {
92      'target_name': 'sandbox_mac_unittests',
93      'type': 'executable',
94      'sources': [
95        'bootstrap_sandbox_unittest.mm',
96        'policy_unittest.cc',
97        'xpc_message_server_unittest.cc',
98      ],
99      'dependencies': [
100        'sandbox',
101        '../base/base.gyp:base',
102        '../base/base.gyp:run_all_unittests',
103        '../testing/gtest.gyp:gtest',
104      ],
105      'include_dirs': [
106        '..',
107      ],
108      'link_settings': {
109        'libraries': [
110          '$(SDKROOT)/System/Library/Frameworks/CoreFoundation.framework',
111          '$(SDKROOT)/System/Library/Frameworks/Foundation.framework',
112        ],
113      },
114    },
115  ],
116  'conditions': [
117    ['test_isolation_mode != "noop"', {
118      'targets': [
119        {
120          'target_name': 'sandbox_mac_unittests_run',
121          'type': 'none',
122          'dependencies': [
123            'sandbox_mac_unittests',
124          ],
125          'includes': [ '../../build/isolate.gypi' ],
126          'sources': [ '../sandbox_mac_unittests.isolate' ],
127        },
128      ],
129    }],
130  ],
131}
132