skia2/third_party/shaderc/BUILD.gn
Ben Wagner 36e67aa869 Mark dawn and shaderc as third_party.
This introduces a 'third_party_config' gn template which forwards any
include_dirs as cflag system dirs. This is then used on the dawn and
shaderc configs to suppress warnings from use of their headers in Skia.
This route was chosen as a way to minimize the diff with the upstream
BUILD.gn files for these projects for easier updates.

It would be nice if gn could handle this in the build system, since it
isn't good to hide include directories from gn this way. The gn issue
https://bugs.chromium.org/p/gn/issues/detail?id=157 was created to track
gn being able to do this in a cleaner way.

Change-Id: I2d17d099db7b3d8b5a960576ca0535a22badd902
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/281356
Auto-Submit: Ben Wagner <bungeman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2020-04-03 20:46:14 +00:00

175 lines
5.5 KiB
Plaintext

# Copyright 2020 Google LLC.
#
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
shaderc_root = "../externals/shaderc"
spirv_tools_root = "../externals/spirv-tools"
import("//build_overrides/build.gni")
import("//build_overrides/shaderc.gni")
import("${shaderc_root}/shaderc_features.gni")
import("../third_party.gni")
glslang_dir = shaderc_glslang_dir
spirv_tools_dir = shaderc_spirv_tools_dir
spirv_cross_dir = shaderc_spirv_cross_dir
spirv_headers_dir = shaderc_spirv_headers_dir
use_direct_logging = shaderc_spvc_enable_direct_logging
use_context_logging = !shaderc_spvc_disable_context_logging
is_msvc = is_win && !is_clang
third_party_config("shaderc_util_public") {
include_dirs = [ "${shaderc_root}/libshaderc_util/include" ]
}
source_set("shaderc_util_sources") {
sources = rebase_path(
[
"libshaderc_util/include/libshaderc_util/counting_includer.h",
"libshaderc_util/include/libshaderc_util/exceptions.h",
"libshaderc_util/include/libshaderc_util/file_finder.h",
"libshaderc_util/include/libshaderc_util/format.h",
"libshaderc_util/include/libshaderc_util/io.h",
"libshaderc_util/include/libshaderc_util/message.h",
"libshaderc_util/include/libshaderc_util/mutex.h",
"libshaderc_util/include/libshaderc_util/resources.h",
"libshaderc_util/include/libshaderc_util/spirv_tools_wrapper.h",
"libshaderc_util/include/libshaderc_util/string_piece.h",
"libshaderc_util/include/libshaderc_util/universal_unistd.h",
"libshaderc_util/include/libshaderc_util/version_profile.h",
"libshaderc_util/src/compiler.cc",
"libshaderc_util/src/file_finder.cc",
"libshaderc_util/src/io.cc",
"libshaderc_util/src/message.cc",
"libshaderc_util/src/resources.cc",
"libshaderc_util/src/shader_stage.cc",
"libshaderc_util/src/spirv_tools_wrapper.cc",
"libshaderc_util/src/version_profile.cc",
],
".",
"$shaderc_root")
# Configure Glslang's interface to include HLSL-related entry points.
defines = [ "ENABLE_HLSL=1" ]
public_configs = [ ":shaderc_util_public" ]
deps = [
"${glslang_dir}:glslang_sources",
"${spirv_tools_dir}:spvtools",
]
}
third_party_config("shaderc_public") {
include_dirs = [ "${shaderc_root}/libshaderc/include" ]
if (is_component_build) {
defines = [ "SHADERC_SHAREDLIB" ]
}
}
third_party("libshaderc") {
public_include_dirs = []
configs += [
":shaderc_public",
":shaderc_util_public",
]
defines = [ "SHADERC_IMPLEMENTATION" ]
sources = rebase_path([
"libshaderc/include/shaderc/env.h",
"libshaderc/include/shaderc/shaderc.h",
"libshaderc/include/shaderc/shaderc.hpp",
"libshaderc/include/shaderc/status.h",
"libshaderc/include/shaderc/visibility.h",
"libshaderc/src/shaderc.cc",
"libshaderc/src/shaderc_private.h",
],
".",
"$shaderc_root")
deps = [
":shaderc_util_sources",
"${glslang_dir}:glslang_sources",
"${spirv_tools_dir}:spvtools",
"${spirv_tools_dir}:spvtools_val",
]
}
config("spirv_cross_internal") {
if (!is_msvc) {
cflags_cc = [
"-Wno-implicit-fallthrough",
"-Wno-return-type",
"-Wno-sign-compare",
]
} else {
# Disable "not all control paths return a value" warning.
cflags_cc = [ "/wd4715" ]
}
}
config("shaderc_spvc_public") {
include_dirs = [
"${shaderc_root}/libshaderc/include",
"${shaderc_root}/libshaderc_spvc/include",
"${spirv_headers_dir}/include",
# Accessing a private spirv-tools headers.
"${spirv_tools_root}",
]
include_dirs += [ "${target_gen_dir}/../spirv-tools" ]
if (is_component_build) {
defines = [ "SHADERC_SHAREDLIB" ]
}
}
source_set("libshaderc_spvc_sources") {
public_configs = [ ":shaderc_spvc_public" ]
defines = [
"SHADERC_IMPLEMENTATION",
"SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS",
]
if (use_direct_logging) {
defines += [ "SHADERC_SPVC_ENABLE_DIRECT_LOGGING" ]
}
if (!use_context_logging) {
defines += [ "SHADERC_SPVC_DISABLE_CONTEXT_LOGGING" ]
}
sources = rebase_path([
"libshaderc/include/shaderc/env.h",
"libshaderc/include/shaderc/status.h",
"libshaderc/include/shaderc/visibility.h",
"libshaderc_spvc/include/spvc/spvc.h",
"libshaderc_spvc/include/spvc/spvc.hpp",
"libshaderc_spvc/src/spvc.cc",
"libshaderc_spvc/src/spvc_log.cc",
"libshaderc_spvc/src/spvc_log.h",
"libshaderc_spvc/src/spvc_private.cc",
"libshaderc_spvc/src/spvc_private.h",
"libshaderc_spvc/src/spvcir_pass.cc",
"libshaderc_spvc/src/spvcir_pass.h",
],
".",
"$shaderc_root")
public_deps = [ "${spirv_cross_dir}:spirv_cross" ]
deps = [
"${spirv_tools_dir}:spvtools",
"${spirv_tools_dir}:spvtools_core_enums_unified1",
"${spirv_tools_dir}:spvtools_opt",
"${spirv_tools_dir}:spvtools_val",
]
configs += []
}