# Copyright 2021 The Cobalt Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# The egl_and_gles GN target can be depended upon in order to
# depend on a platform-specific implementation of EGL/GLES, whether that
# ultimately ends up being Angle on Windows, system libraries on Linux, or a
# custom implementation of EGL/GLES on an exotic platform. Depending on this
# target will set dependent settings to have the EGL and GLES system headers in
# their include directories.
#
# This decision is predicated on the value of the |gl_type| GN variable defined
# in the configuration.gni for the current platform.

group("egl_and_gles") {
  assert(gl_type != "none", "gl_type must be set to a valid value")
  public_deps = [ ":egl_and_gles_$gl_type" ]
}

group("egl_and_gles_system_gles2") {
  # Use the system-provided implementation of GLES2.
}

config("egl_and_gles_glimp_public_config") {
  defines = [ "GL_GLEXT_PROTOTYPES" ]
}

if (gl_type == "glimp") {
  group("egl_and_gles_glimp") {
    public_configs = [ ":egl_and_gles_glimp_public_config" ]
    public_deps = [ "//glimp" ]
  }
}

declare_args() {
  enable_d3d11_feature_level_11 = false
}

config("egl_and_gles_angle_config") {
  include_dirs = [ "//third_party/angle/include" ]
  if (is_win && enable_d3d11_feature_level_11) {
    defines = [ "GL_GLEXT_PROTOTYPES" ]
  }
}

if (gl_type == "angle") {
  group("egl_and_gles_angle") {
    public_deps = [
      "//third_party/angle:libEGL",
      "//third_party/angle:libGLESv2",
    ]
    public_configs = [ ":egl_and_gles_angle_config" ]
  }
}
