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

import("../../mojo_sdk.gni")

config("gpu_configs") {
  include_dirs = [ "." ]
  defines = [ "GLES2_USE_MOJO" ]
}

group("gpu") {
  public_configs = [ ":gpu_configs" ]

  deps = [
    ":GLES2",
    ":MGL",
    ":MGL_signal_sync_point",
    "../../platform/native:gles2",
  ]
  if (!is_nacl) {
    deps += [ "../../platform/native:mgl_thunks" ]
  }
}

group("gpu_onscreen") {
  public_deps = [
    ":MGL_onscreen",
  ]

  deps = [
    ":gpu",
  ]
  if (!is_nacl) {
    deps += [ "../../platform/native:mgl_onscreen_thunks" ]
  }
}

mojo_sdk_source_set("MGL") {
  sources = [
    "MGL/mgl.h",
    "MGL/mgl_types.h",
  ]

  mojo_sdk_public_deps = [ "mojo/public/c/system" ]
}

mojo_sdk_source_set("MGL_onscreen") {
  sources = [
    "MGL/mgl_onscreen.h",
  ]

  public_deps = [
    ":MGL",
  ]
}

mojo_sdk_source_set("MGL_echo") {
  sources = [
    "MGL/mgl_echo.h",
  ]

  public_deps = [
    ":MGL",
  ]
}

mojo_sdk_source_set("MGL_signal_sync_point") {
  sources = [
    "MGL/mgl_signal_sync_point.h",
  ]

  public_deps = [
    ":MGL",
  ]
}

mojo_sdk_source_set("GLES2") {
  sources = [
    "GLES2/gl2.h",
    "GLES2/gl2ext.h",
    "GLES2/gl2extmojo.h",
    "GLES2/gl2mojo_autogen.h",
    "GLES2/gl2mojo_internal.h",
    "GLES2/gl2platform.h",
  ]

  public_deps = [
    ":KHR",
  ]
}

mojo_sdk_source_set("KHR") {
  sources = [
    "KHR/khrplatform.h",
  ]
}
