# Copyright (c) 2010 The ANGLE Project Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

{
  'targets': [
    {
      'target_name': 'essl_to_glsl',
      'type': 'executable',
      'dependencies': [
        '../src/build_angle.gyp:translator',
      ],
      'include_dirs': [
        '../include',
      ],
      'sources': [
        'translator/translator.cpp',
      ],
    },
  ],
  'conditions': [
    ['OS=="win"', {
      'targets': [
        {
          'target_name': 'essl_to_hlsl',
          'type': 'executable',
          'dependencies': [
            '../src/build_angle.gyp:translator',
          ],
          'include_dirs': [
            '../include',
            '../src',
          ],
          'sources': [
            'translator/translator.cpp',
            '../src/common/debug.cpp',
          ],
          'msvs_settings': {
            'VCLinkerTool': {
              'AdditionalDependencies': ['d3d9.lib'],
            }
          }
        },
        {
          'target_name': 'es_util',
          'type': 'static_library',
          'dependencies': [
            '../src/build_angle.gyp:libEGL',
            '../src/build_angle.gyp:libGLESv2',
          ],
          'include_dirs': [
            'gles2_book/Common',
            '../include',
          ],
          'sources': [
            'gles2_book/Common/esShader.c',
            'gles2_book/Common/esShapes.c',
            'gles2_book/Common/esTransform.c',
            'gles2_book/Common/esUtil.c',
            'gles2_book/Common/esUtil.h',
            'gles2_book/Common/esUtil_win.h',
            'gles2_book/Common/Win32/esUtil_TGA.c',
            'gles2_book/Common/Win32/esUtil_win32.c',
          ],
          'direct_dependent_settings': {
            'include_dirs': [
              'gles2_book/Common',
              '../include',
            ],
          },
        },
        {
          'target_name': 'hello_triangle',
          'type': 'executable',
          'dependencies': ['es_util'],
          'sources': [
            'gles2_book/Hello_Triangle/Hello_Triangle.c',
          ],
        },
        {
          'target_name': 'mip_map_2d',
          'type': 'executable',
          'dependencies': ['es_util'],
          'sources': [
            'gles2_book/MipMap2D/MipMap2D.c',
          ],
        },
        {
          'target_name': 'multi_texture',
          'type': 'executable',
          'dependencies': ['es_util'],
          'sources': [
            'gles2_book/MultiTexture/MultiTexture.c',
          ],
          'copies': [
            {
              'destination': '<(PRODUCT_DIR)',
              'files': [
                'gles2_book/MultiTexture/basemap.tga',
                'gles2_book/MultiTexture/lightmap.tga',
              ],
            },
          ],
        },
        {
          'target_name': 'particle_system',
          'type': 'executable',
          'dependencies': ['es_util'],
          'sources': [
            'gles2_book/ParticleSystem/ParticleSystem.c',
          ],
          'copies': [
            {
              'destination': '<(PRODUCT_DIR)',
              'files': [
                'gles2_book/ParticleSystem/smoke.tga',
              ],
            },
          ],
        },
        {
          'target_name': 'simple_texture_2d',
          'type': 'executable',
          'dependencies': ['es_util'],
          'sources': [
            'gles2_book/Simple_Texture2D/Simple_Texture2D.c',
          ],
        },
        {
          'target_name': 'simple_texture_cubemap',
          'type': 'executable',
          'dependencies': ['es_util'],
          'sources': [
            'gles2_book/Simple_TextureCubemap/Simple_TextureCubemap.c',
          ],
        },
        {
          'target_name': 'simple_vertex_shader',
          'type': 'executable',
          'dependencies': ['es_util'],
          'sources': [
            'gles2_book/Simple_VertexShader/Simple_VertexShader.c',
          ],
        },
        {
          'target_name': 'stencil_test',
          'type': 'executable',
          'dependencies': ['es_util'],
          'sources': [
            'gles2_book/Stencil_Test/Stencil_Test.c',
          ],
        },
        {
          'target_name': 'texture_wrap',
          'type': 'executable',
          'dependencies': ['es_util'],
          'sources': [
            'gles2_book/TextureWrap/TextureWrap.c',
          ],
        },
        {
          'target_name': 'post_sub_buffer',
          'type': 'executable',
          'dependencies': ['es_util'],
          'sources': [
            'gles2_book/PostSubBuffer/PostSubBuffer.c',
          ],
        },
      ],
    }],
  ],
}

# Local Variables:
# tab-width:2
# indent-tabs-mode:nil
# End:
# vim: set expandtab tabstop=2 shiftwidth=2:
