Skip to main content
Functions for Starlark to access internals of the apple rule implementations.

Members

apple_host_system_env

dict apple_common.apple_host_system_env(xcode_config)
Returns a dict of environment variables that should be set for actions that need to run build tools on an Apple host system, such as the version of Xcode that should be used. The keys are variable names and the values are their corresponding values.

Parameters

ParameterDescription
xcode_configrequired A provider containing information about the xcode configuration.

apple_toolchain

apple_toolchain apple_common.apple_toolchain()
Utilities for resolving items from the apple toolchain.

AppleDebugOutputs

Provider apple_common.AppleDebugOutputs
The constructor/key for the AppleDebugOutputs provider. If a target propagates the AppleDebugOutputs provider, use this as the key with which to retrieve it. Example:
dep = ctx.attr.deps[0]
p = dep[apple_common.AppleDebugOutputs]

AppleDynamicFramework

Provider apple_common.AppleDynamicFramework
The constructor/key for the AppleDynamicFramework provider. If a target propagates the AppleDynamicFramework provider, use this as the key with which to retrieve it. Example:
dep = ctx.attr.deps[0]
p = dep[apple_common.AppleDynamicFramework]

AppleExecutableBinary

Provider apple_common.AppleExecutableBinary
The constructor/key for the AppleExecutableBinary provider. If a target propagates the AppleExecutableBinary provider, use this as the key with which to retrieve it. Example:
dep = ctx.attr.deps[0]
p = dep[apple_common.AppleExecutableBinary]

dotted_version

DottedVersion apple_common.dotted_version(version)
Creates a new DottedVersion instance.

Parameters

ParameterDescription
versionrequired
struct apple_common.link_multi_arch_binary(ctx, avoid_deps=None, extra_linkopts=[], extra_link_inputs=[], extra_requested_features=[], extra_disabled_features=[], stamp=-1)
Links a (potentially multi-architecture) binary targeting Apple platforms. This method comprises a bulk of the logic of the Starlark apple_binary rule in the rules_apple domain and exists to aid in the migration of its linking logic to Starlark in rules_apple. This API is highly experimental and subject to change at any time. Do not depend on the stability of this function at this time.

Parameters

ParameterDescription
ctxrequired
avoid_depssequence of Targets; or None; default is None
extra_linkoptssequence of strings; default is [] Extra linkopts to be passed to the linker action.
extra_link_inputssequence of Files; default is [] Extra files to pass to the linker action.
extra_requested_featuressequence of strings; default is [] Extra requested features to be passed to the linker action.
extra_disabled_featuressequence of strings; default is [] Extra disabled features to be passed to the linker action.
stampdefault is -1 Whether to include build information in the linked binary. If 1, build information is always included. If 0, build information is always excluded. If -1 (the default), then the behavior is determined by the —[no]stamp flag. This should be set to 0 when generating the executable output for test rules.
struct apple_common.link_multi_arch_static_library(ctx)
Links a (potentially multi-architecture) static library targeting Apple platforms. This method comprises a part of the Starlark apple_static_library rule logic, in the rules_apple domain and exists to aid in the migration of its linking logic to Starlark in rules_apple. This API is highly experimental and subject to change at any time. Do not depend on the stability of this function at this time.

Parameters

ParameterDescription
ctxrequired The Starlark rule context.

new_dynamic_framework_provider

AppleDynamicFramework apple_common.new_dynamic_framework_provider(binary=None, cc_info=None, objc=None, framework_dirs=None, framework_files=None)
Creates a new AppleDynamicFramework provider instance.

Parameters

ParameterDescription
binaryFile; or None; default is None The dylib binary artifact of the dynamic framework.
cc_infodefault is None A CcInfo which contains information about the transitive dependencies linked into the binary.
objcdefault is None An ObjcProvider which contains information about the transitive dependencies linked into the binary.
framework_dirsdepset of strings; or None; default is None The framework path names used as link inputs in order to link against the dynamic framework.
framework_filesdepset of Files; or None; default is None The full set of artifacts that should be included as inputs to link against the dynamic framework

new_executable_binary_provider

AppleExecutableBinary apple_common.new_executable_binary_provider(binary=None, cc_info=None, objc=None)
Creates a new AppleExecutableBinaryInfo provider instance.

Parameters

ParameterDescription
binaryFile; or None; default is None The binary artifact of the executable.
cc_infodefault is None A CcInfo which contains information about the transitive dependencies linked into the binary.
objcdefault is None An ObjcProvider which contains information about the transitive dependencies linked into the binary.

new_objc_provider

ObjcProvider apple_common.new_objc_provider(**kwargs)
Creates a new ObjcProvider instance.

Parameters

ParameterDescription
kwargsdefault is {} Dictionary of arguments.

Objc

Provider apple_common.Objc
The constructor/key for the Objc provider. If a target propagates the Objc provider, use this as the key with which to retrieve it. Example:
dep = ctx.attr.deps[0]
p = dep[apple_common.Objc]

platform

struct apple_common.platform
An enum-like struct that contains the following fields corresponding to Apple platforms:
  • ios_device
  • ios_simulator
  • macos
  • tvos_device
  • tvos_simulator
  • visionos_device
  • visionos_simulator
  • watchos_device
  • watchos_simulator
These values can be passed to methods that expect a platform, like XcodeVersionConfig.sdk_version_for_platform.

platform_type

struct apple_common.platform_type
An enum-like struct that contains the following fields corresponding to Apple platform types:
  • ios
  • macos
  • tvos
  • visionos
  • watchos
These values can be passed to methods that expect a platform type, like the ‘apple’ configuration fragment’s multi_arch_platform method. Example:
ctx.fragments.apple.multi_arch_platform(apple_common.platform_type.ios)

target_apple_env

dict apple_common.target_apple_env(xcode_config, platform)
Returns a dict of environment variables that should be set for actions that build targets of the given Apple platform type. For example, this dictionary contains variables that denote the platform name and SDK version with which to build. The keys are variable names and the values are their corresponding values.

Parameters

ParameterDescription
xcode_configrequired
platformrequired

XcodeProperties

Provider apple_common.XcodeProperties
The constructor/key for the XcodeVersionProperties provider. If a target propagates the XcodeVersionProperties provider, use this as the key with which to retrieve it. Example:
dep = ctx.attr.deps[0]
p = dep[apple_common.XcodeVersionProperties]

XcodeVersionConfig

Provider apple_common.XcodeVersionConfig
The constructor/key for the XcodeVersionConfig provider.