# Copyright 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Because of a limitation in isolate_driver.py, this file needs to be in
# the same directory as the main .gyp file.

{
  'conditions': [
    ['OS=="win"', {
      'variables': {
        'command': [
          '<(PRODUCT_DIR)/sbox_integration_tests.exe',
        ],
        'files': [
          '<(PRODUCT_DIR)/sbox_integration_tests.exe',
        ],
      },
    }],
    ['OS=="win" and target_arch=="ia32"', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/wow_helper.exe',
        ],
      },
    }],
    # These PDBs are needed in order to get reasonable stack traces if
    # an assertion fires or a crash occurs. Add more as necessary.
    ['OS=="win" and (fastbuild==0 or fastbuild==1)', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/sbox_integration_tests.exe.pdb',
        ],
      },
    }],
  ],
  'includes': [
    '../base/base.isolate',
  ],
}
