1# Copyright (c) 2012 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 'target_defaults': { 7 'variables': { 8 'sandbox_windows_target': 0, 9 'target_arch%': 'ia32', 10 }, 11 'target_conditions': [ 12 ['sandbox_windows_target==1', { 13 # Files that are shared between the 32-bit and the 64-bit versions 14 # of the Windows sandbox library. 15 'sources': [ 16 'src/acl.cc', 17 'src/acl.h', 18 'src/app_container.cc', 19 'src/app_container.h', 20 'src/broker_services.cc', 21 'src/broker_services.h', 22 'src/crosscall_client.h', 23 'src/crosscall_params.h', 24 'src/crosscall_server.cc', 25 'src/crosscall_server.h', 26 'src/eat_resolver.cc', 27 'src/eat_resolver.h', 28 'src/filesystem_dispatcher.cc', 29 'src/filesystem_dispatcher.h', 30 'src/filesystem_interception.cc', 31 'src/filesystem_interception.h', 32 'src/filesystem_policy.cc', 33 'src/filesystem_policy.h', 34 'src/handle_closer.cc', 35 'src/handle_closer.h', 36 'src/handle_closer_agent.cc', 37 'src/handle_closer_agent.h', 38 'src/handle_dispatcher.cc', 39 'src/handle_dispatcher.h', 40 'src/handle_interception.cc', 41 'src/handle_interception.h', 42 'src/handle_policy.cc', 43 'src/handle_policy.h', 44 'src/interception.cc', 45 'src/interception.h', 46 'src/interception_agent.cc', 47 'src/interception_agent.h', 48 'src/interception_internal.h', 49 'src/interceptors.h', 50 'src/internal_types.h', 51 'src/ipc_tags.h', 52 'src/job.cc', 53 'src/job.h', 54 'src/named_pipe_dispatcher.cc', 55 'src/named_pipe_dispatcher.h', 56 'src/named_pipe_interception.cc', 57 'src/named_pipe_interception.h', 58 'src/named_pipe_policy.cc', 59 'src/named_pipe_policy.h', 60 'src/nt_internals.h', 61 'src/policy_broker.cc', 62 'src/policy_broker.h', 63 'src/policy_engine_opcodes.cc', 64 'src/policy_engine_opcodes.h', 65 'src/policy_engine_params.h', 66 'src/policy_engine_processor.cc', 67 'src/policy_engine_processor.h', 68 'src/policy_low_level.cc', 69 'src/policy_low_level.h', 70 'src/policy_params.h', 71 'src/policy_target.cc', 72 'src/policy_target.h', 73 'src/process_mitigations.cc', 74 'src/process_mitigations.h', 75 'src/process_mitigations_win32k_dispatcher.cc', 76 'src/process_mitigations_win32k_dispatcher.h', 77 'src/process_mitigations_win32k_interception.cc', 78 'src/process_mitigations_win32k_interception.h', 79 'src/process_mitigations_win32k_policy.cc', 80 'src/process_mitigations_win32k_policy.h', 81 'src/process_thread_dispatcher.cc', 82 'src/process_thread_dispatcher.h', 83 'src/process_thread_interception.cc', 84 'src/process_thread_interception.h', 85 'src/process_thread_policy.cc', 86 'src/process_thread_policy.h', 87 'src/registry_dispatcher.cc', 88 'src/registry_dispatcher.h', 89 'src/registry_interception.cc', 90 'src/registry_interception.h', 91 'src/registry_policy.cc', 92 'src/registry_policy.h', 93 'src/resolver.cc', 94 'src/resolver.h', 95 'src/restricted_token_utils.cc', 96 'src/restricted_token_utils.h', 97 'src/restricted_token.cc', 98 'src/restricted_token.h', 99 'src/sandbox_factory.h', 100 'src/sandbox_globals.cc', 101 'src/sandbox_nt_types.h', 102 'src/sandbox_nt_util.cc', 103 'src/sandbox_nt_util.h', 104 'src/sandbox_policy_base.cc', 105 'src/sandbox_policy_base.h', 106 'src/sandbox_policy.h', 107 'src/sandbox_rand.cc', 108 'src/sandbox_rand.h', 109 'src/sandbox_types.h', 110 'src/sandbox_utils.cc', 111 'src/sandbox_utils.h', 112 'src/sandbox.cc', 113 'src/sandbox.h', 114 'src/security_level.h', 115 'src/service_resolver.cc', 116 'src/service_resolver.h', 117 'src/sharedmem_ipc_client.cc', 118 'src/sharedmem_ipc_client.h', 119 'src/sharedmem_ipc_server.cc', 120 'src/sharedmem_ipc_server.h', 121 'src/sid.cc', 122 'src/sid.h', 123 'src/sync_dispatcher.cc', 124 'src/sync_dispatcher.h', 125 'src/sync_interception.cc', 126 'src/sync_interception.h', 127 'src/sync_policy.cc', 128 'src/sync_policy.h', 129 'src/target_interceptions.cc', 130 'src/target_interceptions.h', 131 'src/target_process.cc', 132 'src/target_process.h', 133 'src/target_services.cc', 134 'src/target_services.h', 135 'src/top_level_dispatcher.cc', 136 'src/top_level_dispatcher.h', 137 'src/win_utils.cc', 138 'src/win_utils.h', 139 'src/win2k_threadpool.cc', 140 'src/win2k_threadpool.h', 141 'src/window.cc', 142 'src/window.h', 143 ], 144 'target_conditions': [ 145 ['target_arch=="x64"', { 146 'sources': [ 147 'src/interceptors_64.cc', 148 'src/interceptors_64.h', 149 'src/resolver_64.cc', 150 'src/service_resolver_64.cc', 151 'src/Wow64_64.cc', 152 ], 153 }], 154 ['target_arch=="ia32"', { 155 'sources': [ 156 'src/resolver_32.cc', 157 'src/service_resolver_32.cc', 158 'src/sidestep_resolver.cc', 159 'src/sidestep_resolver.h', 160 'src/sidestep\ia32_modrm_map.cpp', 161 'src/sidestep\ia32_opcode_map.cpp', 162 'src/sidestep\mini_disassembler_types.h', 163 'src/sidestep\mini_disassembler.cpp', 164 'src/sidestep\mini_disassembler.h', 165 'src/sidestep\preamble_patcher_with_stub.cpp', 166 'src/sidestep\preamble_patcher.h', 167 'src/Wow64.cc', 168 'src/Wow64.h', 169 ], 170 }], 171 ], 172 }], 173 ], 174 }, 175 'targets': [ 176 { 177 'target_name': 'sandbox', 178 'type': 'static_library', 179 'variables': { 180 'sandbox_windows_target': 1, 181 }, 182 'dependencies': [ 183 '../base/base.gyp:base', 184 '../base/base.gyp:base_static', 185 ], 186 'export_dependent_settings': [ 187 '../base/base.gyp:base', 188 ], 189 'include_dirs': [ 190 '../..', 191 ], 192 'target_conditions': [ 193 ['target_arch=="ia32"', { 194 'copies': [ 195 { 196 'destination': '<(PRODUCT_DIR)', 197 'files': [ 198 'wow_helper/wow_helper.exe', 199 'wow_helper/wow_helper.pdb', 200 ], 201 }, 202 ], 203 }], 204 ], 205 }, 206 { 207 'target_name': 'sbox_integration_tests', 208 'type': 'executable', 209 'dependencies': [ 210 'sandbox', 211 '../base/base.gyp:test_support_base', 212 '../testing/gtest.gyp:gtest', 213 ], 214 'sources': [ 215 'src/address_sanitizer_test.cc', 216 'src/app_container_test.cc', 217 'src/file_policy_test.cc', 218 'src/handle_inheritance_test.cc', 219 'src/handle_policy_test.cc', 220 'tests/integration_tests/integration_tests_test.cc', 221 'src/handle_closer_test.cc', 222 'src/integrity_level_test.cc', 223 'src/ipc_ping_test.cc', 224 'src/lpc_policy_test.cc', 225 'src/named_pipe_policy_test.cc', 226 'src/policy_target_test.cc', 227 'src/process_mitigations_test.cc', 228 'src/process_policy_test.cc', 229 'src/registry_policy_test.cc', 230 'src/sync_policy_test.cc', 231 'src/sync_policy_test.h', 232 'src/unload_dll_test.cc', 233 'tests/common/controller.cc', 234 'tests/common/controller.h', 235 'tests/common/test_utils.cc', 236 'tests/common/test_utils.h', 237 'tests/integration_tests/integration_tests.cc', 238 ], 239 }, 240 { 241 'target_name': 'sbox_validation_tests', 242 'type': 'executable', 243 'dependencies': [ 244 'sandbox', 245 '../base/base.gyp:test_support_base', 246 '../testing/gtest.gyp:gtest', 247 ], 248 'sources': [ 249 'tests/common/controller.cc', 250 'tests/common/controller.h', 251 'tests/validation_tests/unit_tests.cc', 252 'tests/validation_tests/commands.cc', 253 'tests/validation_tests/commands.h', 254 'tests/validation_tests/suite.cc', 255 ], 256 }, 257 { 258 'target_name': 'sbox_unittests', 259 'type': 'executable', 260 'dependencies': [ 261 'sandbox', 262 '../base/base.gyp:test_support_base', 263 '../testing/gtest.gyp:gtest', 264 ], 265 'sources': [ 266 'src/app_container_unittest.cc', 267 'src/interception_unittest.cc', 268 'src/service_resolver_unittest.cc', 269 'src/restricted_token_unittest.cc', 270 'src/job_unittest.cc', 271 'src/sid_unittest.cc', 272 'src/policy_engine_unittest.cc', 273 'src/policy_low_level_unittest.cc', 274 'src/policy_opcodes_unittest.cc', 275 'src/ipc_unittest.cc', 276 'src/sandbox_nt_util_unittest.cc', 277 'src/threadpool_unittest.cc', 278 'src/win_utils_unittest.cc', 279 'tests/common/test_utils.cc', 280 'tests/common/test_utils.h', 281 'tests/unit_tests/unit_tests.cc', 282 ], 283 }, 284 { 285 'target_name': 'sandbox_poc', 286 'type': 'executable', 287 'dependencies': [ 288 'sandbox', 289 'pocdll', 290 ], 291 'sources': [ 292 'sandbox_poc/main_ui_window.cc', 293 'sandbox_poc/main_ui_window.h', 294 'sandbox_poc/resource.h', 295 'sandbox_poc/sandbox.cc', 296 'sandbox_poc/sandbox.h', 297 'sandbox_poc/sandbox.ico', 298 'sandbox_poc/sandbox.rc', 299 ], 300 'link_settings': { 301 'libraries': [ 302 '-lcomctl32.lib', 303 ], 304 }, 305 'msvs_settings': { 306 'VCLinkerTool': { 307 'SubSystem': '2', # Set /SUBSYSTEM:WINDOWS 308 }, 309 }, 310 }, 311 { 312 'target_name': 'pocdll', 313 'type': 'shared_library', 314 'sources': [ 315 'sandbox_poc/pocdll/exports.h', 316 'sandbox_poc/pocdll/fs.cc', 317 'sandbox_poc/pocdll/handles.cc', 318 'sandbox_poc/pocdll/invasive.cc', 319 'sandbox_poc/pocdll/network.cc', 320 'sandbox_poc/pocdll/pocdll.cc', 321 'sandbox_poc/pocdll/processes_and_threads.cc', 322 'sandbox_poc/pocdll/registry.cc', 323 'sandbox_poc/pocdll/spyware.cc', 324 'sandbox_poc/pocdll/utils.h', 325 ], 326 'defines': [ 327 'POCDLL_EXPORTS', 328 ], 329 'include_dirs': [ 330 '../..', 331 ], 332 }, 333 ], 334 'conditions': [ 335 ['OS=="win" and target_arch=="ia32"', { 336 'targets': [ 337 { 338 'target_name': 'sandbox_win64', 339 'type': 'static_library', 340 'variables': { 341 'sandbox_windows_target': 1, 342 'target_arch': 'x64', 343 }, 344 'dependencies': [ 345 '../base/base.gyp:base_win64', 346 '../base/base.gyp:base_static_win64', 347 ], 348 'configurations': { 349 'Common_Base': { 350 'msvs_target_platform': 'x64', 351 }, 352 }, 353 'include_dirs': [ 354 '../..', 355 ], 356 'defines': [ 357 '<@(nacl_win64_defines)', 358 ] 359 }, 360 ], 361 }], 362 ['test_isolation_mode != "noop"', { 363 'targets': [ 364 { 365 'target_name': 'sbox_integration_tests_run', 366 'type': 'none', 367 'dependencies': [ 368 'sbox_integration_tests', 369 ], 370 'includes': [ 371 '../../build/isolate.gypi', 372 ], 373 'sources': [ 374 '../sbox_integration_tests.isolate', 375 ], 376 }, 377 { 378 'target_name': 'sbox_unittests_run', 379 'type': 'none', 380 'dependencies': [ 381 'sbox_unittests', 382 ], 383 'includes': [ 384 '../../build/isolate.gypi', 385 ], 386 'sources': [ 387 '../sbox_unittests.isolate', 388 ], 389 }, 390 { 391 'target_name': 'sbox_validation_tests_run', 392 'type': 'none', 393 'dependencies': [ 394 'sbox_validation_tests', 395 ], 396 'includes': [ 397 '../../build/isolate.gypi', 398 ], 399 'sources': [ 400 '../sbox_validation_tests.isolate', 401 ], 402 }, 403 ], 404 }], 405 ], 406} 407