# Copyright 2014 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': {
    'internal_ozone_platform_deps': [
      'ozone_platform_egltest',
    ],
    'internal_ozone_platforms': [
      'egltest'
    ],
  },
  'targets': [
    {
      'target_name': 'ozone_platform_egltest',
      'type': 'static_library',
      'defines': [
        'OZONE_IMPLEMENTATION',
      ],
      'dependencies': [
        '../../base/base.gyp:base',
        '../../third_party/khronos/khronos.gyp:khronos_headers',
        '../events/events.gyp:events',
        '../events/ozone/events_ozone.gyp:events_ozone_evdev',
        '../gfx/gfx.gyp:gfx',
        'eglplatform_shim',
      ],
      'sources': [
        'ozone_platform_egltest.cc',
        'ozone_platform_egltest.h',
      ],
    },
    {
      'target_name': 'eglplatform_shim',
      'type': 'static_library',
      'dependencies': [
        '../../third_party/khronos/khronos.gyp:khronos_headers',
      ],
      'direct_dependent_settings': {
        'include_dirs': [
          '<(SHARED_INTERMEDIATE_DIR)',
        ],
      },
      'include_dirs': [
        '../../../..',
      ],
      'hard_dependency': 1,
      'actions': [
        {
          'variables': {
            'output_h': '<(SHARED_INTERMEDIATE_DIR)/library_loaders/libeglplatform_shim.h',
            'output_cc': '<(INTERMEDIATE_DIR)/libeglplatform_shim_loader.cc',
            'generator': '../../tools/generate_library_loader/generate_library_loader.py',
          },
          'action_name': 'generate_libeglplatform_shim_loader',
          'inputs': [
            '<(generator)',
          ],
          'outputs': [
            '<(output_h)',
            '<(output_cc)',
          ],
          'action': ['python',
                     '<(generator)',
                     '--name', 'LibeglplatformShimLoader',
                     '--output-h', '<(output_h)',
                     '--output-cc', '<(output_cc)',
                     '--header', '"ui/ozone/platform/egltest/eglplatform_shim.h"',
                     'ShimQueryString',
                     'ShimInitialize',
                     'ShimTerminate',
                     'ShimCreateWindow',
                     'ShimQueryWindow',
                     'ShimDestroyWindow',
                     'ShimGetNativeDisplay',
                     'ShimGetNativeWindow',
                     'ShimReleaseNativeWindow',
          ],
          'message': 'Generating libeglplatform_shim library loader',
          'process_outputs_as_sources': 1,
        },
      ],
    },
  ],
  'conditions': [
    ['ozone_platform_ozonex == 1', {
      'targets': [
        {
          'target_name': 'eglplatform_shim_x11',
          'type': 'loadable_module',
          'product_name': 'eglplatform_shim',
          'product_extension': 'so.1',
          'include_dirs': [
            '../../../..',
          ],
          'dependencies': [
            '../../build/linux/system.gyp:x11',
          ],
          'sources': [
            'eglplatform_shim.h',
            'eglplatform_shim_xeleven.cc',
          ],
        },
      ],
    }],
  ],
}
