# Copyright 2019 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Proxy GN targets used to prepare for the migration of the Fuchsia tree
# to a newer upstream repository for spirv-cross.
#
# See https://bugs.fuchsia.dev/p/fuchsia/issues/detail?id=13245

config("public_preprocessor_definitions") {
  defines = [ "SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS" ]
}

source_set("spirv-cross") {
  public_configs = [ ":public_preprocessor_definitions" ]

  sources = [
    # spirv-cross-core
    "GLSL.std.450.h",
    "spirv.hpp",
    "spirv_cfg.cpp",
    "spirv_cfg.hpp",
    "spirv_common.hpp",
    "spirv_cpp.cpp",

    # spirv-cross-cpp
    "spirv_cpp.hpp",
    "spirv_cross.cpp",
    "spirv_cross.hpp",
    "spirv_cross_util.cpp",

    # spirv-cross-util
    "spirv_cross_util.hpp",

    # spirv-cross-glsl
    "spirv_glsl.cpp",
    "spirv_glsl.hpp",
    "spirv_hlsl.cpp",

    # spirv-cross-hlsl
    "spirv_hlsl.hpp",
    "spirv_msl.cpp",

    # spirv-cross-msl
    "spirv_msl.hpp",
  ]

  # TODO(fxbug.dev/58162): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-conversion" ]
}

# NOTE: Required by recent versions of libshaderc_spvc and is provided by more
# recent versions of spirv_cross. Note that it is never used by the Fuchsia
# build though.
group("spirv_cross_full_for_fuzzers") {
  deps = [ ":spirv-cross" ]
}
