diff options
Diffstat (limited to 'android/arch.go')
-rw-r--r-- | android/arch.go | 89 |
1 files changed, 50 insertions, 39 deletions
diff --git a/android/arch.go b/android/arch.go index b5bd2f080..a0895edf8 100644 --- a/android/arch.go +++ b/android/arch.go @@ -524,26 +524,29 @@ var DarwinUniversalVariantTag = archDepTag{name: "darwin universal binary"} // archMutator splits a module into a variant for each Target requested by the module. Target selection // for a module is in three levels, OsClass, multilib, and then Target. // OsClass selection is determined by: -// - The HostOrDeviceSupported value passed in to InitAndroidArchModule by the module type factory, which selects -// whether the module type can compile for host, device or both. -// - The host_supported and device_supported properties on the module. +// - The HostOrDeviceSupported value passed in to InitAndroidArchModule by the module type factory, which selects +// whether the module type can compile for host, device or both. +// - The host_supported and device_supported properties on the module. +// // If host is supported for the module, the Host and HostCross OsClasses are selected. If device is supported // for the module, the Device OsClass is selected. // Within each selected OsClass, the multilib selection is determined by: -// - The compile_multilib property if it set (which may be overridden by target.android.compile_multilib or -// target.host.compile_multilib). -// - The default multilib passed to InitAndroidArchModule if compile_multilib was not set. +// - The compile_multilib property if it set (which may be overridden by target.android.compile_multilib or +// target.host.compile_multilib). +// - The default multilib passed to InitAndroidArchModule if compile_multilib was not set. +// // Valid multilib values include: -// "both": compile for all Targets supported by the OsClass (generally x86_64 and x86, or arm64 and arm). -// "first": compile for only a single preferred Target supported by the OsClass. This is generally x86_64 or arm64, -// but may be arm for a 32-bit only build. -// "32": compile for only a single 32-bit Target supported by the OsClass. -// "64": compile for only a single 64-bit Target supported by the OsClass. -// "common": compile a for a single Target that will work on all Targets supported by the OsClass (for example Java). -// "common_first": compile a for a Target that will work on all Targets supported by the OsClass -// (same as "common"), plus a second Target for the preferred Target supported by the OsClass -// (same as "first"). This is used for java_binary that produces a common .jar and a wrapper -// executable script. +// +// "both": compile for all Targets supported by the OsClass (generally x86_64 and x86, or arm64 and arm). +// "first": compile for only a single preferred Target supported by the OsClass. This is generally x86_64 or arm64, +// but may be arm for a 32-bit only build. +// "32": compile for only a single 32-bit Target supported by the OsClass. +// "64": compile for only a single 64-bit Target supported by the OsClass. +// "common": compile a for a single Target that will work on all Targets supported by the OsClass (for example Java). +// "common_first": compile a for a Target that will work on all Targets supported by the OsClass +// (same as "common"), plus a second Target for the preferred Target supported by the OsClass +// (same as "first"). This is used for java_binary that produces a common .jar and a wrapper +// executable script. // // Once the list of Targets is determined, the module is split into a variant for each Target. // @@ -1215,11 +1218,13 @@ func (m *ModuleBase) setOSProperties(ctx BottomUpMutatorContext) { // Returns the struct containing the properties specific to the given // architecture type. These look like this in Blueprint files: -// arch: { -// arm64: { -// key: value, -// }, -// }, +// +// arch: { +// arm64: { +// key: value, +// }, +// }, +// // This struct will also contain sub-structs containing to the architecture/CPU // variants and features that themselves contain properties specific to those. func getArchTypeStruct(ctx ArchVariantContext, archProperties interface{}, archType ArchType) (reflect.Value, bool) { @@ -1231,11 +1236,12 @@ func getArchTypeStruct(ctx ArchVariantContext, archProperties interface{}, archT // Returns the struct containing the properties specific to a given multilib // value. These look like this in the Blueprint file: -// multilib: { -// lib32: { -// key: value, -// }, -// }, +// +// multilib: { +// lib32: { +// key: value, +// }, +// }, func getMultilibStruct(ctx ArchVariantContext, archProperties interface{}, archType ArchType) (reflect.Value, bool) { archPropValues := reflect.ValueOf(archProperties).Elem() multilibProp := archPropValues.FieldByName("Multilib").Elem() @@ -2010,9 +2016,10 @@ type ConfigurationAxisToArchVariantProperties map[bazel.ConfigurationAxis]ArchVa // arch-variant properties correspond to the values of the properties of the 'propertySet' struct // that are specific to that axis/configuration. Each axis is independent, containing // non-overlapping configs that correspond to the various "arch-variant" support, at this time: -// arches (including multilib) -// oses -// arch+os combinations +// +// arches (including multilib) +// oses +// arch+os combinations // // For example, passing a struct { Foo bool, Bar string } will return an interface{} that can be // type asserted back into the same struct, containing the config-specific property value specified @@ -2165,17 +2172,21 @@ func (m *ModuleBase) GetArchVariantProperties(ctx ArchVariantContext, propertySe // Returns a struct matching the propertySet interface, containing properties specific to the targetName // For example, given these arguments: -// propertySet = BaseCompilerProperties -// targetName = "android_arm" +// +// propertySet = BaseCompilerProperties +// targetName = "android_arm" +// // And given this Android.bp fragment: -// target: -// android_arm: { -// srcs: ["foo.c"], -// } -// android_arm64: { -// srcs: ["bar.c"], -// } -// } +// +// target: +// android_arm: { +// srcs: ["foo.c"], +// } +// android_arm64: { +// srcs: ["bar.c"], +// } +// } +// // This would return a BaseCompilerProperties with BaseCompilerProperties.Srcs = ["foo.c"] func getTargetStructs(ctx ArchVariantContext, archProperties []interface{}, targetName string) []reflect.Value { var propertyStructs []reflect.Value |