| #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> |
| |
| </ul> |
| </li> |
| </ul> |
| |
| <h3>Functions</h3> |
| |
| <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> |
| |
| <h3>Rules</h3> |
| |
| 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. |
| |
| <h4>Language-specific native 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>Native 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> |
| |
| <h4>Additional rules</h4> |
| |
| <p>Non-native rules extend Bazel's capabilities. Rules for many popular languages |
| have been created and are being maintained outside of Bazel. Contact the respective |
| rule set's maintainers regarding issues and feature requests.</p> |
| |
| <p>To find more Bazel rules, use a search engine or look on |
| <a href="https://github.com/search?o=desc&q=bazel+rules&s=stars&type=Repositories">GitHub</a>. |
| </p> |
| |
| <p>Here is a selection of popular rules:</p> |
| |
| <ul> |
| <li><a href="https://github.com/bazelbuild/rules_android">Android</a></li> |
| <li><a href="https://github.com/bazelbuild/rules_apple">Apple platforms</a></li> |
| <li><a href="https://github.com/nelhage/rules_boost">Boost</a></li> |
| <li><a href="https://github.com/bazelbuild/rules_dotnet">C#</a></li> |
| <li><a href="https://github.com/bazelbuild/rules_closure">Closure</a></li> |
| <li><a href="https://github.com/bazelbuild/rules_docker">Docker</a></li> |
| <li><a href="https://github.com/bazelbuild/rules_go">Go</a></li> |
| <li><a href="https://github.com/tweag/rules_haskell">Haskell</a></li> |
| <li><a href="https://github.com/bazelbuild/rules_jsonnet">Jsonnet</a></li> |
| <li><a href="https://github.com/bazelbuild/rules_kotlin">Kotlin</a></li> |
| <li><a href="https://github.com/bazelbuild/rules_k8s">Kubernetes</a></li> |
| <li><a href="https://github.com/bazelbuild/rules_nodejs">NodeJS</a></li> |
| <li><a href="https://github.com/pubref/rules_protobuf">Protobuf</a></li> |
| <li><a href="https://github.com/bazelbuild/rules_python">Python</a></li> |
| <li><a href="https://github.com/bazelbuild/rules_rust">Rust</a></li> |
| <li><a href="https://github.com/bazelbuild/rules_scala">Scala</a></li> |
| <li><a href="https://github.com/bazelbuild/rules_swift">Swift</a></li> |
| <li><a href="https://github.com/bazelbuild/rules_typescript">Typescript</a></li> |
| <li><a href="https://github.com/bazelbuild/rules_webtesting">Webtesting</a> (Webdriver)</li> |
| </ul> |
| |
| <p>The repository |
| <a href="https://github.com/bazelbuild/bazel-skylib">Skylib</a> |
| contains additional functions that can be useful when writing new rules |
| and new macros.</p> |
| |
| #if (!$singlePage) |
| #parse("com/google/devtools/build/docgen/templates/be/footer.vm") |
| #end |