diff options
author | Colin Cross <ccross@android.com> | 2017-12-05 13:42:45 -0800 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2017-12-06 04:16:21 +0000 |
commit | 6b4a32d7712726a21ef153c964fee1f3c508ac30 (patch) | |
tree | 55ad862236f276101d1898a4a39909afa0cd7830 /android | |
parent | 0db5568612385e014ad40832660a34d935aba954 (diff) | |
download | build_soong-6b4a32d7712726a21ef153c964fee1f3c508ac30.tar.gz build_soong-6b4a32d7712726a21ef153c964fee1f3c508ac30.tar.bz2 build_soong-6b4a32d7712726a21ef153c964fee1f3c508ac30.zip |
Split java_binary modules into common and binary variants
Add a common_first multilib type and use it for java.Binary
so that the java part is compiled as a "common" arch type
but the wrapper script is installed as a "linux_glibc" arch
type. This allows java_binary to be used as a tool dependency
for a genrule.
Bug: 68397812
Test: TestJavaBinary
Change-Id: I809060839ce8878300da3fb76426ceb1ea6b0e8e
Diffstat (limited to 'android')
-rw-r--r-- | android/arch.go | 41 | ||||
-rw-r--r-- | android/module.go | 9 |
2 files changed, 30 insertions, 20 deletions
diff --git a/android/arch.go b/android/arch.go index 7f9abc6b..af3919cf 100644 --- a/android/arch.go +++ b/android/arch.go @@ -1072,19 +1072,30 @@ func getCommonTargets(targets []Target) []Target { return ret } +func preferTargets(targets []Target, filters ...string) []Target { + for _, filter := range filters { + buildTargets := filterMultilibTargets(targets, filter) + if len(buildTargets) > 0 { + return buildTargets + } + } + return nil +} + // Use the module multilib setting to select one or more targets from a target list func decodeMultilib(multilib string, targets []Target, prefer32 bool) ([]Target, error) { buildTargets := []Target{} - if multilib == "first" { + + switch multilib { + case "common": + buildTargets = getCommonTargets(targets) + case "common_first": + buildTargets = getCommonTargets(targets) if prefer32 { - multilib = "prefer32" + buildTargets = append(buildTargets, preferTargets(targets, "lib32", "lib64")...) } else { - multilib = "prefer64" + buildTargets = append(buildTargets, preferTargets(targets, "lib64", "lib32")...) } - } - switch multilib { - case "common": - buildTargets = append(buildTargets, getCommonTargets(targets)...) case "both": if prefer32 { buildTargets = append(buildTargets, filterMultilibTargets(targets, "lib32")...) @@ -1097,16 +1108,14 @@ func decodeMultilib(multilib string, targets []Target, prefer32 bool) ([]Target, buildTargets = filterMultilibTargets(targets, "lib32") case "64": buildTargets = filterMultilibTargets(targets, "lib64") - case "prefer32": - buildTargets = filterMultilibTargets(targets, "lib32") - if len(buildTargets) == 0 { - buildTargets = filterMultilibTargets(targets, "lib64") - } - case "prefer64": - buildTargets = filterMultilibTargets(targets, "lib64") - if len(buildTargets) == 0 { - buildTargets = filterMultilibTargets(targets, "lib32") + case "first": + if prefer32 { + buildTargets = preferTargets(targets, "lib32", "lib64") + } else { + buildTargets = preferTargets(targets, "lib64", "lib32") } + case "prefer32": + buildTargets = preferTargets(targets, "lib32", "lib64") default: return nil, fmt.Errorf(`compile_multilib must be "both", "first", "32", "64", or "prefer32" found %q`, multilib) diff --git a/android/module.go b/android/module.go index e6766a34..865764f5 100644 --- a/android/module.go +++ b/android/module.go @@ -248,10 +248,11 @@ type hostAndDeviceProperties struct { type Multilib string const ( - MultilibBoth Multilib = "both" - MultilibFirst Multilib = "first" - MultilibCommon Multilib = "common" - MultilibDefault Multilib = "" + MultilibBoth Multilib = "both" + MultilibFirst Multilib = "first" + MultilibCommon Multilib = "common" + MultilibCommonFirst Multilib = "common_first" + MultilibDefault Multilib = "" ) type HostOrDeviceSupported int |