cmd/gomobile: fix the error when specifying -target=ios with Go 1.15
Go 1.15 no longer supports darwin/arm. This CL fixes by replacing 'allArchs' variable with a function taking a target OS, and excludes 'arm' when the target OS is iOS. Updates golang/go#39575 Change-Id: I0623ed4cda2c679d2762fd80a7919f24dd5ce016 Reviewed-on: https://go-review.googlesource.com/c/mobile/+/243477 Run-TryBot: Hajime Hoshi <hajimehoshi@gmail.com> Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
This commit is contained in:
parent
33b8054058
commit
588b2b2fb0
@ -216,6 +216,36 @@ mkdir -p {{.Output}}.framework/Versions/A/Modules
|
||||
ln -s Versions/Current/Modules {{.Output}}.framework/Modules
|
||||
`))
|
||||
|
||||
func TestBindIOSAll(t *testing.T) {
|
||||
if !xcodeAvailable() {
|
||||
t.Skip("Xcode is missing")
|
||||
}
|
||||
defer func() {
|
||||
xout = os.Stderr
|
||||
buildN = false
|
||||
buildX = false
|
||||
buildO = ""
|
||||
buildTarget = ""
|
||||
bindPrefix = ""
|
||||
}()
|
||||
buildN = true
|
||||
buildX = true
|
||||
buildO = "Asset.framework"
|
||||
buildTarget = "ios"
|
||||
|
||||
buf := new(bytes.Buffer)
|
||||
xout = buf
|
||||
gopath = filepath.SplitList(goEnv("GOPATH"))[0]
|
||||
if goos == "windows" {
|
||||
os.Setenv("HOMEDRIVE", "C:")
|
||||
}
|
||||
cmdBind.flag.Parse([]string{"golang.org/x/mobile/asset"})
|
||||
if err := runBind(cmdBind); err != nil {
|
||||
t.Log(buf.String())
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestBindWithGoModules(t *testing.T) {
|
||||
if runtime.GOOS == "android" {
|
||||
t.Skipf("gomobile and gobind are not available on %s", runtime.GOOS)
|
||||
|
@ -358,8 +358,8 @@ func parseBuildTarget(buildTarget string) (os string, archs []string, _ error) {
|
||||
}
|
||||
|
||||
// verify all archs are supported one while deduping.
|
||||
isSupported := func(arch string) bool {
|
||||
for _, a := range allArchs {
|
||||
isSupported := func(os, arch string) bool {
|
||||
for _, a := range allArchs(os) {
|
||||
if a == arch {
|
||||
return true
|
||||
}
|
||||
@ -367,12 +367,17 @@ func parseBuildTarget(buildTarget string) (os string, archs []string, _ error) {
|
||||
return false
|
||||
}
|
||||
|
||||
targetOS := os
|
||||
if os == "ios" {
|
||||
targetOS = "darwin"
|
||||
}
|
||||
|
||||
seen := map[string]bool{}
|
||||
for _, arch := range archNames {
|
||||
if _, ok := seen[arch]; ok {
|
||||
continue
|
||||
}
|
||||
if !isSupported(arch) {
|
||||
if !isSupported(os, arch) {
|
||||
return "", nil, fmt.Errorf(`unsupported arch: %q`, arch)
|
||||
}
|
||||
|
||||
@ -380,12 +385,8 @@ func parseBuildTarget(buildTarget string) (os string, archs []string, _ error) {
|
||||
archs = append(archs, arch)
|
||||
}
|
||||
|
||||
targetOS := os
|
||||
if os == "ios" {
|
||||
targetOS = "darwin"
|
||||
}
|
||||
if all {
|
||||
return targetOS, allArchs, nil
|
||||
return targetOS, allArchs(os), nil
|
||||
}
|
||||
return targetOS, archs, nil
|
||||
}
|
||||
|
@ -115,7 +115,8 @@ GOOS=android GOARCH=arm CC=$NDK_PATH/toolchains/llvm/prebuilt/{{.NDKARCH}}/bin/a
|
||||
`))
|
||||
|
||||
func TestParseBuildTargetFlag(t *testing.T) {
|
||||
archs := strings.Join(allArchs, ",")
|
||||
androidArchs := strings.Join(allArchs("android"), ",")
|
||||
iosArchs := strings.Join(allArchs("ios"), ",")
|
||||
|
||||
tests := []struct {
|
||||
in string
|
||||
@ -123,13 +124,13 @@ func TestParseBuildTargetFlag(t *testing.T) {
|
||||
wantOS string
|
||||
wantArchs string
|
||||
}{
|
||||
{"android", false, "android", archs},
|
||||
{"android,android/arm", false, "android", archs},
|
||||
{"android", false, "android", androidArchs},
|
||||
{"android,android/arm", false, "android", androidArchs},
|
||||
{"android/arm", false, "android", "arm"},
|
||||
|
||||
{"ios", false, "darwin", archs},
|
||||
{"ios,ios/arm", false, "darwin", archs},
|
||||
{"ios/arm", false, "darwin", "arm"},
|
||||
{"ios", false, "darwin", iosArchs},
|
||||
{"ios,ios/arm64", false, "darwin", iosArchs},
|
||||
{"ios/arm64", false, "darwin", "arm64"},
|
||||
{"ios/amd64", false, "darwin", "amd64"},
|
||||
|
||||
{"", true, "", ""},
|
||||
|
@ -22,11 +22,20 @@ var (
|
||||
androidArmNM string
|
||||
darwinArmNM string
|
||||
|
||||
allArchs = []string{"arm", "arm64", "386", "amd64"}
|
||||
|
||||
bitcodeEnabled bool
|
||||
)
|
||||
|
||||
func allArchs(targetOS string) []string {
|
||||
switch targetOS {
|
||||
case "ios":
|
||||
return []string{"arm64", "386", "amd64"}
|
||||
case "android":
|
||||
return []string{"arm", "arm64", "386", "amd64"}
|
||||
default:
|
||||
panic(fmt.Sprintf("unexpected target OS: %s", targetOS))
|
||||
}
|
||||
}
|
||||
|
||||
func buildEnvInit() (cleanup func(), err error) {
|
||||
// Find gomobilepath.
|
||||
gopath := goEnv("GOPATH")
|
||||
@ -132,14 +141,11 @@ func envInit() (err error) {
|
||||
|
||||
darwinArmNM = "nm"
|
||||
darwinEnv = make(map[string][]string)
|
||||
for _, arch := range allArchs {
|
||||
for _, arch := range allArchs("ios") {
|
||||
var env []string
|
||||
var err error
|
||||
var clang, cflags string
|
||||
switch arch {
|
||||
case "arm":
|
||||
env = append(env, "GOARM=7")
|
||||
fallthrough
|
||||
case "arm64":
|
||||
clang, cflags, err = envClang("iphoneos")
|
||||
cflags += " -miphoneos-version-min=" + buildIOSVersion
|
||||
|
@ -167,7 +167,7 @@ func installOpenAL(gomobilepath string) error {
|
||||
}
|
||||
}
|
||||
|
||||
for _, arch := range allArchs {
|
||||
for _, arch := range allArchs("android") {
|
||||
t := ndk[arch]
|
||||
abi := t.arch
|
||||
if abi == "arm" {
|
||||
|
Loading…
x
Reference in New Issue
Block a user