text: # Copyright (c) 2012 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.
  
  {
    'variables': {
      'nacl_win64_target': 0,
    },
    'includes': [
      'gpu_common.gypi',
    ],
    'targets': [
      {
        # Library emulates GLES2 using command_buffers.
        'target_name': 'gles2_implementation',
        'type': '<(component)',
        'dependencies': [
          '../base/base.gyp:base',
          '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
          '../third_party/khronos/khronos.gyp:khronos_headers',
          '../ui/gl/gl.gyp:gl',
          '../ui/gfx/gfx.gyp:gfx',
          '../ui/gfx/gfx.gyp:gfx_geometry',
          'command_buffer/command_buffer.gyp:gles2_utils',
          'gles2_cmd_helper',
        ],
        'defines': [
          'GLES2_IMPL_IMPLEMENTATION',
        ],
        'sources': [
          '<@(gles2_implementation_source_files)',
          'command_buffer/client/gl_in_process_context.h',
          'command_buffer/client/gl_in_process_context.cc',
        ],
        # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
        'msvs_disabled_warnings': [4267, ],
      },
      {
        # Library emulates GLES2 using command_buffers.
        'target_name': 'gles2_implementation_client_side_arrays',
        'type': '<(component)',
        'defines': [
          'GLES2_IMPL_IMPLEMENTATION',
          'GLES2_SUPPORT_CLIENT_SIDE_ARRAYS=1',
        ],
        'dependencies': [
          '../base/base.gyp:base',
          '../third_party/khronos/khronos.gyp:khronos_headers',
          '../ui/gl/gl.gyp:gl',
          '../ui/gfx/gfx.gyp:gfx_geometry',
          '../ui/gfx/gfx.gyp:gfx',
          'command_buffer/command_buffer.gyp:gles2_utils',
          'gles2_cmd_helper',
        ],
        'sources': [
          '<@(gles2_implementation_source_files)',
        ],
        # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
        'msvs_disabled_warnings': [ 4267, ],
      },
      {
        # Library emulates GLES2 using command_buffers.
        'target_name': 'gles2_implementation_client_side_arrays_no_check',
        'type': '<(component)',
        'defines': [
          'GLES2_IMPL_IMPLEMENTATION',
          'GLES2_SUPPORT_CLIENT_SIDE_ARRAYS=1',
          'GLES2_CONFORMANCE_TESTS=1',
        ],
        'dependencies': [
          '../base/base.gyp:base',
          '../third_party/khronos/khronos.gyp:khronos_headers',
          '../ui/gfx/gfx.gyp:gfx',
          '../ui/gfx/gfx.gyp:gfx_geometry',
          'command_buffer/command_buffer.gyp:gles2_utils',
          'gles2_cmd_helper',
        ],
        'sources': [
          '<@(gles2_implementation_source_files)',
        ],
        # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
        'msvs_disabled_warnings': [ 4267, ],
      },
      {
        # Stub to expose gles2_implemenation in C instead of C++.
        # so GLES2 C programs can work with no changes.
        'target_name': 'gles2_c_lib',
        'type': '<(component)',
        'dependencies': [
          '../base/base.gyp:base',
          '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
          'command_buffer/command_buffer.gyp:gles2_utils',
          'command_buffer_client',
          'gles2_implementation',
        ],
        'defines': [
          'GLES2_C_LIB_IMPLEMENTATION',
        ],
        'sources': [
          '<@(gles2_c_lib_source_files)',
        ],
        # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
        'msvs_disabled_warnings': [4267, ],
      },
      {
        # Same as gles2_c_lib except with no parameter checking. Required for
        # OpenGL ES 2.0 conformance tests.
        'target_name': 'gles2_c_lib_nocheck',
        'type': '<(component)',
        'defines': [
          'GLES2_C_LIB_IMPLEMENTATION',
          'GLES2_CONFORMANCE_TESTS=1',
        ],
        'dependencies': [
          '../base/base.gyp:base',
          '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
          'command_buffer/command_buffer.gyp:gles2_utils',
          'command_buffer_client',
          'gles2_implementation_client_side_arrays_no_check',
        ],
        'sources': [
          '<@(gles2_c_lib_source_files)',
        ],
      },
      {
        'target_name': 'angle_unittests',
        'type': '<(gtest_target_type)',
        'dependencies': [
          '../base/base.gyp:base',
          '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
          '../testing/gmock.gyp:gmock',
          '../testing/gtest.gyp:gtest',
          '<(angle_path)/src/build_angle.gyp:translator_static',
        ],
        'variables': {
          'ANGLE_DIR': '<(angle_path)',
        },
        'includes': [
          '../third_party/angle/tests/preprocessor_tests/preprocessor_tests.gypi',
          '../third_party/angle/tests/compiler_tests/compiler_tests.gypi',
        ],
        'include_dirs': [
          '..',
          '<(angle_path)/include',
          '<(angle_path)/src',
          '<(angle_path)/src/compiler/preprocessor',
          '<(angle_path)/tests',
        ],
        'sources': [
          'angle_unittest_main.cc',
        ],
      },
      {
        'target_name': 'gpu_unittests',
        'type': '<(gtest_target_type)',
        'dependencies': [
          '../base/base.gyp:base',
          '../base/base.gyp:test_support_base',
          '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
          '../testing/gmock.gyp:gmock',
          '../testing/gtest.gyp:gtest',
          '<(angle_path)/src/build_angle.gyp:translator',
          '../ui/gl/gl.gyp:gl',
          '../ui/gfx/gfx.gyp:gfx',
          '../ui/gfx/gfx.gyp:gfx_geometry',
          'command_buffer/command_buffer.gyp:gles2_utils',
          'command_buffer_client',
          'command_buffer_common',
          'command_buffer_service',
          'gpu',
          'gpu_unittest_utils',
          'gles2_implementation_client_side_arrays',
          'gles2_cmd_helper',
        ],
        'defines': [
          'GLES2_C_LIB_IMPLEMENTATION',
        ],
        'sources': [
          '<@(gles2_c_lib_source_files)',
          'command_buffer/client/buffer_tracker_unittest.cc',
          'command_buffer/client/client_test_helper.cc',
          'command_buffer/client/client_test_helper.h',
          'command_buffer/client/cmd_buffer_helper_test.cc',
          'command_buffer/client/fenced_allocator_test.cc',
          'command_buffer/client/gles2_implementation_unittest.cc',
          'command_buffer/client/mapped_memory_unittest.cc',
          'command_buffer/client/query_tracker_unittest.cc',
          'command_buffer/client/program_info_manager_unittest.cc',
          'command_buffer/client/ring_buffer_test.cc',
          'command_buffer/client/transfer_buffer_unittest.cc',
          'command_buffer/client/vertex_array_object_manager_unittest.cc',
          'command_buffer/common/bitfield_helpers_test.cc',
          'command_buffer/common/command_buffer_mock.cc',
          'command_buffer/common/command_buffer_mock.h',
          'command_buffer/common/command_buffer_shared_test.cc',
          'command_buffer/common/debug_marker_manager_unittest.cc',
          'command_buffer/common/gles2_cmd_format_test.cc',
          'command_buffer/common/gles2_cmd_format_test_autogen.h',
          'command_buffer/common/gles2_cmd_utils_unittest.cc',
          'command_buffer/common/id_allocator_test.cc',
          'command_buffer/common/trace_event.h',
          'command_buffer/common/unittest_main.cc',
          'command_buffer/service/async_pixel_transfer_delegate_mock.h',
          'command_buffer/service/async_pixel_transfer_delegate_mock.cc',
          'command_buffer/service/async_pixel_transfer_manager_mock.h',
          'command_buffer/service/async_pixel_transfer_manager_mock.cc',
          'command_buffer/service/buffer_manager_unittest.cc',
          'command_buffer/service/cmd_parser_test.cc',
          'command_buffer/service/command_buffer_service_unittest.cc',
          'command_buffer/service/common_decoder_unittest.cc',
          'command_buffer/service/context_group_unittest.cc',
          'command_buffer/service/feature_info_unittest.cc',
          'command_buffer/service/framebuffer_manager_unittest.cc',
          'command_buffer/service/gles2_cmd_decoder_unittest.cc',
          'command_buffer/service/gles2_cmd_decoder_unittest_0_autogen.h',
          'command_buffer/service/gles2_cmd_decoder_unittest_1.cc',
          'command_buffer/service/gles2_cmd_decoder_unittest_1_autogen.h',
          'command_buffer/service/gles2_cmd_decoder_unittest_2.cc',
          'command_buffer/service/gles2_cmd_decoder_unittest_2_autogen.h',
          'command_buffer/service/gles2_cmd_decoder_unittest_3.cc',
          'command_buffer/service/gles2_cmd_decoder_unittest_3_autogen.h',
          'command_buffer/service/gles2_cmd_decoder_unittest_base.cc',
          'command_buffer/service/gles2_cmd_decoder_unittest_base.h',
          'command_buffer/service/gl_surface_mock.cc',
          'command_buffer/service/gl_surface_mock.h',
          'command_buffer/service/gpu_scheduler_unittest.cc',
          'command_buffer/service/id_manager_unittest.cc',
          'command_buffer/service/mailbox_manager_unittest.cc',
          'command_buffer/service/memory_program_cache_unittest.cc',
          'command_buffer/service/mocks.cc',
          'command_buffer/service/mocks.h',
          'command_buffer/service/program_manager_unittest.cc',
          'command_buffer/service/query_manager_unittest.cc',
          'command_buffer/service/renderbuffer_manager_unittest.cc',
          'command_buffer/service/program_cache_unittest.cc',
          'command_buffer/service/shader_manager_unittest.cc',
          'command_buffer/service/shader_translator_unittest.cc',
          'command_buffer/service/test_helper.cc',
          'command_buffer/service/test_helper.h',
          'command_buffer/service/texture_manager_unittest.cc',
          'command_buffer/service/transfer_buffer_manager_unittest.cc',
          'command_buffer/service/vertex_attrib_manager_unittest.cc',
          'command_buffer/service/vertex_array_manager_unittest.cc',
          'command_buffer/service/gpu_tracer_unittest.cc',
          'config/gpu_blacklist_unittest.cc',
          'config/gpu_control_list_entry_unittest.cc',
          'config/gpu_control_list_machine_model_info_unittest.cc',
          'config/gpu_control_list_number_info_unittest.cc',
          'config/gpu_control_list_os_info_unittest.cc',
          'config/gpu_control_list_string_info_unittest.cc',
          'config/gpu_control_list_unittest.cc',
          'config/gpu_control_list_version_info_unittest.cc',
          'config/gpu_driver_bug_list_unittest.cc',
          'config/gpu_info_collector_unittest.cc',
          'config/gpu_info_unittest.cc',
          'config/gpu_test_config_unittest.cc',
          'config/gpu_test_expectations_parser_unittest.cc',
          'config/gpu_util_unittest.cc',
        ],
        'conditions': [
          ['OS == "android" and gtest_target_type == "shared_library"', {
            'dependencies': [
              '../testing/android/native_test.gyp:native_test_native_code',
            ],
          }],
          # See http://crbug.com/162998#c4 for why this is needed.
          # TODO(dmikurube): Kill linux_use_tcmalloc. http://crbug.com/345554
          ['OS=="linux" and ((use_allocator!="none" and use_allocator!="see_use_tcmalloc") or (use_allocator=="see_use_tcmalloc" and linux_use_tcmalloc==1))', {
            'dependencies': [
              '../base/allocator/allocator.gyp:allocator',
            ],
          }],
        ],
        # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
        'msvs_disabled_warnings': [ 4267, ],
      },
      {
        'target_name': 'gl_tests',
        'type': '<(gtest_target_type)',
        'dependencies': [
          '../base/base.gyp:base',
          '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
          '../testing/gmock.gyp:gmock',
          '../testing/gtest.gyp:gtest',
          '<(angle_path)/src/build_angle.gyp:translator',
          '../ui/gfx/gfx.gyp:gfx',
          '../ui/gfx/gfx.gyp:gfx_geometry',
          '../ui/gl/gl.gyp:gl',
          'command_buffer/command_buffer.gyp:gles2_utils',
          'command_buffer_client',
          'command_buffer_common',
          'command_buffer_service',
          'gpu',
          'gpu_unittest_utils',
          'gles2_implementation_client_side_arrays',
          'gles2_cmd_helper',
          #'gl_unittests',
        ],
        'defines': [
          'GLES2_C_LIB_IMPLEMENTATION',
          'GL_GLEXT_PROTOTYPES',
        ],
        'sources': [
          '<@(gles2_c_lib_source_files)',
          'command_buffer/tests/compressed_texture_test.cc',
          'command_buffer/tests/gl_bind_uniform_location_unittest.cc',
          'command_buffer/tests/gl_chromium_framebuffer_multisample_unittest.cc',
          'command_buffer/tests/gl_copy_texture_CHROMIUM_unittest.cc',
          'command_buffer/tests/gl_depth_texture_unittest.cc',
          'command_buffer/tests/gl_gpu_memory_buffer_unittest.cc',
          'command_buffer/tests/gl_lose_context_chromium_unittest.cc',
          'command_buffer/tests/gl_manager.cc',
          'command_buffer/tests/gl_manager.h',
          'command_buffer/tests/gl_pointcoord_unittest.cc',
          'command_buffer/tests/gl_program_unittest.cc',
          'command_buffer/tests/gl_query_unittest.cc',
          'command_buffer/tests/gl_readback_unittest.cc',
          'command_buffer/tests/gl_shared_resources_unittest.cc',
          'command_buffer/tests/gl_stream_draw_unittest.cc',
          'command_buffer/tests/gl_test_utils.cc',
          'command_buffer/tests/gl_test_utils.h',
          'command_buffer/tests/gl_tests_main.cc',
          'command_buffer/tests/gl_texture_mailbox_unittest.cc',
          'command_buffer/tests/gl_texture_storage_unittest.cc',
          'command_buffer/tests/gl_unittest.cc',
          'command_buffer/tests/gl_unittests_android.cc',
          'command_buffer/tests/gl_virtual_contexts_unittest.cc',
          'command_buffer/tests/occlusion_query_unittest.cc',
        ],
        'conditions': [
          ['OS == "android" and gtest_target_type == "shared_library"', {
            'dependencies': [
              '../testing/android/native_test.gyp:native_test_native_code',
            ],
          }],
          ['OS == "win"', {
            'dependencies': [
              '../third_party/angle/src/build_angle.gyp:libEGL',
              '../third_party/angle/src/build_angle.gyp:libGLESv2',
            ],
          }],
        ],
        # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
        'msvs_disabled_warnings': [ 4267, ],
      },
      {
        'target_name': 'gpu_unittest_utils',
        'type': 'static_library',
        'dependencies': [
          '../testing/gmock.gyp:gmock',
          '../testing/gtest.gyp:gtest',
          '../third_party/khronos/khronos.gyp:khronos_headers',
          '../ui/gl/gl.gyp:gl_unittest_utils',
          'gpu',
        ],
        'include_dirs': [
          '..',
        ],
        'sources': [
          'command_buffer/service/gles2_cmd_decoder_mock.cc',
          'command_buffer/service/error_state_mock.cc',
          'command_buffer/client/gles2_interface_stub.cc',
          'command_buffer/client/gles2_interface_stub.h',
        ],
      },
    ],
    'conditions': [
      ['component=="static_library"', {
        'targets': [
           {
            'target_name': 'disk_cache_proto',
            'type': 'static_library',
            'sources': [ 'command_buffer/service/disk_cache_proto.proto' ],
            'variables': {
              'proto_in_dir': 'command_buffer/service',
              'proto_out_dir': 'gpu/command_buffer/service',
            },
            'includes': [ '../build/protoc.gypi' ],
          },
          {
            'target_name': 'gpu',
            'type': 'none',
            'dependencies': [
              'command_buffer_client',
              'command_buffer_common',
              'command_buffer_service',
              'gles2_cmd_helper',
              'gpu_config',
              'gpu_ipc',
            ],
            'sources': [
              'gpu_export.h',
            ],
            # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
            'msvs_disabled_warnings': [4267, ],
          },
          {
            'target_name': 'command_buffer_common',
            'type': 'static_library',
            'includes': [
              'command_buffer_common.gypi',
            ],
            'dependencies': [
              '../base/base.gyp:base',
              'command_buffer/command_buffer.gyp:gles2_utils',
            ],
            'export_dependent_settings': [
              '../base/base.gyp:base',
            ],
          },
          {
            # Library helps make GLES2 command buffers.
            'target_name': 'gles2_cmd_helper',
            'type': 'static_library',
            'includes': [
              'gles2_cmd_helper.gypi',
            ],
            'dependencies': [
              'command_buffer_client',
            ],
            # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
            'msvs_disabled_warnings': [4267, ],
          },
          {
            'target_name': 'command_buffer_client',
            'type': 'static_library',
            'includes': [
              'command_buffer_client.gypi',
            ],
            'dependencies': [
              'command_buffer_common',
            ],
            # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
            'msvs_disabled_warnings': [4267, ],
          },
          {
            'target_name': 'command_buffer_service',
            'type': 'static_library',
            'includes': [
              'command_buffer_service.gypi',
            ],
            'dependencies': [
              'command_buffer_common',
              'disk_cache_proto',
            ],
            # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
            'msvs_disabled_warnings': [4267, ],
          },
          {
            'target_name': 'gpu_ipc',
            'type': 'static_library',
            'includes': [
              'gpu_ipc.gypi',
            ],
            'dependencies': [
              'command_buffer_common',
            ],
          },
          {
            'target_name': 'gpu_config',
            'type': 'static_library',
            'includes': [
              'gpu_config.gypi',
            ],
          },
        ],
      },
      { # component != static_library
        'targets': [
           {
            'target_name': 'disk_cache_proto',
            'type': 'static_library',
            'sources': [ 'command_buffer/service/disk_cache_proto.proto' ],
            'variables': {
              'proto_in_dir': 'command_buffer/service',
              'proto_out_dir': 'gpu/command_buffer/service',
            },
            'includes': [ '../build/protoc.gypi' ],
          },
          {
            'target_name': 'gpu',
            'type': 'shared_library',
            'includes': [
              'command_buffer_client.gypi',
              'command_buffer_common.gypi',
              'command_buffer_service.gypi',
              'gles2_cmd_helper.gypi',
              'gpu_config.gypi',
              'gpu_ipc.gypi',
            ],
            'defines': [
              'GPU_IMPLEMENTATION',
            ],
            'sources': [
              'gpu_export.h',
            ],
            'dependencies': [
              '../base/base.gyp:base',
              'command_buffer/command_buffer.gyp:gles2_utils',
              'disk_cache_proto',
            ],
            # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
            'msvs_disabled_warnings': [4267, ],
          },
          {
            'target_name': 'command_buffer_common',
            'type': 'none',
            'dependencies': [
              'gpu',
            ],
          },
          {
            # Library helps make GLES2 command buffers.
            'target_name': 'gles2_cmd_helper',
            'type': 'none',
            'dependencies': [
              'gpu',
            ],
            # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
            'msvs_disabled_warnings': [4267, ],
          },
          {
            'target_name': 'command_buffer_client',
            'type': 'none',
            'dependencies': [
              'gpu',
            ],
          },
          {
            'target_name': 'command_buffer_service',
            'type': 'none',
            'dependencies': [
              'gpu',
            ],
          },
          {
            'target_name': 'gpu_ipc',
            'type': 'none',
            'dependencies': [
              'gpu',
            ],
          },
        ],
      }],
      ['disable_nacl!=1 and OS=="win" and target_arch=="ia32"', {
        'targets': [
          {
            'target_name': 'gpu_ipc_win64',
            'type': 'static_library',
            'variables': {
              'nacl_win64_target': 1,
            },
            'includes': [
              'gpu_ipc.gypi',
            ],
            'dependencies': [
              '../base/base.gyp:base_win64',
              '../ipc/ipc.gyp:ipc_win64',
            ],
            'defines': [
              '<@(nacl_win64_defines)',
              'GPU_IMPLEMENTATION',
            ],
            'configurations': {
              'Common_Base': {
                'msvs_target_platform': 'x64',
              },
            },
          },
        ],
      }],
      ['OS == "android" and gtest_target_type == "shared_library"', {
        'targets': [
          {
            'target_name': 'gl_tests_apk',
            'type': 'none',
            'dependencies': [
              'gl_tests',
            ],
            'variables': {
              'test_suite_name': 'gl_tests',
              'input_shlib_path': '<(SHARED_LIB_DIR)/<(SHARED_LIB_PREFIX)gl_tests<(SHARED_LIB_SUFFIX)',
            },
            'includes': [
              '../build/apk_test.gypi',
            ],
          },
        ],
      }],
    ],
  }
  