third_party/shaderc: init
parent
c87865d16e
commit
f5ae25214a
|
@ -33,12 +33,8 @@ rust_repository_set(
|
|||
load("@io_bazel_rules_rust//:workspace.bzl", "bazel_version")
|
||||
bazel_version(name = "bazel_version")
|
||||
|
||||
http_archive(
|
||||
name = "glslang",
|
||||
sha256 = "0b79a120ac7826ac31bcd47ba3e11d79d8d2709bfaf17125aa759eeec6799dd3",
|
||||
strip_prefix = "glslang-b0ada80356ca7b560c600b93a596af1331442542",
|
||||
url = "https://github.com/KhronosGroup/glslang/archive/b0ada80356ca7b560c600b93a596af1331442542.tar.gz",
|
||||
)
|
||||
load("//third_party/shaderc:deps.bzl", "shaderc_deps")
|
||||
shaderc_deps()
|
||||
|
||||
http_archive(
|
||||
name = "rules_pkg",
|
||||
|
|
|
@ -3,7 +3,7 @@ load("//tools/bzl:glsl.bzl", "glsl_binary")
|
|||
glsl_binary(
|
||||
name = "forward_vert",
|
||||
srcs = [
|
||||
"forward.vert"
|
||||
"forward.vert",
|
||||
],
|
||||
visibility = ["//engine:__pkg__"],
|
||||
)
|
||||
|
@ -11,7 +11,9 @@ glsl_binary(
|
|||
glsl_binary(
|
||||
name = "forward_frag",
|
||||
srcs = [
|
||||
"forward.frag"
|
||||
"forward.frag",
|
||||
"forward_brdf.frag",
|
||||
#"forward_camera.frag",
|
||||
],
|
||||
visibility = ["//engine:__pkg__"],
|
||||
)
|
||||
|
|
|
@ -0,0 +1,91 @@
|
|||
load("@abrasion//third_party/shaderc:build-version.bzl", "build_version")
|
||||
|
||||
build_version(
|
||||
name = "build-version",
|
||||
)
|
||||
|
||||
cc_library(
|
||||
name = "libshaderc_util",
|
||||
hdrs = [
|
||||
"libshaderc_util/include/libshaderc_util/args.h",
|
||||
"libshaderc_util/include/libshaderc_util/compiler.h",
|
||||
"libshaderc_util/include/libshaderc_util/counting_includer.h",
|
||||
"libshaderc_util/include/libshaderc_util/file_finder.h",
|
||||
"libshaderc_util/include/libshaderc_util/io.h",
|
||||
"libshaderc_util/include/libshaderc_util/mutex.h",
|
||||
"libshaderc_util/include/libshaderc_util/resources.h",
|
||||
"libshaderc_util/include/libshaderc_util/resources.inc",
|
||||
"libshaderc_util/include/libshaderc_util/string_piece.h",
|
||||
|
||||
# should go to srcs?
|
||||
"libshaderc_util/include/libshaderc_util/format.h",
|
||||
"libshaderc_util/include/libshaderc_util/message.h",
|
||||
"libshaderc_util/include/libshaderc_util/shader_stage.h",
|
||||
"libshaderc_util/include/libshaderc_util/spirv_tools_wrapper.h",
|
||||
"libshaderc_util/include/libshaderc_util/universal_unistd.h",
|
||||
"libshaderc_util/include/libshaderc_util/version_profile.h",
|
||||
],
|
||||
srcs = [
|
||||
"libshaderc_util/src/args.cc",
|
||||
"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",
|
||||
],
|
||||
deps = [
|
||||
"@glslang//:glslang",
|
||||
"@glslang//:SPIRV",
|
||||
"@spirv_tools//:spirv_tools",
|
||||
"@spirv_tools//:spirv_tools_opt",
|
||||
],
|
||||
strip_include_prefix = "libshaderc_util/include/",
|
||||
)
|
||||
|
||||
cc_library(
|
||||
name = "libshaderc",
|
||||
hdrs = [
|
||||
"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",
|
||||
],
|
||||
srcs = [
|
||||
"libshaderc/src/shaderc.cc",
|
||||
"libshaderc/src/shaderc_private.h",
|
||||
],
|
||||
deps = [
|
||||
":libshaderc_util",
|
||||
],
|
||||
strip_include_prefix = "libshaderc/include",
|
||||
)
|
||||
|
||||
cc_binary(
|
||||
name = "glslc",
|
||||
srcs = [
|
||||
"build-version",
|
||||
|
||||
"glslc/src/dependency_info.h",
|
||||
"glslc/src/dependency_info.cc",
|
||||
"glslc/src/file.h",
|
||||
"glslc/src/file.cc",
|
||||
"glslc/src/file_includer.h",
|
||||
"glslc/src/file_includer.cc",
|
||||
"glslc/src/file_compiler.h",
|
||||
"glslc/src/file_compiler.cc",
|
||||
"glslc/src/resource_parse.h",
|
||||
"glslc/src/resource_parse.cc",
|
||||
"glslc/src/shader_stage.h",
|
||||
"glslc/src/shader_stage.cc",
|
||||
|
||||
"glslc/src/main.cc",
|
||||
],
|
||||
deps = [
|
||||
":libshaderc",
|
||||
":libshaderc_util",
|
||||
],
|
||||
)
|
|
@ -0,0 +1,26 @@
|
|||
load("//third_party/shaderc:version.bzl", "shaderc_version")
|
||||
|
||||
# Shaderc build-version.inc genrule.
|
||||
# This replaces the python script from shaderc's release machinery, and instead
|
||||
# generates a file with the same format using version strings defined in
|
||||
# version.bzl.
|
||||
|
||||
def _build_version(ctx):
|
||||
v_shaderc = shaderc_version["shaderc"][0]
|
||||
v_spvtools = shaderc_version["spirv_tools"][0]
|
||||
v_glslang = shaderc_version["glslang"][0]
|
||||
|
||||
versions = [
|
||||
"shaderc v{} v{}-abrasion".format(v_shaderc, v_shaderc),
|
||||
"spirv-tools v{} v{}-abrasion".format(v_spvtools, v_spvtools),
|
||||
"glslang {}-abrasion".format(v_glslang),
|
||||
]
|
||||
out = "\n".join(['"{}\\n"'.format(v) for v in versions])
|
||||
ctx.actions.write(ctx.outputs.inc, out + "\n")
|
||||
|
||||
build_version = rule(
|
||||
implementation = _build_version,
|
||||
outputs = {
|
||||
"inc": "%{name}.inc",
|
||||
},
|
||||
)
|
|
@ -0,0 +1,22 @@
|
|||
load("//third_party/shaderc:version.bzl", "shaderc_version")
|
||||
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
|
||||
|
||||
# Shaderc workspace rules (external repositories).
|
||||
# This downloads shaderc and its dependencies, at versions specified in
|
||||
# version.bzl.
|
||||
|
||||
def _http_archive(name, strip_prefix, gh_name, **kw):
|
||||
version, remote, sha = shaderc_version[name]
|
||||
http_archive(
|
||||
name = name,
|
||||
sha256 = sha,
|
||||
strip_prefix = "{}-{}".format(strip_prefix, remote),
|
||||
url = "https://github.com/{}/archive/{}.tar.gz".format(gh_name, remote),
|
||||
**kw,
|
||||
)
|
||||
|
||||
def shaderc_deps():
|
||||
_http_archive("spirv_headers", "SPIRV-Headers", "KhronosGroup/SPIRV-Headers")
|
||||
_http_archive("spirv_tools", "SPIRV-Tools", "KhronosGroup/SPIRV-Tools")
|
||||
_http_archive("glslang", "glslang", "KhronosGroup/glslang")
|
||||
_http_archive("shaderc", "shaderc", "google/shaderc", build_file="//third_party/shaderc:BUILD.external")
|
|
@ -0,0 +1,13 @@
|
|||
# Shaderc version definitions.
|
||||
# This should mirror DEPS from github.com/google/shaderc, but you will need two
|
||||
# extra things that aren't there:
|
||||
# - the sha256 of the tarball
|
||||
# - the pretty 'release' version of the tool (which you can get from the changelog)
|
||||
|
||||
shaderc_version = {
|
||||
# dep: (version, GH remote ver, sha256)
|
||||
"shaderc": ("2020.2", "2020.2", "a4d5680d4f0199e29ab77b357c88c147c5704f9ee2ac0a2d117e640e6f87d030"),
|
||||
"spirv_tools": ("2020.5", "969f0286479b89267b6c89f6d5223285c265e6ae", "6915b4bca8b2369e26812ffb3c1b726089bb9cd38d1cb7e9b8ef0d3bb7dd8162"),
|
||||
"spirv_headers": ("2020.5", "979924c8bc839e4cb1b69d03d48398551f369ce7", "7ebc04ebb4602c051d4886c9544de684195adac2a179e949469d29beb1f034e4"),
|
||||
"glslang": ("11.0.0-dev", "3ee5f2f1d3316e228916788b300d786bb574d337", "7b2f8b93958c7594942f730659c00dec0bffeafaa6853b67b5f72f915c287b1f"),
|
||||
}
|
Loading…
Reference in New Issue