""" This defines a macro to cut down on boiler plate for generating sksl test resources. """ load("//bazel:macros.bzl", "py_binary") def compile_sksl(name, lang, inputs, settings = "settings"): """Creates a rule to compile the given sksl inputs This macro creates a py_binary rule to invoke the //gn:compile_sksl_tests.py script and a helper genrule which creates the list of all file names that should be processed by that python script. The generated py_binary rule is called compute_${name} and can be run via `bazel run`. Args: name: A string used to uniquely identify the generated compile and list rule. lang: A string passed into the compile_sksl_tests.py script. inputs: A filegroup label containing all the input files to be processed. settings: A string passed into the compile_sksl_tests.py script. """ # https://bazel.build/reference/be/python#py_binary py_binary( name = "compile_" + name, main = ":sksl_compile_tests.py", srcs = [":sksl_compile_tests.py"], args = [ # comments are the variable names in compile_sksl_tests.py "--" + lang, # lang "--" + settings, # settings "resources", # input_root_dir "tests", # output_root_dir "bazel-bin/tools/skslc/%s.txt" % name, # input_file ], data = [ ":%s.txt" % name, inputs, ":skslc", "//gn:compile_sksl_tests", ], tags = ["no-remote-exec"], ) native.genrule( name = "enumerate_%s_list" % name, # This name does not really matter. srcs = [inputs], outs = [name + ".txt"], # Put a space seperated list of file names into the one output # This is done because the list could be quite long and overflow # the command line length # https://bazel.build/reference/be/make-variables#predefined_genrule_variables cmd = "echo $(SRCS) > $@", )