#!/bin/bash
function build_xcode() {
echo "*** building WebRTC for the ia32 iOS simulator";
export GYP_GENERATORS="xcode";
export GYP_DEFINES="build_with_libjingle=1 build_with_chromium=0 libjingle_objc=1 OS=ios target_arch=ia32 clang_xcode=1";
export GYP_GENERATOR_FLAGS="$GYP_GENERATOR_FLAGS output_dir=out_ios_ia32";
export GYP_CROSSCOMPILE=1;
gclient runhooks;
ninja -C out_ios_ia32/Release-iphonesimulator iossim AppRTCDemo;
}
function build_iossim_ia32() {
echo "*** building WebRTC for the ia32 iOS simulator";
export GYP_GENERATORS="ninja";
export GYP_DEFINES="build_with_libjingle=1 build_with_chromium=0 libjingle_objc=1 OS=ios target_arch=ia32 clang_xcode=1";
export GYP_GENERATOR_FLAGS="$GYP_GENERATOR_FLAGS output_dir=out_ios_ia32";
export GYP_CROSSCOMPILE=1;
pushd src;
gclient runhooks;
ninja -C out_ios_ia32/Release-iphonesimulator iossim AppRTCDemo;
echo "*** creating iOS ia32 libraries";
pushd out_ios_ia32/Release-iphonesimulator/;
rm -f libapprtc_signaling.a;
popd;
mkdir -p out_ios_ia32/libs;
libtool -static -o out_ios_ia32/libs/libWebRTC-ia32.a out_ios_ia32/Release-iphonesimulator/lib*.a;
strip -S -x -o out_ios_ia32/libs/libWebRTC.a -r out_ios_ia32/libs/libWebRTC-ia32.a;
rm -f out_ios_ia32/libs/libWebRTC-ia32.a;
echo "*** result: $PWD/out_ios_ia32/libs/libWebRTC.a";
popd;
}
function build_iossim_x86_64() {
echo "*** building WebRTC for the x86_64 iOS simulator";
export GYP_GENERATORS="ninja";
export GYP_DEFINES="build_with_libjingle=1 build_with_chromium=0 libjingle_objc=1 OS=ios target_arch=x64 target_subarch=arm64 clang_xcode=1";
export GYP_GENERATOR_FLAGS="$GYP_GENERATOR_FLAGS output_dir=out_ios_x86_64";
export GYP_CROSSCOMPILE=1;
pushd src;
gclient runhooks;
ninja -C out_ios_x86_64/Release-iphonesimulator iossim AppRTCDemo;
echo "*** creating iOS x86_64 libraries";
pushd out_ios_x86_64/Release-iphonesimulator/;
rm -f libapprtc_signaling.a;
popd;
mkdir -p out_ios_x86_64/libs;
libtool -static -o out_ios_x86_64/libs/libWebRTC-x86_64.a out_ios_x86_64/Release-iphonesimulator/lib*.a;
strip -S -x -o out_ios_x86_64/libs/libWebRTC.a -r out_ios_x86_64/libs/libWebRTC-x86_64.a;
echo "*** result: $PWD/out_ios_x86_64/libs/libWebRTC.a";
popd;
}
function build_iosdevice_armv7() {
echo "*** building WebRTC for armv7 iOS devices";
export GYP_GENERATORS="ninja";
export GYP_DEFINES="build_with_libjingle=1 build_with_chromium=0 libjingle_objc=1 OS=ios target_arch=armv7 clang_xcode=1";
export GYP_GENERATOR_FLAGS="$GYP_GENERATOR_FLAGS output_dir=out_ios_armv7";
export GYP_CROSSCOMPILE=1;
pushd src;
gclient runhooks;
ninja -C out_ios_armv7/Release-iphoneos AppRTCDemo;
echo "*** creating iOS armv7 libraries";
pushd out_ios_armv7/Release-iphoneos/;
rm -f libapprtc_signaling.a;
popd;
mkdir -p out_ios_armv7/libs;
libtool -static -o out_ios_armv7/libs/libWebRTC-armv7.a out_ios_armv7/Release-iphoneos/lib*.a;
strip -S -x -o out_ios_armv7/libs/libWebRTC.a -r out_ios_armv7/libs/libWebRTC-armv7.a;
echo "*** result: $PWD/out_ios_armv7/libs/libWebRTC.a";
popd;
}
function build_iosdevice_arm64() {
echo "*** building WebRTC for arm64 iOS devices";
export GYP_GENERATORS="ninja";
export GYP_DEFINES="build_with_libjingle=1 build_with_chromium=0 libjingle_objc=1 OS=ios target_arch=arm64 target_subarch=arm64 clang_xcode=1";
export GYP_GENERATOR_FLAGS="$GYP_GENERATOR_FLAGS output_dir=out_ios_arm64";
export GYP_CROSSCOMPILE=1;
echo "src/webrtc/build/gyp_webrtc -Dclang_xcode=1"
pushd src;
gclient runhooks;
ninja -C out_ios_arm64/Release-iphoneos AppRTCDemo;
echo "*** creating iOS arm64 libraries";
pushd out_ios_arm64/Release-iphoneos/;
rm -f libapprtc_signaling.a;
popd;
mkdir -p out_ios_arm64/libs;
libtool -static -o out_ios_arm64/libs/libWebRTC-arm64.a out_ios_arm64/Release-iphoneos/lib*.a;
strip -S -x -o out_ios_arm64/libs/libWebRTC.a -r out_ios_arm64/libs/libWebRTC-arm64.a;
echo "*** result: $PWD/out_ios_arm64/libs/libWebRTC.a";
popd;
}
function combine_libs()
{
echo "*** combining libraries";
lipo -create src/out_ios_armv7/libs/libWebRTC.a \
src/out_ios_arm64/libs/libWebRTC.a \
-output libWebRTC.a;
echo "The public headers are located in $PWD/src/talk/app/webrtc/objc/public/*.h";
}
function combine_libs_sim()
{
echo "*** combining libraries";
lipo -create src/out_ios_ia32/libs/libWebRTC.a \
src/out_ios_x86_64/libs/libWebRTC.a \
-output libWebRTC_sim.a;
echo "The public headers are located in $PWD/src/talk/app/webrtc/objc/public/*.h";
}
function create_framework() {
echo "*** creating WebRTC.framework";
rm -rf WebRTC.framework;
mkdir -p WebRTC.framework/Versions/A/Headers;
cp ./src/talk/app/webrtc/objc/public/*.h WebRTC.framework/Versions/A/Headers;
cp libWebRTC.a WebRTC.framework/Versions/A/WebRTC;
pushd WebRTC.framework/Versions;
ln -sfh A Current;
popd;
pushd WebRTC.framework;
ln -sfh Versions/Current/Headers Headers;
ln -sfh Versions/Current/WebRTC WebRTC;
popd;
}
function clean()
{
echo "*** cleaning";
pushd src;
rm -rf out_ios_arm64;
rm -rf out_ios_armv7;
rm -rf out_ios_ia32;
rm -rf out_ios_x86_64;
popd;
echo "*** all cleaned";
}
function update()
{
gclient sync --force
pushd src
svn info | grep Revision > ../svn_rev.txt
popd
}
function build_all() {
build_iossim_ia32 && build_iossim_x86_64 && \
build_iosdevice_armv7 && build_iosdevice_arm64 && \
combine_libs && combine_libs_sim;
}
function build_os() {
build_iosdevice_armv7 combine_libs;
}
function run_simulator_ia32() {
echo "*** running webrtc appdemo on ia32 iOS simulator";
src/out_ios_ia32/Release-iphonesimulator/iossim src/out_ios_ia32/Release-iphonesimulator/AppRTCDemo.app;
}
function run_simulator_x86_64() {
echo "*** running webrtc appdemo on x86_64 iOS simulator";
src/out_ios_x86_64/Release-iphonesimulator/iossim -d 'iPhone 6' -s '8.4' src/out_ios_x86_64/Release-iphonesimulator/AppRTCDemo.app;
}
function run_on_device_armv7() {
echo "*** launching on armv7 iOS device";
ideviceinstaller -i src/out_ios_armv7/Release-iphoneos/AppRTCDemo.app;
echo "*** launch complete";
}
function run_on_device_arm64() {
echo "*** launching on arm64 iOS device";
ideviceinstaller -i src/out_ios_arm64/Release-iphoneos/AppRTCDemo.app;
echo "*** launch complete";
}
#运行命令行参数中第一个参数所指定的Shell函数
$@