# Copyright 2013 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.
{
  'conditions': [
    ['OS=="android" or OS=="linux" or OS=="mac" or OS=="win"', {
      'variables': {
        'command': [
          '<(PRODUCT_DIR)/content_gl_tests<(EXECUTABLE_SUFFIX)',
        ],
      },
    }],
    # TODO(kbr): these two dependencies seem to be necessary when
    # running the component build to avoid "Failed to mmap datapack"
    # errors. Should investigate further.
    ['OS=="linux" or OS=="win"', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/content_resources.pak',
          '<(PRODUCT_DIR)/ui_test.pak',
        ],
      },
    }],
    ['OS=="win"', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/d3dcompiler_47.dll',
          '<(PRODUCT_DIR)/libEGL.dll',
          '<(PRODUCT_DIR)/libGLESv2.dll',
          '<(PRODUCT_DIR)/osmesa.dll',
        ],
      },
    }],
    # 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)/content_gl_tests.exe.pdb',
        ],
      },
    }],
    ['OS=="win" and component=="shared_library" and (fastbuild==0 or fastbuild==1)', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/base.dll.pdb',
          '<(PRODUCT_DIR)/content.dll.pdb',
        ],
      },
    }],
  ],
  'includes': [
    '../base/base.isolate',
    '../gin/v8.isolate',
  ],
}
