# Copyright (c) 2012 Google Inc. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

{
  # PYTHON and PWD are replaced by the test code before this
  # gyp file runs
  'make_global_settings': [
    ['CC', r'$PYTHON $PWD/my_cc.py FOO'],
    ['CXX', r'$PYTHON $PWD/my_cxx.py FOO'],
    ['CC.host', r'$PYTHON $PWD/my_cc.py BAR'],
    ['CXX.host', r'$PYTHON $PWD/my_cxx.py BAR'],

    ['LD', r'$PYTHON $PWD/my_ld.py FOO_LINK'],
    ['LD.host', r'$PYTHON $PWD/my_ld.py BAR_LINK'],
    ['LINK', r'$PYTHON $PWD/my_ld.py FOO_LINK'],
    ['LINK.host', r'$PYTHON $PWD/my_ld.py BAR_LINK'],
  ],

  # The above global settings should mean that
  # that these targets are built using the fake
  # toolchain above.
  'targets': [
    {
      'toolset': '$TOOLSET',
      'target_name': 'hello',
      'type': 'executable',
      'sources': [
        'test.c',
        'cxxtest.cc',
      ],
    },
  ],
}
