# Copyright 2019 The Cobalt Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# This file was initially generated by starboard/tools/create_derived_build.py,
# though it may have been modified since its creation.

{
  'includes': [
    '../shared/starboard_platform.gypi',
  ],

  'variables': {
    'blittergles_starboard_platform_dependencies': [
      '<@(starboard_platform_dependencies)'
    ],

    # Exclude this dependency because our 'gl_type' is set to 'none'.
    'blittergles_starboard_platform_dependencies!': [
      '<(DEPTH)/starboard/egl_and_gles/egl_and_gles.gyp:egl_and_gles',
    ],
  },

  'targets': [
    {
      'target_name': 'starboard_platform',
      'type': 'static_library',
      'sources': [
        '<@(starboard_platform_sources)',
        '<(DEPTH)/starboard/shared/blittergles/blit_shader_program.cc',
        '<(DEPTH)/starboard/shared/blittergles/blit_shader_program.h',
        '<(DEPTH)/starboard/shared/blittergles/blitter_blit_rect_to_rect.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_context.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_context.h',
        '<(DEPTH)/starboard/shared/blittergles/blitter_create_context.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_create_default_device.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_create_pixel_data.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_create_render_target_surface.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_create_surface_from_pixel_data.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_create_swap_chain_from_window.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_destroy_context.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_destroy_device.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_destroy_pixel_data.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_destroy_surface.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_destroy_swap_chain.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_download_surface_pixels.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_fill_rect.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_flip_swap_chain.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_flush_context.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_get_max_contexts.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_get_pixel_data_pitch_in_bytes.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_get_pixel_data_pointer.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_get_render_target_from_surface.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_get_render_target_from_swap_chain.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_get_surface_info.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_internal.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_internal.h',
        '<(DEPTH)/starboard/shared/blittergles/blitter_is_blitter_supported.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_is_pixel_format_supported_by_download_surface_pixels.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_is_pixel_format_supported_by_pixel_data.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_is_surface_format_supported_by_render_target_surface.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_set_blending.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_set_color.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_set_modulate_blits_with_color.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_set_render_target.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_set_scissor.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_surface.cc',
        '<(DEPTH)/starboard/shared/blittergles/blitter_surface.h',
        '<(DEPTH)/starboard/shared/blittergles/color_shader_program.cc',
        '<(DEPTH)/starboard/shared/blittergles/color_shader_program.h',
        '<(DEPTH)/starboard/shared/blittergles/shader_program.cc',
        '<(DEPTH)/starboard/shared/blittergles/shader_program.h',
        '<(DEPTH)/starboard/shared/starboard/blitter_blit_rect_to_rect_tiled.cc',
        '<(DEPTH)/starboard/shared/starboard/blitter_blit_rects_to_rects.cc',
	      '<(DEPTH)/starboard/shared/stub/system_gles.cc',
      ],
      'sources!': [
	      '<(DEPTH)/starboard/shared/gles/system_gles2.cc',
      ],
      'defines': [
        # This must be defined when building Starboard, and must not when
        # building Starboard client code.
        'STARBOARD_IMPLEMENTATION',
      ],
      'dependencies': [
        '<@(blittergles_starboard_platform_dependencies)',
        '<(DEPTH)/starboard/egl_and_gles/egl_and_gles_angle.gyp:egl_and_gles_implementation',
      ],
    },
  ],
}
