Skip to content

Commit

Permalink
cmd/gomobile: iphonesimulator target
Browse files Browse the repository at this point in the history
This enables building for iphonesimulator-arm64 and merging into a fat
XCFramework that also may include ios/arm64.

This should fix golang/go#47212 (comment)

Note: tests are broken. Will fix in a followup commit.
  • Loading branch information
ydnar committed Jul 16, 2021
1 parent a420725 commit 88d40fb
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 13 deletions.
6 changes: 6 additions & 0 deletions cmd/gomobile/build.go
Original file line number Diff line number Diff line change
Expand Up @@ -363,6 +363,12 @@ func parseBuildTarget(buildTarget string) (targetPlatforms, targetArchs []string
return nil, nil, fmt.Errorf(`invalid target ""`)
}

// TODO(ydnar): preserve existing behavior where -target=ios
// builds for iphonesimulator as well.
if buildTarget == "ios" {
buildTarget = "ios,iphonesimulator"
}

platforms := map[string]bool{}
archs := map[string]bool{}

Expand Down
26 changes: 13 additions & 13 deletions cmd/gomobile/env.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,13 @@ func isDarwinPlatform(platform string) bool {
return contains(darwinPlatforms, platform)
}

var darwinPlatforms = []string{"ios", "maccatalyst", "macos"}
var darwinPlatforms = []string{"ios", "iphonesimulator", "maccatalyst", "macos"}

func platformArchs(platform string) []string {
switch platform {
case "ios":
return []string{"arm64"}
case "iphonesimulator":
return []string{"arm64", "amd64"}
case "macos", "maccatalyst":
return []string{"arm64", "amd64"}
Expand All @@ -57,7 +59,7 @@ func platformOS(platform string) string {
switch platform {
case "android":
return "android"
case "ios":
case "ios", "iphonesimulator":
return "ios"
case "macos", "maccatalyst":
return "darwin"
Expand All @@ -70,7 +72,7 @@ func platformTags(platform string) []string {
switch platform {
case "android":
return []string{"android"}
case "ios":
case "ios", "iphonesimulator":
return []string{"ios"}
case "macos":
return []string{"macos"}
Expand Down Expand Up @@ -205,16 +207,14 @@ func envInit() (err error) {
switch platform {
case "ios":
goos = "ios"
switch arch {
case "arm64":
sdk = "iphoneos"
clang, cflags, err = envClang(sdk)
cflags += " -miphoneos-version-min=" + buildIOSVersion
case "amd64":
sdk = "iphonesimulator"
clang, cflags, err = envClang(sdk)
cflags += " -mios-simulator-version-min=" + buildIOSVersion
}
sdk = "iphoneos"
clang, cflags, err = envClang(sdk)
cflags += " -miphoneos-version-min=" + buildIOSVersion
case "iphonesimulator":
goos = "ios"
sdk = "iphonesimulator"
clang, cflags, err = envClang(sdk)
cflags += " -mios-simulator-version-min=" + buildIOSVersion
case "maccatalyst":
goos = "darwin"
sdk = "macosx"
Expand Down

0 comments on commit 88d40fb

Please sign in to comment.