Merge "Extend multilib" am: 1e8ed27de3
am: 5b25ba18ec
Change-Id: Id962c422b58605ff885c0cf41185a6206d746cd3
This commit is contained in:
@@ -197,7 +197,6 @@ func translateAndroidMkModule(ctx blueprint.SingletonContext, w io.Writer, mod b
|
|||||||
fmt.Fprintln(w, "LOCAL_PATH :=", filepath.Dir(ctx.BlueprintFile(mod)))
|
fmt.Fprintln(w, "LOCAL_PATH :=", filepath.Dir(ctx.BlueprintFile(mod)))
|
||||||
fmt.Fprintln(w, "LOCAL_MODULE :=", name)
|
fmt.Fprintln(w, "LOCAL_MODULE :=", name)
|
||||||
fmt.Fprintln(w, "LOCAL_MODULE_CLASS :=", data.Class)
|
fmt.Fprintln(w, "LOCAL_MODULE_CLASS :=", data.Class)
|
||||||
fmt.Fprintln(w, "LOCAL_MULTILIB :=", amod.commonProperties.Compile_multilib)
|
|
||||||
fmt.Fprintln(w, "LOCAL_PREBUILT_MODULE_FILE :=", data.OutputFile.String())
|
fmt.Fprintln(w, "LOCAL_PREBUILT_MODULE_FILE :=", data.OutputFile.String())
|
||||||
|
|
||||||
if len(amod.commonProperties.Required) > 0 {
|
if len(amod.commonProperties.Required) > 0 {
|
||||||
|
@@ -420,7 +420,19 @@ func ArchMutator(mctx BottomUpMutatorContext) {
|
|||||||
if len(targets) == 0 {
|
if len(targets) == 0 {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
multilib := module.base().commonProperties.Compile_multilib
|
var multilib string
|
||||||
|
switch class {
|
||||||
|
case Device:
|
||||||
|
multilib = module.base().commonProperties.Target.Android.Compile_multilib
|
||||||
|
case Host, HostCross:
|
||||||
|
multilib = module.base().commonProperties.Target.Host.Compile_multilib
|
||||||
|
}
|
||||||
|
if multilib == "" {
|
||||||
|
multilib = module.base().commonProperties.Compile_multilib
|
||||||
|
}
|
||||||
|
if multilib == "" {
|
||||||
|
multilib = module.base().commonProperties.Default_multilib
|
||||||
|
}
|
||||||
targets, err := decodeMultilib(multilib, targets)
|
targets, err := decodeMultilib(multilib, targets)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
mctx.ModuleErrorf("%s", err.Error())
|
mctx.ModuleErrorf("%s", err.Error())
|
||||||
@@ -903,6 +915,16 @@ func decodeArch(arch string, archVariant, cpuVariant *string, abi *[]string) (Ar
|
|||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func filterMultilibTargets(targets []Target, multilib string) []Target {
|
||||||
|
var ret []Target
|
||||||
|
for _, t := range targets {
|
||||||
|
if t.Arch.ArchType.Multilib == multilib {
|
||||||
|
ret = append(ret, t)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
|
||||||
// Use the module multilib setting to select one or more targets from a target list
|
// Use the module multilib setting to select one or more targets from a target list
|
||||||
func decodeMultilib(multilib string, targets []Target) ([]Target, error) {
|
func decodeMultilib(multilib string, targets []Target) ([]Target, error) {
|
||||||
buildTargets := []Target{}
|
buildTargets := []Target{}
|
||||||
@@ -914,19 +936,16 @@ func decodeMultilib(multilib string, targets []Target) ([]Target, error) {
|
|||||||
case "first":
|
case "first":
|
||||||
buildTargets = append(buildTargets, targets[0])
|
buildTargets = append(buildTargets, targets[0])
|
||||||
case "32":
|
case "32":
|
||||||
for _, t := range targets {
|
buildTargets = filterMultilibTargets(targets, "lib32")
|
||||||
if t.Arch.ArchType.Multilib == "lib32" {
|
|
||||||
buildTargets = append(buildTargets, t)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
case "64":
|
case "64":
|
||||||
for _, t := range targets {
|
buildTargets = filterMultilibTargets(targets, "lib64")
|
||||||
if t.Arch.ArchType.Multilib == "lib64" {
|
case "prefer32":
|
||||||
buildTargets = append(buildTargets, t)
|
buildTargets = filterMultilibTargets(targets, "lib32")
|
||||||
}
|
if len(buildTargets) == 0 {
|
||||||
|
buildTargets = filterMultilibTargets(targets, "lib64")
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf(`compile_multilib must be "both", "first", "32", or "64", found %q`,
|
return nil, fmt.Errorf(`compile_multilib must be "both", "first", "32", "64", or "prefer32" found %q`,
|
||||||
multilib)
|
multilib)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -118,7 +118,18 @@ type commonProperties struct {
|
|||||||
// are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both
|
// are "32" (compile for 32-bit only), "64" (compile for 64-bit only), "both" (compile for both
|
||||||
// architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit
|
// architectures), or "first" (compile for 64-bit on a 64-bit platform, and 32-bit on a 32-bit
|
||||||
// platform
|
// platform
|
||||||
Compile_multilib string
|
Compile_multilib string `android:"arch_variant"`
|
||||||
|
|
||||||
|
Target struct {
|
||||||
|
Host struct {
|
||||||
|
Compile_multilib string
|
||||||
|
}
|
||||||
|
Android struct {
|
||||||
|
Compile_multilib string
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Default_multilib string `blueprint:"mutated"`
|
||||||
|
|
||||||
// whether this is a proprietary vendor module, and should be installed into /vendor
|
// whether this is a proprietary vendor module, and should be installed into /vendor
|
||||||
Proprietary bool
|
Proprietary bool
|
||||||
@@ -182,7 +193,7 @@ func InitAndroidArchModule(m Module, hod HostOrDeviceSupported, defaultMultilib
|
|||||||
|
|
||||||
base := m.base()
|
base := m.base()
|
||||||
base.commonProperties.HostOrDeviceSupported = hod
|
base.commonProperties.HostOrDeviceSupported = hod
|
||||||
base.commonProperties.Compile_multilib = string(defaultMultilib)
|
base.commonProperties.Default_multilib = string(defaultMultilib)
|
||||||
|
|
||||||
switch hod {
|
switch hod {
|
||||||
case HostAndDeviceSupported:
|
case HostAndDeviceSupported:
|
||||||
|
Reference in New Issue
Block a user