1# Copyright 2018 The Shaderc Authors. All rights reserved.
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7#     http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15import("//build_overrides/build.gni")
16import("//build_overrides/shaderc.gni")
17
18glslang_dir = shaderc_glslang_dir
19spirv_tools_dir = shaderc_spirv_tools_dir
20
21config("shaderc_util_public") {
22  include_dirs = [ "libshaderc_util/include" ]
23}
24
25source_set("shaderc_util_sources") {
26  sources = [
27    "libshaderc_util/include/libshaderc_util/counting_includer.h",
28    "libshaderc_util/include/libshaderc_util/exceptions.h",
29    "libshaderc_util/include/libshaderc_util/file_finder.h",
30    "libshaderc_util/include/libshaderc_util/format.h",
31    "libshaderc_util/include/libshaderc_util/io.h",
32    "libshaderc_util/include/libshaderc_util/message.h",
33    "libshaderc_util/include/libshaderc_util/mutex.h",
34    "libshaderc_util/include/libshaderc_util/resources.h",
35    "libshaderc_util/include/libshaderc_util/spirv_tools_wrapper.h",
36    "libshaderc_util/include/libshaderc_util/string_piece.h",
37    "libshaderc_util/include/libshaderc_util/universal_unistd.h",
38    "libshaderc_util/include/libshaderc_util/version_profile.h",
39    "libshaderc_util/src/compiler.cc",
40    "libshaderc_util/src/file_finder.cc",
41    "libshaderc_util/src/io.cc",
42    "libshaderc_util/src/message.cc",
43    "libshaderc_util/src/resources.cc",
44    "libshaderc_util/src/shader_stage.cc",
45    "libshaderc_util/src/spirv_tools_wrapper.cc",
46    "libshaderc_util/src/version_profile.cc",
47  ]
48
49  # Configure Glslang's interface to include HLSL-related entry points.
50  defines = [ "ENABLE_HLSL=1" ]
51
52  public_configs = [ ":shaderc_util_public" ]
53
54  deps = [
55    "${glslang_dir}:glslang_sources",
56    "${spirv_tools_dir}:spvtools",
57  ]
58
59  if (build_with_chromium) {
60    configs -= [ "//build/config/compiler:chromium_code" ]
61    configs += [ "//build/config/compiler:no_chromium_code" ]
62  }
63}
64
65config("shaderc_public") {
66  include_dirs = [ "libshaderc/include" ]
67  if (is_component_build) {
68    defines = [ "SHADERC_SHAREDLIB" ]
69  }
70}
71
72component("libshaderc") {
73  public_configs = [
74    ":shaderc_public",
75    ":shaderc_util_public",
76  ]
77
78  defines = [ "SHADERC_IMPLEMENTATION" ]
79
80  sources = [
81    "libshaderc/include/shaderc/env.h",
82    "libshaderc/include/shaderc/shaderc.h",
83    "libshaderc/include/shaderc/shaderc.hpp",
84    "libshaderc/include/shaderc/status.h",
85    "libshaderc/include/shaderc/visibility.h",
86    "libshaderc/src/shaderc.cc",
87    "libshaderc/src/shaderc_private.h",
88  ]
89
90  deps = [
91    ":shaderc_util_sources",
92    "${spirv_tools_dir}:spvtools",
93    "${spirv_tools_dir}:spvtools_val",
94    "${glslang_dir}:glslang_sources",
95  ]
96
97  if (build_with_chromium) {
98    configs -= [ "//build/config/compiler:chromium_code" ]
99    configs += [ "//build/config/compiler:no_chromium_code" ]
100  }
101}
102