- Updated QSGs with relative links to download page, removed outdated and googler-only iOS instructions. - Will add "contributing" page and update project roles link in next batch with developer section Preview link: http://skiadocs.com:8000/user/quick/android?cl=834353003 BUG=skia: Review URL: https://codereview.chromium.org/834353003
3.4 KiB
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.