# Copyright 2015 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.

# GYP version: gpu/gles2_conform_support/gles2_conform_support.gyp:egl_main_native
source_set("native") {
  output_name = "egl_main_native"
  sources = [
    "egl_native.cc",
    "main.cc",
  ]
  defines = [
    "GLES2_CONFORM_SUPPORT_ONLY",
    "GTF_GLES20",
    "EGLAPI=",
    "EGLAPIENTRY=",
  ]
  deps = [
    "//base",
    "//gpu/gles2_conform_support/egl",
    "//ui/gl",
  ]
  if (is_linux) {
    sources += [
      "egl_native_aura.cc",
      "egl_native_x11.cc",
    ]
  }
  if (is_win) {
    sources += [ "egl_native_win.cc" ]
  }
}

# GYP version: gpu/gles2_conform_support/gles2_conform_support.gyp:egl_main_windowless
source_set("windowless") {
  output_name = "egl_main_windowless"
  sources = [
    "egl_native.cc",
    "egl_native_windowless.cc",
    "main.cc",
  ]
  defines = [
    "GLES2_CONFORM_SUPPORT_ONLY",
    "GTF_GLES20",
    "EGLAPI=",
    "EGLAPIENTRY=",
  ]
  deps = [
    "//base",
    "//gpu/gles2_conform_support/egl",
    "//ui/gl",
  ]
  if (is_linux) {
    sources += [
      "egl_native_aura.cc",
      "egl_native_x11.cc",
    ]
  }
  if (is_win) {
    sources += [ "egl_native_win.cc" ]
  }
}
