Go on iOS
=========

To build a cross compiling toolchain for iOS on OS X, first modify clangwrap.sh
in misc/ios to match your setup. And then run:

	GOARM=7 CGO_ENABLED=1 GOARCH=arm CC_FOR_TARGET=`pwd`/../misc/ios/clangwrap.sh \
	CXX_FOR_TARGET=`pwd`/../misc/ios/clangwrap.sh ./make.bash

To build a program, use the normal go build command:

	CGO_ENABLED=1 GOARCH=arm go build import/path

To run a program on an iDevice, first make sure you have a valid developer
certificate and have setup your iDevice properly to run apps signed by your
developer certificate. Then install https://github.com/phonegap/ios-deploy.
At a first step, you can try building the famous hello world program to run
on your test device.
(The needed files are provided at https://github.com/minux/go-ios-examples.)

	# assume your program binary is helloworld.go, build it into the
	# example hello.app bundle.
	CGO_ENABLED=1 GOARCH=arm go build -o hello.app/hello helloworld.go
	# sign the executable using your developer certificate
	codesign -f -s "iPhone Developer" --entitlements hello.app/Entitlements.plist hello.app/hello
	# run the program inside lldb on iDevice, run `ios-deploy` for more
	# command options
	ios-deploy --debug --uninstall --bundle hello.app
	# Depending on your ios-deploy version, you might need to enter "run"
	# into lldb to run your program, and its output will be shown by lldb.

Notes:
 - A dummy hello.app bundle is provided in this directory to help you get started.
 - Running the program on an iDevice requires code sign and thus external linking,
   if your program uses cgo, then it will automatically use external linking.
   However, if your program does not use cgo, please make sure to add
	import _ "runtime/cgo"
   so that external linking will be used.

Known issues
============
 - crypto/x509 won't build, I don't yet know how to get system root on iOS.
 - Because I still want to be able to do native build, CGO_ENABLED=1 is not the
   default, yet.
