Index: site/user/quick/ios.md |
diff --git a/site/user/quick/ios.md b/site/user/quick/ios.md |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e060a28725b75dbfd84b526bbb77bdd8ccab5e5d |
--- /dev/null |
+++ b/site/user/quick/ios.md |
@@ -0,0 +1,104 @@ |
+iOS |
+=== |
+ |
+Prerequisites |
+------------- |
+ |
+_These steps should closely follow building on Mac OS X. Those steps seem slightly out of date._ |
+ |
+Build and run SampleApp in the XCode IDE |
+---------------------------------------- |
+ |
+### XCode 4.5 |
+ |
+ |
+To build SampleApp on XCode 4.5 using the IDE these steps should work: |
+ |
+ GYP_DEFINES="skia_os='ios' skia_arch_type='arm' armv7=1 arm_neon=0" ./gyp_skia |
+ xed out/gyp/SampleApp.xcodeproj # opens the SampleApp project in the IDE |
+ |
+Note that if you run make at the command line the gyp\_skia script will rerun |
+and you'll lose the effect of the GYP\_DEFINES. To avoid this do: |
+ |
+ export GYP_DEFINES="skia_os='ios' skia_arch_type='arm' armv7=1 arm_neon=0" |
+ |
+### XCode 3 |
+ |
+Use GYP\_DEFINES to tell gyp\_skia how to build for iOS. Here's a bash shell |
+snippet that sets the world up to build SampleApp with XCode 3: |
+ |
+ function buildSampleApp() |
+ { |
+ sdkVersion="4.3" |
+ if [[ "$1" == "sim" ]] ; then |
+ export GYP_DEFINES="skia_os='ios' skia_arch_type='x86' \ |
+ ios_sdk_dir='/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator' \ |
+ ios_sdk_version='$sdkVersion'" |
+ elif [[ "$1" == "iphone" ]] ; then |
+ export GYP_DEFINES="skia_os='ios' skia_arch_type='arm' armv7='1' arm_neon='0' \ |
+ ios_sdk_dir='/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS' \ |
+ ios_sdk_version='$sdkVersion'" |
+ elif [[ "$1" == "mac" ]] ; then |
+ export GYP_DEFINES="" |
+ else |
+ echo "buildSampleApp expects 'sim', 'iphone', or 'mac'" |
+ fi |
+ if [[ "$1" == "sim" ]] || [[ "$1" == "iphone" ]] || [[ "$1" == "mac" ]] ; then |
+ save=`pwd` |
+ cd /chrome/nih/skia/trunk |
+ echo "$GYP_DEFINES ./gyp_skia gyp/SampleApp.gyp" |
+ ./gyp_skia gyp/SampleApp.gyp |
+ cd $save |
+ fi |
+ if [[ "$1" == "sim" ]] ; then |
+ setiossdk iphonesimulator$sdkVersion |
+ elif [[ "$1" == "iphone" ]] ; then |
+ setiossdk iphoneos$sdkVersion |
+ fi |
+ } |
+ |
+The script function setiossdk called by buildSampleApp is a |
+not-completely-working hackery. When gyp builds an iOS-targeted project, it is |
+hard-coded for the iOS simulator. To point the project at either the iOS |
+simulator, or an iOS device, the project file must be opened to create a |
+custom pbxuser file. |
+ |
+This is accomplished by: |
+ |
+ function setiossdk() |
+ { |
+ osascript -e 'tell app "Xcode" to quit' |
+ osascript -e 'repeat until appIsRunning("Xcode") is false' -e \ |
+ 'do shell script "sleep 1"' -e 'end repeat' |
+ save=`pwd` |
+ skia |
+ cd out/gyp |
+ for project in *.xcodeproj; do |
+ open $project |
+ done |
+ osascript -e 'tell app "Xcode" to quit' |
+ osascript -e 'repeat until appIsRunning("Xcode") is false' -e \ |
+ 'do shell script "sleep 1"' -e 'end repeat' |
+ for project in *.xcodeproj; do |
+ lsave=`pwd` |
+ cd $project |
+ filename=`eval whoami`.pbxuser |
+ while [[ ! -s $filename ]] ; do |
+ sleep 1 |
+ echo -n "." |
+ done |
+ sed -e '/activeSDKPreference/ d' <$filename | sed -e '/activeTarget/ i\ |
+ \ activeSDKPreference = '$1';' >x$filename |
+ if [[ -s x$filename ]] ; then |
+ mv x$filename $filename |
+ else |
+ echo "mv x$filename $project/$filename failed" |
+ fi |
+ cd $lsave |
+ done |
+ open SampleApp.xcodeproj |
+ cd $save |
+ } |
+ |
+In particular, the calls to osascript to wait for Xcode to quit use faulty syntax. |
+ |