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

import("//build/config/ui.gni")
if (is_android) {
  import("//build/config/android/config.gni")
  import("//build/config/android/rules.gni")
}

gl_binding_output_dir = target_gen_dir

config("gl_config") {
  if (use_x11) {
    defines = [ "GL_GLEXT_PROTOTYPES" ]
  }

  # TODO(brettw) this should be removed and the the files using the generated
  # GL bindings should use the path inside the gen directory.
  include_dirs = [ gl_binding_output_dir ]
}

component("gl") {
  output_name = "gl_wrapper"  # Avoid colliding with OS X"s libGL.dylib.

  sources = [
    "android/gl_jni_registrar.cc",
    "android/gl_jni_registrar.h",
    "android/scoped_java_surface.cc",
    "android/scoped_java_surface.h",
    "android/surface_texture.cc",
    "android/surface_texture.h",
    "android/surface_texture_listener.cc",
    "android/surface_texture_listener.h",
    "android/surface_texture_tracker.cc",
    "android/surface_texture_tracker.h",
    "gl_bindings.h",
    "gl_bindings_skia_in_process.cc",
    "gl_bindings_skia_in_process.h",
    "gl_context.cc",
    "gl_context.h",
    "gl_context_android.cc",
    "gl_context_mac.mm",
    "gl_context_osmesa.cc",
    "gl_context_osmesa.h",
    "gl_context_stub.cc",
    "gl_context_stub.h",
    "gl_context_stub_with_extensions.cc",
    "gl_context_stub_with_extensions.h",
    "gl_context_win.cc",
    "gl_export.h",
    "gl_fence.cc",
    "gl_fence.h",
    "gl_fence_arb.cc",
    "gl_fence_arb.h",
    "gl_fence_nv.cc",
    "gl_fence_nv.h",
    "gl_gl_api_implementation.cc",
    "gl_gl_api_implementation.h",
    "gl_image.h",
    "gl_image_memory.cc",
    "gl_image_memory.h",
    "gl_image_ref_counted_memory.cc",
    "gl_image_ref_counted_memory.h",
    "gl_image_shared_memory.cc",
    "gl_image_shared_memory.h",
    "gl_image_stub.cc",
    "gl_image_stub.h",
    "gl_implementation.cc",
    "gl_implementation.h",
    "gl_implementation_android.cc",
    "gl_implementation_mac.cc",
    "gl_implementation_win.cc",
    "gl_osmesa_api_implementation.cc",
    "gl_osmesa_api_implementation.h",
    "gl_share_group.cc",
    "gl_share_group.h",
    "gl_state_restorer.cc",
    "gl_state_restorer.h",
    "gl_surface.cc",
    "gl_surface.h",
    "gl_surface_android.cc",
    "gl_surface_mac.cc",
    "gl_surface_stub.cc",
    "gl_surface_stub.h",
    "gl_surface_win.cc",
    "gl_surface_osmesa.cc",
    "gl_surface_osmesa.h",
    "gl_switches.cc",
    "gl_switches.h",
    "gl_version_info.cc",
    "gl_version_info.h",
    "gpu_switching_manager.cc",
    "gpu_switching_manager.h",
    "scoped_binders.cc",
    "scoped_binders.h",
    "scoped_make_current.cc",
    "scoped_make_current.h",
    "sync_control_vsync_provider.cc",
    "sync_control_vsync_provider.h",
    "$gl_binding_output_dir/gl_bindings_autogen_gl.cc",
    "$gl_binding_output_dir/gl_bindings_autogen_gl.h",
    "$gl_binding_output_dir/gl_bindings_autogen_osmesa.cc",
    "$gl_binding_output_dir/gl_bindings_autogen_osmesa.h",
  ]

  defines = [ "GL_IMPLEMENTATION" ]

  include_dirs = [
    "//third_party/switfshader/include",
    "//third_party/khronos",
    "//third_party/mesa/src/include",
    gl_binding_output_dir,
  ]

  all_dependent_configs = [ ":gl_config" ]

  deps = [
    ":generate_gl_bindings",
    "//base/third_party/dynamic_annotations",
    "//gpu/command_buffer/common",
    "//skia",
  ]
  public_deps = [
    "//base",
    "//third_party/mesa:mesa_headers",
    "//ui/events/platform",
    "//ui/gfx",
    "//ui/gfx/geometry",
  ]

  if (is_win || is_android || is_linux) {
    sources += [
      "egl_util.cc",
      "egl_util.h",
      "gl_context_egl.cc",
      "gl_context_egl.h",
      "gl_fence_egl.cc",
      "gl_fence_egl.h",
      "gl_image_egl.cc",
      "gl_image_egl.h",
      "gl_surface_egl.cc",
      "gl_surface_egl.h",
      "$gl_binding_output_dir/gl_bindings_autogen_egl.cc",
      "$gl_binding_output_dir/gl_bindings_autogen_egl.h",
    ]
  }
  if (is_android || is_linux) {
    sources += [
      "gl_implementation_osmesa.cc",
      "gl_implementation_osmesa.h",
    ]
  }
  if (is_linux) {
    deps += [ "//third_party/libevent" ]
  }
  if (use_x11) {
    sources += [
      "gl_context_glx.cc",
      "gl_context_glx.h",
      "gl_context_x11.cc",
      "gl_glx_api_implementation.cc",
      "gl_glx_api_implementation.h",
      "gl_image_glx.cc",
      "gl_image_glx.h",
      "gl_implementation_x11.cc",
      "gl_surface_glx.cc",
      "gl_surface_glx.h",
      "gl_surface_x11.cc",
      "gl_egl_api_implementation.cc",
      "gl_egl_api_implementation.h",
      "$gl_binding_output_dir/gl_bindings_autogen_glx.cc",
      "$gl_binding_output_dir/gl_bindings_autogen_glx.h",
    ]

    configs += [
      "//build/config/linux:x11",
      "//build/config/linux:xcomposite",
      "//build/config/linux:xext",
    ]

    deps += [
      "//ui/gfx/x",
    ]
  }
  if (is_win) {
    sources += [
      "gl_context_wgl.cc",
      "gl_context_wgl.h",
      "gl_egl_api_implementation.cc",
      "gl_egl_api_implementation.h",
      "gl_surface_wgl.cc",
      "gl_surface_wgl.h",
      "gl_wgl_api_implementation.cc",
      "gl_wgl_api_implementation.h",
      "$gl_binding_output_dir/gl_bindings_autogen_wgl.cc",
      "$gl_binding_output_dir/gl_bindings_autogen_wgl.h",
    ]

    libs = [ "dwmapi.lib" ]
    ldflags = [ "/DELAYLOAD:dwmapi.dll" ]
  }
  if (is_mac) {
    sources += [
      "gl_context_cgl.cc",
      "gl_context_cgl.h",
      "gl_image_io_surface.cc",
      "gl_image_io_surface.h",
      "scoped_cgl.cc",
      "scoped_cgl.h",
    ]

    libs = [
      "IOSurface.framework",
      "OpenGL.framework",
    ]
  }
  if (is_android) {
    sources += [
      "gl_egl_api_implementation.cc",
      "gl_egl_api_implementation.h",
      "gl_image_surface_texture.cc",
      "gl_image_surface_texture.h",
    ]

    defines += [
      "GL_GLEXT_PROTOTYPES",
      "EGL_EGLEXT_PROTOTYPES",
    ]

    libs = [ "android" ]

    deps += [
      ":gl_jni_headers",
    ]
  }
  if (use_ozone) {
    sources += [
      "gl_context_ozone.cc",
      "gl_egl_api_implementation.cc",
      "gl_egl_api_implementation.h",
      "gl_implementation_ozone.cc",
      "gl_surface_ozone.cc",
    ]
    deps += [
      "//ui/ozone",
      "//ui/ozone:ozone_base",
    ]
  }

  if (is_android && !is_android_webview_build) {
    deps += [ "//ui/android:ui_java" ]
  }
}

action("generate_gl_bindings") {
  visibility = [ ":*" ]  # Only targets in this file can see this.

  script = "generate_bindings.py"

  # TODO(brettw) make this dynamic. The GYP version calls "generate_bindings.py
  # --inputs" to get the list here. What should happen is that the script
  # should generate a .d file, which we should declare here. That will
  # eliminate the need bot both hardcoding the list here or calling the script
  # during GN-time.
  inputs = [
    "EGL/eglextchromium.h",
    "GL/glextchromium.h",
    "//third_party/mesa/src/include/GL/glext.h",
    "//third_party/khronos/GLES2/gl2ext.h",
    "//gpu/GLES2/gl2chromium.h",
    "//gpu/GLES2/gl2extchromium.h",
    "//third_party/khronos/EGL/eglext.h",
    "//third_party/mesa/src/include/GL/wglext.h",
    "//third_party/mesa/src/include/GL/glx.h",
    "//third_party/mesa/src/include/GL/glxext.h",
  ]

  outputs = [
    "$gl_binding_output_dir/gl_bindings_autogen_egl.cc",
    "$gl_binding_output_dir/gl_bindings_autogen_egl.h",
    "$gl_binding_output_dir/gl_bindings_api_autogen_egl.h",
    "$gl_binding_output_dir/gl_bindings_autogen_gl.cc",
    "$gl_binding_output_dir/gl_bindings_autogen_gl.h",
    "$gl_binding_output_dir/gl_bindings_api_autogen_gl.h",
    "$gl_binding_output_dir/gl_bindings_autogen_glx.cc",
    "$gl_binding_output_dir/gl_bindings_autogen_glx.h",
    "$gl_binding_output_dir/gl_bindings_api_autogen_glx.h",
    "$gl_binding_output_dir/gl_bindings_autogen_mock.cc",
    "$gl_binding_output_dir/gl_bindings_autogen_mock.h",
    "$gl_binding_output_dir/gl_bindings_autogen_osmesa.cc",
    "$gl_binding_output_dir/gl_bindings_autogen_osmesa.h",
    "$gl_binding_output_dir/gl_bindings_api_autogen_osmesa.h",
    "$gl_binding_output_dir/gl_bindings_autogen_wgl.cc",
    "$gl_binding_output_dir/gl_bindings_autogen_wgl.h",
    "$gl_binding_output_dir/gl_bindings_api_autogen_wgl.h",
    "$gl_binding_output_dir/gl_mock_autogen_gl.h",
  ]

  args = [
    "--header-paths=" +
        rebase_path("//third_party/khronos", root_build_dir) + ":" +
        rebase_path("//third_party/mesa/src/include", root_build_dir) + ":" +
        rebase_path("//ui/gl", root_build_dir) + ":" +
        rebase_path("//gpu", root_build_dir),
    rebase_path(gl_binding_output_dir, root_build_dir),
  ]
}

config("gl_unittest_utils_config") {
  include_dirs = [ gl_binding_output_dir ]
}

source_set("gl_unittest_utils") {
  testonly = true
  sources = [
    "gl_mock.h",
    "gl_mock.cc",
    "$gl_binding_output_dir/gl_bindings_autogen_mock.cc",
    "$gl_binding_output_dir/gl_bindings_autogen_mock.h",
    "$gl_binding_output_dir/gl_mock_autogen_gl.h",
  ]

  configs += [ "//third_party/khronos:khronos_headers" ]
  public_configs = [ ":gl_unittest_utils_config" ]

  deps = [
    ":gl",
    "//testing/gmock",
  ]
}

if (is_android) {
  generate_jar_jni("surface_jni_headers") {
    jni_package = "ui/gl"
    classes = [ "android/view/Surface.class" ]
  }

  generate_jni("gl_jni_headers") {
    deps = [ ":surface_jni_headers" ]
    sources = [
      "../android/java/src/org/chromium/ui/gl/SurfaceTextureListener.java",
      "../android/java/src/org/chromium/ui/gl/SurfaceTexturePlatformWrapper.java",
    ]
    jni_package = "ui/gl"
  }
}
