Skip to content

Instantly share code, notes, and snippets.

@justinmakaila
Last active August 29, 2015 14:16
Show Gist options
  • Select an option

  • Save justinmakaila/0d3417cd0231c85133a0 to your computer and use it in GitHub Desktop.

Select an option

Save justinmakaila/0d3417cd0231c85133a0 to your computer and use it in GitHub Desktop.
#!/bin/sh
function set_base_flags() {
export GYP_GENERATORS="ninja"
export GYP_DEFINES="build_with_libjingle=1 build_with_chromium=0 libjingle_objc=1"
}
function set_base_ios_flags() {
set_base_flags
export GYP_DEFINES="$GYP_DEFINES OS=ios"
export GYP_GENERATOR_FLAGS="$GYP_GENERATOR_FLAGS output_dir=out_ios"
export GYP_CROSSCOMPILE=1
}
# Build WebRTC for i386 devices (Simulator)
function build_i386() {
echo "-- building WebRTC for the iOS simulator"
set_base_ios_flags
# Set the environment variables for the simulator
export GYP_DEFINES="$GYP_DEFINES target_arch=ia32"
build iphonesimulator
}
# Build WebRTC for armv7 devices (32-bit)
function build_armv7() {
echo "-- building WebRTC for 32-bit iOS devices"
set_base_ios_flags
# Set the environment variables for the device
export GYP_DEFINES="$GYP_DEFINES OS=ios target_arch=arm arm_version=7"
build iphoneos
}
# Build WebRTC for arm64 devices (64-bit)
function build_arm64() {
echo "-- building WebRTC for 64-bit iOS devices"
set_base_ios_flags
export GYP_DEFINES="$GYP_DEFINES target_arch=arm64 target_subarch=arm64"
build iphoneos
}
function build() {
pushd src
gcclient runhooks
ninja -C out_ios/Release-$1 AppRTCDemo
popd
}
# Strips excess symbols and lipos the different architecture libraries into one
function combine_libs() {
echo "-- combining libraries"
# Strip symbols for the simulator
libtool -static -o src/out_ios/Release-iphonesimulator/libWebRTC-sim.a src/out_ios/Release-iphonesimulator/*.a
strip -S -x -o src/out_ios/Release-iphonesimulator/libWebRTC-sim-min.a -r src/out_ios/Release-iphonesimulator/libWebRTC-sim.a
# Strip symbols for 32-bit devices
libtool -static -o src/out_ios/Release-iphoneos/libWebRTC-ios.a src/out_ios/Release-iphoneos/*.a
strip -S -x -o src/out_ios/Release-iphoneos/libWebRTC-ios-min.a -r src/out_ios/Release-iphoneos/libWebRTC-ios.a
# TODO: Strip symbols for 64-bit devices
lipo -create src/out_ios/Release-iphonesimulator/libWebRTC-sim-min.a src/out_ios/Release-iphoneos/libWebRTC-ios-min.a -output libWebRTC.a
echo "The public headers are located in ./src/talk/app/webrtc/objc/public/*.h"
}
function build_all() {
build_i386 && build_armv7 && build_arm64 && combine_libs
}
function run_simulator() {
echo "-- running webrtc appdemo on iOS simulator"
src/out_ios/Release-iphonesimulator/iossim src/out_ios/Release-iphonesimulator/AppRTCDemo.app
}
function run_on_device() {
echo "-- launching on device"
ideviceinstaller -i src/out_ios/Release-iphoneos/AppRTCDemo.app
echo "-- launch complete"
}
# Run the function specified by the first parameter on the command line
$@
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment