| load("//bazel:macros.bzl", "go_binary", "go_library", "py_binary") |
| |
| go_library( |
| name = "interface_lib", |
| srcs = [ |
| "gen_interface.go", |
| "templates.go", |
| ], |
| importpath = "go.skia.org/skia/tools/gpu/gl/interface", |
| visibility = ["//visibility:private"], |
| deps = ["@com_github_flynn_json5//:json5"], |
| ) |
| |
| go_binary( |
| name = "interface", |
| embed = [":interface_lib"], |
| visibility = ["//visibility:public"], |
| ) |
| |
| _GENERATE_INTERFACE = """ |
| import os |
| import subprocess |
| import sys |
| |
| # Change into the Skia root directory |
| # https://bazel.build/docs/user-manual#running-executables |
| # Note: Bazel eats single quotes, so we must use double quotes. |
| os.chdir(os.environ["BUILD_WORKSPACE_DIRECTORY"]) |
| |
| # execpath returns the path to the given label relative to the Skia root. |
| # https://bazel.build/reference/be/make-variables#predefined_label_variables |
| gen_interface_exe = "$(execpath :interface)" |
| interface_json = "$(execpath interface.json5)" |
| |
| cmd = [ |
| gen_interface_exe, "--in_table", interface_json, |
| "--out_dir", "src/gpu/ganesh/gl", |
| ] |
| if "--dryrun" in sys.argv: |
| cmd.append("--dryrun") |
| |
| print(subprocess.check_output(cmd, encoding="utf-8")) |
| """ |
| |
| genrule( |
| name = "create_generate_gl_interfaces_script", |
| outs = ["generate_gl_interfaces.py"], |
| cmd = "echo '%s' > $@" % _GENERATE_INTERFACE, |
| tools = [ |
| ":interface", |
| ":interface.json5", |
| ], |
| ) |
| |
| py_binary( |
| name = "generate_gl_interfaces", |
| srcs = [":generate_gl_interfaces.py"], |
| data = [ |
| ":interface", |
| ":interface.json5", |
| ], |
| tags = ["no-remote"], |
| ) |