| # Copyright 2018 The Shaderc Authors. All rights reserved. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| import("//build_overrides/build.gni") |
| import("//build_overrides/shaderc.gni") |
| import("shaderc_features.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 |
| |
| config("shaderc_util_public") { |
| include_dirs = [ "libshaderc_util/include" ] |
| } |
| |
| source_set("shaderc_util_sources") { |
| sources = [ |
| "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", |
| ] |
| |
| # 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", |
| ] |
| |
| if (build_with_chromium) { |
| configs -= [ "//build/config/compiler:chromium_code" ] |
| configs += [ "//build/config/compiler:no_chromium_code" ] |
| } |
| } |
| |
| config("shaderc_public") { |
| include_dirs = [ "libshaderc/include" ] |
| if (is_component_build) { |
| defines = [ "SHADERC_SHAREDLIB" ] |
| } |
| } |
| |
| component("libshaderc") { |
| public_configs = [ |
| ":shaderc_public", |
| ":shaderc_util_public", |
| ] |
| |
| defines = [ "SHADERC_IMPLEMENTATION" ] |
| |
| sources = [ |
| "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", |
| ] |
| |
| deps = [ |
| ":shaderc_util_sources", |
| "${spirv_tools_dir}:spvtools", |
| "${spirv_tools_dir}:spvtools_val", |
| "${glslang_dir}:glslang_sources", |
| ] |
| |
| if (build_with_chromium) { |
| configs -= [ "//build/config/compiler:chromium_code" ] |
| configs += [ "//build/config/compiler:no_chromium_code" ] |
| } |
| } |
| |
| config("spirv_cross_public") { |
| include_dirs = [ |
| "${spirv_cross_dir}", |
| "${spirv_cross_dir}/..", |
| ] |
| defines = [ "SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS" ] |
| } |
| |
| 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" ] |
| } |
| } |
| |
| source_set("spirv_cross") { |
| public_configs = [ ":spirv_cross_public" ] |
| configs += [ ":spirv_cross_internal" ] |
| |
| sources = [ |
| "${spirv_cross_dir}/GLSL.std.450.h", |
| "${spirv_cross_dir}/spirv.hpp", |
| "${spirv_cross_dir}/spirv_cfg.cpp", |
| "${spirv_cross_dir}/spirv_cfg.hpp", |
| "${spirv_cross_dir}/spirv_common.hpp", |
| "${spirv_cross_dir}/spirv_cross.cpp", |
| "${spirv_cross_dir}/spirv_cross.hpp", |
| "${spirv_cross_dir}/spirv_cross_containers.hpp", |
| "${spirv_cross_dir}/spirv_cross_error_handling.hpp", |
| "${spirv_cross_dir}/spirv_cross_parsed_ir.cpp", |
| "${spirv_cross_dir}/spirv_cross_parsed_ir.hpp", |
| "${spirv_cross_dir}/spirv_glsl.cpp", |
| "${spirv_cross_dir}/spirv_glsl.hpp", |
| "${spirv_cross_dir}/spirv_hlsl.cpp", |
| "${spirv_cross_dir}/spirv_hlsl.hpp", |
| "${spirv_cross_dir}/spirv_msl.cpp", |
| "${spirv_cross_dir}/spirv_msl.hpp", |
| "${spirv_cross_dir}/spirv_parser.cpp", |
| "${spirv_cross_dir}/spirv_parser.hpp", |
| "${spirv_cross_dir}/spirv_reflect.cpp", |
| "${spirv_cross_dir}/spirv_reflect.hpp", |
| ] |
| } |
| |
| config("shaderc_spvc_public") { |
| include_dirs = [ |
| "libshaderc/include", |
| "libshaderc_spvc/include", |
| "${spirv_headers_dir}/include", |
| # Accessing a private spirv-tools headers. |
| "${spirv_tools_dir}", |
| # Accessing auto-generated spirv-tools headers. The headers are generated by |
| # actions in ${spirv_tools_dir}/BUILD.gn, hence locate the action outputs |
| # using the generated file directory corresponding to that build file. |
| get_path_info("${spirv_tools_dir}/BUILD.gn", "gen_dir"), |
| ] |
| |
| if (is_component_build) { |
| defines = [ "SHADERC_SHAREDLIB" ] |
| } |
| } |
| |
| component("libshaderc_spvc") { |
| public_deps = [ ":libshaderc_spvc_sources" ] |
| } |
| |
| 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 = [ |
| "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", |
| ] |
| |
| public_deps = [ ":spirv_cross" ] |
| |
| deps = [ |
| ":spirv_cross", |
| "${spirv_tools_dir}:spvtools", |
| "${spirv_tools_dir}:spvtools_core_enums_unified1", |
| "${spirv_tools_dir}:spvtools_opt", |
| "${spirv_tools_dir}:spvtools_val", |
| ] |
| |
| if (build_with_chromium) { |
| configs -= [ "//build/config/compiler:chromium_code" ] |
| configs += [ "//build/config/compiler:no_chromium_code" ] |
| } |
| } |