cmd/gomobile: improve support for macOS and Catalyst

This is is a follow-up from my previous PR (#65). It makes gomobile
aware of GOOS=ios and adds support for specifying specific Apple
platforms, instead of overloading the "ios" platform.

Supported platforms: ios, iossimulator, macos, and maccatalyst

These can now be specified the -target argument to gomobile, e.g.:
gomobile build -target=ios,iossimulator,macos,maccatalyst

It preserves the current behavior of -target=ios, which will build for
ios and iossimulator on supported architectures (arm64 and amd64).

It adds platform-specific build tags so Go code can discriminate between
different Apple platforms like maccatalyst (UIKit on macOS).

This PR also fixes a number of broken tests.

TODO: cgo has a bug where c-archive builds targeting Catalyst will fail
unless -tags=ios is supplied. See


Change-Id: Ib1a2f5302c5edd0704c13ffbe8f4061211f50d4e
GitHub-Last-Rev: 01ab28e63fe6890a9f9783e3fc41b1c895b0274d
GitHub-Pull-Request: golang/mobile#70
Reviewed-by: Hyang-Ah Hana Kim <>
Trust: Hyang-Ah Hana Kim <>
Trust: Hajime Hoshi <>
14 files changed
tree: c8c677ab935db0885f240e489bcb584ab1a3fd06
  1. .gitattributes
  2. .gitignore
  9. app/
  10. asset/
  11. bind/
  12. cmd/
  13. codereview.cfg
  14. doc/
  15. event/
  16. example/
  17. exp/
  18. geom/
  19. gl/
  20. go.mod
  21. go.sum
  22. internal/
  23. testdata/

Go support for Mobile devices

Go Reference

The Go mobile repository holds packages and build tools for using Go on mobile platforms.

Package documentation as a starting point:

Caution image

The Go Mobile project is experimental. Use this at your own risk. While we are working hard to improve it, neither Google nor the Go team can provide end-user support.

This is early work and installing the build system requires Go 1.5. Follow the instructions on to install the gomobile command, build the basic and the bind example apps.

Contributions to Go are appreciated. See