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

if (enable_unittests) {
  compiled_action_foreach("spirv_compile_supported_glsl_shaders") {
    tool = "//flutter/lib/spirv/test:glsl_to_spirv"

    sources = [
      "10_fract.glsl",
      "11_radians.glsl",
      "12_degrees.glsl",
      "13_sin.glsl",
      "14_cos.glsl",
      "15_tan.glsl",
      "16_asin.glsl",
      "17_acos.glsl",
      "18_atan.glsl",
      "25_atan2.glsl",
      "26_pow.glsl",
      "27_exp.glsl",
      "28_log.glsl",
      "29_exp2.glsl",
      "30_log2.glsl",
      "31_sqrt.glsl",
      "32_inversesqrt.glsl",
      "37_fmin.glsl",
      "40_fmax.glsl",
      "43_fclamp.glsl",
      "46_fmix.glsl",
      "48_step.glsl",
      "49_smoothstep.glsl",
      "4_abs.glsl",
      "66_length.glsl",
      "67_distance.glsl",
      "68_cross.glsl",
      "69_normalize.glsl",
      "6_sign.glsl",
      "70_faceforward.glsl",
      "71_reflect.glsl",
      "8_floor.glsl",
      "9_ceil.glsl",
    ]

    outputs = [ "$target_gen_dir/{{source_name_part}}.spv" ]

    args = [
      "{{source}}",
      rebase_path(target_gen_dir, root_build_dir) + "/{{source_name_part}}.spv",
    ]
  }
}
