# Copyright 2016 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.

# TODO(machenbach): Remove this when crbug.com/669910 is resolved.
{
  '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" 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/2017 runtimes
    ['OS=="win" and (msvs_version==2015 or msvs_version==2017) and component=="shared_library" and (CONFIGURATION_NAME=="Debug" or CONFIGURATION_NAME=="Debug_x64")', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/msvcp140d.dll',
          '<(PRODUCT_DIR)/vccorlib140d.dll',
          '<(PRODUCT_DIR)/vcruntime140d.dll',
          '<(PRODUCT_DIR)/ucrtbased.dll',
        ],
      },
    }],
    ['OS=="win" and (msvs_version==2015 or msvs_version==2017) and component=="shared_library" and (CONFIGURATION_NAME=="Release" or CONFIGURATION_NAME=="Release_x64")', {
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/msvcp140.dll',
          '<(PRODUCT_DIR)/vccorlib140.dll',
          '<(PRODUCT_DIR)/vcruntime140.dll',
          '<(PRODUCT_DIR)/ucrtbase.dll',
        ],
      },
    }],
    ['OS=="win" and (msvs_version==2015 or msvs_version==2017) and component=="shared_library"', {
      # Windows 10 Universal C Runtime binaries.
      'variables': {
        'files': [
          '<(PRODUCT_DIR)/api-ms-win-core-console-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-core-datetime-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-core-debug-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-core-errorhandling-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-core-file-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-core-file-l1-2-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-core-file-l2-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-core-handle-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-core-heap-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-core-interlocked-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-core-libraryloader-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-core-localization-l1-2-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-core-memory-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-core-namedpipe-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-core-processenvironment-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-core-processthreads-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-core-processthreads-l1-1-1.dll',
          '<(PRODUCT_DIR)/api-ms-win-core-profile-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-core-rtlsupport-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-core-string-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-core-synch-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-core-synch-l1-2-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-core-sysinfo-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-core-timezone-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-core-util-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-crt-conio-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-crt-convert-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-crt-environment-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-crt-filesystem-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-crt-heap-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-crt-locale-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-crt-math-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-crt-multibyte-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-crt-private-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-crt-process-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-crt-runtime-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-crt-stdio-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-crt-string-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-crt-time-l1-1-0.dll',
          '<(PRODUCT_DIR)/api-ms-win-crt-utility-l1-1-0.dll',
        ],
      },
    }],
  ],
}
