# 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_root/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.")

  group(target_name) {
    public_deps = []

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

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

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