# 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" ] }