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