Class SwiftCompile

    • Method Detail

      • isCacheable

        public boolean isCacheable()
        Description copied from interface: BuildRule
        Whether this BuildRule can be cached.

        Uncached build rules are never written out to cache, never read from cache, and does not count in cache statistics. This rule is useful for artifacts which cannot be easily normalized.

        Uncached rules are not always rebuilt, however, as long as the existing on-disk representation is up to date. This means that these rules can take advantage of SupportsInputBasedRuleKey to prevent rebuilding.

        Specified by:
        isCacheable in interface BuildEngineAction
        Specified by:
        isCacheable in interface BuildRule
        Overrides:
        isCacheable in class AbstractBuildRule
      • getBuildDeps

        public SortedSet<BuildRule> getBuildDeps()
        Specified by:
        getBuildDeps in interface BuildRule
        Returns:
        the set of rules that must be built before this rule. Normally, this matches the value of the deps argument for this build rule in the build file in which it was defined.

        However, there are special cases where other arguments pull in implicit dependencies (e.g., the keystore argument in android_binary). In these cases, the implicit dependencies are also included in the set returned by this method. The value of the original deps argument, as defined in the build file, must be accessed via a custom getter provided by the build rule.

      • updateBuildRuleResolver

        public void updateBuildRuleResolver​(BuildRuleResolver ruleResolver)
        Description copied from interface: BuildRule
        Updates the BuildRuleResolver and associated objects for this build rule.

        Build rules sometimes hold field references to build rule resolvers. If this build rule is to be cached, it must update its BuildRuleResolver when a new action graph is constructed to avoid leaking the entire action graph it was originally associated with.

        Specified by:
        updateBuildRuleResolver in interface BuildRule
        Overrides:
        updateBuildRuleResolver in class AbstractBuildRule
      • getAstLinkArgs

        public com.google.common.collect.ImmutableList<Arg> getAstLinkArgs()
      • getModuleName

        public String getModuleName()
        Returns:
        The name of the Swift module.
      • getObjectPaths

        public com.google.common.collect.ImmutableList<SourcePath> getObjectPaths()
        Returns:
        List of SourcePath to the output object file(s) (i.e., .o file)
      • getObjCGeneratedHeaderFileName

        public String getObjCGeneratedHeaderFileName()
        Returns:
        File name of the Objective-C Generated Interface Header.
      • getObjCGeneratedHeaderPath

        public SourcePath getObjCGeneratedHeaderPath()
        Returns:
        SourcePath of the Objective-C Generated Interface Header.
      • getOutputPath

        public SourcePath getOutputPath()
        Returns:
        SourcePath to the directory containing outputs from the compilation process (object files, Swift module metadata, etc).
      • getSwiftModuleOutputPath

        public SourcePath getSwiftModuleOutputPath()
        Returns:
        SourcePath to the .swiftmodule output from the compilation process. A swiftmodule file contains the public interface for a module, and is basically a binary file format equivalent to header files for a C framework or library. A swiftmodule file contains serialized ASTs (and possibly SIL), it conforms to Swift Binary Serialization Format, more details about this binary format can be found here: https://github.com/apple/swift/blob/7e6d62dae4bae4eb3737a6f76c0e51534c1bcca3/docs/Serialization.rst.