# Copyright 2015 the V8 project authors. All rights reserved.
# 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.
{
  'conditions': [
    # Copy the VS runtime DLLs into the isolate so that they
    # don't have to be preinstalled on the target machine.
    #
    # VS2013 runtimes
    ['OS=="win" and msvs_version==2013 and component=="shared_library" and CONFIGURATION_NAME=="Debug"', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/x64/msvcp120d.dll',
          '<(PRODUCT_DIR)/x64/msvcr120d.dll',
        ],
      },
    }],
    ['OS=="win" and msvs_version==2013 and component=="shared_library" and CONFIGURATION_NAME=="Release"', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/x64/msvcp120.dll',
          '<(PRODUCT_DIR)/x64/msvcr120.dll',
        ],
      },
    }],
    ['OS=="win" and msvs_version==2013 and component=="shared_library" and (CONFIGURATION_NAME=="Debug" or CONFIGURATION_NAME=="Debug_x64")', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/msvcp120d.dll',
          '<(PRODUCT_DIR)/msvcr120d.dll',
        ],
      },
    }],
    ['OS=="win" and msvs_version==2013 and component=="shared_library" and (CONFIGURATION_NAME=="Release" or CONFIGURATION_NAME=="Release_x64")', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/msvcp120.dll',
          '<(PRODUCT_DIR)/msvcr120.dll',
        ],
      },
    }],
    # VS2015 runtimes
    ['OS=="win" and msvs_version==2015 and component=="shared_library" and CONFIGURATION_NAME=="Debug"', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/x64/msvcp140d.dll',
          '<(PRODUCT_DIR)/x64/vccorlib140d.dll',
        ],
      },
    }],
    ['OS=="win" and msvs_version==2015 and component=="shared_library" and CONFIGURATION_NAME=="Release"', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/x64/msvcp140.dll',
          '<(PRODUCT_DIR)/x64/vccorlib140.dll',
        ],
      },
    }],
    ['OS=="win" and msvs_version==2015 and component=="shared_library" and (CONFIGURATION_NAME=="Debug" or CONFIGURATION_NAME=="Debug_x64")', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/msvcp140d.dll',
          '<(PRODUCT_DIR)/vccorlib140d.dll',
        ],
      },
    }],
    ['OS=="win" and msvs_version==2015 and component=="shared_library" and (CONFIGURATION_NAME=="Release" or CONFIGURATION_NAME=="Release_x64")', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/msvcp140.dll',
          '<(PRODUCT_DIR)/vccorlib140.dll',
        ],
      },
    }],
  ],
}