Loading android/arch.go +9 −0 Original line number Diff line number Diff line Loading @@ -551,6 +551,15 @@ var BuildOs = func() OsType { } }() var BuildArch = func() ArchType { switch runtime.GOARCH { case "amd64": return X86_64 default: panic(fmt.Sprintf("unsupported Arch: %s", runtime.GOARCH)) } }() var ( OsTypeList []OsType commonTargetMap = make(map[string]Target) Loading android/module.go +5 −5 Original line number Diff line number Diff line Loading @@ -198,7 +198,7 @@ type ModuleContext interface { InstallInRecovery() bool InstallInRoot() bool InstallBypassMake() bool InstallForceOS() *OsType InstallForceOS() (*OsType, *ArchType) RequiredModuleNames() []string HostRequiredModuleNames() []string Loading Loading @@ -254,7 +254,7 @@ type Module interface { InstallInRecovery() bool InstallInRoot() bool InstallBypassMake() bool InstallForceOS() *OsType InstallForceOS() (*OsType, *ArchType) SkipInstall() IsSkipInstall() bool MakeUninstallable() Loading Loading @@ -1120,8 +1120,8 @@ func (m *ModuleBase) InstallBypassMake() bool { return false } func (m *ModuleBase) InstallForceOS() *OsType { return nil func (m *ModuleBase) InstallForceOS() (*OsType, *ArchType) { return nil, nil } func (m *ModuleBase) Owner() string { Loading Loading @@ -2021,7 +2021,7 @@ func (m *moduleContext) InstallBypassMake() bool { return m.module.InstallBypassMake() } func (m *moduleContext) InstallForceOS() *OsType { func (m *moduleContext) InstallForceOS() (*OsType, *ArchType) { return m.module.InstallForceOS() } Loading android/paths.go +23 −12 Original line number Diff line number Diff line Loading @@ -61,7 +61,7 @@ type ModuleInstallPathContext interface { InstallInRecovery() bool InstallInRoot() bool InstallBypassMake() bool InstallForceOS() *OsType InstallForceOS() (*OsType, *ArchType) } var _ ModuleInstallPathContext = ModuleContext(nil) Loading Loading @@ -1278,12 +1278,17 @@ func (p InstallPath) ToMakePath() InstallPath { // module appended with paths... func PathForModuleInstall(ctx ModuleInstallPathContext, pathComponents ...string) InstallPath { os := ctx.Os() if forceOS := ctx.InstallForceOS(); forceOS != nil { arch := ctx.Arch().ArchType forceOS, forceArch := ctx.InstallForceOS() if forceOS != nil { os = *forceOS } if forceArch != nil { arch = *forceArch } partition := modulePartition(ctx, os) ret := pathForInstall(ctx, os, partition, ctx.Debug(), pathComponents...) ret := pathForInstall(ctx, os, arch, partition, ctx.Debug(), pathComponents...) if ctx.InstallBypassMake() && ctx.Config().EmbeddedInMake() { ret = ret.ToMakePath() Loading @@ -1292,7 +1297,7 @@ func PathForModuleInstall(ctx ModuleInstallPathContext, pathComponents ...string return ret } func pathForInstall(ctx PathContext, os OsType, partition string, debug bool, func pathForInstall(ctx PathContext, os OsType, arch ArchType, partition string, debug bool, pathComponents ...string) InstallPath { var outPaths []string Loading @@ -1300,15 +1305,21 @@ func pathForInstall(ctx PathContext, os OsType, partition string, debug bool, if os.Class == Device { outPaths = []string{"target", "product", ctx.Config().DeviceName(), partition} } else { switch os { case Linux: outPaths = []string{"host", "linux-x86", partition} case LinuxBionic: // TODO: should this be a separate top level, or shared with linux-x86? outPaths = []string{"host", "linux_bionic-x86", partition} default: outPaths = []string{"host", os.String() + "-x86", partition} } osName := os.String() if os == Linux { // instead of linux_glibc osName = "linux" } // SOONG_HOST_OUT is set to out/host/$(HOST_OS)-$(HOST_PREBUILT_ARCH) // and HOST_PREBUILT_ARCH is forcibly set to x86 even on x86_64 hosts. We don't seem // to have a plan to fix it (see the comment in build/make/core/envsetup.mk). // Let's keep using x86 for the existing cases until we have a need to support // other architectures. archName := arch.String() if os.Class == Host && (arch == X86_64 || arch == Common) { archName = "x86" } outPaths = []string{"host", osName + "-" + archName, partition} } if debug { outPaths = append([]string{"debug"}, outPaths...) Loading android/paths_test.go +6 −4 Original line number Diff line number Diff line Loading @@ -207,6 +207,7 @@ type moduleInstallPathContextImpl struct { inRecovery bool inRoot bool forceOS *OsType forceArch *ArchType } func (m moduleInstallPathContextImpl) Config() Config { Loading Loading @@ -243,8 +244,8 @@ func (m moduleInstallPathContextImpl) InstallBypassMake() bool { return false } func (m moduleInstallPathContextImpl) InstallForceOS() *OsType { return m.forceOS func (m moduleInstallPathContextImpl) InstallForceOS() (*OsType, *ArchType) { return m.forceOS, m.forceArch } func pathTestConfig(buildDir string) Config { Loading @@ -254,8 +255,8 @@ func pathTestConfig(buildDir string) Config { func TestPathForModuleInstall(t *testing.T) { testConfig := pathTestConfig("") hostTarget := Target{Os: Linux} deviceTarget := Target{Os: Android} hostTarget := Target{Os: Linux, Arch: Arch{ArchType: X86}} deviceTarget := Target{Os: Android, Arch: Arch{ArchType: Arm64}} testCases := []struct { name string Loading Loading @@ -635,6 +636,7 @@ func TestPathForModuleInstall(t *testing.T) { }, inTestcases: true, forceOS: &Linux, forceArch: &X86, }, in: []string{"my_test", "my_test_bin"}, out: "host/linux-x86/testcases/my_test/my_test_bin", Loading android/test_suites.go +1 −1 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ func robolectricTestSuite(ctx SingletonContext, files map[string]InstallPaths) W for _, module := range SortedStringKeys(files) { installedPaths = append(installedPaths, files[module]...) } testCasesDir := pathForInstall(ctx, BuildOs, "testcases", false).ToMakePath() testCasesDir := pathForInstall(ctx, BuildOs, X86, "testcases", false).ToMakePath() outputFile := PathForOutput(ctx, "packaging", "robolectric-tests.zip") rule := NewRuleBuilder() Loading Loading
android/arch.go +9 −0 Original line number Diff line number Diff line Loading @@ -551,6 +551,15 @@ var BuildOs = func() OsType { } }() var BuildArch = func() ArchType { switch runtime.GOARCH { case "amd64": return X86_64 default: panic(fmt.Sprintf("unsupported Arch: %s", runtime.GOARCH)) } }() var ( OsTypeList []OsType commonTargetMap = make(map[string]Target) Loading
android/module.go +5 −5 Original line number Diff line number Diff line Loading @@ -198,7 +198,7 @@ type ModuleContext interface { InstallInRecovery() bool InstallInRoot() bool InstallBypassMake() bool InstallForceOS() *OsType InstallForceOS() (*OsType, *ArchType) RequiredModuleNames() []string HostRequiredModuleNames() []string Loading Loading @@ -254,7 +254,7 @@ type Module interface { InstallInRecovery() bool InstallInRoot() bool InstallBypassMake() bool InstallForceOS() *OsType InstallForceOS() (*OsType, *ArchType) SkipInstall() IsSkipInstall() bool MakeUninstallable() Loading Loading @@ -1120,8 +1120,8 @@ func (m *ModuleBase) InstallBypassMake() bool { return false } func (m *ModuleBase) InstallForceOS() *OsType { return nil func (m *ModuleBase) InstallForceOS() (*OsType, *ArchType) { return nil, nil } func (m *ModuleBase) Owner() string { Loading Loading @@ -2021,7 +2021,7 @@ func (m *moduleContext) InstallBypassMake() bool { return m.module.InstallBypassMake() } func (m *moduleContext) InstallForceOS() *OsType { func (m *moduleContext) InstallForceOS() (*OsType, *ArchType) { return m.module.InstallForceOS() } Loading
android/paths.go +23 −12 Original line number Diff line number Diff line Loading @@ -61,7 +61,7 @@ type ModuleInstallPathContext interface { InstallInRecovery() bool InstallInRoot() bool InstallBypassMake() bool InstallForceOS() *OsType InstallForceOS() (*OsType, *ArchType) } var _ ModuleInstallPathContext = ModuleContext(nil) Loading Loading @@ -1278,12 +1278,17 @@ func (p InstallPath) ToMakePath() InstallPath { // module appended with paths... func PathForModuleInstall(ctx ModuleInstallPathContext, pathComponents ...string) InstallPath { os := ctx.Os() if forceOS := ctx.InstallForceOS(); forceOS != nil { arch := ctx.Arch().ArchType forceOS, forceArch := ctx.InstallForceOS() if forceOS != nil { os = *forceOS } if forceArch != nil { arch = *forceArch } partition := modulePartition(ctx, os) ret := pathForInstall(ctx, os, partition, ctx.Debug(), pathComponents...) ret := pathForInstall(ctx, os, arch, partition, ctx.Debug(), pathComponents...) if ctx.InstallBypassMake() && ctx.Config().EmbeddedInMake() { ret = ret.ToMakePath() Loading @@ -1292,7 +1297,7 @@ func PathForModuleInstall(ctx ModuleInstallPathContext, pathComponents ...string return ret } func pathForInstall(ctx PathContext, os OsType, partition string, debug bool, func pathForInstall(ctx PathContext, os OsType, arch ArchType, partition string, debug bool, pathComponents ...string) InstallPath { var outPaths []string Loading @@ -1300,15 +1305,21 @@ func pathForInstall(ctx PathContext, os OsType, partition string, debug bool, if os.Class == Device { outPaths = []string{"target", "product", ctx.Config().DeviceName(), partition} } else { switch os { case Linux: outPaths = []string{"host", "linux-x86", partition} case LinuxBionic: // TODO: should this be a separate top level, or shared with linux-x86? outPaths = []string{"host", "linux_bionic-x86", partition} default: outPaths = []string{"host", os.String() + "-x86", partition} } osName := os.String() if os == Linux { // instead of linux_glibc osName = "linux" } // SOONG_HOST_OUT is set to out/host/$(HOST_OS)-$(HOST_PREBUILT_ARCH) // and HOST_PREBUILT_ARCH is forcibly set to x86 even on x86_64 hosts. We don't seem // to have a plan to fix it (see the comment in build/make/core/envsetup.mk). // Let's keep using x86 for the existing cases until we have a need to support // other architectures. archName := arch.String() if os.Class == Host && (arch == X86_64 || arch == Common) { archName = "x86" } outPaths = []string{"host", osName + "-" + archName, partition} } if debug { outPaths = append([]string{"debug"}, outPaths...) Loading
android/paths_test.go +6 −4 Original line number Diff line number Diff line Loading @@ -207,6 +207,7 @@ type moduleInstallPathContextImpl struct { inRecovery bool inRoot bool forceOS *OsType forceArch *ArchType } func (m moduleInstallPathContextImpl) Config() Config { Loading Loading @@ -243,8 +244,8 @@ func (m moduleInstallPathContextImpl) InstallBypassMake() bool { return false } func (m moduleInstallPathContextImpl) InstallForceOS() *OsType { return m.forceOS func (m moduleInstallPathContextImpl) InstallForceOS() (*OsType, *ArchType) { return m.forceOS, m.forceArch } func pathTestConfig(buildDir string) Config { Loading @@ -254,8 +255,8 @@ func pathTestConfig(buildDir string) Config { func TestPathForModuleInstall(t *testing.T) { testConfig := pathTestConfig("") hostTarget := Target{Os: Linux} deviceTarget := Target{Os: Android} hostTarget := Target{Os: Linux, Arch: Arch{ArchType: X86}} deviceTarget := Target{Os: Android, Arch: Arch{ArchType: Arm64}} testCases := []struct { name string Loading Loading @@ -635,6 +636,7 @@ func TestPathForModuleInstall(t *testing.T) { }, inTestcases: true, forceOS: &Linux, forceArch: &X86, }, in: []string{"my_test", "my_test_bin"}, out: "host/linux-x86/testcases/my_test/my_test_bin", Loading
android/test_suites.go +1 −1 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ func robolectricTestSuite(ctx SingletonContext, files map[string]InstallPaths) W for _, module := range SortedStringKeys(files) { installedPaths = append(installedPaths, files[module]...) } testCasesDir := pathForInstall(ctx, BuildOs, "testcases", false).ToMakePath() testCasesDir := pathForInstall(ctx, BuildOs, X86, "testcases", false).ToMakePath() outputFile := PathForOutput(ctx, "packaging", "robolectric-tests.zip") rule := NewRuleBuilder() Loading