xref: /aosp_15_r20/external/skia/tools/gpu/gl/interface/BUILD.bazel (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Workerload("//bazel:macros.bzl", "go_binary", "go_library", "py_binary")
2*c8dee2aaSAndroid Build Coastguard Worker
3*c8dee2aaSAndroid Build Coastguard Workergo_library(
4*c8dee2aaSAndroid Build Coastguard Worker    name = "interface_lib",
5*c8dee2aaSAndroid Build Coastguard Worker    srcs = [
6*c8dee2aaSAndroid Build Coastguard Worker        "gen_interface.go",
7*c8dee2aaSAndroid Build Coastguard Worker        "templates.go",
8*c8dee2aaSAndroid Build Coastguard Worker    ],
9*c8dee2aaSAndroid Build Coastguard Worker    importpath = "go.skia.org/skia/tools/gpu/gl/interface",
10*c8dee2aaSAndroid Build Coastguard Worker    visibility = ["//visibility:private"],
11*c8dee2aaSAndroid Build Coastguard Worker    deps = ["@com_github_flynn_json5//:json5"],
12*c8dee2aaSAndroid Build Coastguard Worker)
13*c8dee2aaSAndroid Build Coastguard Worker
14*c8dee2aaSAndroid Build Coastguard Workergo_binary(
15*c8dee2aaSAndroid Build Coastguard Worker    name = "interface",
16*c8dee2aaSAndroid Build Coastguard Worker    embed = [":interface_lib"],
17*c8dee2aaSAndroid Build Coastguard Worker    visibility = ["//visibility:public"],
18*c8dee2aaSAndroid Build Coastguard Worker)
19*c8dee2aaSAndroid Build Coastguard Worker
20*c8dee2aaSAndroid Build Coastguard Worker_GENERATE_INTERFACE = """
21*c8dee2aaSAndroid Build Coastguard Workerimport os
22*c8dee2aaSAndroid Build Coastguard Workerimport subprocess
23*c8dee2aaSAndroid Build Coastguard Workerimport sys
24*c8dee2aaSAndroid Build Coastguard Worker
25*c8dee2aaSAndroid Build Coastguard Worker# Change into the Skia root directory
26*c8dee2aaSAndroid Build Coastguard Worker# https://bazel.build/docs/user-manual#running-executables
27*c8dee2aaSAndroid Build Coastguard Worker# Note: Bazel eats single quotes, so we must use double quotes.
28*c8dee2aaSAndroid Build Coastguard Workeros.chdir(os.environ["BUILD_WORKSPACE_DIRECTORY"])
29*c8dee2aaSAndroid Build Coastguard Worker
30*c8dee2aaSAndroid Build Coastguard Worker# execpath returns the path to the given label relative to the Skia root.
31*c8dee2aaSAndroid Build Coastguard Worker# https://bazel.build/reference/be/make-variables#predefined_label_variables
32*c8dee2aaSAndroid Build Coastguard Workergen_interface_exe = os.path.abspath("$(execpath :interface)")
33*c8dee2aaSAndroid Build Coastguard Workerinterface_json = os.path.abspath("$(execpath interface.json5)")
34*c8dee2aaSAndroid Build Coastguard Worker
35*c8dee2aaSAndroid Build Coastguard Workercmd = [
36*c8dee2aaSAndroid Build Coastguard Worker    gen_interface_exe, "--in_table", interface_json,
37*c8dee2aaSAndroid Build Coastguard Worker    "--out_dir", "src/gpu/ganesh/gl",
38*c8dee2aaSAndroid Build Coastguard Worker]
39*c8dee2aaSAndroid Build Coastguard Workerif "--dryrun" in sys.argv:
40*c8dee2aaSAndroid Build Coastguard Worker    cmd.append("--dryrun")
41*c8dee2aaSAndroid Build Coastguard Worker
42*c8dee2aaSAndroid Build Coastguard Workerprint(subprocess.check_output(cmd, encoding="utf-8"))
43*c8dee2aaSAndroid Build Coastguard Worker"""
44*c8dee2aaSAndroid Build Coastguard Worker
45*c8dee2aaSAndroid Build Coastguard Workergenrule(
46*c8dee2aaSAndroid Build Coastguard Worker    name = "create_generate_gl_interfaces_script",
47*c8dee2aaSAndroid Build Coastguard Worker    # This must be in srcs and not tools because otherwise the path will
48*c8dee2aaSAndroid Build Coastguard Worker    # be resolved incorrectly (as if it were built for the host config
49*c8dee2aaSAndroid Build Coastguard Worker    # and not the exec config).
50*c8dee2aaSAndroid Build Coastguard Worker    srcs = [":interface"],
51*c8dee2aaSAndroid Build Coastguard Worker    outs = ["generate_gl_interfaces.py"],
52*c8dee2aaSAndroid Build Coastguard Worker    cmd = "echo '%s' > $@" % _GENERATE_INTERFACE,
53*c8dee2aaSAndroid Build Coastguard Worker    tools = [
54*c8dee2aaSAndroid Build Coastguard Worker        ":interface.json5",
55*c8dee2aaSAndroid Build Coastguard Worker    ],
56*c8dee2aaSAndroid Build Coastguard Worker)
57*c8dee2aaSAndroid Build Coastguard Worker
58*c8dee2aaSAndroid Build Coastguard Workerpy_binary(
59*c8dee2aaSAndroid Build Coastguard Worker    name = "generate_gl_interfaces",
60*c8dee2aaSAndroid Build Coastguard Worker    srcs = [":generate_gl_interfaces.py"],
61*c8dee2aaSAndroid Build Coastguard Worker    data = [
62*c8dee2aaSAndroid Build Coastguard Worker        ":interface",
63*c8dee2aaSAndroid Build Coastguard Worker        ":interface.json5",
64*c8dee2aaSAndroid Build Coastguard Worker    ],
65*c8dee2aaSAndroid Build Coastguard Worker    tags = ["no-remote-exec"],
66*c8dee2aaSAndroid Build Coastguard Worker)
67