<html devsite>
<head>
  <meta name="project_path" value="/_project.yaml">
  <meta name="book_path" value="/versions/6.3.0/_book.yaml">
</head>
<body>
<!--
 This document is synchronized with Bazel releases.
 To edit, submit changes to the Bazel source code.
-->

<!-- Generated by //src/main/java/com/google/devtools/build/docgen:build-encyclopedia.zip -->
<html>
<body>

<h1 class="page-title">Objective-C Rules</h1>



<h2>Rules</h2>
<ul>
  <li>
    <a href="#j2objc_library">
      j2objc_library    </a>
  </li>
  <li>
    <a href="#objc_import">
      objc_import    </a>
  </li>
  <li>
    <a href="#objc_library">
      objc_library    </a>
  </li>
  <li>
    <a href="#available_xcodes">
      available_xcodes    </a>
  </li>
  <li>
    <a href="#xcode_config">
      xcode_config    </a>
  </li>
  <li>
    <a href="#xcode_version">
      xcode_version    </a>
  </li>
</ul>

  <h2 id="j2objc_library">
    j2objc_library
  </h2>

  <pre class="rule-signature">j2objc_library(<a href="#j2objc_library.name">name</a>, <a href="#j2objc_library.deps">deps</a>, <a href="common-definitions.html#common.compatible_with">compatible_with</a>, <a href="common-definitions.html#common.deprecation">deprecation</a>, <a href="common-definitions.html#common.distribs">distribs</a>, <a href="#j2objc_library.entry_classes">entry_classes</a>, <a href="common-definitions.html#common.features">features</a>, <a href="#j2objc_library.jre_deps">jre_deps</a>, <a href="common-definitions.html#typical.licenses">licenses</a>, <a href="common-definitions.html#common.restricted_to">restricted_to</a>, <a href="common-definitions.html#common.tags">tags</a>, <a href="common-definitions.html#common.target_compatible_with">target_compatible_with</a>, <a href="common-definitions.html#common.testonly">testonly</a>, <a href="common-definitions.html#common.visibility">visibility</a>)</pre>


<p> This rule uses <a href="https://github.com/google/j2objc">J2ObjC</a> to translate Java source
files to Objective-C, which then can be used used as dependencies of objc_library and objc_binary
rules. Detailed information about J2ObjC itself can be found at  <a href="http://j2objc.org">the
J2ObjC site</a>
</p>
<p>Custom J2ObjC transpilation flags can be specified using the build flag
<code>--j2objc_translation_flags</code> in the command line.
</p>
<p>Please note that the translated files included in a j2objc_library target will be
compiled using the default compilation configuration, the same configuration as for the sources of
an objc_library rule with no compilation options specified in attributes.
</p>
<p>Plus, generated code is de-duplicated at target level, not source level. If you have two
different Java targets that include the same Java source files, you may see a duplicate symbol error
at link time. The correct way to resolve this issue is to move the shared Java source files into a
separate common target that can be depended upon.
</p>




  <h3 id="j2objc_library_args">Arguments</h3>
  <table class="table table-condensed table-bordered table-params">
    <colgroup>
      <col class="col-param" />
      <col class="param-description" />
    </colgroup>
    <thead>
      <tr>
        <th colspan="2">Attributes</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td id="j2objc_library.name"><code>name</code></td>
        <td>
          <p><code><a href="/versions/6.3.0/concepts/labels#target-names">Name</a>; required</code></p>
          <p>A unique name for this target.</p>

        </td>
      </tr>
                <tr>
        <td id="j2objc_library.deps">
          <code>deps</code>
        </td>
        <td>
                    <p><code>List of <a href="/versions/6.3.0/concepts/labels">labels</a>; optional</code></p>
                            A list of <code>j2objc_library</code>, <code>java_library</code>,
        <code>java_import</code> and <code>java_proto_library</code> targets that contain
        Java files to be transpiled to Objective-C.
        <p>All <code>java_library</code> and <code>java_import</code> targets that can be reached
        transitively through <code>exports</code>, <code>deps</code> and <code>runtime_deps</code>
        will be translated and compiled. Currently there is no support for files generated by Java
        annotation processing or <code>java_import</code> targets with no <code>srcjar</code>
        specified.
        </p>
        <p>The J2ObjC translation works differently depending on the type of source Java source
        files included in the transitive closure. For each .java source files included in
        <code>srcs</code> of <code>java_library</code>, a corresponding .h and .m source file
        will be generated. For each source jar included in <code>srcs</code> of
        <code>java_library</code> or <code>srcjar</code> of <code>java_import</code>, a
        corresponding .h and .m source file will be generated with all the code for that jar.
        </p>
        <p>Users can import the J2ObjC-generated header files in their code. The import paths for
        these files are the root-relative path of the original Java artifacts. For example,
        <code>//some/package/foo.java</code> has an import path of <code>some/package/foo.h</code>
        and <code>//some/package/bar.srcjar</code> has <code>some/package/bar.h</code
        </p>
        <p>
        If proto_library rules are in the transitive closure of this rule, J2ObjC protos will also
        be generated, compiled and linked-in at the binary level. For proto
        <code>//some/proto/foo.proto</code>, users can reference the generated code using import
        path <code>some/proto/foo.j2objc.pb.h</code>.
        </p>

        </td>
      </tr>
                                                    <tr>
        <td id="j2objc_library.entry_classes">
          <code>entry_classes</code>
        </td>
        <td>
                    <p><code>List of strings; optional</code></p>
                            The list of Java classes whose translated ObjC counterparts will be referenced directly
        by user ObjC code. This attribute is required if flag <code>--j2objc_dead_code_removal
        </code> is on. The Java classes should be specified in their canonical names as defined by
        <a href="http://docs.oracle.com/javase/specs/jls/se8/html/jls-6.html#jls-6.7">the Java
        Language Specification.</a>
        When flag <code>--j2objc_dead_code_removal</code> is specified, the list of entry classes
        will be collected transitively and used as entry points to perform dead code analysis.
        Unused classes will then be removed from the final ObjC app bundle.

        </td>
      </tr>
                                <tr>
        <td id="j2objc_library.jre_deps">
          <code>jre_deps</code>
        </td>
        <td>
                    <p><code>List of <a href="/versions/6.3.0/concepts/labels">labels</a>; optional</code></p>
                            The list of additional JRE emulation libraries required by all Java code translated by this
        <code>j2objc_library</code> rule. Only core JRE functionality is linked by default.

        </td>
      </tr>
                                                                          </tbody>
  </table>
  <h2 id="objc_import">
    objc_import
  </h2>

  <pre class="rule-signature">objc_import(<a href="#objc_import.name">name</a>, <a href="#objc_import.hdrs">hdrs</a>, <a href="#objc_import.alwayslink">alwayslink</a>, <a href="#objc_import.archives">archives</a>, <a href="common-definitions.html#common.compatible_with">compatible_with</a>, <a href="common-definitions.html#common.deprecation">deprecation</a>, <a href="common-definitions.html#common.distribs">distribs</a>, <a href="common-definitions.html#common.features">features</a>, <a href="#objc_import.includes">includes</a>, <a href="common-definitions.html#typical.licenses">licenses</a>, <a href="common-definitions.html#common.restricted_to">restricted_to</a>, <a href="#objc_import.sdk_dylibs">sdk_dylibs</a>, <a href="#objc_import.sdk_frameworks">sdk_frameworks</a>, <a href="#objc_import.sdk_includes">sdk_includes</a>, <a href="common-definitions.html#common.tags">tags</a>, <a href="common-definitions.html#common.target_compatible_with">target_compatible_with</a>, <a href="common-definitions.html#common.testonly">testonly</a>, <a href="#objc_import.textual_hdrs">textual_hdrs</a>, <a href="common-definitions.html#common.visibility">visibility</a>, <a href="#objc_import.weak_sdk_frameworks">weak_sdk_frameworks</a>)</pre>


<p>This rule encapsulates an already-compiled static library in the form of an
<code>.a</code> file. It also allows exporting headers and resources using the same
attributes supported by <code>objc_library</code>.</p>



  <h3 id="objc_import_args">Arguments</h3>
  <table class="table table-condensed table-bordered table-params">
    <colgroup>
      <col class="col-param" />
      <col class="param-description" />
    </colgroup>
    <thead>
      <tr>
        <th colspan="2">Attributes</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td id="objc_import.name"><code>name</code></td>
        <td>
          <p><code><a href="/versions/6.3.0/concepts/labels#target-names">Name</a>; required</code></p>
          <p>A unique name for this target.</p>

        </td>
      </tr>
                <tr>
        <td id="objc_import.hdrs">
          <code>hdrs</code>
        </td>
        <td>
                    <p><code>List of <a href="/versions/6.3.0/concepts/labels">labels</a>; optional</code></p>
                              The list of C, C++, Objective-C, and Objective-C++ header files published
          by this library to be included by sources in dependent rules.
          <p>
          These headers describe the public interface for the library and will be
          made available for inclusion by sources in this rule or in dependent
          rules. Headers not meant to be included by a client of this library
          should be listed in the srcs attribute instead.
          <p>
          These will be compiled separately from the source if modules are enabled.

        </td>
      </tr>
                      <tr>
        <td id="objc_import.alwayslink">
          <code>alwayslink</code>
        </td>
        <td>
                    <p><code>Boolean; optional; default is False</code></p>
                              If 1, any bundle or binary that depends (directly or indirectly) on this
          library will link in all the object files for the files listed in
          <code>srcs</code> and <code>non_arc_srcs</code>, even if some contain no
          symbols referenced by the binary.
          This is useful if your code isn't explicitly called by code in
          the binary, e.g., if your code registers to receive some callback
          provided by some service.

        </td>
      </tr>
                      <tr>
        <td id="objc_import.archives">
          <code>archives</code>
        </td>
        <td>
                    <p><code>List of <a href="/versions/6.3.0/concepts/labels">labels</a>; required</code></p>
                            The list of <code>.a</code> files provided to Objective-C targets that
        depend on this target.

        </td>
      </tr>
                                                              <tr>
        <td id="objc_import.includes">
          <code>includes</code>
        </td>
        <td>
                    <p><code>List of strings; optional</code></p>
                              List of <code>#include/#import</code> search paths to add to this target
          and all depending targets.

          This is to support third party and open-sourced libraries that do not
          specify the entire workspace path in their
          <code>#import/#include</code> statements.
          <p>
          The paths are interpreted relative to the package directory, and the
          genfiles and bin roots (e.g. <code>blaze-genfiles/pkg/includedir</code>
          and <code>blaze-out/pkg/includedir</code>) are included in addition to the
          actual client root.
          <p>
          Unlike <a href="/versions/6.3.0/reference/be/objective-c.html#objc_library.copts">COPTS</a>, these flags are added for this rule
          and every rule that depends on it. (Note: not the rules it depends upon!) Be
          very careful, since this may have far-reaching effects.  When in doubt, add
          "-iquote" flags to <a href="/versions/6.3.0/reference/be/objective-c.html#objc_library.copts">COPTS</a> instead.

        </td>
      </tr>
                                          <tr>
        <td id="objc_import.sdk_dylibs">
          <code>sdk_dylibs</code>
        </td>
        <td>
                    <p><code>List of strings; optional</code></p>
                              Names of SDK .dylib libraries to link with. For instance, "libz" or
          "libarchive".

          "libc++" is included automatically if the binary has any C++ or
          Objective-C++ sources in its dependency tree. When linking a binary,
          all libraries named in that binary's transitive dependency graph are
          used.

        </td>
      </tr>
                      <tr>
        <td id="objc_import.sdk_frameworks">
          <code>sdk_frameworks</code>
        </td>
        <td>
                    <p><code>List of strings; optional</code></p>
                              Names of SDK frameworks to link with (e.g. "AddressBook", "QuartzCore"). "UIKit" and
          "Foundation" are always included when building for the iOS, tvOS and watchOS platforms.
          For macOS, only "Foundation" is always included.

          <p> When linking a top level Apple binary, all SDK frameworks listed in that binary's
          transitive dependency graph are linked.

        </td>
      </tr>
                      <tr>
        <td id="objc_import.sdk_includes">
          <code>sdk_includes</code>
        </td>
        <td>
                    <p><code>List of strings; optional</code></p>
                              List of <code>#include/#import</code> search paths to add to this target
          and all depending targets, where each path is relative to
          <code>$(SDKROOT)/usr/include</code>.

        </td>
      </tr>
                                                    <tr>
        <td id="objc_import.textual_hdrs">
          <code>textual_hdrs</code>
        </td>
        <td>
                    <p><code>List of <a href="/versions/6.3.0/concepts/labels">labels</a>; optional</code></p>
                              The list of C, C++, Objective-C, and Objective-C++ files that are
          included as headers by source files in this rule or by users of this
          library. Unlike hdrs, these will not be compiled separately from the
          sources.

        </td>
      </tr>
                                <tr>
        <td id="objc_import.weak_sdk_frameworks">
          <code>weak_sdk_frameworks</code>
        </td>
        <td>
                    <p><code>List of strings; optional</code></p>
                              Names of SDK frameworks to weakly link with. For instance,
          "MediaAccessibility".

          In difference to regularly linked SDK frameworks, symbols
          from weakly linked frameworks do not cause an error if they
          are not present at runtime.

        </td>
      </tr>
              </tbody>
  </table>
  <h2 id="objc_library">
    objc_library
  </h2>

  <pre class="rule-signature">objc_library(<a href="#objc_library.name">name</a>, <a href="#objc_library.deps">deps</a>, <a href="#objc_library.srcs">srcs</a>, <a href="common-definitions.html#typical.data">data</a>, <a href="#objc_library.hdrs">hdrs</a>, <a href="#objc_library.alwayslink">alwayslink</a>, <a href="common-definitions.html#common.compatible_with">compatible_with</a>, <a href="#objc_library.copts">copts</a>, <a href="#objc_library.defines">defines</a>, <a href="common-definitions.html#common.deprecation">deprecation</a>, <a href="common-definitions.html#common.distribs">distribs</a>, <a href="#objc_library.enable_modules">enable_modules</a>, <a href="common-definitions.html#common.exec_compatible_with">exec_compatible_with</a>, <a href="common-definitions.html#common.exec_properties">exec_properties</a>, <a href="common-definitions.html#common.features">features</a>, <a href="#objc_library.implementation_deps">implementation_deps</a>, <a href="#objc_library.includes">includes</a>, <a href="common-definitions.html#typical.licenses">licenses</a>, <a href="#objc_library.linkopts">linkopts</a>, <a href="#objc_library.module_map">module_map</a>, <a href="#objc_library.module_name">module_name</a>, <a href="#objc_library.non_arc_srcs">non_arc_srcs</a>, <a href="#objc_library.pch">pch</a>, <a href="common-definitions.html#common.restricted_to">restricted_to</a>, <a href="#objc_library.runtime_deps">runtime_deps</a>, <a href="#objc_library.sdk_dylibs">sdk_dylibs</a>, <a href="#objc_library.sdk_frameworks">sdk_frameworks</a>, <a href="#objc_library.sdk_includes">sdk_includes</a>, <a href="common-definitions.html#common.tags">tags</a>, <a href="common-definitions.html#common.target_compatible_with">target_compatible_with</a>, <a href="common-definitions.html#common.testonly">testonly</a>, <a href="#objc_library.textual_hdrs">textual_hdrs</a>, <a href="common-definitions.html#common.toolchains">toolchains</a>, <a href="common-definitions.html#common.visibility">visibility</a>, <a href="#objc_library.weak_sdk_frameworks">weak_sdk_frameworks</a>)</pre>


<p>This rule produces a static library from the given Objective-C source files.</p>



  <h3 id="objc_library_args">Arguments</h3>
  <table class="table table-condensed table-bordered table-params">
    <colgroup>
      <col class="col-param" />
      <col class="param-description" />
    </colgroup>
    <thead>
      <tr>
        <th colspan="2">Attributes</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td id="objc_library.name"><code>name</code></td>
        <td>
          <p><code><a href="/versions/6.3.0/concepts/labels#target-names">Name</a>; required</code></p>
          <p>A unique name for this target.</p>

        </td>
      </tr>
                <tr>
        <td id="objc_library.deps">
          <code>deps</code>
        </td>
        <td>
                    <p><code>List of <a href="/versions/6.3.0/concepts/labels">labels</a>; optional</code></p>
                              The list of targets that are linked together to form the final bundle.

        </td>
      </tr>
                      <tr>
        <td id="objc_library.srcs">
          <code>srcs</code>
        </td>
        <td>
                    <p><code>List of <a href="/versions/6.3.0/concepts/labels">labels</a>; optional</code></p>
                              The list of C, C++, Objective-C, and Objective-C++ source and header
          files, and/or (`.s`, `.S`, or `.asm`) assembly source files, that are processed to create
          the library target.
          These are your checked-in files, plus any generated files.
          Source files are compiled into .o files with Clang. Header files
          may be included/imported by any source or header in the srcs attribute
          of this target, but not by headers in hdrs or any targets that depend
          on this rule.
          Additionally, precompiled .o files may be given as srcs.  Be careful to
          ensure consistency in the architecture of provided .o files and that of the
          build to avoid missing symbol linker errors.

        </td>
      </tr>
                                <tr>
        <td id="objc_library.hdrs">
          <code>hdrs</code>
        </td>
        <td>
                    <p><code>List of <a href="/versions/6.3.0/concepts/labels">labels</a>; optional</code></p>
                              The list of C, C++, Objective-C, and Objective-C++ header files published
          by this library to be included by sources in dependent rules.
          <p>
          These headers describe the public interface for the library and will be
          made available for inclusion by sources in this rule or in dependent
          rules. Headers not meant to be included by a client of this library
          should be listed in the srcs attribute instead.
          <p>
          These will be compiled separately from the source if modules are enabled.

        </td>
      </tr>
                      <tr>
        <td id="objc_library.alwayslink">
          <code>alwayslink</code>
        </td>
        <td>
                    <p><code>Boolean; optional; default is False</code></p>
                              If 1, any bundle or binary that depends (directly or indirectly) on this
          library will link in all the object files for the files listed in
          <code>srcs</code> and <code>non_arc_srcs</code>, even if some contain no
          symbols referenced by the binary.
          This is useful if your code isn't explicitly called by code in
          the binary, e.g., if your code registers to receive some callback
          provided by some service.

        </td>
      </tr>
                                <tr>
        <td id="objc_library.copts">
          <code>copts</code>
        </td>
        <td>
                    <p><code>List of strings; optional</code></p>
                              Extra flags to pass to the compiler.
          Subject to <a href="/versions/6.3.0/reference/be/make-variables">"Make variable"</a> substitution and
          <a href="/versions/6.3.0/reference/be/common-definitions#sh-tokenization">Bourne shell tokenization</a>.
          These flags will only apply to this target, and not those upon which
          it depends, or those which depend on it.
          <p>
          Note that for the generated Xcode project, directory paths specified using "-I" flags in
          copts are parsed out, prepended with "$(WORKSPACE_ROOT)/" if they are relative paths, and
          added to the header search paths for the associated Xcode target.

        </td>
      </tr>
                      <tr>
        <td id="objc_library.defines">
          <code>defines</code>
        </td>
        <td>
                    <p><code>List of strings; optional</code></p>
                              Extra <code>-D</code> flags to pass to the compiler. They should be in
          the form <code>KEY=VALUE</code> or simply <code>KEY</code> and are
          passed not only to the compiler for this target (as <code>copts</code>
          are) but also to all <code>objc_</code> dependers of this target.
          Subject to <a href="/versions/6.3.0/reference/be/make-variables">"Make variable"</a> substitution and
          <a href="/versions/6.3.0/reference/be/common-definitions#sh-tokenization">Bourne shell tokenization</a>.

        </td>
      </tr>
                                          <tr>
        <td id="objc_library.enable_modules">
          <code>enable_modules</code>
        </td>
        <td>
                    <p><code>Boolean; optional; default is False</code></p>
                              Enables clang module support (via -fmodules).
          Setting this to 1 will allow you to @import system headers and other targets:
          @import UIKit;
          @import path_to_package_target;

        </td>
      </tr>
                                                    <tr>
        <td id="objc_library.implementation_deps">
          <code>implementation_deps</code>
        </td>
        <td>
                    <p><code>List of <a href="/versions/6.3.0/concepts/labels">labels</a>; optional</code></p>
                              The list of other libraries that the library target depends on. Unlike with
          <code>deps</code>, the headers and include paths of these libraries (and all their
          transitive deps) are only used for compilation of this library, and not libraries that
          depend on it. Libraries specified with <code>implementation_deps</code> are still linked
          in binary targets that depend on this library.

        </td>
      </tr>
                      <tr>
        <td id="objc_library.includes">
          <code>includes</code>
        </td>
        <td>
                    <p><code>List of strings; optional</code></p>
                              List of <code>#include/#import</code> search paths to add to this target
          and all depending targets.

          This is to support third party and open-sourced libraries that do not
          specify the entire workspace path in their
          <code>#import/#include</code> statements.
          <p>
          The paths are interpreted relative to the package directory, and the
          genfiles and bin roots (e.g. <code>blaze-genfiles/pkg/includedir</code>
          and <code>blaze-out/pkg/includedir</code>) are included in addition to the
          actual client root.
          <p>
          Unlike <a href="/versions/6.3.0/reference/be/objective-c.html#objc_library.copts">COPTS</a>, these flags are added for this rule
          and every rule that depends on it. (Note: not the rules it depends upon!) Be
          very careful, since this may have far-reaching effects.  When in doubt, add
          "-iquote" flags to <a href="/versions/6.3.0/reference/be/objective-c.html#objc_library.copts">COPTS</a> instead.

        </td>
      </tr>
                                <tr>
        <td id="objc_library.linkopts">
          <code>linkopts</code>
        </td>
        <td>
                    <p><code>List of strings; optional</code></p>
                              Extra flags to pass to the linker.

        </td>
      </tr>
                      <tr>
        <td id="objc_library.module_map">
          <code>module_map</code>
        </td>
        <td>
                    <p><code><a href="/versions/6.3.0/concepts/labels">Label</a>; optional</code></p>
                              A custom Clang module map for this target. Use of a custom module map is discouraged. Most
          users should use module maps generated by Bazel.
          If specified, Bazel will not generate a module map for this target, but will pass the
          provided module map to the compiler.

        </td>
      </tr>
                      <tr>
        <td id="objc_library.module_name">
          <code>module_name</code>
        </td>
        <td>
                    <p><code>String; optional</code></p>
                              Sets the module name for this target. By default the module name is the target path with
          all special symbols replaced by _, e.g. //foo/baz:bar can be imported as foo_baz_bar.

        </td>
      </tr>
                      <tr>
        <td id="objc_library.non_arc_srcs">
          <code>non_arc_srcs</code>
        </td>
        <td>
                    <p><code>List of <a href="/versions/6.3.0/concepts/labels">labels</a>; optional</code></p>
                              The list of Objective-C files that are processed to create the
          library target that DO NOT use ARC.
          The files in this attribute are treated very similar to those in the
          srcs attribute, but are compiled without ARC enabled.

        </td>
      </tr>
                      <tr>
        <td id="objc_library.pch">
          <code>pch</code>
        </td>
        <td>
                    <p><code><a href="/versions/6.3.0/concepts/labels">Label</a>; optional</code></p>
                              Header file to prepend to every source file being compiled (both arc
          and non-arc).
          Use of pch files is actively discouraged in BUILD files, and this should be
          considered deprecated. Since pch files are not actually precompiled this is not
          a build-speed enhancement, and instead is just a global dependency. From a build
          efficiency point of view you are actually better including what you need directly
          in your sources where you need it.

        </td>
      </tr>
                                <tr>
        <td id="objc_library.runtime_deps">
          <code>runtime_deps</code>
        </td>
        <td>
                    <p><code>List of <a href="/versions/6.3.0/concepts/labels">labels</a>; optional</code></p>
                              The list of framework targets that are late loaded at runtime.  They are included in the
          app bundle but not linked against at build time.

        </td>
      </tr>
                      <tr>
        <td id="objc_library.sdk_dylibs">
          <code>sdk_dylibs</code>
        </td>
        <td>
                    <p><code>List of strings; optional</code></p>
                              Names of SDK .dylib libraries to link with. For instance, "libz" or
          "libarchive".

          "libc++" is included automatically if the binary has any C++ or
          Objective-C++ sources in its dependency tree. When linking a binary,
          all libraries named in that binary's transitive dependency graph are
          used.

        </td>
      </tr>
                      <tr>
        <td id="objc_library.sdk_frameworks">
          <code>sdk_frameworks</code>
        </td>
        <td>
                    <p><code>List of strings; optional</code></p>
                              Names of SDK frameworks to link with (e.g. "AddressBook", "QuartzCore"). "UIKit" and
          "Foundation" are always included when building for the iOS, tvOS and watchOS platforms.
          For macOS, only "Foundation" is always included.

          <p> When linking a top level Apple binary, all SDK frameworks listed in that binary's
          transitive dependency graph are linked.

        </td>
      </tr>
                      <tr>
        <td id="objc_library.sdk_includes">
          <code>sdk_includes</code>
        </td>
        <td>
                    <p><code>List of strings; optional</code></p>
                              List of <code>#include/#import</code> search paths to add to this target
          and all depending targets, where each path is relative to
          <code>$(SDKROOT)/usr/include</code>.

        </td>
      </tr>
                                                    <tr>
        <td id="objc_library.textual_hdrs">
          <code>textual_hdrs</code>
        </td>
        <td>
                    <p><code>List of <a href="/versions/6.3.0/concepts/labels">labels</a>; optional</code></p>
                              The list of C, C++, Objective-C, and Objective-C++ files that are
          included as headers by source files in this rule or by users of this
          library. Unlike hdrs, these will not be compiled separately from the
          sources.

        </td>
      </tr>
                                          <tr>
        <td id="objc_library.weak_sdk_frameworks">
          <code>weak_sdk_frameworks</code>
        </td>
        <td>
                    <p><code>List of strings; optional</code></p>
                              Names of SDK frameworks to weakly link with. For instance,
          "MediaAccessibility".

          In difference to regularly linked SDK frameworks, symbols
          from weakly linked frameworks do not cause an error if they
          are not present at runtime.

        </td>
      </tr>
              </tbody>
  </table>
  <h2 id="available_xcodes">
    available_xcodes
  </h2>

  <pre class="rule-signature">available_xcodes(<a href="#available_xcodes.name">name</a>, <a href="#available_xcodes.default">default</a>, <a href="common-definitions.html#common.deprecation">deprecation</a>, <a href="common-definitions.html#common.distribs">distribs</a>, <a href="common-definitions.html#common.features">features</a>, <a href="common-definitions.html#typical.licenses">licenses</a>, <a href="common-definitions.html#common.tags">tags</a>, <a href="common-definitions.html#common.testonly">testonly</a>, <a href="#available_xcodes.versions">versions</a>, <a href="common-definitions.html#common.visibility">visibility</a>)</pre>


<p>Two targets of this rule can be depended on by an <code>xcode_config</code> rule instance to
indicate the remotely and locally available xcode versions.
This allows selection of an official xcode version from the collectively available xcodes.</p>



  <h3 id="available_xcodes_args">Arguments</h3>
  <table class="table table-condensed table-bordered table-params">
    <colgroup>
      <col class="col-param" />
      <col class="param-description" />
    </colgroup>
    <thead>
      <tr>
        <th colspan="2">Attributes</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td id="available_xcodes.name"><code>name</code></td>
        <td>
          <p><code><a href="/versions/6.3.0/concepts/labels#target-names">Name</a>; required</code></p>
          <p>A unique name for this target.</p>

        </td>
      </tr>
                <tr>
        <td id="available_xcodes.default">
          <code>default</code>
        </td>
        <td>
                    <p><code><a href="/versions/6.3.0/concepts/labels">Label</a>; required; <a href="common-definitions.html#configurable-attributes">nonconfigurable</a></code></p>
                            The default xcode version for this platform.

        </td>
      </tr>
                                                                                  <tr>
        <td id="available_xcodes.versions">
          <code>versions</code>
        </td>
        <td>
                    <p><code>List of <a href="/versions/6.3.0/concepts/labels">labels</a>; optional; <a href="common-definitions.html#configurable-attributes">nonconfigurable</a></code></p>
                            The xcode versions that are available on this platform.

        </td>
      </tr>
                        </tbody>
  </table>
  <h2 id="xcode_config">
    xcode_config
  </h2>

  <pre class="rule-signature">xcode_config(<a href="#xcode_config.name">name</a>, <a href="#xcode_config.default">default</a>, <a href="common-definitions.html#common.deprecation">deprecation</a>, <a href="common-definitions.html#common.distribs">distribs</a>, <a href="common-definitions.html#common.features">features</a>, <a href="common-definitions.html#typical.licenses">licenses</a>, <a href="#xcode_config.local_versions">local_versions</a>, <a href="#xcode_config.remote_versions">remote_versions</a>, <a href="common-definitions.html#common.tags">tags</a>, <a href="common-definitions.html#common.testonly">testonly</a>, <a href="#xcode_config.versions">versions</a>, <a href="common-definitions.html#common.visibility">visibility</a>)</pre>


<p>A single target of this rule can be referenced by the <code>--xcode_version_config</code> build
flag to translate the <code>--xcode_version</code> flag into an accepted official xcode version.
This allows selection of an official xcode version from a number of registered aliases.</p>



  <h3 id="xcode_config_args">Arguments</h3>
  <table class="table table-condensed table-bordered table-params">
    <colgroup>
      <col class="col-param" />
      <col class="param-description" />
    </colgroup>
    <thead>
      <tr>
        <th colspan="2">Attributes</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td id="xcode_config.name"><code>name</code></td>
        <td>
          <p><code><a href="/versions/6.3.0/concepts/labels#target-names">Name</a>; required</code></p>
          <p>A unique name for this target.</p>

        </td>
      </tr>
                <tr>
        <td id="xcode_config.default">
          <code>default</code>
        </td>
        <td>
                    <p><code><a href="/versions/6.3.0/concepts/labels">Label</a>; optional; <a href="common-definitions.html#configurable-attributes">nonconfigurable</a></code></p>
                            The default official version of xcode to use.
        The version specified by the provided <code>xcode_version</code> target is to be used if
        no <code>xcode_version</code> build flag is specified. This is required if any
        <code>versions</code> are set. This may not be set if <code>remote_versions</code> or
        <code>local_versions</code> is set.

        </td>
      </tr>
                                                              <tr>
        <td id="xcode_config.local_versions">
          <code>local_versions</code>
        </td>
        <td>
                    <p><code><a href="/versions/6.3.0/concepts/labels">Label</a>; optional; <a href="common-definitions.html#configurable-attributes">nonconfigurable</a></code></p>
                            The <code>xcode_version<code> targets that are available locally.
        These are used along with <code>local_versions</code> to select a mutually available
        version. This may not be set if <code>versions</code> is set.

        </td>
      </tr>
                      <tr>
        <td id="xcode_config.remote_versions">
          <code>remote_versions</code>
        </td>
        <td>
                    <p><code><a href="/versions/6.3.0/concepts/labels">Label</a>; optional; <a href="common-definitions.html#configurable-attributes">nonconfigurable</a></code></p>
                            The <code>xcode_version<code> targets that are available remotely.
        These are used along with <code>remote_versions</code> to select a mutually available
        version. This may not be set if <code>versions</code> is set.

        </td>
      </tr>
                                          <tr>
        <td id="xcode_config.versions">
          <code>versions</code>
        </td>
        <td>
                    <p><code>List of <a href="/versions/6.3.0/concepts/labels">labels</a>; optional; <a href="common-definitions.html#configurable-attributes">nonconfigurable</a></code></p>
                            Accepted <code>xcode_version<code> targets that may be used.
        If the value of the <code>xcode_version</code> build flag matches one of the aliases
        or version number of any of the given <code>xcode_version</code> targets, the matching
        target will be used. This may not be set if <code>remote_versions</code> or
        <code>local_versions</code> is set.

        </td>
      </tr>
                        </tbody>
  </table>
  <h2 id="xcode_version">
    xcode_version
  </h2>

  <pre class="rule-signature">xcode_version(<a href="#xcode_version.name">name</a>, <a href="#xcode_version.default_ios_sdk_version">default_ios_sdk_version</a>, <a href="#xcode_version.default_macos_sdk_version">default_macos_sdk_version</a>, <a href="#xcode_version.default_tvos_sdk_version">default_tvos_sdk_version</a>, <a href="#xcode_version.default_watchos_sdk_version">default_watchos_sdk_version</a>, <a href="common-definitions.html#common.deprecation">deprecation</a>, <a href="common-definitions.html#common.distribs">distribs</a>, <a href="common-definitions.html#common.features">features</a>, <a href="common-definitions.html#typical.licenses">licenses</a>, <a href="common-definitions.html#common.tags">tags</a>, <a href="common-definitions.html#common.testonly">testonly</a>, <a href="#xcode_version.version">version</a>, <a href="common-definitions.html#common.visibility">visibility</a>)</pre>


<p>Represents a single official xcode version with acceptable aliases for that xcode version.
See the <code>xcode_config</code> rule.</p>



  <h3 id="xcode_version_args">Arguments</h3>
  <table class="table table-condensed table-bordered table-params">
    <colgroup>
      <col class="col-param" />
      <col class="param-description" />
    </colgroup>
    <thead>
      <tr>
        <th colspan="2">Attributes</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td id="xcode_version.name"><code>name</code></td>
        <td>
          <p><code><a href="/versions/6.3.0/concepts/labels#target-names">Name</a>; required</code></p>
          <p>A unique name for this target.</p>

        </td>
      </tr>
                <tr>
        <td id="xcode_version.default_ios_sdk_version">
          <code>default_ios_sdk_version</code>
        </td>
        <td>
                    <p><code>String; optional; <a href="common-definitions.html#configurable-attributes">nonconfigurable</a></code></p>
                            The ios sdk version that is used by default when this version of xcode is being used.
        The <code>ios_sdk_version</code> build flag will override the value specified here.

        </td>
      </tr>
                      <tr>
        <td id="xcode_version.default_macos_sdk_version">
          <code>default_macos_sdk_version</code>
        </td>
        <td>
                    <p><code>String; optional; <a href="common-definitions.html#configurable-attributes">nonconfigurable</a></code></p>
                            The macosx sdk version that is used by default when this version of xcode is being used.
        The <code>macos_sdk_version</code> build flag will override the value specified here.

        </td>
      </tr>
                      <tr>
        <td id="xcode_version.default_tvos_sdk_version">
          <code>default_tvos_sdk_version</code>
        </td>
        <td>
                    <p><code>String; optional; <a href="common-definitions.html#configurable-attributes">nonconfigurable</a></code></p>
                            The tvos sdk version that is used by default when this version of xcode is being used.
        The <code>tvos_sdk_version</code> build flag will override the value specified here.

        </td>
      </tr>
                      <tr>
        <td id="xcode_version.default_watchos_sdk_version">
          <code>default_watchos_sdk_version</code>
        </td>
        <td>
                    <p><code>String; optional; <a href="common-definitions.html#configurable-attributes">nonconfigurable</a></code></p>
                            The watchos sdk version that is used by default when this version of xcode is being used.
        The <code>watchos_sdk_version</code> build flag will override the value specified here.

        </td>
      </tr>
                                                                                  <tr>
        <td id="xcode_version.version">
          <code>version</code>
        </td>
        <td>
                    <p><code>String; required; <a href="common-definitions.html#configurable-attributes">nonconfigurable</a></code></p>
                            The official version number of a version of Xcode.

        </td>
      </tr>
                        </tbody>
  </table>

<!-- Generated footer -->

</body>
</html>
