# Copyright 2013 The Flutter 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("//flutter/shell/config.gni")

template("shell_gpu_configuration") {
  assert(defined(invoker.enable_software),
         "Caller must declare if the Software backend must be enabled.")
  assert(defined(invoker.enable_vulkan),
         "Caller must declare if the Vulkan backend must be enabled.")
  assert(defined(invoker.enable_gl),
         "Caller must declare if the Open GL backend must be enabled.")
  assert(defined(invoker.enable_metal),
         "Caller must declare if the Metal backend must be enabled.")

  group(target_name) {
    public_deps = []

    if (invoker.enable_software) {
      public_deps += [ "//flutter/shell/gpu:gpu_surface_software" ]
    }

    if (invoker.enable_gl) {
      public_deps += [ "//flutter/shell/gpu:gpu_surface_gl" ]
    }

    if (invoker.enable_vulkan) {
      public_deps += [ "//flutter/shell/gpu:gpu_surface_vulkan" ]
    }

    if (invoker.enable_metal) {
      public_deps += [ "//flutter/shell/gpu:gpu_surface_metal" ]
    }
  }
}
