# 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_op_shaders") {
    tool = "//flutter/lib/spirv/test:glsl_to_spirv"

    sources = [
      "127_OpFNegate.glsl",
      "129_OpFAdd.glsl",
      "131_OpFSub.glsl",
      "142_OpVectorTimesScalar.glsl",
      "143_OpMatrixTimesScalar.glsl",
      "144_OpVectorTimesMatrix.glsl",
      "145_OpMatrixTimesVector.glsl",
      "146_OpMatrixTimesMatrix.glsl",
      "148_OpDot.glsl",
      "164_OpLogicalEqual.glsl",
      "165_OpLogicalNotEqual.glsl",
      "166_OpLogicalOr.glsl",
      "167_OpLogicalAnd.glsl",
      "168_OpLogicalNot.glsl",
      "180_OpFOrdEqual.glsl",
      "183_OpFUnordNotEqual.glsl",
      "184_OpFOrdLessThan.glsl",
      "186_OpFOrdGreaterThan.glsl",
      "188_OpFOrdLessThanEqual.glsl",
      "190_OpFOrdGreaterThanEqual.glsl",
      "19_OpTypeVoid.glsl",
      "20_OpTypeBool.glsl",
      "21_OpTypeInt.glsl",
      "22_OpTypeFloat.glsl",
      "23_OpTypeVector.glsl",
      "246_OpLoopMerge.glsl",
      "24_OpTypeMatrix.glsl",
      "250_OpBranchConditional.glsl",
      "33_OpTypeFunction.glsl",
    ]

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

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