| {namespace genrule} |
| |
| /***/ |
| {template .soyweb} |
| {call buck.page} |
| {param title: 'genrule()' /} |
| {param prettify: true /} |
| {param content} |
| |
| {call buck.rule} |
| {param overview} |
| A <code>genrule()</code> is used to generate a file from a shell |
| command. It must produce a single output file. |
| {/param} |
| |
| {param args} |
| |
| {call buck.arg} |
| {param name: 'name' /} |
| {param desc} |
| The name of the genrule. |
| {/param} |
| {/call} |
| |
| {call buck.arg} |
| {param name: 'srcs' /} |
| {param desc} |
| A list of files to be used in the shell command. |
| {/param} |
| {/call} |
| |
| {call buck.arg} |
| {param name: 'cmd' /} |
| {param desc} |
| The shell command to run to generate the output file. It will be |
| subject to the following environment variable substitutions: |
| <dl> |
| <dt><code>SRCS</code><dt> |
| <dd>A space-delimited string expansion of the <code>srcs</code> |
| {sp}argument where each element of <code>srcs</code> will be |
| translated into an absolute path.</dd> |
| |
| <dt><code>OUT</code></dt> |
| <dd>The output file for the <code>genrule()</code>. The file |
| specified by this variable must always be written by this |
| command. If not, the execution of this rule will be considered a |
| failure, halting the build process.</dd> |
| </dl> |
| |
| Also, references to binary build rules (such as |
| {sp}<code>java_binary()</code> or <code>python_binary()</code>) may be |
| inserted, as well. For example, if |
| {sp}<code>//java/src/com/example:main</code> referred to a |
| {sp}<code>java_binary()</code> rule, then <code>cmd</code> could be |
| {sp}'<code>${lb}//java/src/com/example:main{rb} arg1 arg2 |
| arg3</code>', provided that <code>:main</code> were listed in the |
| {sp}<code>deps</code> of the <code>genrule()</code>. |
| {/param} |
| {/call} |
| |
| {call buck.arg} |
| {param name: 'out' /} |
| {param desc} |
| The name of the output file. Must be unique within the build file |
| in which the <code>genrule()</code> is declared. |
| {/param} |
| {/call} |
| |
| {call buck.arg} |
| {param name: 'deps' /} |
| {param desc} |
| A list of rules that must be built before this rule. These may be |
| accessed within the command by treating the target as a |
| brace-wrapped variable (<code>${lb}//like:this{rb}</code>). |
| {/param} |
| {/call} |
| |
| {call buck.visibility_arg /} |
| |
| {/param} // args |
| |
| {param examples} |
| |
| This genrule() uses a Python script to derive a new |
| {sp}<code>AndroidManifest.xml</code> from an |
| {sp}<code>AndroidManifest.xml</code> in the source tree. |
| |
| {literal}<pre class="prettyprint lang-py"> |
| genrule( |
| name = 'generate_manifest', |
| srcs = [ |
| 'basic_to_full_manifest.py', |
| 'AndroidManifest.xml', |
| ], |
| cmd = 'python $SRC_0 $SRC_1 > $OUT', |
| out = 'AndroidManifest.xml', |
| ) |
| </pre>{/literal} |
| |
| <h2>See Also</h2> |
| |
| <a href="{ROOT}function/genfile.html"><code>genfile()</code></a> |
| {sp}function. |
| |
| {/param} // examples |
| |
| {/call} // buck.rule |
| |
| {/param} |
| {/call} |
| {/template} |