| # 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 += [] |
| } |
| |
| group("libshaderc_spvc") { |
| public_deps = [ ":libshaderc_spvc_sources" ] |
| } |
| |
| group("spirv_cross") { |
| public_deps = [ "../spirv-cross:spirv_cross" ] |
| } |