Skip to content

Commit 0610563

Browse files
committed
cmd/gomobile: add support for Apple TV and XROS
Define a minimum deployment target for Apple TV, but not yet for xrOS, as there is currently just one version and the minimum version flags are not yet available for the platform.
1 parent fa72add commit 0610563

File tree

3 files changed

+53
-20
lines changed

3 files changed

+53
-20
lines changed

cmd/gomobile/bind_iosapp.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,7 @@ func frameworkLayoutForTarget(t targetInfo, title string) (*frameworkLayout, err
321321
filepath.Join("Versions/Current", title): title,
322322
},
323323
}, nil
324-
case "ios", "iossimulator":
324+
case "ios", "iossimulator", "appletvos", "appletvsimulator", "xros", "xrsimulator":
325325
return &frameworkLayout{
326326
headerPath: "Headers",
327327
binaryPath: ".",

cmd/gomobile/build.go

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -233,21 +233,24 @@ func printcmd(format string, args ...interface{}) {
233233

234234
// "Build flags", used by multiple commands.
235235
var (
236-
buildA bool // -a
237-
buildI bool // -i
238-
buildN bool // -n
239-
buildV bool // -v
240-
buildX bool // -x
241-
buildO string // -o
242-
buildGcflags string // -gcflags
243-
buildLdflags string // -ldflags
244-
buildTarget string // -target
245-
buildTrimpath bool // -trimpath
246-
buildWork bool // -work
247-
buildBundleID string // -bundleid
248-
buildIOSVersion string // -iosversion
249-
buildAndroidAPI int // -androidapi
250-
buildTags stringsFlag // -tags
236+
buildA bool // -a
237+
buildI bool // -i
238+
buildN bool // -n
239+
buildV bool // -v
240+
buildX bool // -x
241+
buildO string // -o
242+
buildGcflags string // -gcflags
243+
buildLdflags string // -ldflags
244+
buildTarget string // -target
245+
buildTrimpath bool // -trimpath
246+
buildWork bool // -work
247+
buildBundleID string // -bundleid
248+
buildIOSVersion string // -iosversion
249+
buildTVOSVersion string // -tvosversion
250+
buildXROSVersion string // -xrosversion
251+
buildMacOSVersion string // -macosversion
252+
buildAndroidAPI int // -androidapi
253+
buildTags stringsFlag // -tags
251254
)
252255

253256
func addBuildFlags(cmd *command) {
@@ -257,6 +260,9 @@ func addBuildFlags(cmd *command) {
257260
cmd.flag.StringVar(&buildTarget, "target", "android", "")
258261
cmd.flag.StringVar(&buildBundleID, "bundleid", "", "")
259262
cmd.flag.StringVar(&buildIOSVersion, "iosversion", "13.0", "")
263+
cmd.flag.StringVar(&buildTVOSVersion, "tvosversion", "13.0", "")
264+
cmd.flag.StringVar(&buildXROSVersion, "xrosversion", "1.0", "")
265+
cmd.flag.StringVar(&buildMacOSVersion, "macosversion", "11.0", "")
260266
cmd.flag.IntVar(&buildAndroidAPI, "androidapi", minAndroidAPI, "")
261267

262268
cmd.flag.BoolVar(&buildA, "a", false, "")

cmd/gomobile/env.go

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,13 @@ func isApplePlatform(platform string) bool {
3232
return contains(applePlatforms, platform)
3333
}
3434

35-
var applePlatforms = []string{"ios", "iossimulator", "macos", "maccatalyst"}
35+
var applePlatforms = []string{"ios", "iossimulator", "macos", "maccatalyst", "appletvos", "appletvsimulator", "xros", "xrsimulator"}
3636

3737
func platformArchs(platform string) []string {
3838
switch platform {
39-
case "ios":
39+
case "ios", "appletvos", "xros":
4040
return []string{"arm64"}
41-
case "iossimulator":
41+
case "iossimulator", "appletvsimulator", "xrsimulator":
4242
return []string{"arm64", "amd64"}
4343
case "macos", "maccatalyst":
4444
return []string{"arm64", "amd64"}
@@ -58,7 +58,7 @@ func platformOS(platform string) string {
5858
switch platform {
5959
case "android":
6060
return "android"
61-
case "ios", "iossimulator":
61+
case "ios", "iossimulator", "appletvos", "appletvsimulator", "xros", "xrsimulator":
6262
return "ios"
6363
case "macos", "maccatalyst":
6464
// For "maccatalyst", Go packages should be built with GOOS=darwin,
@@ -93,6 +93,10 @@ func platformTags(platform string) []string {
9393
// TODO(ydnar): remove tag "ios" when cgo supports Catalyst
9494
// See golang.org/issues/47228
9595
return []string{"ios", "macos", "maccatalyst"}
96+
case "appletvos", "appletvsimulator":
97+
return []string{"appletvos"}
98+
case "xros", "xrsimulator":
99+
return []string{"xros"}
96100
default:
97101
panic(fmt.Sprintf("unexpected platform: %s", platform))
98102
}
@@ -253,6 +257,29 @@ func envInit() (err error) {
253257
if arch == "arm64" {
254258
cflags += " -fembed-bitcode"
255259
}
260+
cflags += " -mmacosx-version-min=" + buildMacOSVersion
261+
case "appletvos":
262+
goos = "ios"
263+
sdk = "appletvos"
264+
clang, cflags, err = envClang(sdk)
265+
cflags += " -mappletvos-version-min=" + buildTVOSVersion
266+
cflags += " -fembed-bitcode"
267+
case "appletvsimulator":
268+
goos = "ios"
269+
sdk = "appletvsimulator"
270+
clang, cflags, err = envClang(sdk)
271+
cflags += " -mappletvsimulator-version-min=" + buildTVOSVersion
272+
cflags += " -fembed-bitcode"
273+
case "xros":
274+
goos = "ios"
275+
sdk = "xros"
276+
clang, cflags, err = envClang(sdk)
277+
cflags += " -fembed-bitcode"
278+
case "xrsimulator":
279+
goos = "ios"
280+
sdk = "xrsimulator"
281+
clang, cflags, err = envClang(sdk)
282+
cflags += " -fembed-bitcode"
256283
default:
257284
panic(fmt.Errorf("unknown Apple target: %s/%s", platform, arch))
258285
}

0 commit comments

Comments
 (0)