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