blob: 3cdf17537c253046e4ce25b9a58ebe01809b6c73 [file] [log] [blame]
---
layout: documentation
title: Build Encyclopedia
---
<h1>Bazel BUILD Encyclopedia of Functions</h1>
<h2>Concepts and terminology</h2>
<ul>
<li>
<a href="$expander.expandRef("common-definitions")">Common definitions</a>
<ul>
<li><a href="$expander.expandRef("common-definitions#sh-tokenization")">Bourne shell tokenization</a></li>
<li><a href="$expander.expandRef("common-definitions#label-expansion")">Label expansion</a></li>
<li><a href="$expander.expandRef("common-definitions#common-attributes")">Common attributes</a></li>
<li><a href="$expander.expandRef("common-definitions#common-attributes-tests")">Common attributes for tests</a></li>
<li><a href="$expander.expandRef("common-definitions#common-attributes-binaries")">Common attributes for binaries</a></li>
<li><a href="$expander.expandRef("common-definitions#configurable-attributes")">Configurable attributes</a></li>
<li><a href="$expander.expandRef("common-definitions#implicit-outputs")">Implicit output targets</a></li>
</ul>
</li>
<li>
<a href="$expander.expandRef("make-variables")">"Make" variables</a>
<ul class="be-toc">
<li><a href="$expander.expandRef("make-variables#make-var-substitution")">"Make" variable substitution</a></li>
</ul>
</li>
</ul>
<h2>Functions</h2>
<ul class="be-toc">
<li><a href="$expander.expandRef("package")">package</a></li>
<li><a href="$expander.expandRef("package_group")">package_group</a></li>
<li><a href="$expander.expandRef("licenses")">licenses</a></li>
<li><a href="$expander.expandRef("exports_files")">exports_files</a></li>
<li><a href="$expander.expandRef("glob")">glob</a></li>
<li><a href="$expander.expandRef("select")">select</a></li>
<li><a href="$expander.expandRef("workspace")">workspace</a></li>
</ul>
<h2>Rules</h2>
Native rules ship with the Bazel binary and do not require a <code>load</code> statement.
Native rules are available globally in BUILD files. In .bzl files, you can find them in
the <code>native</code> module.
<h3>Language-specific native rules</h3>
#macro(summaryLink $page $heading)
#if ($singlePage)#${heading}#else${page}.html#${heading}#end
#end
#macro(summaryTable $ruleFamilies)
<tbody>
#foreach($ruleFamily in $ruleFamilies)
#if($ruleFamily.size() > 0)
<tr>
<td class="lang">${ruleFamily.name}</td>
#set( $ruleTypes = [$ruleFamily.binaryRules, $ruleFamily.libraryRules, $ruleFamily.testRules, $ruleFamily.otherRules1, $ruleFamily.otherRules2] )
#foreach($ruleType in $ruleTypes)
<td>
#foreach($ruleDoc in $ruleType)
<a href="#summaryLink(${ruleFamily.id}, ${ruleDoc.ruleName})"#if($ruleDoc.isDeprecated()) class="deprecated"#end>${ruleDoc.ruleName}</a>
<br />
#end
</td>
#end
</tr>
#end
#end
</tbody>
#end
<table class="table table-condensed table-striped" summary="Table of rules sorted by language">
<colgroup span="6" width="20%"></colgroup>
<thead>
<tr>
<th>Language</th>
<th>Binary rules</th>
<th>Library rules</th>
<th>Test rules</th>
<th>Other rules</th>
<th></th>
</tr>
</thead>
#summaryTable($langSpecificRuleFamilies)
</table>
<table class="table table-condensed table-striped" summary="Table of rules not specific to a programming language">
<colgroup span="6" width="20%"></colgroup>
#summaryTable($genericRuleFamilies)
</table>