36 lines
806 B
Python
36 lines
806 B
Python
def _glsl_binary(ctx):
|
|
srcs = ctx.files.srcs
|
|
binary = ctx.outputs.binary
|
|
compiler = ctx.executable._compiler
|
|
|
|
main = srcs[0].path
|
|
|
|
args = [main, "-O", "-o", binary.path]
|
|
|
|
ctx.actions.run(
|
|
inputs=srcs,
|
|
outputs=[binary],
|
|
executable=compiler,
|
|
arguments=args,
|
|
mnemonic="glslc",
|
|
progress_message='Compiling shader {}'.format(binary.short_path)
|
|
)
|
|
|
|
glsl_binary = rule(
|
|
implementation = _glsl_binary,
|
|
attrs = {
|
|
"srcs": attr.label_list(
|
|
allow_files=True,
|
|
),
|
|
"_compiler": attr.label(
|
|
default=Label("@shaderc//:glslc"),
|
|
allow_single_file=True,
|
|
executable=True,
|
|
cfg="host",
|
|
),
|
|
},
|
|
outputs = {
|
|
"binary": "%{name}.spv",
|
|
},
|
|
)
|