xref: /aosp_15_r20/external/skia/tools/skslc/compile_sksl.bzl (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1"""
2This defines a macro to cut down on boiler plate for generating sksl test resources.
3"""
4
5load("//bazel:macros.bzl", "py_binary")
6
7def compile_sksl(name, lang, inputs, settings = "settings"):
8    """Creates a rule to compile the given sksl inputs
9
10    This macro creates a py_binary rule to invoke the //gn:compile_sksl_tests.py script and a
11    helper genrule which creates the list of all file names that should be processed by that
12    python script.
13
14    The generated py_binary rule is called compute_${name} and can be run via `bazel run`.
15
16    Args:
17        name: A string used to uniquely identify the generated compile and list rule.
18        lang: A string passed into the compile_sksl_tests.py script.
19        inputs: A filegroup label containing all the input files to be processed.
20        settings: A string passed into the compile_sksl_tests.py script.
21    """
22
23    # https://bazel.build/reference/be/python#py_binary
24    py_binary(
25        name = "compile_" + name,
26        main = ":sksl_compile_tests.py",
27        srcs = [":sksl_compile_tests.py"],
28        args = [
29            # comments are the variable names in compile_sksl_tests.py
30            "--" + lang,  # lang
31            "--" + settings,  # settings
32            "resources",  # input_root_dir
33            "tests",  # output_root_dir
34            "bazel-bin/tools/skslc/%s.txt" % name,  # input_file
35        ],
36        data = [
37            ":%s.txt" % name,
38            inputs,
39            ":skslc",
40            "//gn:compile_sksl_tests",
41        ],
42        tags = ["no-remote-exec"],
43    )
44
45    native.genrule(
46        name = "enumerate_%s_list" % name,  # This name does not really matter.
47        srcs = [inputs],
48        outs = [name + ".txt"],
49        # Put a space seperated list of file names into the one output
50        # This is done because the list could be quite long and overflow
51        # the command line length
52        # https://bazel.build/reference/be/make-variables#predefined_genrule_variables
53        cmd = "echo $(SRCS) > $@",
54    )
55