#if (!$singlePage)
---
layout: documentation
title: Build Encyclopedia
---
#end
#if (!$singlePage)
#parse("com/google/devtools/build/docgen/templates/be/header.vm")
#end

<h1>Bazel BUILD Encyclopedia of Functions</h1>
<h2>Contents</h2>

<h3>Concepts and terminology</h3>

<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>
      <li><a href="$expander.expandRef("make-variables#predefined_variables")">Predefined variables</a></li>

    </ul>
  </li>
  <li><a href="$expander.expandRef("predefined-python-variables")">Predefined Python Variables</a></li>
</ul>

<h3>Functions</h3>

<ul class="be-toc">
  <li><a href="$expander.expandRef("load")">load</a></li>

  <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>

<h3>Rules</h3>

<h4>Language-specific Rules</h4>

#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>
        <td>
      #foreach($ruleDoc in $ruleFamily.binaryRules)
          <a href="#summaryLink(${ruleFamily.id}, ${ruleDoc.ruleName})"#if($ruleDoc.isDeprecated()) class="deprecated"#end>
            ${ruleDoc.ruleName}
          </a>
          <br />
      #end
        </td>
        <td>
      #foreach($ruleDoc in $ruleFamily.libraryRules)
          <a href="#summaryLink(${ruleFamily.id}, ${ruleDoc.ruleName})"#if($ruleDoc.isDeprecated()) class="deprecated"#end>
            ${ruleDoc.ruleName}
          </a>
          <br />
      #end
        </td>
        <td>
      #foreach($ruleDoc in $ruleFamily.testRules)
          <a href="#summaryLink(${ruleFamily.id}, ${ruleDoc.ruleName})"#if($ruleDoc.isDeprecated()) class="deprecated"#end>
            ${ruleDoc.ruleName}
          </a>
          <br />
      #end
        </td>
        <td>
      #foreach($ruleDoc in $ruleFamily.otherRules1)
          <a href="#summaryLink(${ruleFamily.id}, ${ruleDoc.ruleName})"#if($ruleDoc.isDeprecated()) class="deprecated"#end>
            ${ruleDoc.ruleName}
          </a>
          <br />
      #end
        </td>
        <td>
      #foreach($ruleDoc in $ruleFamily.otherRules2)
          <a href="#summaryLink(${ruleFamily.id}, ${ruleDoc.ruleName})"#if($ruleDoc.isDeprecated()) class="deprecated"#end>
            ${ruleDoc.ruleName}
          </a>
          <br />
      #end
        </td>
      </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>
<h4>Rules that do not apply to a specific programming language</h4>

<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>
#if (!$singlePage)
#parse("com/google/devtools/build/docgen/templates/be/footer.vm")
#end
