# Copyright (c) 2020 Google LLC
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and/or associated documentation files (the "Materials"),
# to deal in the Materials without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Materials, and to permit persons to whom the
# Materials are furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Materials.
#
# MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
# STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
# HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
#
# THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
# IN THE MATERIALS.

config("spv_headers_public_config") {
  include_dirs = [ "include" ]
}

source_set("spv_headers") {
  sources = [
    "include/spirv/1.2/GLSL.std.450.h",
    "include/spirv/1.2/OpenCL.std.h",
    "include/spirv/1.2/spirv.h",
    "include/spirv/1.2/spirv.hpp",
    "include/spirv/unified1/GLSL.std.450.h",
    "include/spirv/unified1/NonSemanticClspvReflection.h",
    "include/spirv/unified1/NonSemanticDebugPrintf.h",
    "include/spirv/unified1/OpenCL.std.h",
    "include/spirv/unified1/spirv.h",
    "include/spirv/unified1/spirv.hpp",
  ]

  public_configs = [ ":spv_headers_public_config" ]
}
