# 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("//build/compiled_action.gni")
import("//flutter/impeller/tools/impeller.gni")
import("//flutter/testing/testing.gni")

if (enable_unittests) {
  test_shaders = [
    "blue_green_sampler.frag",
    "children_and_uniforms.frag",
    "functions.frag",
    "simple.frag",
    "uniforms.frag",
    "uniforms_sorted.frag",
  ]

  group("general_shaders") {
    deps = [
      ":sksl_compile_general_shaders",
      ":spirv_compile_general_shaders",
    ]
  }

  impellerc("spirv_compile_general_shaders") {
    shaders = test_shaders
    shader_target_flag = "--flutter-spirv"
    intermediates_subdir = "spirv"
  }

  impellerc("sksl_compile_general_shaders") {
    shaders = test_shaders
    shader_target_flag = "--sksl"
    intermediates_subdir = "sksl"
    sl_file_extension = "sksl"
  }
}
